glre 0.39.0 → 0.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -4
- package/dist/addons.cjs +1 -1
- package/dist/addons.cjs.map +1 -1
- package/dist/addons.d.ts +849 -19
- package/dist/addons.js +1 -1
- package/dist/addons.js.map +1 -1
- package/dist/index.cjs +8 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +38 -20
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/dist/native.d.ts +48 -22
- package/dist/node.cjs +59 -30
- package/dist/node.cjs.map +1 -1
- package/dist/node.d.ts +34 -22
- package/dist/node.js +59 -30
- package/dist/node.js.map +1 -1
- package/dist/react.d.ts +38 -20
- package/dist/solid.d.ts +38 -20
- package/package.json +24 -24
- package/src/addons/animation/easing/backIn.ts +10 -0
- package/src/addons/animation/easing/backInOut.ts +12 -0
- package/src/addons/animation/easing/backOut.ts +10 -0
- package/src/addons/animation/easing/bounceIn.ts +10 -0
- package/src/addons/animation/easing/bounceInOut.ts +13 -0
- package/src/addons/animation/easing/bounceOut.ts +30 -0
- package/src/addons/animation/easing/circularIn.ts +9 -0
- package/src/addons/animation/easing/circularInOut.ts +11 -0
- package/src/addons/animation/easing/circularOut.ts +9 -0
- package/src/addons/animation/easing/cubicIn.ts +9 -0
- package/src/addons/animation/easing/cubicInOut.ts +11 -0
- package/src/addons/animation/easing/cubicOut.ts +10 -0
- package/src/addons/animation/easing/elasticIn.ts +10 -0
- package/src/addons/animation/easing/elasticInOut.ts +21 -0
- package/src/addons/animation/easing/elasticOut.ts +12 -0
- package/src/addons/animation/easing/exponentialIn.ts +9 -0
- package/src/addons/animation/easing/exponentialInOut.ts +13 -0
- package/src/addons/animation/easing/exponentialOut.ts +9 -0
- package/src/addons/animation/easing/index.ts +33 -0
- package/src/addons/animation/easing/linearIn.ts +9 -0
- package/src/addons/animation/easing/linearInOut.ts +9 -0
- package/src/addons/animation/easing/linearOut.ts +9 -0
- package/src/addons/animation/easing/quadraticIn.ts +9 -0
- package/src/addons/animation/easing/quadraticInOut.ts +10 -0
- package/src/addons/animation/easing/quadraticOut.ts +9 -0
- package/src/addons/animation/easing/quarticIn.ts +9 -0
- package/src/addons/animation/easing/quarticInOut.ts +11 -0
- package/src/addons/animation/easing/quarticOut.ts +10 -0
- package/src/addons/animation/easing/quinticIn.ts +9 -0
- package/src/addons/animation/easing/quinticInOut.ts +11 -0
- package/src/addons/animation/easing/quinticOut.ts +9 -0
- package/src/addons/animation/easing/sineIn.ts +10 -0
- package/src/addons/animation/easing/sineInOut.ts +10 -0
- package/src/addons/animation/easing/sineOut.ts +10 -0
- package/src/addons/color/palette/macbeth.ts +42 -0
- package/src/addons/color/space/cmyk2rgb.ts +12 -0
- package/src/addons/color/space/gamma2linear.ts +19 -0
- package/src/addons/color/space/hsl2rgb.ts +20 -0
- package/src/addons/color/space/hsv2rgb.ts +18 -0
- package/src/addons/color/space/hue2rgb.ts +12 -0
- package/src/addons/color/space/index.ts +29 -0
- package/src/addons/color/space/lab2lch.ts +22 -0
- package/src/addons/color/space/lab2rgb.ts +19 -0
- package/src/addons/color/space/lab2xyz.ts +32 -0
- package/src/addons/color/space/lch2lab.ts +21 -0
- package/src/addons/color/space/lch2rgb.ts +22 -0
- package/src/addons/color/space/linear2gamma.ts +19 -0
- package/src/addons/color/space/oklab2rgb.ts +35 -0
- package/src/addons/color/space/rgb2cmyk.ts +13 -0
- package/src/addons/color/space/rgb2hcv.ts +29 -0
- package/src/addons/color/space/rgb2hsl.ts +23 -0
- package/src/addons/color/space/rgb2hsv.ts +36 -0
- package/src/addons/color/space/rgb2hue.ts +29 -0
- package/src/addons/color/space/rgb2lab.ts +19 -0
- package/src/addons/color/space/rgb2lch.ts +22 -0
- package/src/addons/color/space/rgb2oklab.ts +45 -0
- package/src/addons/color/space/rgb2srgb.ts +34 -0
- package/src/addons/color/space/rgb2xyz.ts +20 -0
- package/src/addons/color/space/rgb2yiq.ts +22 -0
- package/src/addons/color/space/rgb2yuv.ts +32 -0
- package/src/addons/color/space/srgb2rgb.ts +34 -0
- package/src/addons/color/space/xyz2lab.ts +27 -0
- package/src/addons/color/space/xyz2rgb.ts +30 -0
- package/src/addons/color/space/yiq2rgb.ts +22 -0
- package/src/addons/color/space/yuv2rgb.ts +32 -0
- package/src/addons/draw/arrows.ts +75 -0
- package/src/addons/draw/axis.ts +57 -0
- package/src/addons/draw/bridge.ts +81 -0
- package/src/addons/draw/char.ts +30 -0
- package/src/addons/draw/circle.ts +29 -0
- package/src/addons/draw/fill.ts +25 -0
- package/src/addons/draw/flip.ts +45 -0
- package/src/addons/draw/hex.ts +29 -0
- package/src/addons/draw/index.ts +13 -0
- package/src/addons/draw/line.ts +16 -0
- package/src/addons/draw/point.ts +30 -0
- package/src/addons/draw/rect.ts +52 -0
- package/src/addons/draw/stroke.ts +31 -0
- package/src/addons/draw/tri.ts +29 -0
- package/src/addons/generative/cnoise.ts +239 -0
- package/src/addons/generative/curl.ts +64 -0
- package/src/addons/generative/fbm.ts +69 -0
- package/src/addons/generative/gerstnerWave.ts +21 -0
- package/src/addons/generative/gnoise.ts +113 -0
- package/src/addons/generative/index.ts +15 -0
- package/src/addons/generative/noised.ts +139 -0
- package/src/addons/generative/pnoise.ts +249 -0
- package/src/addons/generative/psrdnoise.ts +277 -0
- package/src/addons/generative/random.ts +136 -0
- package/src/addons/generative/snoise.ts +199 -0
- package/src/addons/generative/srandom.ts +90 -0
- package/src/addons/generative/voronoi.ts +134 -0
- package/src/addons/generative/voronoise.ts +69 -0
- package/src/addons/generative/wavelet.ts +77 -0
- package/src/addons/generative/worley.ts +99 -0
- package/src/addons/geometry/aabb/aabb.ts +8 -0
- package/src/addons/geometry/aabb/centroid.ts +10 -0
- package/src/addons/geometry/aabb/contain.ts +19 -0
- package/src/addons/geometry/aabb/diagonal.ts +10 -0
- package/src/addons/geometry/aabb/expand.ts +16 -0
- package/src/addons/geometry/aabb/index.ts +7 -0
- package/src/addons/geometry/aabb/intersect.ts +20 -0
- package/src/addons/geometry/aabb/square.ts +17 -0
- package/src/addons/geometry/index.ts +2 -0
- package/src/addons/geometry/triangle/area.ts +10 -0
- package/src/addons/geometry/triangle/barycentric.ts +50 -0
- package/src/addons/geometry/triangle/centroid.ts +10 -0
- package/src/addons/geometry/triangle/closestPoint.ts +85 -0
- package/src/addons/geometry/triangle/contain.ts +19 -0
- package/src/addons/geometry/triangle/distanceSq.ts +38 -0
- package/src/addons/geometry/triangle/index.ts +10 -0
- package/src/addons/geometry/triangle/intersect.ts +49 -0
- package/src/addons/geometry/triangle/normal.ts +12 -0
- package/src/addons/geometry/triangle/signedDistance.ts +31 -0
- package/src/addons/geometry/triangle/triangle.ts +9 -0
- package/src/addons/index.ts +8 -6
- package/src/addons/lighting/ray.ts +8 -0
- package/src/addons/math/aafloor.ts +13 -0
- package/src/addons/math/aafract.ts +38 -0
- package/src/addons/math/aamirror.ts +12 -0
- package/src/addons/math/aastep.ts +14 -0
- package/src/addons/math/absi.ts +9 -0
- package/src/addons/math/adaptiveThreshold.ts +24 -0
- package/src/addons/math/bump.ts +20 -0
- package/src/addons/math/const.ts +19 -0
- package/src/addons/math/cubic.ts +101 -0
- package/src/addons/math/cubicMix.ts +49 -0
- package/src/addons/math/decimate.ts +12 -0
- package/src/addons/math/dist.ts +143 -0
- package/src/addons/math/fcos.ts +11 -0
- package/src/addons/math/frac.ts +9 -0
- package/src/addons/math/gain.ts +14 -0
- package/src/addons/math/gaussian.ts +14 -0
- package/src/addons/math/grad4.ts +19 -0
- package/src/addons/math/hammersley.ts +54 -0
- package/src/addons/math/highPass.ts +12 -0
- package/src/addons/math/index.ts +63 -0
- package/src/addons/math/inside.ts +68 -0
- package/src/addons/math/invCubic.ts +9 -0
- package/src/addons/math/invQuartic.ts +9 -0
- package/src/addons/math/inverse.ts +9 -0
- package/src/addons/math/lengthSq.ts +10 -0
- package/src/addons/math/map.ts +27 -0
- package/src/addons/math/mirror.ts +12 -0
- package/src/addons/math/mmax.ts +27 -0
- package/src/addons/math/mmin.ts +28 -0
- package/src/addons/math/mmix.ts +47 -0
- package/src/addons/math/mod2.ts +44 -0
- package/src/addons/math/mod289.ts +46 -0
- package/src/addons/math/modi.ts +15 -0
- package/src/addons/math/nyquist.ts +15 -0
- package/src/addons/math/pack.ts +15 -0
- package/src/addons/math/parabola.ts +12 -0
- package/src/addons/math/permute.ts +42 -0
- package/src/addons/math/pow2.ts +10 -0
- package/src/addons/math/pow3.ts +9 -0
- package/src/addons/math/pow5.ts +10 -0
- package/src/addons/math/pow7.ts +12 -0
- package/src/addons/math/powFast.ts +18 -0
- package/src/addons/math/quartic.ts +15 -0
- package/src/addons/math/quat/index.ts +14 -0
- package/src/addons/math/quat/quat2mat3.ts +28 -0
- package/src/addons/math/quat/quat2mat4.ts +16 -0
- package/src/addons/math/quat/quatAdd.ts +18 -0
- package/src/addons/math/quat/quatConj.ts +14 -0
- package/src/addons/math/quat/quatDiv.ts +18 -0
- package/src/addons/math/quat/quatIdentity.ts +9 -0
- package/src/addons/math/quat/quatInverse.ts +17 -0
- package/src/addons/math/quat/quatLength.ts +15 -0
- package/src/addons/math/quat/quatLengthSq.ts +14 -0
- package/src/addons/math/quat/quatLerp.ts +40 -0
- package/src/addons/math/quat/quatMul.ts +38 -0
- package/src/addons/math/quat/quatNeg.ts +14 -0
- package/src/addons/math/quat/quatNorm.ts +16 -0
- package/src/addons/math/quat/quatSub.ts +18 -0
- package/src/addons/math/quintic.ts +16 -0
- package/src/addons/math/rotate2d.ts +16 -0
- package/src/addons/math/rotate3d.ts +37 -0
- package/src/addons/math/rotate3dX.ts +20 -0
- package/src/addons/math/rotate3dY.ts +20 -0
- package/src/addons/math/rotate3dZ.ts +20 -0
- package/src/addons/math/rotate4d.ts +41 -0
- package/src/addons/math/rotate4dX.ts +21 -0
- package/src/addons/math/rotate4dY.ts +16 -0
- package/src/addons/math/rotate4dZ.ts +21 -0
- package/src/addons/math/saturateMediump.ts +11 -0
- package/src/addons/math/scale2d.ts +44 -0
- package/src/addons/math/scale3d.ts +17 -0
- package/src/addons/math/scale4d.ts +50 -0
- package/src/addons/math/smootherstep.ts +16 -0
- package/src/addons/math/taylorInvSqrt.ts +9 -0
- package/src/addons/math/toMat3.ts +14 -0
- package/src/addons/math/toMat4.ts +14 -0
- package/src/addons/math/translate4d.ts +31 -0
- package/src/addons/math/unpack.ts +88 -0
- package/src/addons/sdf/boxSDF.ts +24 -0
- package/src/addons/sdf/circleSDF.ts +20 -0
- package/src/addons/sdf/crossSDF.ts +17 -0
- package/src/addons/sdf/hexSDF.ts +18 -0
- package/src/addons/sdf/index.ts +7 -0
- package/src/addons/sdf/lineSDF.ts +33 -0
- package/src/addons/sdf/rectSDF.ts +46 -0
- package/src/addons/sdf/sphereSDF.ts +20 -0
- package/src/addons/sdf/triSDF.ts +14 -0
- package/src/addons/space/aspect.ts +14 -0
- package/src/addons/space/bracketing.ts +44 -0
- package/src/addons/space/brickTile.ts +44 -0
- package/src/addons/space/cart2polar.ts +20 -0
- package/src/addons/space/center.ts +32 -0
- package/src/addons/space/checkerTile.ts +41 -0
- package/src/addons/space/depth2viewZ.ts +43 -0
- package/src/addons/space/displace.ts +55 -0
- package/src/addons/space/equirect2xyz.ts +17 -0
- package/src/addons/space/eulerView.ts +19 -0
- package/src/addons/space/fisheye2xyz.ts +18 -0
- package/src/addons/space/flipY.ts +25 -0
- package/src/addons/space/hexTile.ts +18 -0
- package/src/addons/space/index.ts +38 -0
- package/src/addons/space/kaleidoscope.ts +48 -0
- package/src/addons/space/linearizeDepth.ts +17 -0
- package/src/addons/space/lookAt.ts +49 -0
- package/src/addons/space/lookAtView.ts +40 -0
- package/src/addons/space/mirrorTile.ts +73 -0
- package/src/addons/space/nearest.ts +13 -0
- package/src/addons/space/orthographic.ts +25 -0
- package/src/addons/space/parallaxMapping.ts +149 -0
- package/src/addons/space/perspective.ts +24 -0
- package/src/addons/space/polar2cart.ts +24 -0
- package/src/addons/space/ratio.ts +14 -0
- package/src/addons/space/rotate.ts +37 -0
- package/src/addons/space/rotateX.ts +54 -0
- package/src/addons/space/rotateY.ts +54 -0
- package/src/addons/space/rotateZ.ts +54 -0
- package/src/addons/space/scale.ts +13 -0
- package/src/addons/space/sprite.ts +16 -0
- package/src/addons/space/sqTile.ts +20 -0
- package/src/addons/space/tbn.ts +26 -0
- package/src/addons/space/translate.ts +12 -0
- package/src/addons/space/triTile.ts +32 -0
- package/src/addons/space/uncenter.ts +32 -0
- package/src/addons/space/unratio.ts +12 -0
- package/src/addons/space/viewZ2depth.ts +25 -0
- package/src/addons/space/windmillTile.ts +58 -0
- package/src/addons/space/xyz2equirect.ts +10 -0
- package/src/index.ts +5 -2
- package/src/node/build.ts +62 -52
- package/src/node/create.ts +3 -0
- package/src/node/index.ts +1 -2
- package/src/node/scope.ts +26 -25
- package/src/node/types.ts +15 -11
- package/src/node/utils/const.ts +12 -11
- package/src/node/utils/index.ts +14 -12
- package/src/node/utils/infer.ts +15 -5
- package/src/node/utils/parse.ts +37 -13
- package/src/node/utils/utils.ts +46 -23
- package/src/types.ts +9 -2
- package/src/utils/helpers.ts +56 -0
- package/src/utils/pipeline.ts +21 -5
- package/src/utils/program.ts +57 -38
- package/src/utils/webgl.ts +41 -35
- package/src/utils/webgpu.ts +19 -35
package/src/utils/webgpu.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { nested as cached } from 'reev'
|
|
2
|
-
import { is, loadingImage } from './helpers'
|
|
2
|
+
import { is, loadingImage, getStride, WGSL_FS, WGSL_VS } from './helpers'
|
|
3
3
|
import {
|
|
4
4
|
createArrayBuffer,
|
|
5
5
|
createBindGroup,
|
|
@@ -11,33 +11,10 @@ import {
|
|
|
11
11
|
createPipeline,
|
|
12
12
|
createTextureSampler,
|
|
13
13
|
createVertexBuffers,
|
|
14
|
+
workgroupCount,
|
|
14
15
|
} from './pipeline'
|
|
15
16
|
import type { GL, WebGPUState } from '../types'
|
|
16
17
|
|
|
17
|
-
const WORKING_GROUP_SIZE = 32
|
|
18
|
-
|
|
19
|
-
const DEFAULT_VERTEX = /* rust */ `
|
|
20
|
-
struct In { @builtin(vertex_index) vertex_index: u32 }
|
|
21
|
-
struct Out { @builtin(position) position: vec4f }
|
|
22
|
-
@vertex
|
|
23
|
-
fn main(in: In) -> Out {
|
|
24
|
-
var out: Out;
|
|
25
|
-
var x = f32(in.vertex_index % 2) * 4.0 - 1.0;
|
|
26
|
-
var y = f32(in.vertex_index / 2) * 4.0 - 1.0;
|
|
27
|
-
out.position = vec4f(x, y, 0.0, 1.0);
|
|
28
|
-
return out;
|
|
29
|
-
}
|
|
30
|
-
`.trim()
|
|
31
|
-
|
|
32
|
-
const DEFAULT_FRAGMENT = /* rust */ `
|
|
33
|
-
struct Out { @builtin(position) position: vec4f }
|
|
34
|
-
@group(0) @binding(0) var<uniform> iResolution: vec2f;
|
|
35
|
-
@fragment
|
|
36
|
-
fn main(out: Out) -> @location(0) vec4f {
|
|
37
|
-
return vec4f(fract((out.position.xy / iResolution)), 0.0, 1.0);
|
|
38
|
-
}
|
|
39
|
-
`
|
|
40
|
-
|
|
41
18
|
const computeProgram = (gl: GL, device: GPUDevice, bindings: any) => {
|
|
42
19
|
let flush = (_pass: GPUComputePassEncoder) => {}
|
|
43
20
|
|
|
@@ -57,8 +34,8 @@ const computeProgram = (gl: GL, device: GPUDevice, bindings: any) => {
|
|
|
57
34
|
flush = (pass) => {
|
|
58
35
|
pass.setPipeline(pipeline)
|
|
59
36
|
bindGroups.forEach((v, i) => pass.setBindGroup(i, v))
|
|
60
|
-
const
|
|
61
|
-
pass.dispatchWorkgroups(
|
|
37
|
+
const { x, y, z } = workgroupCount(gl.particleCount)
|
|
38
|
+
pass.dispatchWorkgroups(x, y, z)
|
|
62
39
|
pass.end()
|
|
63
40
|
}
|
|
64
41
|
}
|
|
@@ -86,12 +63,12 @@ export const webgpu = async (gl: GL) => {
|
|
|
86
63
|
let needsUpdate = true
|
|
87
64
|
let depthTexture: GPUTexture
|
|
88
65
|
|
|
89
|
-
const attribs = cached((_key, value: number[]) => {
|
|
66
|
+
const attribs = cached((_key, value: number[], isInstance = false) => {
|
|
90
67
|
needsUpdate = true
|
|
91
|
-
const stride = value.length
|
|
68
|
+
const stride = getStride(value.length, isInstance ? gl.instanceCount : gl.count)
|
|
92
69
|
const { location } = bindings.attrib()
|
|
93
70
|
const { array, buffer } = createArrayBuffer(device, value, 'attrib')
|
|
94
|
-
return { array, buffer, location, stride }
|
|
71
|
+
return { array, buffer, location, stride, isInstance }
|
|
95
72
|
})
|
|
96
73
|
|
|
97
74
|
const uniforms = cached((_key, value: number[]) => {
|
|
@@ -110,13 +87,20 @@ export const webgpu = async (gl: GL) => {
|
|
|
110
87
|
|
|
111
88
|
const _attribute = (key = '', value: number[]) => {
|
|
112
89
|
const { array, buffer } = attribs(key, value)
|
|
90
|
+
array.set(value)
|
|
91
|
+
device.queue.writeBuffer(buffer, 0, array as any)
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const _instance = (key: string, value: number[]) => {
|
|
95
|
+
const { array, buffer } = attribs(key, value, true)
|
|
96
|
+
array.set(value)
|
|
113
97
|
device.queue.writeBuffer(buffer, 0, array as any)
|
|
114
98
|
}
|
|
115
99
|
|
|
116
100
|
const _uniform = (key: string, value: number | number[]) => {
|
|
117
101
|
if (is.num(value)) value = [value]
|
|
118
102
|
const { array, buffer } = uniforms(key, value)
|
|
119
|
-
array.set(value)
|
|
103
|
+
array.set(value)
|
|
120
104
|
device.queue.writeBuffer(buffer, 0, array as any)
|
|
121
105
|
}
|
|
122
106
|
|
|
@@ -141,7 +125,7 @@ export const webgpu = async (gl: GL) => {
|
|
|
141
125
|
pass.setPipeline(pipeline)
|
|
142
126
|
bindGroups.forEach((v, i) => pass.setBindGroup(i, v))
|
|
143
127
|
vertexBuffers.forEach((v, i) => pass.setVertexBuffer(i, v))
|
|
144
|
-
pass.draw(gl.count,
|
|
128
|
+
pass.draw(gl.count, gl.instanceCount, 0, 0)
|
|
145
129
|
pass.end()
|
|
146
130
|
}
|
|
147
131
|
if (gl.cs) cp.update(bindGroups, bindGroupLayouts, comp)
|
|
@@ -150,8 +134,8 @@ export const webgpu = async (gl: GL) => {
|
|
|
150
134
|
const render = () => {
|
|
151
135
|
if (!frag || !vert) {
|
|
152
136
|
const config = { isWebGL: false, gl }
|
|
153
|
-
frag = gl.fs ? (is.str(gl.fs) ? gl.fs : gl.fs.fragment(config)) :
|
|
154
|
-
vert = gl.vs ? (is.str(gl.vs) ? gl.vs : gl.vs.vertex(config)) :
|
|
137
|
+
frag = gl.fs ? (is.str(gl.fs) ? gl.fs : gl.fs.fragment(config)) : WGSL_FS
|
|
138
|
+
vert = gl.vs ? (is.str(gl.vs) ? gl.vs : gl.vs.vertex(config)) : WGSL_VS
|
|
155
139
|
comp = gl.cs ? (is.str(gl.cs) ? gl.cs : gl.cs.compute(config)) : ''
|
|
156
140
|
}
|
|
157
141
|
if (gl.loading) return // MEMO: loading after build node
|
|
@@ -182,5 +166,5 @@ export const webgpu = async (gl: GL) => {
|
|
|
182
166
|
|
|
183
167
|
const webgpu = { device, uniforms, textures, attribs, storages: cp.storages } as WebGPUState
|
|
184
168
|
|
|
185
|
-
return { webgpu, render, resize, clean, _attribute, _uniform, _texture, _storage: cp._storage }
|
|
169
|
+
return { webgpu, render, resize, clean, _attribute, _instance, _uniform, _texture, _storage: cp._storage }
|
|
186
170
|
}
|