diff options
Diffstat (limited to 'resources')
-rwxr-xr-x | resources/shaders/shader.frag | 15 | ||||
-rwxr-xr-x | resources/shaders/shader.vert | 3 |
2 files changed, 14 insertions, 4 deletions
diff --git a/resources/shaders/shader.frag b/resources/shaders/shader.frag index 141915e..c48bbe6 100755 --- a/resources/shaders/shader.frag +++ b/resources/shaders/shader.frag @@ -8,6 +8,7 @@ in vec3 pos; in vec3 refrPos; in float refrProb; in vec2 uv; +in float matIor; uniform int wire = 0; uniform float red = 1.0; @@ -44,13 +45,19 @@ void main() { // fragColor = vec4(fragColor.x, 0.f, fragColor.z, 1.f); // fragColor = vec4(test, test, test, 1.f); vec2 refrUV = uvFromWorldPoint(refrPos); + float beerAtt = exp(-length((pos - refrPos)) * 0.5f); + + vec4 diffuse = vec4(red * d, green * d, blue * d, 1.0f); + vec4 specular = vec4(1, 1, 1, 1) * pow(spec, 10.f); vec4 transmissive = vec4(vec3(refrUV, 1.f - refrUV.y), 1.f); - fragColor = 0.25f * vec4(red * d, green * d, blue * d, 1.0f); // Diffuse - fragColor += 0.75f * vec4(1, 1, 1, 1) * pow(spec, 10.f); // Specular TODO: Pass multiplications as uniforms. +// refrProb *= beerAtt; + + fragColor = 0.4f * diffuse; // Diffuse + fragColor += 0.6f * specular; // Specular TODO: Pass multiplications as uniforms. fragColor = clamp(fragColor, 0.f, 1.f); // Clamp - fragColor *= (1 - (refrProb / 1.f)); - fragColor += (refrProb / 1.5f) * transmissive; + fragColor *= (1 - ((beerAtt * refrProb) / 1.f)); + fragColor += ((beerAtt * refrProb) / 1.5f) * transmissive; // fragColor = transmissive * refrProb; fragColor = vec4(vec3(fragColor), 1.5f); // Dividing refrProb by 2 just for heuristic. Want more phong to show through. diff --git a/resources/shaders/shader.vert b/resources/shaders/shader.vert index 8dda424..fbb9950 100755 --- a/resources/shaders/shader.vert +++ b/resources/shaders/shader.vert @@ -19,6 +19,7 @@ out vec3 pos; out vec3 refrPos; out float refrProb; out vec2 uv; +out float matIor; vec4 getRefrPos() { float depth = -1.f; // TODO: Pass as uniform @@ -26,6 +27,7 @@ vec4 getRefrPos() { float cos_theta_i = dot(-w_o, normal_worldSpace); float n_i = 1; float n_t = 1.33f; +// matIor = n_t; float determinant = 1.f - (pow((n_i / n_t), 2.f) * (1.f - pow(cos_theta_i, 2.f))); float r0 = pow((n_i - n_t) / (n_i + n_t), 2.f); // variable required to calculate probability of reflection @@ -54,6 +56,7 @@ void main() { float dist = position.y - depth; float width = 81.f * 2.f; float length = 81.f * 2.f; + matIor = 1.33f; normal_cameraSpace = normalize(inverse(transpose(mat3(view))) * inverseTransposeModel * normal); camera_worldSpace = vec3(inverseView * vec4(0.f, 0.f, 0.f, 1.f)); |