treesummaryrefslogcommitdiff
path: root/shaders/frag_irradiance.glsl
diff options
context:
space:
mode:
authorPatrick2021-03-23 19:28:28 +0100
committerPatrick2021-03-23 19:28:28 +0100
commita0fdc6d882a1755d0b0607ba3d9bb55e7f8ac006 (patch)
tree82aab3828111378b6f0421aa58025b43f98f13a2 /shaders/frag_irradiance.glsl
parentcedffd5cf24c1a3ed64161475c806c55135406be (diff)
downloadsubsurface_scattering-a0fdc6d882a1755d0b0607ba3d9bb55e7f8ac006.tar.gz
subsurface_scattering-a0fdc6d882a1755d0b0607ba3d9bb55e7f8ac006.zip
fix translucency, add gaussian blur to shader
Diffstat (limited to 'shaders/frag_irradiance.glsl')
-rw-r--r--shaders/frag_irradiance.glsl25
1 files changed, 23 insertions, 2 deletions
diff --git a/shaders/frag_irradiance.glsl b/shaders/frag_irradiance.glsl
index 9e14ebe..497bdf0 100644
--- a/shaders/frag_irradiance.glsl
+++ b/shaders/frag_irradiance.glsl
@@ -1,16 +1,21 @@
#version 330 core
in vec3 FragPos;
+in vec3 LocalPos;
+in vec3 Backside;
+in float BacksideIrradiance;
in vec3 Normal;
out vec4 FragColor;
-uniform sampler2D shadowmapTexture;
-
uniform vec3 objectColor;
uniform vec3 lightColor;
uniform vec3 lightPos;
uniform vec3 viewPos;
+uniform float transmittanceScale;
+uniform int renderState;
+uniform float powBase;
+uniform float powFactor;
void main()
{
@@ -29,6 +34,22 @@ 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)
+ if (distanceToBackside != 0)
+ //result += objectColor * pow(powBase, -pow(distanceToBackside, 2)) * transmittanceScale * (1 - diff);
+ result += objectColor * pow(powBase, powFactor / pow(distanceToBackside, 0.6)) * transmittanceScale * (1 - diff);
+ // if (renderState == 3) {
+ // //result = Backside;
+ // //result = LocalPos;
+ // result = vec3(distanceToBackside);
+ // }
+
+
FragColor = vec4(result, 1.0f);
+ //FragColor = vec4(vec3(distanceToBackside), 1);
}