1.0.14 • Published 3 months ago

@thi.ng/webgl-shadertoy v1.0.14

Weekly downloads
56
License
Apache-2.0
Repository
github
Last release
3 months ago

webgl-shadertoy

npm version npm downloads Twitter Follow

This project is part of the @thi.ng/umbrella monorepo.

About

Basic WebGL scaffolding for running interactive fragment shaders via @thi.ng/shader-ast. This is a support package for @thi.ng/webgl.

Status

ALPHA - bleeding edge / work-in-progress

Search or submit any issues for this package

Related packages

Installation

yarn add @thi.ng/webgl-shadertoy

ES module import:

<script type="module" src="https://cdn.skypack.dev/@thi.ng/webgl-shadertoy"></script>

Skypack documentation

For Node.js REPL:

# with flag only for < v16
node --experimental-repl-await

> const webglShadertoy = await import("@thi.ng/webgl-shadertoy");

Package sizes (gzipped, pre-treeshake): ESM: 722 bytes

Dependencies

Usage examples

Several demos in this repo's /examples directory are using this package.

A selection:

ScreenshotDescriptionLive demoSource
Evolutionary shader generation using genetic programmingDemoSource
Shadertoy-like WebGL setupDemoSource

API

Generated API docs

import {
    $xy, add, distance, eq, float, FloatSym, fract,
    int, min, mix, mul, neg, ret, sin, sym,
    Vec2Sym, Vec2Term, vec3, Vec3Sym, vec4
} from "@thi.ng/shader-ast";
import { aspectCorrectedUV, fit1101 } from "@thi.ng/shader-ast-stdlib";
import { glCanvas } from "@thi.ng/webgl";
import { MainImageFn, shaderToy } from "@thi.ng/webgl-shadertoy";

const mainImage: MainImageFn = (gl, unis) => {
    // predeclare local vars / symbols
    let uv: Vec2Sym;
    let mp: Vec2Sym;
    let d1: FloatSym;
    let d2: FloatSym;
    let col: Vec3Sym;

    // Inline function to create ring pattern with center at `p`
    const rings = (p: Vec2Term, speed = 0.25, freq = 50) =>
        sin(mul(add(distance(uv, p), fract(mul(unis.time, speed))), freq));

    return [
        // let's work in [-1..+1] range (based on vertical resolution)
        (uv = sym(aspectCorrectedUV($xy(gl.gl_FragCoord), unis.resolution))),
        (mp = sym(aspectCorrectedUV(unis.mouse, unis.resolution))),
        // compute ring colors
        (d1 = sym(rings(mp))),
        (d2 = sym(rings(neg(mp)))),
        // combine rings and multiply with target color based on
        // mouse button state
        (col = sym(
            mul(
                vec3(fit1101(min(d1, d2))),
                mix(
                    vec3(1),
                    vec3(d1, 0, d2),
                    float(eq(unis.mouseButtons, int(1)))
                )
            )
        )),
        // return as vec4 (mandatory)
        ret(vec4(col, 1))
    ];
};

// create WebGL canvas
const canvas = glCanvas({
    width: window.innerWidth,
    height: window.innerHeight,
    parent: document.body,
    version: 1
});

// init shader toy with canvas & shader fn
const toy = shaderToy({
    canvas: canvas.canvas,
    gl: canvas.gl,
    main: mainImage
});

toy.start();

Authors

Karsten Schmidt

If this project contributes to an academic publication, please cite it as:

@misc{thing-webgl-shadertoy,
  title = "@thi.ng/webgl-shadertoy",
  author = "Karsten Schmidt",
  note = "https://thi.ng/webgl-shadertoy",
  year = 2019
}

License

© 2019 - 2021 Karsten Schmidt // Apache Software License 2.0

1.0.14

3 months ago

1.0.13

3 months ago

1.0.12

4 months ago

1.0.11

4 months ago

1.0.10

4 months ago

1.0.9

4 months ago

1.0.8

4 months ago

1.0.7

5 months ago

1.0.6

5 months ago

1.0.5

5 months ago

1.0.4

5 months ago

1.0.2

5 months ago

