Added HDR texture formats

Former-commit-id: affa3c0842d3918977c48483bf485ac17e218448
This commit is contained in:
Lynix 2013-08-28 03:05:46 +02:00
parent 866ff64548
commit df8449c13e
4 changed files with 109 additions and 28 deletions

View File

@ -159,20 +159,18 @@ enum nzPixelFormat
nzPixelFormat_DXT5, nzPixelFormat_DXT5,
nzPixelFormat_L8, // 1*nzUInt8 nzPixelFormat_L8, // 1*nzUInt8
nzPixelFormat_LA8, // 2*nzUInt8 nzPixelFormat_LA8, // 2*nzUInt8
/*
nzPixelFormat_RGB16F,
nzPixelFormat_RGB16I, // 4*nzUInt16
nzPixelFormat_RGB32F,
nzPixelFormat_RGB32I, // 4*nzUInt32
nzPixelFormat_RGBA16F,
nzPixelFormat_RGBA16I, // 4*nzUInt16
nzPixelFormat_RGBA32F,
nzPixelFormat_RGBA32I, // 4*nzUInt32
*/
nzPixelFormat_RGB5A1, // 1*nzUInt16 nzPixelFormat_RGB5A1, // 1*nzUInt16
nzPixelFormat_RGB8, // 3*nzUInt8 nzPixelFormat_RGB8, // 3*nzUInt8
nzPixelFormat_RGB16F,
nzPixelFormat_RGB16I, // 4*nzUInt16
nzPixelFormat_RGB32F, // 3*float
nzPixelFormat_RGB32I, // 4*nzUInt32
nzPixelFormat_RGBA4, // 1*nzUInt16 nzPixelFormat_RGBA4, // 1*nzUInt16
nzPixelFormat_RGBA8, // 4*nzUInt8 nzPixelFormat_RGBA8, // 4*nzUInt8
nzPixelFormat_RGBA16F,
nzPixelFormat_RGBA16I, // 4*nzUInt16
nzPixelFormat_RGBA32F, // 4*float
nzPixelFormat_RGBA32I, // 4*nzUInt32
nzPixelFormat_Depth16, nzPixelFormat_Depth16,
nzPixelFormat_Depth24, nzPixelFormat_Depth24,
nzPixelFormat_Depth24Stencil8, nzPixelFormat_Depth24Stencil8,

View File

