]> gitweb.ps.run Git - subsurface_scattering/blobdiff - shaders/frag_irradiance.glsl
pre cleanup
[subsurface_scattering] / shaders / frag_irradiance.glsl
index 9e14ebe2e2da8dd07e31d4cb92b71abe40cfdd6f..1bcbc993123d258954a05e89e8798da32772816a 100644 (file)
@@ -1,16 +1,24 @@
 #version 330 core\r
 \r
 in vec3 FragPos;\r
+in vec3 LocalPos;\r
+in vec3 Backside;\r
+in float BacksideIrradiance;\r
 in vec3 Normal;\r
 \r
 out vec4 FragColor;\r
 \r
-uniform sampler2D shadowmapTexture;\r
-\r
 uniform vec3 objectColor;\r
 uniform vec3 lightColor;\r
 uniform vec3 lightPos;\r
 uniform vec3 viewPos;\r
+uniform float transmittanceScale;\r
+uniform int renderState;\r
+uniform float powBase;\r
+uniform float powFactor;\r
+\r
+uniform float translucencySampleVariances[6];\r
+uniform vec3 translucencySampleWeights[6];\r
 \r
 void main()\r
 {\r
@@ -29,6 +37,30 @@ void main()
   float spec = pow(max(dot(viewDir, reflectDir), 0.0), 32);\r
   vec3 specular = specularStrength * spec * lightColor;\r
 \r
+  //float distanceToBackside = length(clamp(FragPos - Backside, vec3(0), vec3(1000)));\r
+  float distanceToBackside = length(FragPos - Backside);\r
+  //distanceToBackside = distance(Backside, LocalPos);\r
   vec3 result = (ambient + diffuse + specular) * objectColor;\r
+\r
+  if (renderState == 3) {\r
+    if (distanceToBackside != 0) {\r
+      result += objectColor * pow(powBase, powFactor / pow(distanceToBackside, 0.6)) * transmittanceScale * (1 - diff);\r
+      // vec3 translucency = vec3(0);\r
+      // for (int i = 0; i < 6; i++) {\r
+      //   translucency += objectColor * translucencySampleWeights[i] * exp(-pow(distanceToBackside, 2.0) / translucencySampleVariances[i]);\r
+      // }\r
+\r
+      // result += translucency * transmittanceScale;\r
+    }\r
+  }\r
+      //result += objectColor * pow(powBase, -pow(distanceToBackside, 2)) * transmittanceScale * (1 - diff);\r
+  // if (renderState == 3) {\r
+  //   //result = Backside;\r
+  //   //result = LocalPos;\r
+  //   result = vec3(distanceToBackside);\r
+  // }\r
+\r
+    \r
   FragColor = vec4(result, 1.0f);\r
+  //FragColor = vec4(vec3(distanceToBackside), 1);\r
 }\r