glre 0.41.0 → 0.43.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/dist/addons.cjs +1 -1
- package/dist/addons.cjs.map +1 -1
- package/dist/addons.d.ts +379 -7
- package/dist/addons.js +1 -1
- package/dist/addons.js.map +1 -1
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/native.d.ts +3 -0
- package/dist/node.cjs +12 -12
- package/dist/node.cjs.map +1 -1
- package/dist/node.d.ts +2 -1
- package/dist/node.js +12 -12
- package/dist/node.js.map +1 -1
- package/dist/react.d.ts +2 -0
- package/dist/solid.d.ts +2 -0
- package/package.json +1 -1
- package/src/addons/color/blend/add.ts +35 -0
- package/src/addons/color/blend/average.ts +35 -0
- package/src/addons/color/blend/color.ts +28 -0
- package/src/addons/color/blend/colorBurn.ts +35 -0
- package/src/addons/color/blend/colorDodge.ts +39 -0
- package/src/addons/color/blend/darken.ts +35 -0
- package/src/addons/color/blend/difference.ts +35 -0
- package/src/addons/color/blend/exclusion.ts +35 -0
- package/src/addons/color/blend/glow.ts +36 -0
- package/src/addons/color/blend/hardLight.ts +36 -0
- package/src/addons/color/blend/hardMix.ts +39 -0
- package/src/addons/color/blend/hue.ts +29 -0
- package/src/addons/color/blend/index.ts +28 -0
- package/src/addons/color/blend/lighten.ts +35 -0
- package/src/addons/color/blend/linearBurn.ts +39 -0
- package/src/addons/color/blend/linearDodge.ts +39 -0
- package/src/addons/color/blend/linearLight.ts +44 -0
- package/src/addons/color/blend/luminosity.ts +28 -0
- package/src/addons/color/blend/multiply.ts +35 -0
- package/src/addons/color/blend/negation.ts +35 -0
- package/src/addons/color/blend/overlay.ts +38 -0
- package/src/addons/color/blend/phoenix.ts +35 -0
- package/src/addons/color/blend/pinLight.ts +40 -0
- package/src/addons/color/blend/reflect.ts +35 -0
- package/src/addons/color/blend/saturation.ts +28 -0
- package/src/addons/color/blend/screen.ts +39 -0
- package/src/addons/color/blend/softLight.ts +63 -0
- package/src/addons/color/blend/subtract.ts +37 -0
- package/src/addons/color/blend/vividLight.ts +44 -0
- package/src/addons/color/composite/compositeXor.ts +40 -0
- package/src/addons/color/composite/destinationAtop.ts +42 -0
- package/src/addons/color/composite/destinationIn.ts +42 -0
- package/src/addons/color/composite/destinationOut.ts +42 -0
- package/src/addons/color/composite/destinationOver.ts +42 -0
- package/src/addons/color/composite/index.ts +9 -0
- package/src/addons/color/composite/sourceAtop.ts +42 -0
- package/src/addons/color/composite/sourceIn.ts +40 -0
- package/src/addons/color/composite/sourceOut.ts +40 -0
- package/src/addons/color/composite/sourceOver.ts +40 -0
- package/src/addons/color/palette/macbeth.ts +31 -33
- package/src/addons/draw/arrows.ts +34 -48
- package/src/addons/draw/axis.ts +24 -42
- package/src/addons/draw/bridge.ts +4 -4
- package/src/addons/draw/char.ts +235 -18
- package/src/addons/draw/circle.ts +22 -1
- package/src/addons/draw/colorChecker.ts +42 -0
- package/src/addons/draw/colorPicker.ts +66 -0
- package/src/addons/draw/digits.ts +334 -0
- package/src/addons/draw/index.ts +4 -0
- package/src/addons/draw/matrix.ts +26 -0
- package/src/addons/draw/point.ts +24 -11
- package/src/addons/geometry/triangle/closestPoint.ts +7 -7
- package/src/addons/index.ts +3 -0
- package/src/addons/math/const.ts +4 -4
- package/src/addons/math/mod289.ts +1 -6
- package/src/addons/math/powFast.ts +4 -10
- package/src/addons/math/quartic.ts +6 -11
- package/src/addons/math/quat/quatLerp.ts +3 -3
- package/src/addons/math/quintic.ts +7 -12
- package/src/addons/math/rotate2d.ts +1 -6
- package/src/addons/math/rotate3d.ts +4 -10
- package/src/addons/math/rotate3dX.ts +3 -12
- package/src/addons/math/rotate3dY.ts +3 -12
- package/src/addons/math/rotate3dZ.ts +3 -12
- package/src/addons/math/rotate4d.ts +4 -10
- package/src/addons/math/rotate4dX.ts +3 -13
- package/src/addons/math/rotate4dY.ts +1 -6
- package/src/addons/math/rotate4dZ.ts +3 -13
- package/src/addons/math/scale2d.ts +16 -32
- package/src/addons/math/toMat3.ts +1 -6
- package/src/addons/math/toMat4.ts +1 -6
- package/src/addons/sdf/arrowSDF.ts +61 -0
- package/src/addons/sdf/boxFrameSDF.ts +31 -0
- package/src/addons/sdf/boxSDF.ts +4 -6
- package/src/addons/sdf/capsuleSDF.ts +17 -0
- package/src/addons/sdf/coneSDF.ts +60 -0
- package/src/addons/sdf/crossSDF.ts +4 -7
- package/src/addons/sdf/cubeSDF.ts +13 -0
- package/src/addons/sdf/cylinderSDF.ts +65 -0
- package/src/addons/sdf/dodecahedronSDF.ts +32 -0
- package/src/addons/sdf/ellipsoidSDF.ts +14 -0
- package/src/addons/sdf/flowerSDF.ts +16 -0
- package/src/addons/sdf/gearSDF.ts +22 -0
- package/src/addons/sdf/heartSDF.ts +17 -0
- package/src/addons/sdf/hexPrismSDF.ts +15 -0
- package/src/addons/sdf/hexSDF.ts +8 -15
- package/src/addons/sdf/icosahedronSDF.ts +23 -0
- package/src/addons/sdf/index.ts +41 -0
- package/src/addons/sdf/juliaSDF.ts +39 -0
- package/src/addons/sdf/kochSDF.ts +49 -0
- package/src/addons/sdf/linkSDF.ts +15 -0
- package/src/addons/sdf/mandelbulbSDF.ts +41 -0
- package/src/addons/sdf/octahedronSDF.ts +30 -0
- package/src/addons/sdf/octogonPrismSDF.ts +19 -0
- package/src/addons/sdf/opElongate.ts +35 -0
- package/src/addons/sdf/opExtrude.ts +14 -0
- package/src/addons/sdf/opIntersection.ts +25 -0
- package/src/addons/sdf/opOnion.ts +12 -0
- package/src/addons/sdf/opRepeat.ts +49 -0
- package/src/addons/sdf/opRevolve.ts +12 -0
- package/src/addons/sdf/opRound.ts +12 -0
- package/src/addons/sdf/opSubtraction.ts +50 -0
- package/src/addons/sdf/opUnion.ts +39 -0
- package/src/addons/sdf/planeSDF.ts +21 -0
- package/src/addons/sdf/polySDF.ts +32 -0
- package/src/addons/sdf/pyramidSDF.ts +29 -0
- package/src/addons/sdf/raysSDF.ts +14 -0
- package/src/addons/sdf/rhombSDF.ts +10 -0
- package/src/addons/sdf/spiralSDF.ts +15 -0
- package/src/addons/sdf/starSDF.ts +47 -0
- package/src/addons/sdf/superShapeSDF.ts +73 -0
- package/src/addons/sdf/tetrahedronSDF.ts +21 -0
- package/src/addons/sdf/torusSDF.ts +27 -0
- package/src/addons/sdf/triPrismSDF.ts +13 -0
- package/src/addons/sdf/triSDF.ts +19 -11
- package/src/addons/sdf/vesicaSDF.ts +23 -0
- package/src/addons/space/bracketing.ts +1 -2
- package/src/addons/space/kaleidoscope.ts +1 -2
- package/src/addons/space/scale.ts +42 -7
- package/src/addons/space/windmillTile.ts +2 -1
- package/src/index.ts +1 -0
- package/src/node/create.ts +2 -3
- package/src/node/utils/index.ts +2 -2
- package/src/types.ts +1 -0
- package/src/utils/webgl.ts +7 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'
|
|
2
|
+
|
|
3
|
+
const compositeDestinationOverFloat = Fn(([src, dst]: [Float, Float]): Float => {
|
|
4
|
+
return dst.add(src.mul(dst.oneMinus()))
|
|
5
|
+
}).setLayout({
|
|
6
|
+
name: 'compositeDestinationOver',
|
|
7
|
+
type: 'float',
|
|
8
|
+
inputs: [
|
|
9
|
+
{ name: 'src', type: 'float' },
|
|
10
|
+
{ name: 'dst', type: 'float' },
|
|
11
|
+
],
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
export const compositeDestinationOver = compositeDestinationOverFloat
|
|
15
|
+
|
|
16
|
+
export const compositeDestinationOverVec3 = Fn(
|
|
17
|
+
([srcColor, dstColor, srcAlpha, dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {
|
|
18
|
+
return dstColor.add(srcColor.mul(dstAlpha.oneMinus()))
|
|
19
|
+
}
|
|
20
|
+
).setLayout({
|
|
21
|
+
name: 'compositeDestinationOverVec3',
|
|
22
|
+
type: 'vec3',
|
|
23
|
+
inputs: [
|
|
24
|
+
{ name: 'srcColor', type: 'vec3' },
|
|
25
|
+
{ name: 'dstColor', type: 'vec3' },
|
|
26
|
+
{ name: 'srcAlpha', type: 'float' },
|
|
27
|
+
{ name: 'dstAlpha', type: 'float' },
|
|
28
|
+
],
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
export const compositeDestinationOverVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {
|
|
32
|
+
const resultRgb = compositeDestinationOverVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)
|
|
33
|
+
const resultA = compositeDestinationOverFloat(srcColor.a, dstColor.a)
|
|
34
|
+
return vec4(resultRgb, resultA)
|
|
35
|
+
}).setLayout({
|
|
36
|
+
name: 'compositeDestinationOverVec4',
|
|
37
|
+
type: 'vec4',
|
|
38
|
+
inputs: [
|
|
39
|
+
{ name: 'srcColor', type: 'vec4' },
|
|
40
|
+
{ name: 'dstColor', type: 'vec4' },
|
|
41
|
+
],
|
|
42
|
+
})
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './compositeXor'
|
|
2
|
+
export * from './destinationAtop'
|
|
3
|
+
export * from './destinationIn'
|
|
4
|
+
export * from './destinationOut'
|
|
5
|
+
export * from './destinationOver'
|
|
6
|
+
export * from './sourceAtop'
|
|
7
|
+
export * from './sourceIn'
|
|
8
|
+
export * from './sourceOut'
|
|
9
|
+
export * from './sourceOver'
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'
|
|
2
|
+
|
|
3
|
+
const compositeSourceAtopFloat = Fn(([src, dst]: [Float, Float]): Float => {
|
|
4
|
+
return src.mul(dst).add(dst.mul(src.oneMinus()))
|
|
5
|
+
}).setLayout({
|
|
6
|
+
name: 'compositeSourceAtop',
|
|
7
|
+
type: 'float',
|
|
8
|
+
inputs: [
|
|
9
|
+
{ name: 'src', type: 'float' },
|
|
10
|
+
{ name: 'dst', type: 'float' },
|
|
11
|
+
],
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
export const compositeSourceAtop = compositeSourceAtopFloat
|
|
15
|
+
|
|
16
|
+
export const compositeSourceAtopVec3 = Fn(
|
|
17
|
+
([srcColor, dstColor, srcAlpha, dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {
|
|
18
|
+
return srcColor.mul(dstAlpha).add(dstColor.mul(srcAlpha.oneMinus()))
|
|
19
|
+
}
|
|
20
|
+
).setLayout({
|
|
21
|
+
name: 'compositeSourceAtopVec3',
|
|
22
|
+
type: 'vec3',
|
|
23
|
+
inputs: [
|
|
24
|
+
{ name: 'srcColor', type: 'vec3' },
|
|
25
|
+
{ name: 'dstColor', type: 'vec3' },
|
|
26
|
+
{ name: 'srcAlpha', type: 'float' },
|
|
27
|
+
{ name: 'dstAlpha', type: 'float' },
|
|
28
|
+
],
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
export const compositeSourceAtopVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {
|
|
32
|
+
const resultRgb = compositeSourceAtopVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)
|
|
33
|
+
const resultA = compositeSourceAtopFloat(srcColor.a, dstColor.a)
|
|
34
|
+
return vec4(resultRgb, resultA)
|
|
35
|
+
}).setLayout({
|
|
36
|
+
name: 'compositeSourceAtopVec4',
|
|
37
|
+
type: 'vec4',
|
|
38
|
+
inputs: [
|
|
39
|
+
{ name: 'srcColor', type: 'vec4' },
|
|
40
|
+
{ name: 'dstColor', type: 'vec4' },
|
|
41
|
+
],
|
|
42
|
+
})
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'
|
|
2
|
+
|
|
3
|
+
const compositeSourceInFloat = Fn(([src, dst]: [Float, Float]): Float => {
|
|
4
|
+
return src.mul(dst)
|
|
5
|
+
}).setLayout({
|
|
6
|
+
name: 'compositeSourceIn',
|
|
7
|
+
type: 'float',
|
|
8
|
+
inputs: [
|
|
9
|
+
{ name: 'src', type: 'float' },
|
|
10
|
+
{ name: 'dst', type: 'float' }
|
|
11
|
+
]
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
export const compositeSourceIn = compositeSourceInFloat
|
|
15
|
+
|
|
16
|
+
export const compositeSourceInVec3 = Fn(([srcColor, dstColor, srcAlpha, dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {
|
|
17
|
+
return srcColor.mul(dstAlpha)
|
|
18
|
+
}).setLayout({
|
|
19
|
+
name: 'compositeSourceInVec3',
|
|
20
|
+
type: 'vec3',
|
|
21
|
+
inputs: [
|
|
22
|
+
{ name: 'srcColor', type: 'vec3' },
|
|
23
|
+
{ name: 'dstColor', type: 'vec3' },
|
|
24
|
+
{ name: 'srcAlpha', type: 'float' },
|
|
25
|
+
{ name: 'dstAlpha', type: 'float' }
|
|
26
|
+
]
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
export const compositeSourceInVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {
|
|
30
|
+
const resultRgb = compositeSourceInVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)
|
|
31
|
+
const resultA = compositeSourceInFloat(srcColor.a, dstColor.a)
|
|
32
|
+
return vec4(resultRgb, resultA)
|
|
33
|
+
}).setLayout({
|
|
34
|
+
name: 'compositeSourceInVec4',
|
|
35
|
+
type: 'vec4',
|
|
36
|
+
inputs: [
|
|
37
|
+
{ name: 'srcColor', type: 'vec4' },
|
|
38
|
+
{ name: 'dstColor', type: 'vec4' }
|
|
39
|
+
]
|
|
40
|
+
})
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'
|
|
2
|
+
|
|
3
|
+
const compositeSourceOutFloat = Fn(([src, dst]: [Float, Float]): Float => {
|
|
4
|
+
return src.mul(dst.oneMinus())
|
|
5
|
+
}).setLayout({
|
|
6
|
+
name: 'compositeSourceOut',
|
|
7
|
+
type: 'float',
|
|
8
|
+
inputs: [
|
|
9
|
+
{ name: 'src', type: 'float' },
|
|
10
|
+
{ name: 'dst', type: 'float' }
|
|
11
|
+
]
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
export const compositeSourceOut = compositeSourceOutFloat
|
|
15
|
+
|
|
16
|
+
export const compositeSourceOutVec3 = Fn(([srcColor, dstColor, srcAlpha, dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {
|
|
17
|
+
return srcColor.mul(dstAlpha.oneMinus())
|
|
18
|
+
}).setLayout({
|
|
19
|
+
name: 'compositeSourceOutVec3',
|
|
20
|
+
type: 'vec3',
|
|
21
|
+
inputs: [
|
|
22
|
+
{ name: 'srcColor', type: 'vec3' },
|
|
23
|
+
{ name: 'dstColor', type: 'vec3' },
|
|
24
|
+
{ name: 'srcAlpha', type: 'float' },
|
|
25
|
+
{ name: 'dstAlpha', type: 'float' }
|
|
26
|
+
]
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
export const compositeSourceOutVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {
|
|
30
|
+
const resultRgb = compositeSourceOutVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)
|
|
31
|
+
const resultA = compositeSourceOutFloat(srcColor.a, dstColor.a)
|
|
32
|
+
return vec4(resultRgb, resultA)
|
|
33
|
+
}).setLayout({
|
|
34
|
+
name: 'compositeSourceOutVec4',
|
|
35
|
+
type: 'vec4',
|
|
36
|
+
inputs: [
|
|
37
|
+
{ name: 'srcColor', type: 'vec4' },
|
|
38
|
+
{ name: 'dstColor', type: 'vec4' }
|
|
39
|
+
]
|
|
40
|
+
})
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'
|
|
2
|
+
|
|
3
|
+
const compositeSourceOverFloat = Fn(([src, dst]: [Float, Float]): Float => {
|
|
4
|
+
return src.add(dst.mul(src.oneMinus()))
|
|
5
|
+
}).setLayout({
|
|
6
|
+
name: 'compositeSourceOver',
|
|
7
|
+
type: 'float',
|
|
8
|
+
inputs: [
|
|
9
|
+
{ name: 'src', type: 'float' },
|
|
10
|
+
{ name: 'dst', type: 'float' }
|
|
11
|
+
]
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
export const compositeSourceOver = compositeSourceOverFloat
|
|
15
|
+
|
|
16
|
+
export const compositeSourceOverVec3 = Fn(([srcColor, dstColor, srcAlpha, dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {
|
|
17
|
+
return srcColor.mul(srcAlpha).add(dstColor.mul(dstAlpha).mul(srcAlpha.oneMinus()))
|
|
18
|
+
}).setLayout({
|
|
19
|
+
name: 'compositeSourceOverVec3',
|
|
20
|
+
type: 'vec3',
|
|
21
|
+
inputs: [
|
|
22
|
+
{ name: 'srcColor', type: 'vec3' },
|
|
23
|
+
{ name: 'dstColor', type: 'vec3' },
|
|
24
|
+
{ name: 'srcAlpha', type: 'float' },
|
|
25
|
+
{ name: 'dstAlpha', type: 'float' }
|
|
26
|
+
]
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
export const compositeSourceOverVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {
|
|
30
|
+
const resultRgb = compositeSourceOverVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)
|
|
31
|
+
const resultA = compositeSourceOverFloat(srcColor.a, dstColor.a)
|
|
32
|
+
return vec4(resultRgb, resultA)
|
|
33
|
+
}).setLayout({
|
|
34
|
+
name: 'compositeSourceOverVec4',
|
|
35
|
+
type: 'vec4',
|
|
36
|
+
inputs: [
|
|
37
|
+
{ name: 'srcColor', type: 'vec4' },
|
|
38
|
+
{ name: 'dstColor', type: 'vec4' }
|
|
39
|
+
]
|
|
40
|
+
})
|
|
@@ -1,42 +1,40 @@
|
|
|
1
|
-
import { Fn, vec3, Int, Vec3, If,
|
|
1
|
+
import { Fn, vec3, Int, Vec3, If, int } from '../../../node'
|
|
2
2
|
|
|
3
3
|
const colors = [
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
4
|
+
[0.46017, 0.33059, 0.27477], // DARK_SKIN
|
|
5
|
+
[0.769, 0.576, 0.506], // LIGHT_SKIN
|
|
6
|
+
[0.356, 0.472, 0.609], // BLUE_SKY
|
|
7
|
+
[0.357, 0.427, 0.247], // FOLIAGE
|
|
8
|
+
[0.518, 0.506, 0.694], // BLUE_FLOWER
|
|
9
|
+
[0.384, 0.749, 0.675], // BLUISH_GREEN
|
|
10
|
+
[0.867, 0.487, 0.184], // ORANGE
|
|
11
|
+
[0.29, 0.357, 0.671], // PURPLISH_BLUE
|
|
12
|
+
[0.769, 0.333, 0.384], // MODERATE_RED
|
|
13
|
+
[0.365, 0.231, 0.42], // PURPLE
|
|
14
|
+
[0.624, 0.745, 0.227], // YELLOW_GREEN
|
|
15
|
+
[0.894, 0.635, 0.16], // ORANGE_YELLOW
|
|
16
|
+
[0.176, 0.247, 0.584], // BLUE
|
|
17
|
+
[0.239, 0.588, 0.29], // GREEN
|
|
18
|
+
[0.69, 0.224, 0.227], // RED
|
|
19
|
+
[0.925, 0.784, 0.094], // YELLOW
|
|
20
|
+
[0.749, 0.309, 0.598], // MAGENTA
|
|
21
|
+
[0.0, 0.537, 0.659], // CYAN
|
|
22
|
+
[0.956, 0.956, 0.945], // WHITE
|
|
23
|
+
[0.789, 0.797, 0.797], // NEUTRAL_80
|
|
24
|
+
[0.635, 0.643, 0.643], // NEUTRAL_65
|
|
25
|
+
[0.475, 0.478, 0.478], // NEUTRAL_50
|
|
26
|
+
[0.329, 0.333, 0.337], // NEUTRAL_35
|
|
27
|
+
[0.2, 0.2, 0.204], // BLACK
|
|
28
28
|
]
|
|
29
29
|
|
|
30
30
|
export const macbeth = Fn(([index]: [Int]): Vec3 => {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
const result = vec3(0).toVar()
|
|
32
|
+
let ifChain = If(index.equal(int(0)), () => void result.assign(vec3(...colors[0])))
|
|
33
|
+
for (let i = 1; i < colors.length; i++)
|
|
34
|
+
ifChain = ifChain.ElseIf(index.equal(int(i)), () => void result.assign(vec3(...colors[i])))
|
|
35
35
|
return result
|
|
36
36
|
}).setLayout({
|
|
37
37
|
name: 'macbeth',
|
|
38
38
|
type: 'vec3',
|
|
39
|
-
inputs: [
|
|
40
|
-
|
|
41
|
-
]
|
|
42
|
-
})
|
|
39
|
+
inputs: [{ name: 'index', type: 'int' }],
|
|
40
|
+
})
|
|
@@ -1,59 +1,46 @@
|
|
|
1
|
-
import { Fn,
|
|
1
|
+
import { Fn, Float, Vec2, float, vec2, length, clamp, min, step, If } from '../../node'
|
|
2
|
+
import { lineSDF } from '../sdf/lineSDF'
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
const ARROWS_TILE_SIZE = float(32)
|
|
5
|
-
const ARROWS_HEAD_ANGLE = float(0.5)
|
|
4
|
+
const ARROWS_TILE_SIZE = float(32.0)
|
|
6
5
|
|
|
7
|
-
// Arrow tile center coordinate calculation
|
|
8
6
|
export const arrowsTileCenterCoord = Fn(([pos]: [Vec2]): Vec2 => {
|
|
9
|
-
|
|
7
|
+
const floored = pos.div(ARROWS_TILE_SIZE).floor()
|
|
8
|
+
return floored.add(0.5).mul(ARROWS_TILE_SIZE)
|
|
10
9
|
}).setLayout({
|
|
11
10
|
name: 'arrowsTileCenterCoord',
|
|
12
11
|
type: 'vec2',
|
|
13
12
|
inputs: [{ name: 'pos', type: 'vec2' }],
|
|
14
13
|
})
|
|
15
14
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
min(
|
|
41
|
-
float(0),
|
|
42
|
-
cos(ARROWS_HEAD_ANGLE.div(2)).sub(
|
|
43
|
-
dot(normalize(vScaled.mul(0.33).sub(scaledP)), dir_v)
|
|
44
|
-
)
|
|
45
|
-
)
|
|
46
|
-
.mul(mag_v)
|
|
47
|
-
.mul(0.8)
|
|
48
|
-
)
|
|
49
|
-
)
|
|
50
|
-
.saturate()
|
|
51
|
-
result.assign(arrow)
|
|
15
|
+
export const arrows = Fn(([p, v, resolution]: [Vec2, Vec2, Vec2]): Float => {
|
|
16
|
+
const pScaled = p.mul(resolution).toVar('pScaled')
|
|
17
|
+
pScaled.subAssign(arrowsTileCenterCoord(pScaled))
|
|
18
|
+
const mag_v = length(v).toVar('mag_v')
|
|
19
|
+
|
|
20
|
+
If(mag_v.greaterThan(0.0), () => {
|
|
21
|
+
const dir_v = v.div(mag_v).toVar('dir_v')
|
|
22
|
+
mag_v.assign(clamp(mag_v, float(5.0), ARROWS_TILE_SIZE.div(2.0)))
|
|
23
|
+
const vScaled = dir_v.mul(mag_v).toVar('vScaled')
|
|
24
|
+
|
|
25
|
+
const shaft = lineSDF(pScaled, vScaled, vScaled.negate()).toVar('shaft')
|
|
26
|
+
const head1 = lineSDF(
|
|
27
|
+
pScaled,
|
|
28
|
+
vScaled,
|
|
29
|
+
vScaled.mul(0.4).add(vec2(vScaled.y.negate(), vScaled.x).mul(0.2))
|
|
30
|
+
).toVar('head1')
|
|
31
|
+
const head2 = lineSDF(
|
|
32
|
+
pScaled,
|
|
33
|
+
vScaled,
|
|
34
|
+
vScaled.mul(0.4).add(vec2(vScaled.y, vScaled.x.negate()).mul(0.2))
|
|
35
|
+
).toVar('head2')
|
|
36
|
+
const head = min(head1, head2).toVar('head')
|
|
37
|
+
|
|
38
|
+
return step(min(shaft, head), float(1.0))
|
|
52
39
|
})
|
|
53
40
|
|
|
54
|
-
return
|
|
41
|
+
return float(0.0)
|
|
55
42
|
}).setLayout({
|
|
56
|
-
name: '
|
|
43
|
+
name: 'arrows',
|
|
57
44
|
type: 'float',
|
|
58
45
|
inputs: [
|
|
59
46
|
{ name: 'p', type: 'vec2' },
|
|
@@ -62,11 +49,10 @@ export const arrowsWithResolution = Fn(([p, v, resolution]: [Vec2, Vec2, Vec2]):
|
|
|
62
49
|
],
|
|
63
50
|
})
|
|
64
51
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
return arrowsWithResolution(p, v, vec2(1))
|
|
52
|
+
export const arrowsSimple = Fn(([p, v]: [Vec2, Vec2]): Float => {
|
|
53
|
+
return arrows(p, v, vec2(1.0))
|
|
68
54
|
}).setLayout({
|
|
69
|
-
name: '
|
|
55
|
+
name: 'arrowsSimple',
|
|
70
56
|
type: 'float',
|
|
71
57
|
inputs: [
|
|
72
58
|
{ name: 'p', type: 'vec2' },
|
package/src/addons/draw/axis.ts
CHANGED
|
@@ -1,50 +1,32 @@
|
|
|
1
|
-
import { Fn, Vec2, Vec3, Vec4, Mat4, Float, vec3, vec4
|
|
1
|
+
import { Fn, Vec2, Vec3, Vec4, Mat4, Float, vec3, vec4 } from '../../node'
|
|
2
2
|
import { line } from './line'
|
|
3
3
|
|
|
4
4
|
export const axis = Fn(([st, M, pos, thickness]: [Vec2, Mat4, Vec3, Float]): Vec4 => {
|
|
5
|
-
|
|
5
|
+
const rta = vec4(0).toVar()
|
|
6
6
|
|
|
7
|
-
// Transform center position
|
|
8
7
|
const center = M.mul(vec4(pos, 1)).toVar()
|
|
9
|
-
center.xy.
|
|
10
|
-
center.xy.assign(center.xy.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const axisDir = (i.equal(int(0)) as any).select(
|
|
33
|
-
axisDirections[0],
|
|
34
|
-
(i.equal(int(1)) as any).select(axisDirections[1], axisDirections[2])
|
|
35
|
-
)
|
|
36
|
-
|
|
37
|
-
// Transform axis endpoint
|
|
38
|
-
const axisPoint = (M as any).mul(vec4((pos as any).add(axisDir as any), 1)).toVar()
|
|
39
|
-
axisPoint.xy.assign(axisPoint.xy.div(axisPoint.w))
|
|
40
|
-
axisPoint.xy.assign(axisPoint.xy.div(2).add(0.5))
|
|
41
|
-
|
|
42
|
-
// Draw line from center to axis endpoint
|
|
43
|
-
const axisLine = line(st, center.xy, axisPoint.xy, thickness)
|
|
44
|
-
result.addAssign((axisColor as any).mul(axisLine as any))
|
|
45
|
-
})
|
|
46
|
-
|
|
47
|
-
return result
|
|
8
|
+
center.xy.divAssign(center.w)
|
|
9
|
+
center.xy.assign(center.xy.mul(0.5).add(0.5))
|
|
10
|
+
|
|
11
|
+
const axisX = vec4(1, 0, 0, 1)
|
|
12
|
+
const aX = M.mul(vec4(pos.add(vec3(1, 0, 0)), 1)).toVar()
|
|
13
|
+
aX.xy.divAssign(aX.w)
|
|
14
|
+
aX.xy.assign(aX.xy.mul(0.5).add(0.5))
|
|
15
|
+
rta.addAssign(axisX.mul(line(st, center.xy, aX.xy, thickness)))
|
|
16
|
+
|
|
17
|
+
const axisY = vec4(0, 1, 0, 1)
|
|
18
|
+
const aY = M.mul(vec4(pos.add(vec3(0, 1, 0)), 1)).toVar()
|
|
19
|
+
aY.xy.divAssign(aY.w)
|
|
20
|
+
aY.xy.assign(aY.xy.mul(0.5).add(0.5))
|
|
21
|
+
rta.addAssign(axisY.mul(line(st, center.xy, aY.xy, thickness)))
|
|
22
|
+
|
|
23
|
+
const axisZ = vec4(0, 0, 1, 1)
|
|
24
|
+
const aZ = M.mul(vec4(pos.add(vec3(0, 0, 1)), 1)).toVar()
|
|
25
|
+
aZ.xy.divAssign(aZ.w)
|
|
26
|
+
aZ.xy.assign(aZ.xy.mul(0.5).add(0.5))
|
|
27
|
+
rta.addAssign(axisZ.mul(line(st, center.xy, aZ.xy, thickness)))
|
|
28
|
+
|
|
29
|
+
return rta
|
|
48
30
|
}).setLayout({
|
|
49
31
|
name: 'axis',
|
|
50
32
|
type: 'vec4',
|
|
@@ -20,7 +20,7 @@ export const bridgeFloat = Fn(([c, d, s, w]: [Float, Float, Float, Float]): Floa
|
|
|
20
20
|
export const bridgeVec2 = Fn(([c, d, s, w]: [Vec2, Float, Float, Float]): Vec2 => {
|
|
21
21
|
const strokeMask = stroke(d, s, w.mul(2))
|
|
22
22
|
const maskedC = c.mul(float(1).sub(strokeMask))
|
|
23
|
-
return maskedC.add(
|
|
23
|
+
return maskedC.add(stroke(d, s, w))
|
|
24
24
|
}).setLayout({
|
|
25
25
|
name: 'bridgeVec2',
|
|
26
26
|
type: 'vec2',
|
|
@@ -36,7 +36,7 @@ export const bridgeVec2 = Fn(([c, d, s, w]: [Vec2, Float, Float, Float]): Vec2 =
|
|
|
36
36
|
export const bridgeVec3 = Fn(([c, d, s, w]: [Vec3, Float, Float, Float]): Vec3 => {
|
|
37
37
|
const strokeMask = stroke(d, s, w.mul(2))
|
|
38
38
|
const maskedC = c.mul(float(1).sub(strokeMask))
|
|
39
|
-
return maskedC.add(
|
|
39
|
+
return maskedC.add(stroke(d, s, w))
|
|
40
40
|
}).setLayout({
|
|
41
41
|
name: 'bridgeVec3',
|
|
42
42
|
type: 'vec3',
|
|
@@ -52,7 +52,7 @@ export const bridgeVec3 = Fn(([c, d, s, w]: [Vec3, Float, Float, Float]): Vec3 =
|
|
|
52
52
|
export const bridgeVec4 = Fn(([c, d, s, w]: [Vec4, Float, Float, Float]): Vec4 => {
|
|
53
53
|
const strokeMask = stroke(d, s, w.mul(2))
|
|
54
54
|
const maskedC = c.mul(float(1).sub(strokeMask))
|
|
55
|
-
return maskedC.add(
|
|
55
|
+
return maskedC.add(stroke(d, s, w))
|
|
56
56
|
}).setLayout({
|
|
57
57
|
name: 'bridgeVec4',
|
|
58
58
|
type: 'vec4',
|
|
@@ -68,7 +68,7 @@ export const bridgeVec4 = Fn(([c, d, s, w]: [Vec4, Float, Float, Float]): Vec4 =
|
|
|
68
68
|
export const bridge = Fn(([c, d, s, w]: [X, Float, Float, Float]): X => {
|
|
69
69
|
const strokeMask = stroke(d, s, (w as any).mul(2))
|
|
70
70
|
const maskedC = (c as any).mul(float(1).sub(strokeMask))
|
|
71
|
-
return maskedC.add(
|
|
71
|
+
return maskedC.add(stroke(d, s, w as any))
|
|
72
72
|
}).setLayout({
|
|
73
73
|
name: 'bridge',
|
|
74
74
|
type: 'auto',
|