summaryrefslogtreecommitdiff
path: root/resources/shaders
diff options
context:
space:
mode:
Diffstat (limited to 'resources/shaders')
-rwxr-xr-xresources/shaders/shader.frag15
-rwxr-xr-xresources/shaders/shader.vert3
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));