Get the normal vector of a position within a signed distance field.
Loads the getNormal
function into your shader. Note that map
is required to be defined when using this module.
Your signed distance function, responsible for defining the
solid shapes in your scene. Accepts position
, and returns
a vec2
– see glsl-raytrace
for more guidance :)
vec2 doModel(vec3 p);
#pragma glslify: getNormal = require('glsl-sdf-normal', map = doModel)
vec2 doModel(vec3 position) {
float radius = 1.0;
float dist = length(position) - radius;
float objType = 1.0;
return vec2(dist, objType);
}
Gets the normal vector for the provided position
.
Optionally, you may pass in a custom epsilon
value, which
determines the granularity at which to sample the field.
Defaults to 0.002.
See stackgl/contributing for details.
MIT. See LICENSE.md for details.