diff options
| author | Patrick | 2021-03-26 19:36:35 +0100 |
|---|---|---|
| committer | Patrick | 2021-03-26 19:36:35 +0100 |
| commit | c99ecda7bed596922125f6b1ef1ef2ae8f27703e (patch) | |
| tree | 16b3a22483457d22fdd34c1e079fd25dabd84940 /shaders/frag_irradiance.glsl | |
| parent | 36fb27a899045de24d71d55b06648abda7547268 (diff) | |
| download | subsurface_scattering-c99ecda7bed596922125f6b1ef1ef2ae8f27703e.tar.gz subsurface_scattering-c99ecda7bed596922125f6b1ef1ef2ae8f27703e.zip | |
SSSSS comments
Diffstat (limited to 'shaders/frag_irradiance.glsl')
| -rw-r--r-- | shaders/frag_irradiance.glsl | 30 |
1 files changed, 9 insertions, 21 deletions
diff --git a/shaders/frag_irradiance.glsl b/shaders/frag_irradiance.glsl index 1bcbc99..b985acf 100644 --- a/shaders/frag_irradiance.glsl +++ b/shaders/frag_irradiance.glsl @@ -17,11 +17,9 @@ uniform int renderState; uniform float powBase;
uniform float powFactor;
-uniform float translucencySampleVariances[6];
-uniform vec3 translucencySampleWeights[6];
-
void main()
{
+ // phong lighting
vec3 norm = normalize(Normal);
vec3 lightDir = normalize(lightPos - FragPos);
@@ -37,30 +35,20 @@ void main() float spec = pow(max(dot(viewDir, reflectDir), 0.0), 32);
vec3 specular = specularStrength * spec * lightColor;
- //float distanceToBackside = length(clamp(FragPos - Backside, vec3(0), vec3(1000)));
- float distanceToBackside = length(FragPos - Backside);
- //distanceToBackside = distance(Backside, LocalPos);
vec3 result = (ambient + diffuse + specular) * objectColor;
- if (renderState == 3) {
+ // thickness
+ float distanceToBackside = length(FragPos - Backside);
+
+ if (renderState == 2) {
if (distanceToBackside != 0) {
+ // add translucency by amplifying color inverse to the thickness
+ // (1 - diff) is part of the irradiance term,
+ // if the light hits the object straight at 90°
+ // most light is received
result += objectColor * pow(powBase, powFactor / pow(distanceToBackside, 0.6)) * transmittanceScale * (1 - diff);
- // vec3 translucency = vec3(0);
- // for (int i = 0; i < 6; i++) {
- // translucency += objectColor * translucencySampleWeights[i] * exp(-pow(distanceToBackside, 2.0) / translucencySampleVariances[i]);
- // }
-
- // result += translucency * transmittanceScale;
}
}
- //result += objectColor * pow(powBase, -pow(distanceToBackside, 2)) * transmittanceScale * (1 - diff);
- // if (renderState == 3) {
- // //result = Backside;
- // //result = LocalPos;
- // result = vec3(distanceToBackside);
- // }
-
FragColor = vec4(result, 1.0f);
- //FragColor = vec4(vec3(distanceToBackside), 1);
}
|
