mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-08-04 13:50:59 +00:00
Handle UNormSRGB in some places that were missing handling
This commit is contained in:
@@ -48,7 +48,7 @@ static QVariant interpret(const ResourceFormat &f, uint16_t comp)
|
||||
{
|
||||
return (float)comp;
|
||||
}
|
||||
else if(f.compType == CompType::UNorm)
|
||||
else if(f.compType == CompType::UNorm || f.compType == CompType::UNormSRGB)
|
||||
{
|
||||
return (float)comp / (float)0xffff;
|
||||
}
|
||||
@@ -90,7 +90,7 @@ static QVariant interpret(const ResourceFormat &f, byte comp)
|
||||
{
|
||||
return (float)comp;
|
||||
}
|
||||
else if(f.compType == CompType::UNorm)
|
||||
else if(f.compType == CompType::UNorm || f.compType == CompType::UNormSRGB)
|
||||
{
|
||||
return ((float)comp) / 255.0f;
|
||||
}
|
||||
@@ -583,7 +583,7 @@ QString FormatElement::GenerateTextureBufferFormat(const TextureDescription &tex
|
||||
{
|
||||
if(tex.format.compByteWidth == 1)
|
||||
{
|
||||
if(tex.format.compType == CompType::UNorm)
|
||||
if(tex.format.compType == CompType::UNorm || tex.format.compType == CompType::UNormSRGB)
|
||||
baseType = lit("unormb");
|
||||
else if(tex.format.compType == CompType::SNorm)
|
||||
baseType = lit("snormb");
|
||||
@@ -594,7 +594,7 @@ QString FormatElement::GenerateTextureBufferFormat(const TextureDescription &tex
|
||||
}
|
||||
else if(tex.format.compByteWidth == 2)
|
||||
{
|
||||
if(tex.format.compType == CompType::UNorm)
|
||||
if(tex.format.compType == CompType::UNorm || tex.format.compType == CompType::UNormSRGB)
|
||||
baseType = lit("unormh");
|
||||
else if(tex.format.compType == CompType::SNorm)
|
||||
baseType = lit("snormh");
|
||||
|
||||
@@ -817,7 +817,7 @@ QString TypeString(const SigParameter &sig)
|
||||
ret += lit("uint");
|
||||
else if(sig.compType == CompType::SInt || sig.compType == CompType::SScaled)
|
||||
ret += lit("int");
|
||||
else if(sig.compType == CompType::UNorm)
|
||||
else if(sig.compType == CompType::UNorm || sig.compType == CompType::UNormSRGB)
|
||||
ret += lit("unorm float");
|
||||
else if(sig.compType == CompType::SNorm)
|
||||
ret += lit("snorm float");
|
||||
|
||||
@@ -806,7 +806,7 @@ QString PipelineStateViewer::GenerateBufferFormatter(const ShaderResource &res,
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
if(viewFormat.compType == CompType::UNorm)
|
||||
if(viewFormat.compType == CompType::UNorm || viewFormat.compType == CompType::UNormSRGB)
|
||||
format = lit("unormb");
|
||||
if(viewFormat.compType == CompType::SNorm)
|
||||
format = lit("snormb");
|
||||
@@ -818,7 +818,7 @@ QString PipelineStateViewer::GenerateBufferFormatter(const ShaderResource &res,
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
if(viewFormat.compType == CompType::UNorm)
|
||||
if(viewFormat.compType == CompType::UNorm || viewFormat.compType == CompType::UNormSRGB)
|
||||
format = lit("unormh");
|
||||
if(viewFormat.compType == CompType::SNorm)
|
||||
format = lit("snormh");
|
||||
@@ -832,7 +832,7 @@ QString PipelineStateViewer::GenerateBufferFormatter(const ShaderResource &res,
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
if(viewFormat.compType == CompType::UNorm)
|
||||
if(viewFormat.compType == CompType::UNorm || viewFormat.compType == CompType::UNormSRGB)
|
||||
format = lit("unormf");
|
||||
if(viewFormat.compType == CompType::SNorm)
|
||||
format = lit("snormf");
|
||||
@@ -1322,7 +1322,7 @@ QString PipelineStateViewer::GetVBufferFormatString(uint32_t slot)
|
||||
QLatin1Char('?'), QLatin1Char('b'), QLatin1Char('h'), QLatin1Char('?'), QLatin1Char('f'),
|
||||
};
|
||||
|
||||
if(fmt.compType == CompType::UNorm)
|
||||
if(fmt.compType == CompType::UNorm || fmt.compType == CompType::UNormSRGB)
|
||||
{
|
||||
format += lit("unorm%1").arg(widthchar[fmt.compByteWidth]);
|
||||
}
|
||||
|
||||
@@ -521,6 +521,7 @@ DXGI_FORMAT ResourceFormat2DXGIFormat(ResourceFormat format)
|
||||
case CompType::SNorm: return DXGI_FORMAT_R8G8B8A8_SNORM;
|
||||
default:
|
||||
case CompType::UNorm:
|
||||
case CompType::UNormSRGB:
|
||||
if(format.SRGBCorrected())
|
||||
{
|
||||
if(format.BGRAOrder())
|
||||
@@ -758,7 +759,7 @@ bool write_dds_to_file(FILE *f, const dds_data &data)
|
||||
// special case a couple of formats to write out non-DX10 style, for
|
||||
// backwards compatibility
|
||||
if(data.format.compByteWidth == 1 && data.format.compCount == 4 &&
|
||||
data.format.compType == CompType::UNorm)
|
||||
(data.format.compType == CompType::UNorm || data.format.compType == CompType::UNormSRGB))
|
||||
{
|
||||
header.ddspf.dwFlags = DDPF_RGBA;
|
||||
header.ddspf.dwRGBBitCount = 32;
|
||||
|
||||
@@ -2572,7 +2572,7 @@ vector<PixelModification> D3D11Replay::PixelHistory(vector<EventUsage> events, R
|
||||
mod.postMod.col.floatValue[c] = ConvertFromHalf(uint16_t(mod.postMod.col.uintValue[c]));
|
||||
}
|
||||
}
|
||||
else if(fmt.compType == CompType::UNorm && fmt.compByteWidth == 1 && fmt.SRGBCorrected())
|
||||
else if(fmt.compType == CompType::UNormSRGB && fmt.compByteWidth == 1 && fmt.SRGBCorrected())
|
||||
{
|
||||
RDCASSERT(fmt.compByteWidth == 1);
|
||||
|
||||
|
||||
@@ -996,7 +996,7 @@ ShaderDebugTrace D3D11Replay::DebugVertex(uint32_t eventId, uint32_t vertid, uin
|
||||
ret.inputs[i].value.uv[c] = *src;
|
||||
else if(fmt.compType == CompType::SInt)
|
||||
ret.inputs[i].value.iv[c] = *((int8_t *)src);
|
||||
else if(fmt.compType == CompType::UNorm)
|
||||
else if(fmt.compType == CompType::UNorm || fmt.compType == CompType::UNormSRGB)
|
||||
ret.inputs[i].value.fv[c] = float(*src) / 255.0f;
|
||||
else if(fmt.compType == CompType::SNorm)
|
||||
{
|
||||
@@ -1021,7 +1021,7 @@ ShaderDebugTrace D3D11Replay::DebugVertex(uint32_t eventId, uint32_t vertid, uin
|
||||
ret.inputs[i].value.uv[c] = *src;
|
||||
else if(fmt.compType == CompType::SInt)
|
||||
ret.inputs[i].value.iv[c] = *((int16_t *)src);
|
||||
else if(fmt.compType == CompType::UNorm)
|
||||
else if(fmt.compType == CompType::UNorm || fmt.compType == CompType::UNormSRGB)
|
||||
ret.inputs[i].value.fv[c] = float(*src) / float(UINT16_MAX);
|
||||
else if(fmt.compType == CompType::SNorm)
|
||||
{
|
||||
|
||||
@@ -3835,7 +3835,7 @@ State State::GetNext(GlobalState &global, State quad[4]) const
|
||||
for(int c = 0; c < fmt.numComps; c++)
|
||||
result.value.iv[c] = in[c];
|
||||
}
|
||||
else if(fmt.fmt == CompType::UNorm)
|
||||
else if(fmt.fmt == CompType::UNorm || fmt.fmt == CompType::UNormSRGB)
|
||||
{
|
||||
uint16_t *u = (uint16_t *)d;
|
||||
|
||||
@@ -3876,7 +3876,7 @@ State State::GetNext(GlobalState &global, State quad[4]) const
|
||||
for(int c = 0; c < fmt.numComps; c++)
|
||||
result.value.iv[c] = in[c];
|
||||
}
|
||||
else if(fmt.fmt == CompType::UNorm)
|
||||
else if(fmt.fmt == CompType::UNorm || fmt.fmt == CompType::UNormSRGB)
|
||||
{
|
||||
uint8_t *u = (uint8_t *)d;
|
||||
|
||||
|
||||
@@ -752,7 +752,7 @@ VkFormat GetViewCastedFormat(VkFormat f, CompType typeHint)
|
||||
case VK_FORMAT_R16G16B16A16_SINT:
|
||||
case VK_FORMAT_R16G16B16A16_SFLOAT:
|
||||
{
|
||||
if(typeHint == CompType::UNorm)
|
||||
if(typeHint == CompType::UNorm || typeHint == CompType::UNormSRGB)
|
||||
return VK_FORMAT_R16G16B16A16_UNORM;
|
||||
else if(typeHint == CompType::SNorm)
|
||||
return VK_FORMAT_R16G16B16A16_SNORM;
|
||||
@@ -775,7 +775,7 @@ VkFormat GetViewCastedFormat(VkFormat f, CompType typeHint)
|
||||
case VK_FORMAT_R16G16B16_SINT:
|
||||
case VK_FORMAT_R16G16B16_SFLOAT:
|
||||
{
|
||||
if(typeHint == CompType::UNorm)
|
||||
if(typeHint == CompType::UNorm || typeHint == CompType::UNormSRGB)
|
||||
return VK_FORMAT_R16G16B16_UNORM;
|
||||
else if(typeHint == CompType::SNorm)
|
||||
return VK_FORMAT_R16G16B16_SNORM;
|
||||
@@ -798,7 +798,7 @@ VkFormat GetViewCastedFormat(VkFormat f, CompType typeHint)
|
||||
case VK_FORMAT_R16G16_SINT:
|
||||
case VK_FORMAT_R16G16_SFLOAT:
|
||||
{
|
||||
if(typeHint == CompType::UNorm)
|
||||
if(typeHint == CompType::UNorm || typeHint == CompType::UNormSRGB)
|
||||
return VK_FORMAT_R16G16_UNORM;
|
||||
else if(typeHint == CompType::SNorm)
|
||||
return VK_FORMAT_R16G16_SNORM;
|
||||
@@ -822,7 +822,7 @@ VkFormat GetViewCastedFormat(VkFormat f, CompType typeHint)
|
||||
case VK_FORMAT_R16_SFLOAT:
|
||||
case VK_FORMAT_D16_UNORM:
|
||||
{
|
||||
if(typeHint == CompType::UNorm)
|
||||
if(typeHint == CompType::UNorm || typeHint == CompType::UNormSRGB)
|
||||
return VK_FORMAT_R16_UNORM;
|
||||
else if(typeHint == CompType::SNorm)
|
||||
return VK_FORMAT_R16_SNORM;
|
||||
@@ -1024,7 +1024,7 @@ VkFormat GetViewCastedFormat(VkFormat f, CompType typeHint)
|
||||
case VK_FORMAT_A2B10G10R10_UINT_PACK32:
|
||||
case VK_FORMAT_A2B10G10R10_SINT_PACK32:
|
||||
{
|
||||
if(typeHint == CompType::UNorm)
|
||||
if(typeHint == CompType::UNorm || typeHint == CompType::UNormSRGB)
|
||||
return VK_FORMAT_A2B10G10R10_UNORM_PACK32;
|
||||
else if(typeHint == CompType::SNorm)
|
||||
return VK_FORMAT_A2B10G10R10_SNORM_PACK32;
|
||||
@@ -1046,7 +1046,7 @@ VkFormat GetViewCastedFormat(VkFormat f, CompType typeHint)
|
||||
case VK_FORMAT_A2R10G10B10_UINT_PACK32:
|
||||
case VK_FORMAT_A2R10G10B10_SINT_PACK32:
|
||||
{
|
||||
if(typeHint == CompType::UNorm)
|
||||
if(typeHint == CompType::UNorm || typeHint == CompType::UNormSRGB)
|
||||
return VK_FORMAT_A2R10G10B10_UNORM_PACK32;
|
||||
else if(typeHint == CompType::SNorm)
|
||||
return VK_FORMAT_A2R10G10B10_SNORM_PACK32;
|
||||
|
||||
@@ -138,12 +138,13 @@ float ConvertComponent(const ResourceFormat &fmt, const byte *data)
|
||||
{
|
||||
return float(*i8);
|
||||
}
|
||||
else if(fmt.compType == CompType::UNormSRGB)
|
||||
{
|
||||
return SRGB8_lookuptable[*u8];
|
||||
}
|
||||
else if(fmt.compType == CompType::UNorm)
|
||||
{
|
||||
if(fmt.SRGBCorrected())
|
||||
return SRGB8_lookuptable[*u8];
|
||||
else
|
||||
return float(*u8) / 255.0f;
|
||||
return float(*u8) / 255.0f;
|
||||
}
|
||||
else if(fmt.compType == CompType::SNorm)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user