tweaks to sphere trace
This commit is contained in:
+7
-9
@@ -15,21 +15,21 @@ float scene(vec4 p) {
|
||||
return length(p.xyz) - 1.0;
|
||||
}
|
||||
|
||||
const float EPSILON = .0001;
|
||||
const uint MAX_STEPS = 50;
|
||||
const float EPSILON = .001;
|
||||
const uint MAX_STEPS = 10;
|
||||
const float NEARPLANE = 0.;
|
||||
float FARPLANE = length(object_uniforms.dimensions / 8.);
|
||||
float FARPLANE = length(object_uniforms.dimensions / 32.);
|
||||
|
||||
vec2 spheretracing(vec3 ori, vec3 dir, out vec3 p) {
|
||||
vec2 td = vec2(NEARPLANE, 1.);
|
||||
p = ori;
|
||||
td.y = scene(vec4(p, camera_uniforms.campos_and_time.w)) * .9;
|
||||
td.y = scene(vec4(p, camera_uniforms.campos_and_time.w)) * .98;
|
||||
td.x += td.y;
|
||||
p = ori + dir * td.x;
|
||||
p = fma(dir, vec3(td.x), ori);
|
||||
for (int i = 0; i < MAX_STEPS && td.y > EPSILON && td.x < FARPLANE; i++) {
|
||||
td.y = scene(vec4(p, camera_uniforms.campos_and_time.w)) * .9;
|
||||
td.y = scene(vec4(p, camera_uniforms.campos_and_time.w)) * .98;
|
||||
td.x += td.y;
|
||||
p = ori + dir * td.x;
|
||||
p = fma(dir, vec3(td.x), ori);
|
||||
}
|
||||
return td;
|
||||
}
|
||||
@@ -53,6 +53,4 @@ void main() {
|
||||
{
|
||||
discard;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user