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;
|
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;
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user