glsl-smooth-min

Smooth minimum functions for GLSL

Last updated 6 years ago by
hughsk .

MIT ·
Repository ·
Bugs ·
Original npm ·
Tarball ·
package.json
$ cnpm install glsl-smooth-min

SYNC missed versions from
official npm registry.

Smooth minimum functions for GLSL, sourced from Iñigo Quílez's article.

Particularly useful when doing Shadertoy-style raymarching with distance fields: you can smoothly blend between two volumes, instead of doing a hard union with `min(a, b)`

.

`smin(float a, float b, float k)`

Blends smoothly between `a`

and `b`

, with a smoothing amount determined by the value of `k`

. For example:

```
#pragma glslify: smin = require(glsl-smooth-min)
float doModel(vec3 position) {
// Take two sphere volumes
float a = length(position + 0.5) - 0.7;
float b = length(position - 0.5) - 0.7;
// And smooth them together
return smin(a, b, 0.8);
}
```

There are three variants of this function available, all with the same function signature:

```
#pragma glslify: poly = require(glsl-smooth-min/poly)
#pragma glslify: pow = require(glsl-smooth-min/pow)
#pragma glslify: exp = require(glsl-smooth-min/exp)
// Exports `poly` by default
#pragma glslify: poly = require(glsl-smooth-min)
```

Each of these variants differ somewhat in their results, and some are more appropriate in specific situations:

These three functions produce smooth results, with different qualities. The three accept a paramter

kthat controls the radious/distance of the smoothness. From these three, probably the polynomial is the fastest, and also the easiest to control, forkmaps directly to a blending band size/distance. Unlike the other two, it probably suffers from second order discontinuities (derivatives), but visually is pleasing enough for most applications.

See stackgl/contributing for details.

MIT. See LICENSE.md for details.

- 1.0.0 ... latest (6 years ago)

- 1.0.0 ... 6 years ago

Maintainers (18)

Downloads

Today
0

This Week
0

This Month
0

Last Day
0

Last Week
0

Last Month
1

Dependencies (0)

None
Dev Dependencies (5)

- browserify ^8.1.3
- gl-toy ^1.0.0
- glsl-square-frame ^1.0.1
- glslify ^1.6.0
- wzrd ^1.2.1

Dependents (1)

Copyright 2014 - 2017 © taobao.org |