Skip to content
Permalink
Browse files

Speed up and make more accurate relief mapping

using linear + binary search.
  • Loading branch information
RealBadAngel authored and est31 committed Dec 9, 2015
1 parent 696148e commit a64d78a37e95b99f32c29c8dec2e0cdae85a8b41
Showing with 19 additions and 5 deletions.
  1. +19 −5 client/shaders/nodes_shader/opengl_fragment.glsl
@@ -47,15 +47,29 @@ vec4 get_normal_map(vec2 uv)

float find_intersection(vec2 dp, vec2 ds)
{
const float depth_step = 1.0 / 24.0;
float depth = 1.0;
for (int i = 0 ; i < 24 ; i++) {
float best_depth = 0.0;
float size = 0.0625;
for (int i = 0; i < 15; i++) {
depth -= size;
float h = texture2D(normalTexture, dp + ds * depth).a;
if (h >= depth)
if (depth <= h) {
best_depth = depth;
break;
depth -= depth_step;
}
}
return depth;
depth = best_depth;
for (int i = 0; i < 4; i++) {
size *= 0.5;
float h = texture2D(normalTexture,dp + ds * depth).a;
if (depth <= h) {
best_depth = depth;
depth += size;
} else {
depth -= size;
}
}
return best_depth;
}

float find_intersectionRGB(vec2 dp, vec2 ds)

0 comments on commit a64d78a

Please sign in to comment.
You can’t perform that action at this time.