25
25
#define DEFAULT_MAX_PQ 100.0
26
26
#endif
27
27
28
+ #ifndef USE_VERY_FAST_SRGB
29
+ #if defined (SHADER_API_MOBILE)
30
+ #define USE_VERY_FAST_SRGB 1
31
+ #else
32
+ #define USE_VERY_FAST_SRGB 0
33
+ #endif
34
+ #endif
35
+
28
36
#ifndef USE_FAST_SRGB
29
- #ifdef SHADER_API_MOBILE
37
+ #if defined (SHADER_API_CONSOLE)
30
38
#define USE_FAST_SRGB 1
31
39
#else
32
40
#define USE_FAST_SRGB 0
@@ -150,7 +158,9 @@ float3 PQToLinear(float3 x)
150
158
//
151
159
half SRGBToLinear (half c)
152
160
{
153
- #if USE_FAST_SRGB
161
+ #if USE_VERY_FAST_SRGB
162
+ return c * c;
163
+ #elif USE_FAST_SRGB
154
164
return c * (c * (c * 0.305306011 + 0.682171111 ) + 0.012522878 );
155
165
#else
156
166
half linearRGBLo = c / 12.92 ;
@@ -162,7 +172,9 @@ half SRGBToLinear(half c)
162
172
163
173
half3 SRGBToLinear (half3 c)
164
174
{
165
- #if USE_FAST_SRGB
175
+ #if USE_VERY_FAST_SRGB
176
+ return c * c;
177
+ #elif USE_FAST_SRGB
166
178
return c * (c * (c * 0.305306011 + 0.682171111 ) + 0.012522878 );
167
179
#else
168
180
half3 linearRGBLo = c / 12.92 ;
@@ -179,7 +191,9 @@ half4 SRGBToLinear(half4 c)
179
191
180
192
half LinearToSRGB (half c)
181
193
{
182
- #if USE_FAST_SRGB
194
+ #if USE_VERY_FAST_SRGB
195
+ return sqrt (c);
196
+ #elif USE_FAST_SRGB
183
197
return max (1.055 * PositivePow (c, 0.416666667 ) - 0.055 , 0.0 );
184
198
#else
185
199
half sRGBLo = c * 12.92 ;
@@ -191,7 +205,9 @@ half LinearToSRGB(half c)
191
205
192
206
half3 LinearToSRGB (half3 c)
193
207
{
194
- #if USE_FAST_SRGB
208
+ #if USE_VERY_FAST_SRGB
209
+ return sqrt (c);
210
+ #elif USE_FAST_SRGB
195
211
return max (1.055 * PositivePow (c, 0.416666667 ) - 0.055 , 0.0 );
196
212
#else
197
213
half3 sRGBLo = c * 12.92 ;
0 commit comments