tweaks to sphere trace

This commit is contained in:
2025-07-07 21:44:56 +01:00
parent 15851b43c7
commit 97042dbe19
+7 -9
View File
@@ -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;
}