1.0.3

5 months ago

1.0.1

5 months ago

0.4.172

6 months ago

0.4.171

6 months ago

0.4.170

7 months ago

0.4.168

7 months ago

0.4.169

7 months ago

0.4.167

7 months ago

0.4.166

8 months ago

0.4.165

8 months ago

0.4.146

11 months ago

0.4.145

12 months ago

0.4.144

12 months ago

0.4.149

11 months ago

0.4.148

11 months ago

0.4.147

11 months ago

0.4.160

9 months ago

0.4.164

8 months ago

0.4.163

8 months ago

0.4.162

8 months ago

0.4.161

9 months ago

0.4.153

11 months ago

0.4.152

11 months ago

0.4.151

11 months ago

0.4.150

11 months ago

0.4.157

10 months ago

0.4.156

10 months ago

0.4.155

10 months ago

0.4.154

10 months ago

0.4.159

9 months ago

0.4.158

10 months ago

0.4.143

1 year ago

0.4.142

1 year ago

0.4.141

1 year ago

0.4.140

1 year ago

0.4.139

1 year ago

0.4.138

1 year ago

0.4.137

1 year ago

0.4.136

1 year ago

0.4.135

1 year ago

0.4.134

1 year ago

0.4.133

1 year ago

0.4.132

1 year ago

0.4.131

1 year ago

0.4.130

1 year ago

0.4.129

1 year ago

0.4.128

1 year ago

0.4.127

1 year ago

0.4.126

1 year ago

0.4.125

1 year ago

0.4.124

1 year ago

0.4.123

1 year ago

0.4.120

1 year ago

0.4.122

1 year ago

0.4.121

1 year ago

0.4.119

1 year ago

0.4.118

1 year ago

0.4.117

1 year ago

0.4.116

1 year ago

0.4.115

1 year ago

0.4.113

1 year ago

0.4.112

1 year ago

0.4.111

1 year ago

0.4.114

1 year ago

0.4.110

1 year ago

0.4.109

1 year ago

0.4.108

1 year ago

0.4.107

1 year ago

0.4.106

1 year ago

0.4.105

1 year ago

0.4.104

1 year ago

0.4.103

1 year ago

0.4.102

2 years ago

0.4.101

2 years ago

0.4.100

2 years ago

0.4.86

2 years ago

0.4.87

2 years ago

0.4.84

2 years ago

0.4.85

2 years ago

0.4.82

2 years ago

0.4.83

2 years ago

0.4.80

2 years ago

0.4.81

2 years ago

0.4.88

2 years ago

0.4.89

2 years ago

0.4.75

2 years ago

0.4.76

2 years ago

0.4.73

2 years ago

0.4.74

2 years ago

0.4.71

2 years ago

0.4.72

2 years ago

0.4.70

2 years ago

0.4.79

2 years ago

0.4.77

2 years ago

0.4.78

2 years ago

0.4.69

2 years ago

0.4.66

2 years ago

0.4.67

2 years ago

0.4.97

2 years ago

0.4.98

2 years ago

0.4.96

2 years ago

0.4.93

2 years ago

0.4.94

2 years ago

0.4.91

2 years ago

0.4.92

2 years ago

0.4.99

2 years ago

0.4.90

2 years ago

0.4.64

2 years ago

0.4.65

2 years ago

0.4.63

2 years ago

0.4.62

2 years ago

0.4.60

2 years ago

0.4.61

2 years ago

0.4.59

2 years ago

0.4.57

2 years ago

0.4.58

2 years ago

0.4.53

2 years ago

0.4.54

2 years ago

0.4.51

2 years ago

0.4.52

2 years ago

0.4.55

2 years ago

0.4.56

2 years ago

0.4.49

2 years ago

0.4.50

2 years ago

0.4.48

2 years ago

0.4.47

2 years ago

0.4.45

2 years ago

0.4.42

2 years ago

0.4.43

2 years ago

0.4.40

2 years ago

0.4.41

2 years ago

0.4.44

2 years ago

0.4.31

3 years ago

0.4.32

3 years ago

0.4.30

3 years ago

0.4.39

