X-Git-Url: https://gitweb.ps.run/subsurface_scattering/blobdiff_plain/cedffd5cf24c1a3ed64161475c806c55135406be..a0fdc6d882a1755d0b0607ba3d9bb55e7f8ac006:/shaders/frag_irradiance.glsl 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); }