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; return length(p.xyz) - 1.0;
} }
const float EPSILON = .0001; const float EPSILON = .001;
const uint MAX_STEPS = 50; const uint MAX_STEPS = 10;
const float NEARPLANE = 0.; 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 spheretracing(vec3 ori, vec3 dir, out vec3 p) {
vec2 td = vec2(NEARPLANE, 1.); vec2 td = vec2(NEARPLANE, 1.);
p = ori; 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; 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++) { 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; td.x += td.y;
p = ori + dir * td.x; p = fma(dir, vec3(td.x), ori);
} }
return td; return td;
} }
@@ -53,6 +53,4 @@ void main() {
{ {
discard; discard;
} }
return;
} }