3 years ago

0.4.37

3 years ago

0.4.38

3 years ago

0.4.35

3 years ago

0.4.36

3 years ago

0.4.33

3 years ago

0.4.34

3 years ago

0.4.29

3 years ago

0.4.28

3 years ago

0.4.27

3 years ago

0.4.26

3 years ago

0.4.20

3 years ago

0.4.21

3 years ago

0.4.24

3 years ago

0.4.25

3 years ago

0.4.22

3 years ago

0.4.23

3 years ago

0.4.19

3 years ago

0.4.17

3 years ago

0.4.18

3 years ago

0.4.15

3 years ago

0.4.16

3 years ago

0.4.10

3 years ago

0.4.13

3 years ago

0.4.14

3 years ago

0.4.11

3 years ago

0.4.12

3 years ago

0.4.9

3 years ago

0.4.8

3 years ago

0.4.5

4 years ago

0.4.4

4 years ago

0.4.7

4 years ago

0.4.6

4 years ago

0.4.1

4 years ago

0.4.0

4 years ago

0.4.3

4 years ago

0.4.2

4 years ago

0.3.11

4 years ago

0.3.9

4 years ago

0.3.10

4 years ago

0.3.5

4 years ago

0.3.8

4 years ago

0.3.0

4 years ago

0.3.2

4 years ago

0.3.1

4 years ago

0.3.4

4 years ago

0.2.91

4 years ago

0.2.90

4 years ago

0.2.89

4 years ago

0.2.88

4 years ago

0.2.87

4 years ago

0.2.86

4 years ago

0.2.85

4 years ago

0.2.84

4 years ago

0.2.83

4 years ago

0.2.82

4 years ago

0.2.81

4 years ago

0.2.80

4 years ago

0.2.79

4 years ago

0.2.78

4 years ago

0.2.77

4 years ago

0.2.76

4 years ago

0.2.75

4 years ago

0.2.74

4 years ago

0.2.73

4 years ago

0.2.72

4 years ago

0.2.71

4 years ago

0.2.70

4 years ago

0.2.69

4 years ago

0.2.68

4 years ago

0.2.67

4 years ago

0.2.66

4 years ago

0.2.65

4 years ago

0.2.61

4 years ago

0.2.60

4 years ago

0.2.59

4 years ago

0.2.58

4 years ago

0.2.57

4 years ago

0.2.56

4 years ago

0.2.55

4 years ago

0.2.54

4 years ago

0.2.53

4 years ago

0.2.52

5 years ago

0.2.51

5 years ago

0.2.50

5 years ago

0.2.49

5 years ago

0.2.48

5 years ago

0.2.47

5 years ago

0.2.46

5 years ago

0.2.45

5 years ago

0.2.44

5 years ago

0.2.43

5 years ago

0.2.42

5 years ago

0.2.41

5 years ago

0.2.40

5 years ago

0.2.39

5 years ago

0.2.38

5 years ago

0.2.37

5 years ago

0.2.36

5 years ago

0.2.35

5 years ago

0.2.34

5 years ago

0.2.33

5 years ago

0.2.32

5 years ago

0.2.30

5 years ago

0.2.31

5 years ago

0.2.29

5 years ago

0.2.28

5 years ago

0.2.27

5 years ago

0.2.26

5 years ago

0.2.25

5 years ago

0.2.24

5 years ago

0.2.23

5 years ago

0.2.22

5 years ago

0.2.21

5 years ago

0.2.20

5 years ago

0.2.19

5 years ago

0.2.18

5 years ago

0.2.17

5 years ago

0.2.16

5 years ago

0.2.15

5 years ago

0.2.14

5 years ago

0.2.13

5 years ago

0.2.12

5 years ago

0.2.11

5 years ago

0.2.10

5 years ago

0.2.9

5 years ago

0.2.8

5 years ago

0.2.7

5 years ago

0.2.6

5 years ago

0.2.5

5 years ago

0.2.4

5 years ago

0.2.3

5 years ago

0.2.2

5 years ago

0.1.4

5 years ago

0.1.3

5 years ago

0.1.2

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago