Showing:

18

158

1yr ago

2

0

MIT

No

# Modeling with distance fields

A collection of distance field equations for modeling and ray-marching basic primitives shapes. Primitives can be combined and modified to create more complex shapes using glsl-sdf-ops.

The library is glslify compatible. An demo exists here.

These were taken from iQ's excellent distance functions page

## Usage

``````vec2 doModel(vec3 p);
#pragma glslify: raytrace = require('glsl-raytrace', map = doModel, steps = 90)

// import a primitive
#pragma glslify: sdTorus    = require('glsl-sdf-primitives/sdTorus')

vec2 doModel(vec3 p) {
return vec2( sdTorus( p, vec2( 0.20, 0.05 )), 0.0 );
}
``````

### Primitives

#### Signed Sphere

`sdSphere( vec3 position, float radius )`

#### Signed Box

`sdBox( vec3 position, vec3 dimension )`

#### Unsigned Box

`sdBox( vec3 position, vec3 dimension )`

#### Unsigned Rounded Box

`sdBox( vec3 position, vec3 dimension, float rounding )`

#### Signed Plane

`sdPlane( vec3 position, vec4 planeEquation )`

#### Signed Torus

`sdTorus( vec3 position, float hole )`

#### Signed Capped Cone

`sdCappedCone( vec3 position, vec2 dimension )`

#### Signed Capped Cylinder

`sdCappedCylinder( vec3 position, vec2 dimension )`

#### Signed Capsule

`sdCapsule( vec3 position, vec3 a, vec3 b, float radius )`

#### Signed Cone

`sdCone( vec3 position, vec2 dimension )`

#### Signed Cylinder

`sdCylinder( vec3 position, vec2 dimension )`

#### Signed Hexagonal Prism

`sdHexPrism( vec3 position, vec2 dimension )`

#### Signed Triangle Prism

`sdTriPrism( vec3 position, vec2 dimension )`

`udQuad( vec3 p, vec3 a, vec3 b, vec3 c, vec3 d )`

#### Unsigned Triangle

`udTriudTriangle( vec3 p, vec3 a, vec3 b, vec3 c )`

## Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100