glsl-sdf-normal
v1.0.0
Published
Get the normal vector of a position within a signed distance field.
Downloads
39
Maintainers
Keywords
Readme
glsl-sdf-normal
Get the normal vector of a position within a signed distance field.
Usage
getNormal = require(glsl-sdf-normal, <map>)
Loads the getNormal
function into your shader. Note that map
is required to be defined when using this module.
vec2 map(vec3 position)
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);
}
vec3 getNormal(vec3 position)
Gets the normal vector for the provided position
.
vec3 getNormal(vec3 position, float epsilon)
Optionally, you may pass in a custom epsilon
value, which
determines the granularity at which to sample the field.
Defaults to 0.002.
Contributing
See stackgl/contributing for details.
License
MIT. See LICENSE.md for details.