blob: 6b9149bcc6bad57daa7ba09bf04a18cd83da00a6 [file] [log] [blame]
#define SCALE 0.12
#define BIAS -0.04
#define BIN_ITER 5
#ifndef BUMP_HQ
#define LIN_ITER 5
#endif
vec2 Bump_DoOcclusionParallax(in sampler2D heightMap, in vec2 texCoord, in vec3 tanViewDir){
float size = 1.0 / float(BIN_ITER);
// depth
float d = 1.0;
// best depth
float bd = 0.0;
#ifdef BUMP_HQ
const int N = 8;
int LIN_ITER = mix(2 * N, N, tanViewDir.z);
#endif
// search from front to back
for (int i = 0; i < LIN_ITER; i++){
d -= dstep;
float h = texture2D(heightMap, dp + ds * (1.0 - d)).a;
if (bd < 0.005) // if no depth found yet
if (d <= h) bd = depth; // best depth
}
for (int i = 0; i < BIN_ITER; i++) {
size *= 0.5;
float t = texture2D(heightMap, dp + ds * (1.0 - d)).a;
if (d <= t) {
bd = depth;
d += 2 * size;
}
d -= size;
}
}
vec2 Bump_DoParallax(in sampler2D heightMap, in vec2 texCoord, in vec3 tanViewDir){
float h = texture2D(heightMap, texCoord).a * SCALE + BIAS;
return texCoord + h * tanViewDir.xy;
}