diff options
Diffstat (limited to 'src/3d/sdf_cpu.h')
| -rw-r--r-- | src/3d/sdf_cpu.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/3d/sdf_cpu.h b/src/3d/sdf_cpu.h index 1e461f6..e0f1b3f 100644 --- a/src/3d/sdf_cpu.h +++ b/src/3d/sdf_cpu.h @@ -45,10 +45,12 @@ inline float sdPlane(vec3 p, vec3 n, float h) { template <typename F> inline vec3 calc_normal(vec3 p, F sdf_func, float e = 0.001f) { const float d2e = 2.0f * e; - return vec3( - sdf_func(vec3(p.x + e, p.y, p.z)) - sdf_func(vec3(p.x - e, p.y, p.z)), - sdf_func(vec3(p.x, p.y + e, p.z)) - sdf_func(vec3(p.x, p.y - e, p.z)), - sdf_func(vec3(p.x, p.y, p.z + e)) - sdf_func(vec3(p.x, p.y, p.z - e))) + return vec3(sdf_func(vec3(p.x + e, p.y, p.z)) - + sdf_func(vec3(p.x - e, p.y, p.z)), + sdf_func(vec3(p.x, p.y + e, p.z)) - + sdf_func(vec3(p.x, p.y - e, p.z)), + sdf_func(vec3(p.x, p.y, p.z + e)) - + sdf_func(vec3(p.x, p.y, p.z - e))) .normalize(); } |
