Преглед на файлове

Fix sheen level application

Popov72 преди 5 години
родител
ревизия
d26b7c0866
променени са 2 файла, в които са добавени 12 реда и са изтрити 2 реда
  1. 10 0
      src/Shaders/ShadersInclude/helperFunctions.fx
  2. 2 2
      src/Shaders/ShadersInclude/pbrBlockSheen.fx

+ 10 - 0
src/Shaders/ShadersInclude/helperFunctions.fx

@@ -48,11 +48,21 @@ vec3 toLinearSpace(vec3 color)
     return pow(color, vec3(LinearEncodePowerApprox));
     return pow(color, vec3(LinearEncodePowerApprox));
 }
 }
 
 
+vec4 toLinearSpace(vec4 color)
+{
+    return vec4(pow(color.rgb, vec3(LinearEncodePowerApprox)), color.a);
+}
+
 vec3 toGammaSpace(vec3 color)
 vec3 toGammaSpace(vec3 color)
 {
 {
     return pow(color, vec3(GammaEncodePowerApprox));
     return pow(color, vec3(GammaEncodePowerApprox));
 }
 }
 
 
+vec4 toGammaSpace(vec4 color)
+{
+    return vec4(pow(color.rgb, vec3(GammaEncodePowerApprox)), color.a);
+}
+
 float toGammaSpace(float color)
 float toGammaSpace(float color)
 {
 {
     return pow(color, GammaEncodePowerApprox);
     return pow(color, GammaEncodePowerApprox);

+ 2 - 2
src/Shaders/ShadersInclude/pbrBlockSheen.fx

@@ -71,7 +71,7 @@
         float sheenIntensity = vSheenColor.a;
         float sheenIntensity = vSheenColor.a;
 
 
         #ifdef SHEEN_TEXTURE
         #ifdef SHEEN_TEXTURE
-            vec4 sheenMapData = texture2D(sheenSampler, vSheenUV + uvOffset) * vSheenInfos.y;
+            vec4 sheenMapData = toLinearSpace(texture2D(sheenSampler, vSheenUV + uvOffset)) * vSheenInfos.y;
             sheenIntensity *= sheenMapData.a;
             sheenIntensity *= sheenMapData.a;
             #if DEBUGMODE > 0
             #if DEBUGMODE > 0
                 outParams.sheenMapData = sheenMapData;
                 outParams.sheenMapData = sheenMapData;
@@ -86,7 +86,7 @@
         #else
         #else
             vec3 sheenColor = vSheenColor.rgb;
             vec3 sheenColor = vSheenColor.rgb;
             #ifdef SHEEN_TEXTURE
             #ifdef SHEEN_TEXTURE
-                sheenColor.rgb *= toLinearSpace(sheenMapData.rgb);
+                sheenColor.rgb *= sheenMapData.rgb;
             #endif
             #endif
             
             
             #ifdef SHEEN_ROUGHNESS
             #ifdef SHEEN_ROUGHNESS