@ -188,7 +188,7 @@ inline nzUInt8 NzPixelFormat::GetBitsPerPixel(nzPixelFormat format)
case nzPixelFormat_LA8: case nzPixelFormat_LA8:
return 16; return 16;
/*
case nzPixelFormat_RGB16F: case nzPixelFormat_RGB16F:
return 48; return 48;
@ -212,7 +212,7 @@ inline nzUInt8 NzPixelFormat::GetBitsPerPixel(nzPixelFormat format)
case nzPixelFormat_RGBA32I: case nzPixelFormat_RGBA32I:
return 128; return 128;
*/
case nzPixelFormat_RGBA4: case nzPixelFormat_RGBA4:
return 16; return 16;
@ -282,8 +282,16 @@ inline nzPixelFormatType NzPixelFormat::GetType(nzPixelFormat format)
case nzPixelFormat_LA8: case nzPixelFormat_LA8:
case nzPixelFormat_RGB5A1: case nzPixelFormat_RGB5A1:
case nzPixelFormat_RGB8: case nzPixelFormat_RGB8:
case nzPixelFormat_RGB16F:
case nzPixelFormat_RGB16I:
case nzPixelFormat_RGB32F:
case nzPixelFormat_RGB32I:
case nzPixelFormat_RGBA4: case nzPixelFormat_RGBA4:
case nzPixelFormat_RGBA8: case nzPixelFormat_RGBA8:
case nzPixelFormat_RGBA16F:
case nzPixelFormat_RGBA16I:
case nzPixelFormat_RGBA32F:
case nzPixelFormat_RGBA32I:
return nzPixelFormatType_Color; return nzPixelFormatType_Color;
case nzPixelFormat_Depth16: case nzPixelFormat_Depth16:
@ -317,6 +325,10 @@ inline bool NzPixelFormat::HasAlpha(nzPixelFormat format)
case nzPixelFormat_DXT5: case nzPixelFormat_DXT5:
case nzPixelFormat_LA8: case nzPixelFormat_LA8:
case nzPixelFormat_RGB5A1: case nzPixelFormat_RGB5A1:
case nzPixelFormat_RGBA16F:
case nzPixelFormat_RGBA16I:
case nzPixelFormat_RGBA32F:
case nzPixelFormat_RGBA32I:
case nzPixelFormat_RGBA4: case nzPixelFormat_RGBA4:
case nzPixelFormat_RGBA8: case nzPixelFormat_RGBA8:
return true; return true;
@ -325,6 +337,10 @@ inline bool NzPixelFormat::HasAlpha(nzPixelFormat format)
case nzPixelFormat_DXT1: case nzPixelFormat_DXT1:
case nzPixelFormat_L8: case nzPixelFormat_L8:
case nzPixelFormat_RGB8: case nzPixelFormat_RGB8:
case nzPixelFormat_RGB16F:
case nzPixelFormat_RGB16I:
case nzPixelFormat_RGB32F:
case nzPixelFormat_RGB32I:
case nzPixelFormat_Depth16: case nzPixelFormat_Depth16:
case nzPixelFormat_Depth24: case nzPixelFormat_Depth24:
case nzPixelFormat_Depth24Stencil8: case nzPixelFormat_Depth24Stencil8:
@ -352,14 +368,22 @@ inline bool NzPixelFormat::IsCompressed(nzPixelFormat format)
case nzPixelFormat_DXT5: case nzPixelFormat_DXT5:
return true; return true;
case nzPixelFormat_BGR8:
case nzPixelFormat_BGRA8: case nzPixelFormat_BGRA8:
case nzPixelFormat_L8:
case nzPixelFormat_LA8: case nzPixelFormat_LA8:
case nzPixelFormat_RGB5A1: case nzPixelFormat_RGB5A1:
case nzPixelFormat_RGB8:
case nzPixelFormat_RGB16F:
case nzPixelFormat_RGB16I:
case nzPixelFormat_RGB32F:
case nzPixelFormat_RGB32I:
case nzPixelFormat_RGBA4: case nzPixelFormat_RGBA4:
case nzPixelFormat_RGBA8: case nzPixelFormat_RGBA8:
case nzPixelFormat_BGR8: case nzPixelFormat_RGBA16F:
case nzPixelFormat_L8: case nzPixelFormat_RGBA16I:
case nzPixelFormat_RGB8: case nzPixelFormat_RGBA32F:
case nzPixelFormat_RGBA32I:
case nzPixelFormat_Depth16: case nzPixelFormat_Depth16:
case nzPixelFormat_Depth24: case nzPixelFormat_Depth24:
case nzPixelFormat_Depth24Stencil8: case nzPixelFormat_Depth24Stencil8:
@ -425,7 +449,13 @@ inline NzString NzPixelFormat::ToString(nzPixelFormat format)
case nzPixelFormat_LA8: case nzPixelFormat_LA8:
return "LA8"; return "LA8";
/*
case nzPixelFormat_RGB5A1:
return "RGB5A1";
case nzPixelFormat_RGB8:
return "RGB8";
case nzPixelFormat_RGB16F: case nzPixelFormat_RGB16F:
return "RGB16F"; return "RGB16F";
@ -438,6 +468,12 @@ inline NzString NzPixelFormat::ToString(nzPixelFormat format)
case nzPixelFormat_RGB32I: case nzPixelFormat_RGB32I:
return "RGB32I"; return "RGB32I";
case nzPixelFormat_RGBA4:
return "RGBA4";
case nzPixelFormat_RGBA8:
return "RGBA8";
case nzPixelFormat_RGBA16F: case nzPixelFormat_RGBA16F:
return "RGBA16F"; return "RGBA16F";
@ -449,18 +485,6 @@ inline NzString NzPixelFormat::ToString(nzPixelFormat format)
case nzPixelFormat_RGBA32I: case nzPixelFormat_RGBA32I:
return "RGBA32I"; return "RGBA32I";
*/
case nzPixelFormat_RGBA4:
return "RGBA4";
case nzPixelFormat_RGB5A1:
return "RGB5A1";
case nzPixelFormat_RGB8:
return "RGB8";
case nzPixelFormat_RGBA8:
return "RGBA8";
case nzPixelFormat_Depth16: case nzPixelFormat_Depth16:
return "Depth16"; return "Depth16";

View File

@ -1388,6 +1388,30 @@ bool NzOpenGL::TranslateFormat(nzPixelFormat pixelFormat, Format* format, Format
format->internalFormat = GL_RGB8; format->internalFormat = GL_RGB8;
return true; return true;
case nzPixelFormat_RGB16F:
format->dataFormat = GL_RGB;
format->dataType = GL_FLOAT;
format->internalFormat = GL_RGB16F;
return true;
case nzPixelFormat_RGB16I:
format->dataFormat = GL_RGB;
format->dataType = GL_INT;
format->internalFormat = GL_RGB16I;
return true;
case nzPixelFormat_RGB32F:
format->dataFormat = GL_RGB;
format->dataType = GL_FLOAT;
format->internalFormat = GL_RGB32F;
return true;
case nzPixelFormat_RGB32I:
format->dataFormat = GL_RGB;
format->dataType = GL_INT;
format->internalFormat = GL_RGB32I;
return true;
case nzPixelFormat_RGBA4: case nzPixelFormat_RGBA4:
format->dataFormat = GL_RGBA; format->dataFormat = GL_RGBA;
format->dataType = GL_UNSIGNED_SHORT_4_4_4_4; format->dataType = GL_UNSIGNED_SHORT_4_4_4_4;
@ -1400,6 +1424,30 @@ bool NzOpenGL::TranslateFormat(nzPixelFormat pixelFormat, Format* format, Format
format->internalFormat = GL_RGBA8; format->internalFormat = GL_RGBA8;
return true; return true;
case nzPixelFormat_RGBA16F:
format->dataFormat = GL_RGBA;
format->dataType = GL_FLOAT;
format->internalFormat = GL_RGBA16F;
return true;
case nzPixelFormat_RGBA16I:
format->dataFormat = GL_RGBA;
format->dataType = GL_INT;
format->internalFormat = GL_RGBA32I;
return true;
case nzPixelFormat_RGBA32F:
format->dataFormat = GL_RGBA;
format->dataType = GL_FLOAT;
format->internalFormat = GL_RGBA32F;
return true;
case nzPixelFormat_RGBA32I:
format->dataFormat = GL_RGB;
format->dataType = GL_INT;
format->internalFormat = GL_RGB32I;
return true;
case nzPixelFormat_Depth16: case nzPixelFormat_Depth16:
format->dataFormat = GL_DEPTH_COMPONENT; format->dataFormat = GL_DEPTH_COMPONENT;
format->dataType = GL_UNSIGNED_BYTE; format->dataType = GL_UNSIGNED_BYTE;

View File

@ -1306,6 +1306,17 @@ bool NzTexture::IsFormatSupported(nzPixelFormat format)
case nzPixelFormat_RGBA4: case nzPixelFormat_RGBA4:
return true; return true;
// Formats supportés depuis OpenGL 3
case nzPixelFormat_RGB16F:
case nzPixelFormat_RGB16I:
case nzPixelFormat_RGB32F:
case nzPixelFormat_RGB32I:
case nzPixelFormat_RGBA16F:
case nzPixelFormat_RGBA16I:
case nzPixelFormat_RGBA32F:
case nzPixelFormat_RGBA32I:
return NzOpenGL::GetVersion() >= 300;
// Formats de profondeur (Supportés avec les FBOs) // Formats de profondeur (Supportés avec les FBOs)
case nzPixelFormat_Depth16: case nzPixelFormat_Depth16:
case nzPixelFormat_Depth24: case nzPixelFormat_Depth24: