react-native-shine 0.3.0 → 0.3.2
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 +21 -6
- package/lib/module/components/Content.js +232 -0
- package/lib/module/components/Content.js.map +1 -0
- package/lib/module/components/Shine.js +18 -254
- package/lib/module/components/Shine.js.map +1 -1
- package/lib/module/components/ShineGroup.js +11 -23
- package/lib/module/components/ShineGroup.js.map +1 -1
- package/lib/module/hooks/useAnimationFrame.js +17 -0
- package/lib/module/hooks/useAnimationFrame.js.map +1 -0
- package/lib/module/hooks/useOrientation.js +2 -8
- package/lib/module/hooks/useOrientation.js.map +1 -1
- package/lib/module/index.js +3 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/shaders/bindGroupLayouts.js +8 -8
- package/lib/module/shaders/bindGroupLayouts.js.map +1 -1
- package/lib/module/shaders/bindGroupUtils.js +18 -40
- package/lib/module/shaders/bindGroupUtils.js.map +1 -1
- package/lib/module/shaders/fragmentShaders/glareFragment.js +8 -7
- package/lib/module/shaders/fragmentShaders/glareFragment.js.map +1 -1
- package/lib/module/shaders/fragmentShaders/holoFragment.js +5 -10
- package/lib/module/shaders/fragmentShaders/holoFragment.js.map +1 -1
- package/lib/module/shaders/fragmentShaders/reverseHoloFragment.js +3 -3
- package/lib/module/shaders/fragmentShaders/reverseHoloFragment.js.map +1 -1
- package/lib/module/shaders/pipelineSetups.js +29 -43
- package/lib/module/shaders/pipelineSetups.js.map +1 -1
- package/lib/module/shaders/resourceManagement/textures.js +7 -0
- package/lib/module/shaders/resourceManagement/textures.js.map +1 -1
- package/lib/module/shaders/utils.js +8 -22
- package/lib/module/shaders/utils.js.map +1 -1
- package/lib/module/shaders/vertexShaders/mainRotationEffectVertex.js +2 -2
- package/lib/module/shaders/vertexShaders/mainRotationEffectVertex.js.map +1 -1
- package/lib/module/types/size.js +2 -0
- package/lib/module/types/size.js.map +1 -0
- package/lib/module/types/typeUtils.js +0 -14
- package/lib/module/types/typeUtils.js.map +1 -1
- package/lib/module/types/vector.js +2 -0
- package/lib/module/types/vector.js.map +1 -0
- package/lib/module/utils/size.js +25 -0
- package/lib/module/utils/size.js.map +1 -0
- package/lib/module/utils/vector.js +168 -0
- package/lib/module/utils/vector.js.map +1 -0
- package/lib/typescript/src/components/Content.d.ts +23 -0
- package/lib/typescript/src/components/Content.d.ts.map +1 -0
- package/lib/typescript/src/components/Shine.d.ts +3 -13
- package/lib/typescript/src/components/Shine.d.ts.map +1 -1
- package/lib/typescript/src/components/ShineGroup.d.ts +3 -5
- package/lib/typescript/src/components/ShineGroup.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useAnimationFrame.d.ts +2 -0
- package/lib/typescript/src/hooks/useAnimationFrame.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useOrientation.d.ts +3 -1
- package/lib/typescript/src/hooks/useOrientation.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +4 -2
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/shaders/bindGroupLayouts.d.ts +9 -9
- package/lib/typescript/src/shaders/bindGroupLayouts.d.ts.map +1 -1
- package/lib/typescript/src/shaders/bindGroupUtils.d.ts +3 -3
- package/lib/typescript/src/shaders/bindGroupUtils.d.ts.map +1 -1
- package/lib/typescript/src/shaders/fragmentShaders/glareFragment.d.ts.map +1 -1
- package/lib/typescript/src/shaders/fragmentShaders/holoFragment.d.ts.map +1 -1
- package/lib/typescript/src/shaders/pipelineSetups.d.ts +7 -7
- package/lib/typescript/src/shaders/pipelineSetups.d.ts.map +1 -1
- package/lib/typescript/src/shaders/resourceManagement/textures.d.ts +2 -1
- package/lib/typescript/src/shaders/resourceManagement/textures.d.ts.map +1 -1
- package/lib/typescript/src/shaders/utils.d.ts +3 -4
- package/lib/typescript/src/shaders/utils.d.ts.map +1 -1
- package/lib/typescript/src/types/size.d.ts +5 -0
- package/lib/typescript/src/types/size.d.ts.map +1 -0
- package/lib/typescript/src/types/typeUtils.d.ts +1 -4
- package/lib/typescript/src/types/typeUtils.d.ts.map +1 -1
- package/lib/typescript/src/types/types.d.ts +3 -1
- package/lib/typescript/src/types/types.d.ts.map +1 -1
- package/lib/typescript/src/types/vector.d.ts +11 -0
- package/lib/typescript/src/types/vector.d.ts.map +1 -0
- package/lib/typescript/src/utils/size.d.ts +5 -0
- package/lib/typescript/src/utils/size.d.ts.map +1 -0
- package/lib/typescript/src/utils/vector.d.ts +33 -0
- package/lib/typescript/src/utils/vector.d.ts.map +1 -0
- package/package.json +8 -7
- package/src/components/Content.tsx +403 -0
- package/src/components/Shine.tsx +24 -466
- package/src/components/ShineGroup.tsx +17 -24
- package/src/hooks/useAnimationFrame.ts +21 -0
- package/src/hooks/useOrientation.ts +11 -13
- package/src/index.tsx +9 -1
- package/src/shaders/bindGroupLayouts.ts +11 -11
- package/src/shaders/bindGroupUtils.ts +31 -61
- package/src/shaders/fragmentShaders/glareFragment.ts +8 -7
- package/src/shaders/fragmentShaders/holoFragment.ts +5 -13
- package/src/shaders/fragmentShaders/reverseHoloFragment.ts +4 -4
- package/src/shaders/pipelineSetups.ts +54 -69
- package/src/shaders/resourceManagement/textures.ts +13 -1
- package/src/shaders/utils.ts +13 -27
- package/src/shaders/vertexShaders/mainRotationEffectVertex.ts +2 -2
- package/src/types/size.ts +4 -0
- package/src/types/typeUtils.ts +0 -28
- package/src/types/types.ts +11 -1
- package/src/types/vector.ts +13 -0
- package/src/utils/size.ts +12 -0
- package/src/utils/vector.ts +132 -0
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { useEffect, useRef, useState } from 'react';
|
|
4
4
|
import { View, StyleSheet, Image, PixelRatio } from 'react-native';
|
|
5
5
|
import ViewShot, { captureRef } from 'react-native-view-shot';
|
|
6
|
+
import { sizeFromV2d, sizeToV2d } from "../utils/size.js";
|
|
7
|
+
import { areV2dEqual, multiplyV2d, round2D } from "../utils/vector.js";
|
|
6
8
|
import { Shine } from "./Shine.js";
|
|
7
9
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
10
|
export function ShineGroup({
|
|
@@ -20,19 +22,10 @@ export function ShineGroup({
|
|
|
20
22
|
const [capturedURI, setCapturedURI] = useState(null);
|
|
21
23
|
const [size, setSize] = useState(null);
|
|
22
24
|
const onInnerLayout = e => {
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
} = e.nativeEvent.layout;
|
|
27
|
-
if (width > 0 && height > 0) {
|
|
28
|
-
if (!size || size.width !== width || size.height !== height) {
|
|
29
|
-
setSize({
|
|
30
|
-
width,
|
|
31
|
-
height
|
|
32
|
-
});
|
|
33
|
-
}
|
|
25
|
+
const layoutV2d = sizeToV2d(e.nativeEvent.layout);
|
|
26
|
+
if (!size || !areV2dEqual(size, layoutV2d)) {
|
|
27
|
+
setSize(layoutV2d);
|
|
34
28
|
}
|
|
35
|
-
console.log('onInnerLayout', width, height);
|
|
36
29
|
};
|
|
37
30
|
|
|
38
31
|
// When we have a valid measured size, take a snapshot (after a short tick)
|
|
@@ -42,14 +35,11 @@ export function ShineGroup({
|
|
|
42
35
|
let mounted = true;
|
|
43
36
|
const t = setTimeout(async () => {
|
|
44
37
|
try {
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
const pixelH = Math.round(size.height * dpr);
|
|
48
|
-
const uri = await captureRef(viewShotRef.current, {
|
|
38
|
+
const pixel = round2D(multiplyV2d(size, PixelRatio.get()));
|
|
39
|
+
const uri = await captureRef(viewShotRef, {
|
|
49
40
|
format: 'png',
|
|
50
41
|
quality: 1,
|
|
51
|
-
|
|
52
|
-
height: pixelH
|
|
42
|
+
...sizeFromV2d(pixel)
|
|
53
43
|
});
|
|
54
44
|
if (mounted) setCapturedURI(uri);
|
|
55
45
|
} catch (err) {
|
|
@@ -76,11 +66,9 @@ export function ShineGroup({
|
|
|
76
66
|
})
|
|
77
67
|
}), capturedURI && size && /*#__PURE__*/_jsx(Image, {
|
|
78
68
|
src: capturedURI,
|
|
79
|
-
|
|
80
|
-
height: size.height
|
|
69
|
+
...sizeFromV2d(size)
|
|
81
70
|
}), capturedURI && size && /*#__PURE__*/_jsx(Shine, {
|
|
82
|
-
|
|
83
|
-
height: size.height,
|
|
71
|
+
...sizeFromV2d(size),
|
|
84
72
|
imageURI: capturedURI,
|
|
85
73
|
glareOptions: glareOptions,
|
|
86
74
|
colorMaskOptions: colorMaskOptions,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","useState","View","StyleSheet","Image","PixelRatio","ViewShot","captureRef","sizeFromV2d","sizeToV2d","areV2dEqual","multiplyV2d","round2D","Shine","jsx","_jsx","jsxs","_jsxs","ShineGroup","children","glareOptions","colorMaskOptions","maskURI","touchPosition","useTouchControl","addTextureMask","addHolo","addReverseHolo","viewShotRef","capturedURI","setCapturedURI","size","setSize","onInnerLayout","e","layoutV2d","nativeEvent","layout","current","mounted","t","setTimeout","pixel","get","uri","format","quality","err","console","warn","clearTimeout","style","styles","container","ref","options","onLayout","inner","src","imageURI","create","display","flexDirection","gap"],"sourceRoot":"../../../src","sources":["components/ShineGroup.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useEffect, useRef } from 'react';
|
|
4
|
+
export default function useAnimationFrame(cb) {
|
|
5
|
+
const requestId = useRef(null);
|
|
6
|
+
const onFrame = useCallback(function () {
|
|
7
|
+
cb();
|
|
8
|
+
requestId.current = requestAnimationFrame(onFrame);
|
|
9
|
+
}, [cb]);
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
requestId.current = requestAnimationFrame(onFrame);
|
|
12
|
+
return () => {
|
|
13
|
+
requestId.current === null || cancelAnimationFrame(requestId.current);
|
|
14
|
+
};
|
|
15
|
+
}, [onFrame]);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=useAnimationFrame.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useRef","useAnimationFrame","cb","requestId","onFrame","current","requestAnimationFrame","cancelAnimationFrame"],"sourceRoot":"../../../src","sources":["hooks/useAnimationFrame.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAEtD,eAAe,SAASC,iBAAiBA,CAACC,EAAc,EAAE;EACxD,MAAMC,SAAS,GAAGH,MAAM,CAAS,IAAI,CAAC;EAEtC,MAAMI,OAAO,GAAGN,WAAW,CACzB,YAAY;IACVI,EAAE,CAAC,CAAC;IACJC,SAAS,CAACE,OAAO,GAAGC,qBAAqB,CAACF,OAAO,CAAC;EACpD,CAAC,EACD,CAACF,EAAE,CACL,CAAC;EAEDH,SAAS,CAAC,MAAM;IACdI,SAAS,CAACE,OAAO,GAAGC,qBAAqB,CAACF,OAAO,CAAC;IAElD,OAAO,MAAM;MACXD,SAAS,CAACE,OAAO,KAAK,IAAI,IAAIE,oBAAoB,CAACJ,SAAS,CAACE,OAAO,CAAC;IACvE,CAAC;EACH,CAAC,EAAE,CAACD,OAAO,CAAC,CAAC;AACf","ignoreList":[]}
|
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { useEffect, useState } from 'react';
|
|
4
|
-
import {
|
|
4
|
+
import { subscribeToOrientationChange } from "../shaders/utils.js";
|
|
5
5
|
export const useOrientation = () => {
|
|
6
6
|
const [orientation, setOrientation] = useState();
|
|
7
|
-
useEffect(() =>
|
|
8
|
-
setOrientation(getAngleFromDimensions() === 0 ? 'PORTRAIT' : 'LANDSCAPE');
|
|
9
|
-
const unsubscribe = subscribeToOrientationChange(angleDeg => {
|
|
10
|
-
setOrientation(angleDeg === 0 ? 'PORTRAIT' : 'LANDSCAPE');
|
|
11
|
-
});
|
|
12
|
-
return () => unsubscribe();
|
|
13
|
-
}, []);
|
|
7
|
+
useEffect(() => subscribeToOrientationChange(isLandscape => setOrientation(isLandscape ? 'LANDSCAPE' : 'PORTRAIT')), []);
|
|
14
8
|
return orientation;
|
|
15
9
|
};
|
|
16
10
|
//# sourceMappingURL=useOrientation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useState","
|
|
1
|
+
{"version":3,"names":["useEffect","useState","subscribeToOrientationChange","useOrientation","orientation","setOrientation","isLandscape"],"sourceRoot":"../../../src","sources":["hooks/useOrientation.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,4BAA4B,QAAQ,qBAAkB;AAI/D,OAAO,MAAMC,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGJ,QAAQ,CAAc,CAAC;EAE7DD,SAAS,CACP,MACEE,4BAA4B,CAAEI,WAAW,IACvCD,cAAc,CAACC,WAAW,GAAG,WAAW,GAAG,UAAU,CACvD,CAAC,EACH,EACF,CAAC;EAED,OAAOF,WAAW;AACpB,CAAC","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { useOrientation } from "./hooks/useOrientation.js";
|
|
4
|
-
import { getAngleFromDimensions, subscribeToOrientationChange } from "./shaders/utils.js";
|
|
5
|
-
export { subscribeToOrientationChange, getAngleFromDimensions, useOrientation };
|
|
4
|
+
import { getAngleFromDimensions, isLandscapeMode, subscribeToOrientationChange } from "./shaders/utils.js";
|
|
5
|
+
export { subscribeToOrientationChange, getAngleFromDimensions, isLandscapeMode, useOrientation };
|
|
6
6
|
export { Shine } from "./components/Shine.js";
|
|
7
7
|
export { ShineGroup } from "./components/ShineGroup.js";
|
|
8
|
+
export * from "./utils/vector.js";
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useOrientation","getAngleFromDimensions","subscribeToOrientationChange","Shine","ShineGroup"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,cAAc,QAAQ,2BAAwB;AACvD,SACEC,sBAAsB,EACtBC,4BAA4B,QACvB,oBAAiB;AAExB,
|
|
1
|
+
{"version":3,"names":["useOrientation","getAngleFromDimensions","isLandscapeMode","subscribeToOrientationChange","Shine","ShineGroup"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,cAAc,QAAQ,2BAAwB;AACvD,SACEC,sBAAsB,EACtBC,eAAe,EACfC,4BAA4B,QACvB,oBAAiB;AAExB,SACEA,4BAA4B,EAC5BF,sBAAsB,EACtBC,eAAe,EACfF,cAAc;AAEhB,SAASI,KAAK,QAAQ,uBAAoB;AAC1C,SAASC,UAAU,QAAQ,4BAAyB;AAEpD,cAAc,mBAAgB","ignoreList":[]}
|
|
@@ -22,12 +22,12 @@ export const maskTextureBindGroupLayout = tgpu.bindGroupLayout({
|
|
|
22
22
|
sampler: 'filtering'
|
|
23
23
|
}
|
|
24
24
|
});
|
|
25
|
-
export const
|
|
25
|
+
export const rotationBindGroupLayout = tgpu.bindGroupLayout({
|
|
26
26
|
vec: {
|
|
27
27
|
uniform: d.vec3f
|
|
28
28
|
}
|
|
29
29
|
});
|
|
30
|
-
export const
|
|
30
|
+
export const glareSchema = d.struct({
|
|
31
31
|
glowPower: d.f32,
|
|
32
32
|
hueShiftAngleMax: d.f32,
|
|
33
33
|
hueShiftAngleMin: d.f32,
|
|
@@ -35,9 +35,9 @@ export const glareOptionsSchema = d.struct({
|
|
|
35
35
|
lightIntensity: d.f32,
|
|
36
36
|
glareIntensity: d.f32
|
|
37
37
|
});
|
|
38
|
-
export const
|
|
38
|
+
export const glareBindGroupLayout = tgpu.bindGroupLayout({
|
|
39
39
|
glareOptions: {
|
|
40
|
-
uniform:
|
|
40
|
+
uniform: glareSchema
|
|
41
41
|
}
|
|
42
42
|
});
|
|
43
43
|
export const colorMaskSchema = d.struct({
|
|
@@ -53,15 +53,15 @@ export const colorMaskBindGroupLayout = tgpu.bindGroupLayout({
|
|
|
53
53
|
}
|
|
54
54
|
});
|
|
55
55
|
export const bufferData = {
|
|
56
|
-
|
|
56
|
+
rotation: {
|
|
57
57
|
schema: d.vec3f,
|
|
58
58
|
usage: 'uniform'
|
|
59
59
|
},
|
|
60
|
-
|
|
61
|
-
schema:
|
|
60
|
+
glare: {
|
|
61
|
+
schema: glareSchema,
|
|
62
62
|
usage: 'uniform'
|
|
63
63
|
},
|
|
64
|
-
|
|
64
|
+
colorMask: {
|
|
65
65
|
schema: colorMaskSchema,
|
|
66
66
|
usage: 'uniform'
|
|
67
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["tgpu","d","textureBindGroupLayout","bindGroupLayout","texture","dimension","sampleType","sampler","maskTextureBindGroupLayout","
|
|
1
|
+
{"version":3,"names":["tgpu","d","textureBindGroupLayout","bindGroupLayout","texture","dimension","sampleType","sampler","maskTextureBindGroupLayout","rotationBindGroupLayout","vec","uniform","vec3f","glareSchema","struct","glowPower","f32","hueShiftAngleMax","hueShiftAngleMin","hueBlendPower","lightIntensity","glareIntensity","glareBindGroupLayout","glareOptions","colorMaskSchema","baseColor","rgbToleranceRange","upper","lower","colorMaskBindGroupLayout","mask","bufferData","rotation","schema","usage","glare","colorMask"],"sourceRoot":"../../../src","sources":["shaders/bindGroupLayouts.ts"],"mappings":";;AAAA,OAAOA,IAAI,MAAqC,SAAS;AACzD,OAAO,KAAKC,CAAC,MAAM,cAAc;AAGjC,OAAO,MAAMC,sBAAsB,GAAGF,IAAI,CAACG,eAAe,CAAC;EACzDC,OAAO,EAAE;IAAEA,OAAO,EAAE,OAAO;IAAEC,SAAS,EAAE,IAAI;IAAEC,UAAU,EAAE;EAAQ,CAAC;EACnEC,OAAO,EAAE;IAAEA,OAAO,EAAE;EAAY;AAClC,CAAC,CAAC;AAEF,OAAO,MAAMC,0BAA0B,GAAGR,IAAI,CAACG,eAAe,CAAC;EAC7DC,OAAO,EAAE;IAAEA,OAAO,EAAE,OAAO;IAAEC,SAAS,EAAE,IAAI;IAAEC,UAAU,EAAE;EAAQ,CAAC;EACnEC,OAAO,EAAE;IAAEA,OAAO,EAAE;EAAY;AAClC,CAAC,CAAC;AAEF,OAAO,MAAME,uBAAuB,GAAGT,IAAI,CAACG,eAAe,CAAC;EAC1DO,GAAG,EAAE;IAAEC,OAAO,EAAEV,CAAC,CAACW;EAAM;AAC1B,CAAC,CAAC;AAEF,OAAO,MAAMC,WAAW,GAAGZ,CAAC,CAACa,MAAM,CAAC;EAClCC,SAAS,EAAEd,CAAC,CAACe,GAAG;EAChBC,gBAAgB,EAAEhB,CAAC,CAACe,GAAG;EACvBE,gBAAgB,EAAEjB,CAAC,CAACe,GAAG;EACvBG,aAAa,EAAElB,CAAC,CAACe,GAAG;EACpBI,cAAc,EAAEnB,CAAC,CAACe,GAAG;EACrBK,cAAc,EAAEpB,CAAC,CAACe;AACpB,CAAC,CAAC;AAIF,OAAO,MAAMM,oBAAoB,GAAGtB,IAAI,CAACG,eAAe,CAAC;EACvDoB,YAAY,EAAE;IAAEZ,OAAO,EAAEE;EAAY;AACvC,CAAC,CAAC;AAEF,OAAO,MAAMW,eAAe,GAAGvB,CAAC,CAACa,MAAM,CAAC;EACtCW,SAAS,EAAExB,CAAC,CAACW,KAAK;EAClBc,iBAAiB,EAAEzB,CAAC,CAACa,MAAM,CAAC;IAC1Ba,KAAK,EAAE1B,CAAC,CAACW,KAAK;IACdgB,KAAK,EAAE3B,CAAC,CAACW;EACX,CAAC;AACH,CAAC,CAAC;AAIF,OAAO,MAAMiB,wBAAwB,GAAG7B,IAAI,CAACG,eAAe,CAAC;EAC3D2B,IAAI,EAAE;IAAEnB,OAAO,EAAEa;EAAgB;AACnC,CAAC,CAAC;AAEF,OAAO,MAAMO,UAAU,GAAG;EACxBC,QAAQ,EAAE;IACRC,MAAM,EAAEhC,CAAC,CAACW,KAAK;IACfsB,KAAK,EAAE;EACT,CAAC;EACDC,KAAK,EAAE;IACLF,MAAM,EAAEpB,WAAW;IACnBqB,KAAK,EAAE;EACT,CAAC;EACDE,SAAS,EAAE;IACTH,MAAM,EAAET,eAAe;IACvBU,KAAK,EAAE;EACT;AACF,CAGC;;AAID;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA","ignoreList":[]}
|
|
@@ -1,47 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import * as d from 'typegpu/data';
|
|
4
|
-
import {
|
|
4
|
+
import { glareBindGroupLayout, glareSchema, colorMaskBindGroupLayout, rotationBindGroupLayout, colorMaskSchema } from "./bindGroupLayouts.js";
|
|
5
5
|
import { colorMaskToTyped, createGlareOptions, createColorMask, mapToF32 } from "../types/typeUtils.js";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
};
|
|
11
|
-
export const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
};
|
|
17
|
-
export const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
return glareOptionsBuffer;
|
|
24
|
-
};
|
|
25
|
-
export const createGlareOptionsBindGroup = (root, buffer) => {
|
|
26
|
-
const glareOptionsBindGroup = root.createBindGroup(glareOptionsBindGroupLayout, {
|
|
27
|
-
glareOptions: buffer
|
|
28
|
-
});
|
|
29
|
-
return glareOptionsBindGroup;
|
|
30
|
-
};
|
|
31
|
-
export const createColorMaskBuffer = (root, initValues) => {
|
|
32
|
-
const colorMask = createColorMask({
|
|
33
|
-
...initValues
|
|
34
|
-
});
|
|
35
|
-
const colorMaskTyped = colorMaskToTyped(colorMask);
|
|
36
|
-
const colorMaskBuffer = root.createBuffer(colorMaskSchema, colorMaskTyped).$usage('uniform');
|
|
37
|
-
return colorMaskBuffer;
|
|
38
|
-
};
|
|
39
|
-
export const createColorMaskBindGroup = (root, buffer) => {
|
|
40
|
-
const colorMaskBindGroup = root.createBindGroup(colorMaskBindGroupLayout, {
|
|
41
|
-
mask: buffer
|
|
42
|
-
});
|
|
43
|
-
return colorMaskBindGroup;
|
|
44
|
-
};
|
|
6
|
+
import { componentsFromV3d, zeroV3d } from "../utils/vector.js";
|
|
7
|
+
export const createRotationBuffer = (root, initValues = zeroV3d) => root.createBuffer(d.vec3f, d.vec3f(...componentsFromV3d(initValues))).$usage('uniform');
|
|
8
|
+
export const createRotationValuesBindGroup = (root, buffer) => root.createBindGroup(rotationBindGroupLayout, {
|
|
9
|
+
vec: root.unwrap(buffer)
|
|
10
|
+
});
|
|
11
|
+
export const createGlareOptionsBuffer = (root, initValues) => root.createBuffer(glareSchema, mapToF32(createGlareOptions({
|
|
12
|
+
...initValues
|
|
13
|
+
}))).$usage('uniform');
|
|
14
|
+
export const createGlareBindGroup = (root, buffer) => root.createBindGroup(glareBindGroupLayout, {
|
|
15
|
+
glareOptions: buffer
|
|
16
|
+
});
|
|
17
|
+
export const createColorMaskBuffer = (root, initValues) => root.createBuffer(colorMaskSchema, colorMaskToTyped(createColorMask({
|
|
18
|
+
...initValues
|
|
19
|
+
}))).$usage('uniform');
|
|
20
|
+
export const createColorMaskBindGroup = (root, buffer) => root.createBindGroup(colorMaskBindGroupLayout, {
|
|
21
|
+
mask: buffer
|
|
22
|
+
});
|
|
45
23
|
|
|
46
24
|
// export const crateHoloBuffer = (
|
|
47
25
|
// root: TgpuRoot,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["d","
|
|
1
|
+
{"version":3,"names":["d","glareBindGroupLayout","glareSchema","colorMaskBindGroupLayout","rotationBindGroupLayout","colorMaskSchema","colorMaskToTyped","createGlareOptions","createColorMask","mapToF32","componentsFromV3d","zeroV3d","createRotationBuffer","root","initValues","createBuffer","vec3f","$usage","createRotationValuesBindGroup","buffer","createBindGroup","vec","unwrap","createGlareOptionsBuffer","createGlareBindGroup","glareOptions","createColorMaskBuffer","createColorMaskBindGroup","mask"],"sourceRoot":"../../../src","sources":["shaders/bindGroupUtils.ts"],"mappings":";;AACA,OAAO,KAAKA,CAAC,MAAM,cAAc;AACjC,SACEC,oBAAoB,EACpBC,WAAW,EACXC,wBAAwB,EAExBC,uBAAuB,EAEvBC,eAAe,QACV,uBAAoB;AAM3B,SACEC,gBAAgB,EAChBC,kBAAkB,EAClBC,eAAe,EACfC,QAAQ,QACH,uBAAoB;AAC3B,SAASC,iBAAiB,EAAEC,OAAO,QAAQ,oBAAiB;AAE5D,OAAO,MAAMC,oBAAoB,GAAGA,CAACC,IAAc,EAAEC,UAAU,GAAGH,OAAO,KACvEE,IAAI,CACDE,YAAY,CAACf,CAAC,CAACgB,KAAK,EAAEhB,CAAC,CAACgB,KAAK,CAAC,GAAGN,iBAAiB,CAACI,UAAU,CAAC,CAAC,CAAC,CAChEG,MAAM,CAAC,SAAS,CAAC;AAEtB,OAAO,MAAMC,6BAA6B,GAAGA,CAC3CL,IAAc,EACdM,MAA2B,KAE3BN,IAAI,CAACO,eAAe,CAAChB,uBAAuB,EAAE;EAC5CiB,GAAG,EAAER,IAAI,CAACS,MAAM,CAACH,MAAM;AACzB,CAAC,CAAC;AAEJ,OAAO,MAAMI,wBAAwB,GAAGA,CACtCV,IAAc,EACdC,UAAkC,KAElCD,IAAI,CACDE,YAAY,CAACb,WAAW,EAAEO,QAAQ,CAACF,kBAAkB,CAAC;EAAE,GAAGO;AAAW,CAAC,CAAC,CAAC,CAAC,CAC1EG,MAAM,CAAC,SAAS,CAAC;AAEtB,OAAO,MAAMO,oBAAoB,GAAGA,CAClCX,IAAc,EACdM,MAA6C,KAE7CN,IAAI,CAACO,eAAe,CAACnB,oBAAoB,EAAE;EACzCwB,YAAY,EAAEN;AAChB,CAAC,CAAC;AAEJ,OAAO,MAAMO,qBAAqB,GAAGA,CACnCb,IAAc,EACdC,UAAqD,KAErDD,IAAI,CACDE,YAAY,CACXV,eAAe,EACfC,gBAAgB,CAACE,eAAe,CAAC;EAAE,GAAGM;AAAW,CAAC,CAAC,CACrD,CAAC,CACAG,MAAM,CAAC,SAAS,CAAC;AAEtB,OAAO,MAAMU,wBAAwB,GAAGA,CACtCd,IAAc,EACdM,MAAiD,KAEjDN,IAAI,CAACO,eAAe,CAACjB,wBAAwB,EAAE;EAC7CyB,IAAI,EAAET;AACR,CAAC,CAAC;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import tgpu from 'typegpu';
|
|
4
4
|
import * as d from 'typegpu/data';
|
|
5
5
|
import * as std from 'typegpu/std';
|
|
6
|
-
import {
|
|
6
|
+
import { rotationBindGroupLayout, textureBindGroupLayout, glareBindGroupLayout
|
|
7
7
|
// colorMaskBindGroupLayout,
|
|
8
8
|
} from "../bindGroupLayouts.js";
|
|
9
9
|
import { glareColorShift, hueShift, overlayChannels } from "../tgpuUtils.js";
|
|
@@ -17,9 +17,9 @@ export const glareFragment = tgpu['~unstable'].fragmentFn({
|
|
|
17
17
|
const uv = d.vec2f(input.uv.x, 1.0 - input.uv.y);
|
|
18
18
|
const centeredCoords = std.sub(std.mul(uv, 2.0), 1); //-1 to 1
|
|
19
19
|
|
|
20
|
-
const rot =
|
|
20
|
+
const rot = rotationBindGroupLayout.$.vec;
|
|
21
21
|
const center = std.add(d.vec2f(0.0), d.vec2f(rot.x, rot.y));
|
|
22
|
-
const glareOptions =
|
|
22
|
+
const glareOptions = glareBindGroupLayout.$.glareOptions;
|
|
23
23
|
const glareIntensity = glareOptions.glareIntensity;
|
|
24
24
|
const glowPower = glareOptions.glowPower;
|
|
25
25
|
const hueBlendPower = glareOptions.hueBlendPower;
|
|
@@ -76,10 +76,10 @@ export const newGlareFragment = tgpu['~unstable'].fragmentFn({
|
|
|
76
76
|
const texcoord = d.vec2f(input.uv.x, 1.0 - input.uv.y);
|
|
77
77
|
const uv = d.vec2f(input.uv.x, 1.0 - input.uv.y);
|
|
78
78
|
const centeredCoords = std.sub(std.mul(uv, 2.0), 1.0);
|
|
79
|
-
const rot =
|
|
79
|
+
const rot = rotationBindGroupLayout.$.vec;
|
|
80
80
|
const center = std.add(d.vec2f(0.0), d.vec2f(rot.x, rot.y)); // do not change
|
|
81
81
|
|
|
82
|
-
const opts =
|
|
82
|
+
const opts = glareBindGroupLayout.$.glareOptions;
|
|
83
83
|
const glareIntensity = opts.glareIntensity; // [0..∞): bigger → wider/stronger area
|
|
84
84
|
const glowPower = opts.glowPower; // (0..∞): curve shaping; bigger → softer/wider glow
|
|
85
85
|
const hueBlendPower = opts.hueBlendPower; // [0..1+]: how much hue-shifted color blends in
|
|
@@ -106,9 +106,10 @@ export const newGlareFragment = tgpu['~unstable'].fragmentFn({
|
|
|
106
106
|
const glareLayer = std.mul(d.vec3f(maskedGlow), glareStrength);
|
|
107
107
|
const overlaidRGB = overlayChannels(chromaMixed, glareLayer);
|
|
108
108
|
const finalRGB = std.mix(chromaMixed, overlaidRGB, d.vec3f(maskedGlow));
|
|
109
|
-
|
|
110
|
-
// Optional mild safety clamp to avoid NaNs/overflow artifacts.
|
|
111
109
|
const outRGB = std.clamp(finalRGB, d.vec3f(0.0), d.vec3f(1.0));
|
|
110
|
+
|
|
111
|
+
// if (maskedGlow > 0.6) return d.vec4f(0.0, 0.0, 0.0, 0.0);
|
|
112
|
+
|
|
112
113
|
return d.vec4f(outRGB, color.w);
|
|
113
114
|
});
|
|
114
115
|
//# sourceMappingURL=glareFragment.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["tgpu","d","std","
|
|
1
|
+
{"version":3,"names":["tgpu","d","std","rotationBindGroupLayout","textureBindGroupLayout","glareBindGroupLayout","glareColorShift","hueShift","overlayChannels","glareFragment","fragmentFn","in","uv","vec2f","out","vec4f","input","texcoord","x","y","centeredCoords","sub","mul","rot","$","vec","center","add","glareOptions","glareIntensity","glowPower","hueBlendPower","hueShiftAngleMax","hueShiftAngleMin","lightIntensity","color","textureSample","texture","sampler","dst","exp","distance","distToCenter","smoothstep","glow","vec3f","w","hueBlend","f32","shiftedRGB","xyz","hueShiftAngle","shiftedHue","mix","baseColor","blendColor","combined","newGlareFragment","opts","dist","radial","radialScaled","max","influenceRaw","curveExp","clamp","glowMask","pow","div","maskedGlow","boostedRGB","hueT","hueAngle","hueShifted","hueMixWeight","chromaMixed","glareStrength","glareLayer","overlaidRGB","finalRGB","outRGB"],"sourceRoot":"../../../../src","sources":["shaders/fragmentShaders/glareFragment.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import tgpu from 'typegpu';
|
|
4
4
|
import * as d from 'typegpu/data';
|
|
5
5
|
import * as std from 'typegpu/std';
|
|
6
|
-
import {
|
|
6
|
+
import { rotationBindGroupLayout, textureBindGroupLayout } from "../bindGroupLayouts.js";
|
|
7
7
|
import { hueShift } from "../tgpuUtils.js";
|
|
8
8
|
import { waveCallbackSlot } from "../../enums/waveCallback.js";
|
|
9
9
|
export const holoFragment = tgpu['~unstable'].fragmentFn({
|
|
@@ -14,20 +14,15 @@ export const holoFragment = tgpu['~unstable'].fragmentFn({
|
|
|
14
14
|
})(input => {
|
|
15
15
|
const texcoord = d.vec2f(input.uv.x, 1.0 - input.uv.y);
|
|
16
16
|
const uv = texcoord;
|
|
17
|
-
const centeredCoords = std.sub(std.mul(uv, 2.0), 1.0);
|
|
18
17
|
const textureColor = std.textureSample(textureBindGroupLayout.$.texture, textureBindGroupLayout.$.sampler, texcoord);
|
|
19
|
-
const rot =
|
|
20
|
-
const center = std.add(d.vec2f(0.0), d.vec2f(rot.x, rot.y));
|
|
18
|
+
const rot = rotationBindGroupLayout.$.vec;
|
|
21
19
|
const wave = waveCallbackSlot.$(rot.xy);
|
|
22
20
|
const waveX = wave.x;
|
|
23
21
|
const waveY = wave.y;
|
|
24
|
-
const band = std.add(waveX, waveY);
|
|
25
|
-
const dist = std.distance(centeredCoords, center);
|
|
26
|
-
const intensity = std.clamp(1.0 - dist, 0.0, 1.0);
|
|
27
|
-
const falloff = std.pow(std.exp(-dist), 1.0 / intensity);
|
|
22
|
+
const band = std.add(0.2 * waveX * uv.x, 2 * waveY * uv.y);
|
|
28
23
|
const hueAngle = std.mul(std.abs(band), 10 * Math.PI * rot.x / 3);
|
|
29
24
|
const rainbowColor = hueShift(d.vec3f(1.0, 1.0, 1.0), hueAngle);
|
|
30
|
-
const finalColor = std.mul(rainbowColor,
|
|
31
|
-
return d.vec4f(finalColor,
|
|
25
|
+
const finalColor = std.mul(rainbowColor, 1.0);
|
|
26
|
+
return d.vec4f(finalColor, 0.7 * textureColor.w);
|
|
32
27
|
});
|
|
33
28
|
//# sourceMappingURL=holoFragment.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["tgpu","d","std","
|
|
1
|
+
{"version":3,"names":["tgpu","d","std","rotationBindGroupLayout","textureBindGroupLayout","hueShift","waveCallbackSlot","holoFragment","fragmentFn","in","uv","vec2f","out","vec4f","input","texcoord","x","y","textureColor","textureSample","$","texture","sampler","rot","vec","wave","xy","waveX","waveY","band","add","hueAngle","mul","abs","Math","PI","rainbowColor","vec3f","finalColor","w"],"sourceRoot":"../../../../src","sources":["shaders/fragmentShaders/holoFragment.ts"],"mappings":";;AAAA,OAAOA,IAAI,MAAM,SAAS;AAC1B,OAAO,KAAKC,CAAC,MAAM,cAAc;AACjC,OAAO,KAAKC,GAAG,MAAM,aAAa;AAClC,SACEC,uBAAuB,EACvBC,sBAAsB,QACjB,wBAAqB;AAC5B,SAASC,QAAQ,QAAQ,iBAAc;AACvC,SAASC,gBAAgB,QAAQ,6BAA0B;AAE3D,OAAO,MAAMC,YAAY,GAAGP,IAAI,CAAC,WAAW,CAAC,CAACQ,UAAU,CAAC;EACvDC,EAAE,EAAE;IAAEC,EAAE,EAAET,CAAC,CAACU;EAAM,CAAC;EACnBC,GAAG,EAAEX,CAAC,CAACY;AACT,CAAC,CAAC,CAAEC,KAAK,IAAK;EACZ,MAAMC,QAAQ,GAAGd,CAAC,CAACU,KAAK,CAACG,KAAK,CAACJ,EAAE,CAACM,CAAC,EAAE,GAAG,GAAGF,KAAK,CAACJ,EAAE,CAACO,CAAC,CAAC;EACtD,MAAMP,EAAE,GAAGK,QAAQ;EACnB,MAAMG,YAAY,GAAGhB,GAAG,CAACiB,aAAa,CACpCf,sBAAsB,CAACgB,CAAC,CAACC,OAAO,EAChCjB,sBAAsB,CAACgB,CAAC,CAACE,OAAO,EAChCP,QACF,CAAC;EACD,MAAMQ,GAAG,GAAGpB,uBAAuB,CAACiB,CAAC,CAACI,GAAG;EAEzC,MAAMC,IAAI,GAAGnB,gBAAgB,CAACc,CAAC,CAACG,GAAG,CAACG,EAAE,CAAC;EACvC,MAAMC,KAAK,GAAGF,IAAI,CAACT,CAAC;EACpB,MAAMY,KAAK,GAAGH,IAAI,CAACR,CAAC;EAEpB,MAAMY,IAAI,GAAG3B,GAAG,CAAC4B,GAAG,CAAC,GAAG,GAAGH,KAAK,GAAGjB,EAAE,CAACM,CAAC,EAAE,CAAC,GAAGY,KAAK,GAAGlB,EAAE,CAACO,CAAC,CAAC;EAE1D,MAAMc,QAAQ,GAAG7B,GAAG,CAAC8B,GAAG,CAAC9B,GAAG,CAAC+B,GAAG,CAACJ,IAAI,CAAC,EAAG,EAAE,GAAGK,IAAI,CAACC,EAAE,GAAGZ,GAAG,CAACP,CAAC,GAAI,CAAC,CAAC;EACnE,MAAMoB,YAAY,GAAG/B,QAAQ,CAACJ,CAAC,CAACoC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAEN,QAAQ,CAAC;EAC/D,MAAMO,UAAU,GAAGpC,GAAG,CAAC8B,GAAG,CAACI,YAAY,EAAE,GAAG,CAAC;EAE7C,OAAOnC,CAAC,CAACY,KAAK,CAACyB,UAAU,EAAE,GAAG,GAAGpB,YAAY,CAACqB,CAAC,CAAC;AAClD,CAAC,CAAC","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import tgpu from 'typegpu';
|
|
4
4
|
import * as d from 'typegpu/data';
|
|
5
5
|
import * as std from 'typegpu/std';
|
|
6
|
-
import { textureBindGroupLayout, maskTextureBindGroupLayout,
|
|
6
|
+
import { textureBindGroupLayout, maskTextureBindGroupLayout, rotationBindGroupLayout, glareBindGroupLayout } from "../bindGroupLayouts.js";
|
|
7
7
|
import { hueShift } from "../tgpuUtils.js";
|
|
8
8
|
export const reverseHoloFragment = tgpu['~unstable'].fragmentFn({
|
|
9
9
|
in: {
|
|
@@ -14,10 +14,10 @@ export const reverseHoloFragment = tgpu['~unstable'].fragmentFn({
|
|
|
14
14
|
const texcoord = d.vec2f(input.uv.x, 1.0 - input.uv.y);
|
|
15
15
|
const uv = texcoord;
|
|
16
16
|
const centeredCoords = std.sub(std.mul(uv, 2.0), 1.0);
|
|
17
|
-
const rot =
|
|
17
|
+
const rot = rotationBindGroupLayout.$.vec;
|
|
18
18
|
const center = std.add(d.vec2f(0.0), d.vec2f(rot.x, rot.y)); // center from device orientation/touch
|
|
19
19
|
|
|
20
|
-
const opts =
|
|
20
|
+
const opts = glareBindGroupLayout.$.glareOptions;
|
|
21
21
|
const glareIntensity = opts.glareIntensity;
|
|
22
22
|
const glowPower = opts.glowPower;
|
|
23
23
|
const hueBlendPower = opts.hueBlendPower;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["tgpu","d","std","textureBindGroupLayout","maskTextureBindGroupLayout","
|
|
1
|
+
{"version":3,"names":["tgpu","d","std","textureBindGroupLayout","maskTextureBindGroupLayout","rotationBindGroupLayout","glareBindGroupLayout","hueShift","reverseHoloFragment","fragmentFn","in","uv","vec2f","out","vec4f","input","texcoord","x","y","centeredCoords","sub","mul","rot","$","vec","center","add","opts","glareOptions","glareIntensity","glowPower","hueBlendPower","hueShiftAngleMin","hueShiftAngleMax","lightIntensity","cardColor","textureSample","texture","sampler","holoMaskColor","dist","distance","rFalloff","exp","scaledRadial","max","influence","smoothstep","curvePower","clamp","glowMask","pow","div","holoFactor","w","maskedGlow","hueAmount","mix","sparkleHue","xyz","hueMixAmt","chromaMix","shineStrength","shineLayer"],"sourceRoot":"../../../../src","sources":["shaders/fragmentShaders/reverseHoloFragment.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,18 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { maskTextureBindGroupLayout, textureBindGroupLayout } from "./bindGroupLayouts.js";
|
|
4
|
-
import { createBindGroupPair, createBindGroupPairs } from "../types/typeUtils.js";
|
|
5
4
|
import mainVertex from "./vertexShaders/mainVertex.js";
|
|
6
5
|
import maskFragment from "./fragmentShaders/maskFragment.js";
|
|
7
6
|
import { reverseHoloFragment } from "./fragmentShaders/reverseHoloFragment.js";
|
|
8
7
|
import { holoFragment } from "./fragmentShaders/holoFragment.js";
|
|
9
8
|
import { WAVE_CALLBACKS, waveCallbackFn, waveCallbackSlot } from "../enums/waveCallback.js";
|
|
10
|
-
export const attachBindGroups = (pipeline,
|
|
11
|
-
for (const pair of bindGroupPairs) {
|
|
12
|
-
pipeline = pipeline.with(pair.layout, pair.group);
|
|
13
|
-
}
|
|
14
|
-
return pipeline;
|
|
15
|
-
};
|
|
9
|
+
export const attachBindGroups = (pipeline, bindGroups) => bindGroups.reduce((acc, bindGroup) => acc.with(bindGroup.layout, bindGroup), pipeline);
|
|
16
10
|
export const blend = {
|
|
17
11
|
color: {
|
|
18
12
|
srcFactor: 'one-minus-src-alpha',
|
|
@@ -37,65 +31,57 @@ export const attachBindGroupsToPass = (pass, bindGroupPairs) => {
|
|
|
37
31
|
}
|
|
38
32
|
return pass;
|
|
39
33
|
};
|
|
40
|
-
export const createMaskPipeline = (root, maskTexture,
|
|
41
|
-
if (!maskTexture) return
|
|
34
|
+
export const createMaskPipeline = (root, maskTexture, bindGroups, sampler, presentationFormat) => {
|
|
35
|
+
if (!maskTexture) return;
|
|
42
36
|
const maskTextureBindGroup = root.createBindGroup(maskTextureBindGroupLayout, {
|
|
43
37
|
texture: root.unwrap(maskTexture).createView(),
|
|
44
38
|
sampler
|
|
45
39
|
});
|
|
46
|
-
const maskBGP =
|
|
47
|
-
for (let i = 0; i <
|
|
48
|
-
maskBGP.push(
|
|
40
|
+
const maskBGP = [maskTextureBindGroup];
|
|
41
|
+
for (let i = 0; i < bindGroups.length; i++) {
|
|
42
|
+
maskBGP.push(bindGroups[i]);
|
|
49
43
|
}
|
|
50
44
|
let maskPipeline = root['~unstable'].withVertex(mainVertex, {}).withFragment(maskFragment, getDefaultTarget(presentationFormat, blend)).createPipeline();
|
|
51
45
|
maskPipeline = attachBindGroups(maskPipeline, maskBGP);
|
|
52
46
|
return maskPipeline;
|
|
53
47
|
};
|
|
54
|
-
export const createReverseHoloPipeline = (root, texture,
|
|
55
|
-
if (!texture) return
|
|
48
|
+
export const createReverseHoloPipeline = (root, texture, bindGroups, sampler, presentationFormat) => {
|
|
49
|
+
if (!texture) return;
|
|
56
50
|
const reverseHoloBindGroup = root.createBindGroup(maskTextureBindGroupLayout, {
|
|
57
51
|
texture: root.unwrap(texture).createView(),
|
|
58
52
|
sampler
|
|
59
53
|
});
|
|
60
|
-
const reverseHoloBGP =
|
|
61
|
-
reverseHoloBGP.push(createBindGroupPair(maskTextureBindGroupLayout, reverseHoloBindGroup));
|
|
54
|
+
const reverseHoloBGP = [...bindGroups, reverseHoloBindGroup];
|
|
62
55
|
let reverseHoloPipeline = root['~unstable'].withVertex(mainVertex, {}).withFragment(reverseHoloFragment, getDefaultTarget(presentationFormat, blend)).createPipeline();
|
|
63
56
|
reverseHoloPipeline = attachBindGroups(reverseHoloPipeline, reverseHoloBGP);
|
|
64
57
|
return reverseHoloPipeline;
|
|
65
58
|
};
|
|
66
|
-
export const createRainbowHoloPipeline = (root, texture,
|
|
67
|
-
if (!texture) return
|
|
59
|
+
export const createRainbowHoloPipeline = (root, texture, bindGroups, sampler, presentationFormat) => {
|
|
60
|
+
if (!texture) return;
|
|
68
61
|
const imageTextureBindGroup = root.createBindGroup(textureBindGroupLayout, {
|
|
69
62
|
texture: root.unwrap(texture).createView(),
|
|
70
63
|
sampler
|
|
71
64
|
});
|
|
72
|
-
const texBGP = createBindGroupPair(textureBindGroupLayout, imageTextureBindGroup);
|
|
73
65
|
let rainbowHoloPipeline = root['~unstable'].with(waveCallbackSlot, waveCallbackFn(WAVE_CALLBACKS.default)).withVertex(mainVertex, {}).withFragment(holoFragment, getDefaultTarget(presentationFormat, blend)).createPipeline();
|
|
74
|
-
rainbowHoloPipeline = attachBindGroups(rainbowHoloPipeline, [...
|
|
66
|
+
rainbowHoloPipeline = attachBindGroups(rainbowHoloPipeline, [...bindGroups, imageTextureBindGroup]);
|
|
75
67
|
return rainbowHoloPipeline;
|
|
76
68
|
};
|
|
77
|
-
export
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
});
|
|
92
|
-
root['~unstable'].flush();
|
|
93
|
-
} else {
|
|
94
|
-
for (let i = 0; i < pipelines.length; i++) {
|
|
95
|
-
const attachment = attachments[i];
|
|
96
|
-
if (!attachment) return;
|
|
97
|
-
pipelines[i].withColorAttachment(attachment).draw(6);
|
|
69
|
+
export function renderPipelinesInSinglePass(root, pipelines, view) {
|
|
70
|
+
const unstableRoot = root['~unstable'];
|
|
71
|
+
const attachment = {
|
|
72
|
+
view,
|
|
73
|
+
clearValue: [0, 0, 0, 0],
|
|
74
|
+
loadOp: 'clear',
|
|
75
|
+
storeOp: 'store'
|
|
76
|
+
};
|
|
77
|
+
unstableRoot.beginRenderPass({
|
|
78
|
+
colorAttachments: [attachment]
|
|
79
|
+
}, pass => {
|
|
80
|
+
for (const pipeline of pipelines) {
|
|
81
|
+
pass.setPipeline(pipeline);
|
|
82
|
+
pass.draw(6);
|
|
98
83
|
}
|
|
99
|
-
}
|
|
100
|
-
|
|
84
|
+
});
|
|
85
|
+
unstableRoot.flush();
|
|
86
|
+
}
|
|
101
87
|
//# sourceMappingURL=pipelineSetups.js.map
|