Skip to content

Commit 40e6ef8

Browse files
committed
Use SRGB formula from DX11 spec
1 parent e749ca0 commit 40e6ef8

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

bf2editor/shaders/Shared/RealityDirectXTK.fxh

+6-2
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,15 @@
3737
#if !defined(DIRECTXTK)
3838
#define DIRECTXTK
3939

40+
/*
41+
https://github.com/microsoft/DirectX-Specs
42+
*/
43+
4044
// (Approximate) sRGB to linear
4145
float4 SRGBToLinearEst(float4 ColorMap)
4246
{
4347
#if defined(_USELINEARLIGHTING_)
44-
ColorMap.rgb = pow(abs(ColorMap.rgb), 2.2);
48+
ColorMap.rgb = (ColorMap <= 0.04045) ? ColorMap / 12.92 : pow((ColorMap + 0.055) / 1.055, 2.4);
4549
#endif
4650
return ColorMap;
4751
}
@@ -50,7 +54,7 @@
5054
void LinearToSRGBEst(inout float4 Color)
5155
{
5256
#if defined(_USELINEARLIGHTING_)
53-
Color.rgb = pow(abs(Color.rgb), 1.0 / 2.2);
57+
Color = (Color <= 0.0031308) ? 12.92 * Color : 1.055 * pow(Color, 1.0 / 2.4) - 0.055;
5458
#endif
5559
}
5660

pr/shaders/Shared/RealityDirectXTK.fxh

+6-2
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,15 @@
3737
#if !defined(DIRECTXTK)
3838
#define DIRECTXTK
3939

40+
/*
41+
https://github.com/microsoft/DirectX-Specs
42+
*/
43+
4044
// (Approximate) sRGB to linear
4145
float4 SRGBToLinearEst(float4 ColorMap)
4246
{
4347
#if defined(_USELINEARLIGHTING_)
44-
ColorMap.rgb = pow(abs(ColorMap.rgb), 2.2);
48+
ColorMap.rgb = (ColorMap <= 0.04045) ? ColorMap / 12.92 : pow((ColorMap + 0.055) / 1.055, 2.4);
4549
#endif
4650
return ColorMap;
4751
}
@@ -50,7 +54,7 @@
5054
void LinearToSRGBEst(inout float4 Color)
5155
{
5256
#if defined(_USELINEARLIGHTING_)
53-
Color.rgb = pow(abs(Color.rgb), 1.0 / 2.2);
57+
Color = (Color <= 0.0031308) ? 12.92 * Color : 1.055 * pow(Color, 1.0 / 2.4) - 0.055;
5458
#endif
5559
}
5660

0 commit comments

Comments
 (0)