]> gitweb.ps.run Git - subsurface_scattering/blob - shaders/frag_irradiance.glsl
497bdf07adc643c2bdcaebda5989ff38ffa21e63
[subsurface_scattering] / shaders / frag_irradiance.glsl
1 #version 330 core\r
2 \r
3 in vec3 FragPos;\r
4 in vec3 LocalPos;\r
5 in vec3 Backside;\r
6 in float BacksideIrradiance;\r
7 in vec3 Normal;\r
8 \r
9 out vec4 FragColor;\r
10 \r
11 uniform vec3 objectColor;\r
12 uniform vec3 lightColor;\r
13 uniform vec3 lightPos;\r
14 uniform vec3 viewPos;\r
15 uniform float transmittanceScale;\r
16 uniform int renderState;\r
17 uniform float powBase;\r
18 uniform float powFactor;\r
19 \r
20 void main()\r
21 {\r
22   vec3 norm = normalize(Normal);\r
23   vec3 lightDir = normalize(lightPos - FragPos);\r
24 \r
25   float diff = max(dot(norm, lightDir), 0.0);\r
26   vec3 diffuse = diff * lightColor;\r
27 \r
28   float ambientStrength = 0.1;\r
29   vec3 ambient = ambientStrength * lightColor;\r
30 \r
31   float specularStrength = 0.5;\r
32   vec3 viewDir = normalize(viewPos - FragPos);\r
33   vec3 reflectDir = reflect(-lightDir, norm);\r
34   float spec = pow(max(dot(viewDir, reflectDir), 0.0), 32);\r
35   vec3 specular = specularStrength * spec * lightColor;\r
36 \r
37   //float distanceToBackside = length(clamp(FragPos - Backside, vec3(0), vec3(1000)));\r
38   float distanceToBackside = length(FragPos - Backside);\r
39   //distanceToBackside = distance(Backside, LocalPos);\r
40   vec3 result = (ambient + diffuse + specular) * objectColor;\r
41 \r
42   if (renderState == 3)\r
43     if (distanceToBackside != 0)\r
44       //result += objectColor * pow(powBase, -pow(distanceToBackside, 2)) * transmittanceScale * (1 - diff);\r
45       result += objectColor * pow(powBase, powFactor / pow(distanceToBackside, 0.6)) * transmittanceScale * (1 - diff);\r
46   // if (renderState == 3) {\r
47   //   //result = Backside;\r
48   //   //result = LocalPos;\r
49   //   result = vec3(distanceToBackside);\r
50   // }\r
51 \r
52     \r
53   FragColor = vec4(result, 1.0f);\r
54   //FragColor = vec4(vec3(distanceToBackside), 1);\r
55 }\r