react-native-shine 0.2.2 → 0.3.1
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 +22 -7
- package/lib/module/components/Content.js +232 -0
- package/lib/module/components/Content.js.map +1 -0
- package/lib/module/components/Shine.js +33 -0
- package/lib/module/components/Shine.js.map +1 -0
- package/lib/module/components/ShineGroup.js +92 -0
- package/lib/module/components/ShineGroup.js.map +1 -0
- package/lib/module/enums/waveCallback.js +19 -0
- package/lib/module/enums/waveCallback.js.map +1 -0
- package/lib/module/hooks/useAnimationFrame.js +17 -0
- package/lib/module/hooks/useAnimationFrame.js.map +1 -0
- package/lib/module/hooks/useOrientation.js +10 -0
- package/lib/module/hooks/useOrientation.js.map +1 -0
- package/lib/module/index.js +6 -219
- package/lib/module/index.js.map +1 -1
- package/lib/module/shaders/bindGroupLayouts.js +41 -6
- package/lib/module/shaders/bindGroupLayouts.js.map +1 -1
- package/lib/module/shaders/bindGroupUtils.js +34 -41
- package/lib/module/shaders/bindGroupUtils.js.map +1 -1
- package/lib/module/shaders/fragmentShaders/colorMaskFragment.js +2 -2
- package/lib/module/shaders/fragmentShaders/colorMaskFragment.js.map +1 -1
- package/lib/module/shaders/fragmentShaders/glareFragment.js +115 -0
- package/lib/module/shaders/fragmentShaders/glareFragment.js.map +1 -0
- package/lib/module/shaders/fragmentShaders/holoFragment.js +28 -0
- package/lib/module/shaders/fragmentShaders/holoFragment.js.map +1 -0
- package/lib/module/shaders/fragmentShaders/maskFragment.js +20 -0
- package/lib/module/shaders/fragmentShaders/maskFragment.js.map +1 -0
- package/lib/module/shaders/fragmentShaders/reverseHoloFragment.js +46 -0
- package/lib/module/shaders/fragmentShaders/reverseHoloFragment.js.map +1 -0
- package/lib/module/shaders/pipelineSetups.js +72 -17
- package/lib/module/shaders/pipelineSetups.js.map +1 -1
- package/lib/module/shaders/{resourceManagement.js → resourceManagement/bitmaps.js} +2 -1
- package/lib/module/shaders/resourceManagement/bitmaps.js.map +1 -0
- package/lib/module/shaders/resourceManagement/bufferManager.js +46 -0
- package/lib/module/shaders/resourceManagement/bufferManager.js.map +1 -0
- package/lib/module/shaders/resourceManagement/textures.js +24 -0
- package/lib/module/shaders/resourceManagement/textures.js.map +1 -0
- package/lib/module/shaders/tgpuUtils.js +19 -1
- package/lib/module/shaders/tgpuUtils.js.map +1 -1
- package/lib/module/shaders/utils.js +8 -36
- package/lib/module/shaders/utils.js.map +1 -1
- package/lib/module/shaders/vertexShaders/mainRotationEffectVertex.js +47 -0
- package/lib/module/shaders/vertexShaders/mainRotationEffectVertex.js.map +1 -0
- package/lib/module/types/size.js +2 -0
- package/lib/module/types/size.js.map +1 -0
- package/lib/module/types/typeUtils.js +17 -19
- 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 +7 -0
- package/lib/typescript/src/components/Shine.d.ts.map +1 -0
- package/lib/typescript/src/components/ShineGroup.d.ts +6 -0
- package/lib/typescript/src/components/ShineGroup.d.ts.map +1 -0
- package/lib/typescript/src/enums/waveCallback.d.ts +9 -0
- package/lib/typescript/src/enums/waveCallback.d.ts.map +1 -0
- 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 +4 -0
- package/lib/typescript/src/hooks/useOrientation.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +8 -11
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/shaders/bindGroupLayouts.d.ts +46 -8
- package/lib/typescript/src/shaders/bindGroupLayouts.d.ts.map +1 -1
- package/lib/typescript/src/shaders/bindGroupUtils.d.ts +9 -9
- package/lib/typescript/src/shaders/bindGroupUtils.d.ts.map +1 -1
- package/lib/typescript/src/shaders/fragmentShaders/glareFragment.d.ts +8 -0
- package/lib/typescript/src/shaders/fragmentShaders/glareFragment.d.ts.map +1 -0
- package/lib/typescript/src/shaders/fragmentShaders/holoFragment.d.ts +5 -0
- package/lib/typescript/src/shaders/fragmentShaders/holoFragment.d.ts.map +1 -0
- package/lib/typescript/src/shaders/fragmentShaders/maskFragment.d.ts +6 -0
- package/lib/typescript/src/shaders/fragmentShaders/maskFragment.d.ts.map +1 -0
- package/lib/typescript/src/shaders/fragmentShaders/reverseHoloFragment.d.ts +5 -0
- package/lib/typescript/src/shaders/fragmentShaders/reverseHoloFragment.d.ts.map +1 -0
- package/lib/typescript/src/shaders/pipelineSetups.d.ts +9 -4
- package/lib/typescript/src/shaders/pipelineSetups.d.ts.map +1 -1
- package/lib/typescript/src/shaders/{resourceManagement.d.ts → resourceManagement/bitmaps.d.ts} +1 -1
- package/lib/typescript/src/shaders/resourceManagement/bitmaps.d.ts.map +1 -0
- package/lib/typescript/src/shaders/resourceManagement/bufferManager.d.ts +28 -0
- package/lib/typescript/src/shaders/resourceManagement/bufferManager.d.ts.map +1 -0
- package/lib/typescript/src/shaders/resourceManagement/textures.d.ts +8 -0
- package/lib/typescript/src/shaders/resourceManagement/textures.d.ts.map +1 -0
- package/lib/typescript/src/shaders/tgpuUtils.d.ts +5 -1
- package/lib/typescript/src/shaders/tgpuUtils.d.ts.map +1 -1
- package/lib/typescript/src/shaders/utils.d.ts +3 -10
- package/lib/typescript/src/shaders/utils.d.ts.map +1 -1
- package/lib/typescript/src/shaders/vertexShaders/mainRotationEffectVertex.d.ts +6 -0
- package/lib/typescript/src/shaders/vertexShaders/mainRotationEffectVertex.d.ts.map +1 -0
- 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 +3 -5
- package/lib/typescript/src/types/typeUtils.d.ts.map +1 -1
- package/lib/typescript/src/types/types.d.ts +10 -3
- 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 +7 -5
- package/scripts/postinstall.js +16 -17
- package/src/components/Content.tsx +403 -0
- package/src/components/Shine.tsx +38 -0
- package/src/components/ShineGroup.tsx +100 -0
- package/src/enums/waveCallback.ts +22 -0
- package/src/hooks/useAnimationFrame.ts +21 -0
- package/src/hooks/useOrientation.ts +18 -0
- package/src/index.tsx +14 -322
- package/src/shaders/bindGroupLayouts.ts +45 -8
- package/src/shaders/bindGroupUtils.ts +50 -65
- package/src/shaders/fragmentShaders/colorMaskFragment.ts +2 -2
- package/src/shaders/fragmentShaders/glareFragment.ts +143 -0
- package/src/shaders/fragmentShaders/holoFragment.ts +35 -0
- package/src/shaders/fragmentShaders/maskFragment.ts +31 -0
- package/src/shaders/fragmentShaders/reverseHoloFragment.ts +71 -0
- package/src/shaders/pipelineSetups.ts +152 -20
- package/src/shaders/{resourceManagement.ts → resourceManagement/bitmaps.ts} +1 -0
- package/src/shaders/resourceManagement/bufferManager.ts +82 -0
- package/src/shaders/resourceManagement/textures.ts +42 -0
- package/src/shaders/tgpuUtils.ts +36 -1
- package/src/shaders/utils.ts +13 -57
- package/src/shaders/vertexShaders/mainRotationEffectVertex.ts +76 -0
- package/src/types/size.ts +4 -0
- package/src/types/typeUtils.ts +22 -36
- package/src/types/types.ts +19 -3
- package/src/types/vector.ts +13 -0
- package/src/utils/size.ts +12 -0
- package/src/utils/vector.ts +132 -0
- package/lib/module/shaders/fragmentShaders/bloomFragment.js +0 -66
- package/lib/module/shaders/fragmentShaders/bloomFragment.js.map +0 -1
- package/lib/module/shaders/resourceManagement.js.map +0 -1
- package/lib/typescript/src/shaders/fragmentShaders/bloomFragment.d.ts +0 -6
- package/lib/typescript/src/shaders/fragmentShaders/bloomFragment.d.ts.map +0 -1
- package/lib/typescript/src/shaders/resourceManagement.d.ts.map +0 -1
- package/src/shaders/fragmentShaders/bloomFragment.ts +0 -83
package/lib/module/index.js
CHANGED
|
@@ -1,222 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import { bloomOptionsBindGroupLayout, colorMaskBindGroupLayout, rotationValuesBindGroupLayout, textureBindGroupLayout } from "./shaders/bindGroupLayouts.js";
|
|
10
|
-
import { SensorType, useAnimatedSensor, useDerivedValue, useSharedValue } from 'react-native-reanimated';
|
|
11
|
-
import * as d from 'typegpu/data';
|
|
12
|
-
import { Platform } from 'react-native';
|
|
13
|
-
import bloomFragment from "./shaders/fragmentShaders/bloomFragment.js";
|
|
14
|
-
import { createBloomOptionsBindGroup, createBloomOptionsBuffer, createColorMaskBindGroup, createColorMaskBuffer, createRotationBuffer, createRotationValuesBindGroup } from "./shaders/bindGroupUtils.js";
|
|
15
|
-
import { createBindGroupPairs, createBloomOptions, createColorMask } from "./types/typeUtils.js";
|
|
16
|
-
import { attachBindGroups, getDefaultTarget } from "./shaders/pipelineSetups.js";
|
|
17
|
-
import colorMaskFragment from "./shaders/fragmentShaders/colorMaskFragment.js";
|
|
18
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
19
|
-
export function Shine({
|
|
20
|
-
width,
|
|
21
|
-
height,
|
|
22
|
-
imageURI,
|
|
23
|
-
bloomOptions,
|
|
24
|
-
colorMaskOptions
|
|
25
|
-
}) {
|
|
26
|
-
const {
|
|
27
|
-
device = null
|
|
28
|
-
} = useDevice();
|
|
29
|
-
const root = device ? getOrInitRoot(device) : null;
|
|
30
|
-
const {
|
|
31
|
-
ref,
|
|
32
|
-
context
|
|
33
|
-
} = useGPUContext();
|
|
34
|
-
const presentationFormat = navigator.gpu.getPreferredCanvasFormat();
|
|
35
|
-
const frameRef = useRef(null);
|
|
36
|
-
const [imageTexture, setImageTexture] = useState(null);
|
|
37
|
-
const orientationAngle = useSharedValue(0); // degrees
|
|
38
|
-
const rotationShared = useSharedValue([0, 0, 0]); // final GPU offsets
|
|
39
|
-
|
|
40
|
-
// Calibration shared values (UI thread)
|
|
41
|
-
const initialGravity = useSharedValue([0, 0, 0]);
|
|
42
|
-
const calibSum = useSharedValue([0, 0, 0]);
|
|
43
|
-
const calibCount = useSharedValue(0);
|
|
44
|
-
const calibrated = useSharedValue(false);
|
|
45
|
-
const gravitySensor = useAnimatedSensor(SensorType.GRAVITY, {
|
|
46
|
-
interval: 20
|
|
47
|
-
});
|
|
48
|
-
console.log('render');
|
|
49
|
-
|
|
50
|
-
// Subscribe to orientation changes and reset calibration on change
|
|
51
|
-
useEffect(() => {
|
|
52
|
-
orientationAngle.value = getAngleFromDimensions();
|
|
53
|
-
const unsubscribe = subscribeToOrientationChange(angleDeg => {
|
|
54
|
-
orientationAngle.value = angleDeg;
|
|
55
|
-
});
|
|
56
|
-
return () => unsubscribe();
|
|
57
|
-
}, [orientationAngle]);
|
|
58
|
-
|
|
59
|
-
// Calibration & mapping logic
|
|
60
|
-
useDerivedValue(() => {
|
|
61
|
-
'worklet';
|
|
62
|
-
|
|
63
|
-
// console.log(orientationAngle.value);
|
|
64
|
-
const v = gravitySensor.sensor?.value ?? gravitySensor.sensor.value ?? {
|
|
65
|
-
x: 0,
|
|
66
|
-
y: 0,
|
|
67
|
-
z: 0
|
|
68
|
-
};
|
|
69
|
-
const gx = v.x ?? 0;
|
|
70
|
-
const gy = v.y ?? 0;
|
|
71
|
-
const gz = v.z ?? 0;
|
|
72
|
-
const CALIBRATION_SAMPLES = 40;
|
|
73
|
-
const alpha = 0.15; // smoothing
|
|
74
|
-
const scale = 0.6;
|
|
75
|
-
if (!calibrated.value) {
|
|
76
|
-
// accumulate baseline in device coordinates
|
|
77
|
-
const s = calibSum.value;
|
|
78
|
-
const c = calibCount.value + 1;
|
|
79
|
-
calibSum.value = [s[0] + gx, s[1] + gy, s[2] + gz];
|
|
80
|
-
calibCount.value = c;
|
|
81
|
-
if (c >= CALIBRATION_SAMPLES) {
|
|
82
|
-
const avg = calibSum.value;
|
|
83
|
-
initialGravity.value = [avg[0] / c, avg[1] / c, avg[2] / c];
|
|
84
|
-
calibrated.value = true;
|
|
85
|
-
}
|
|
86
|
-
rotationShared.value = [0, 0, 0];
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
const init = initialGravity.value;
|
|
90
|
-
const dx = gx - init[0];
|
|
91
|
-
const dy = gy - init[1];
|
|
92
|
-
const dz = gz - init[2];
|
|
93
|
-
|
|
94
|
-
// Rotate into screen coordinates so offsets auto-swap with orientation
|
|
95
|
-
const [mx, my] = rotate2D([dx, dy], -orientationAngle.value);
|
|
96
|
-
const screenX = mx;
|
|
97
|
-
const screenY = -my;
|
|
98
|
-
const prev = rotationShared.value;
|
|
99
|
-
const smoothX = prev[0] * (1 - alpha) + screenX * alpha;
|
|
100
|
-
const smoothY = prev[1] * (1 - alpha) + screenY * alpha;
|
|
101
|
-
const smoothZ = prev[2] * (1 - alpha) + dz * alpha;
|
|
102
|
-
if (orientationAngle.value === 90) {
|
|
103
|
-
rotationShared.value = [clamp(smoothY * scale, -1, 1), clamp(-smoothX * scale, -1, 1), clamp(smoothZ * scale, -1, 1)];
|
|
104
|
-
} else {
|
|
105
|
-
rotationShared.value = [clamp(smoothX * scale, -1, 1), clamp(smoothY * scale, -1, 1), clamp(smoothZ * scale, -1, 1)];
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
// Resource setup
|
|
110
|
-
useEffect(() => {
|
|
111
|
-
if (!root || !device || !context) return;
|
|
112
|
-
(async () => {
|
|
113
|
-
const bitmap = await getBitmapFromURI(imageURI);
|
|
114
|
-
const texture = await createTexture(root, bitmap);
|
|
115
|
-
setImageTexture(texture);
|
|
116
|
-
await loadTexture(root, bitmap, texture);
|
|
117
|
-
})();
|
|
118
|
-
}, [root, device, context, imageURI]);
|
|
119
|
-
|
|
120
|
-
// Render loop
|
|
121
|
-
useEffect(() => {
|
|
122
|
-
if (!root || !device || !context || !imageTexture) return;
|
|
123
|
-
context.configure({
|
|
124
|
-
device,
|
|
125
|
-
format: presentationFormat,
|
|
126
|
-
alphaMode: 'premultiplied'
|
|
127
|
-
});
|
|
128
|
-
const sampler = device.createSampler({
|
|
129
|
-
magFilter: 'linear',
|
|
130
|
-
minFilter: 'linear'
|
|
131
|
-
});
|
|
132
|
-
const textureBindGroup = root.createBindGroup(textureBindGroupLayout, {
|
|
133
|
-
texture: root.unwrap(imageTexture).createView(),
|
|
134
|
-
sampler
|
|
135
|
-
});
|
|
136
|
-
const rotationBuffer = createRotationBuffer(root);
|
|
137
|
-
const rotationBindGroup = createRotationValuesBindGroup(root, rotationBuffer);
|
|
138
|
-
const bloomOptionsBuffer = createBloomOptionsBuffer(root, createBloomOptions(bloomOptions ?? {}));
|
|
139
|
-
const bloomOptionsBindGroup = createBloomOptionsBindGroup(root, bloomOptionsBuffer);
|
|
140
|
-
const colorMaskBuffer = createColorMaskBuffer(root, createColorMask(colorMaskOptions ?? {
|
|
141
|
-
baseColor: [-20, -20, -20]
|
|
142
|
-
}));
|
|
143
|
-
const colorMaskBindGroup = createColorMaskBindGroup(root, colorMaskBuffer);
|
|
144
|
-
const bloomBGP = createBindGroupPairs([textureBindGroupLayout, rotationValuesBindGroupLayout, bloomOptionsBindGroupLayout, colorMaskBindGroupLayout], [textureBindGroup, rotationBindGroup, bloomOptionsBindGroup, colorMaskBindGroup]);
|
|
145
|
-
const maskBGP = createBindGroupPairs([textureBindGroupLayout, colorMaskBindGroupLayout], [textureBindGroup, colorMaskBindGroup]);
|
|
146
|
-
let bloomPipeline = root['~unstable'].withVertex(mainVertex, {}).withFragment(bloomFragment, getDefaultTarget(presentationFormat)).createPipeline();
|
|
147
|
-
bloomPipeline = attachBindGroups(bloomPipeline, bloomBGP);
|
|
148
|
-
let colorMaskPipeline = root['~unstable'].withVertex(mainVertex, {}).withFragment(colorMaskFragment, getDefaultTarget(presentationFormat)).createPipeline();
|
|
149
|
-
colorMaskPipeline = attachBindGroups(colorMaskPipeline, maskBGP);
|
|
150
|
-
const rot = d.vec3f(0.0);
|
|
151
|
-
let view;
|
|
152
|
-
let bloomAttachment;
|
|
153
|
-
let colorMaskAttachment;
|
|
154
|
-
const render = () => {
|
|
155
|
-
rot[0] = rotationShared.value[0];
|
|
156
|
-
rot[1] = rotationShared.value[1];
|
|
157
|
-
rot[2] = rotationShared.value[2];
|
|
158
|
-
rotationBuffer.write(rot);
|
|
159
|
-
view = context.getCurrentTexture().createView();
|
|
160
|
-
bloomAttachment = {
|
|
161
|
-
view: view,
|
|
162
|
-
clearValue: [0, 0, 0, 0],
|
|
163
|
-
loadOp: 'clear',
|
|
164
|
-
storeOp: 'store'
|
|
165
|
-
};
|
|
166
|
-
colorMaskAttachment = {
|
|
167
|
-
view: view,
|
|
168
|
-
loadOp: 'load',
|
|
169
|
-
storeOp: 'store'
|
|
170
|
-
};
|
|
171
|
-
|
|
172
|
-
// root['~unstable'].beginRenderPass(
|
|
173
|
-
// {
|
|
174
|
-
// colorAttachments: [
|
|
175
|
-
// {
|
|
176
|
-
// view,
|
|
177
|
-
// clearValue: [0, 0, 0, 0],
|
|
178
|
-
// loadOp: 'clear',
|
|
179
|
-
// storeOp: 'store',
|
|
180
|
-
// },
|
|
181
|
-
// ],
|
|
182
|
-
// },
|
|
183
|
-
// (pass) => {
|
|
184
|
-
// pass.setPipeline(bloomPipeline);
|
|
185
|
-
// // pass = attachBindGroupsToPass(pass, bloomBGP);
|
|
186
|
-
// pass.setBindGroup(textureBindGroupLayout, textureBindGroup);
|
|
187
|
-
// pass.setBindGroup(rotationValuesBindGroupLayout, rotationBindGroup);
|
|
188
|
-
// pass.setBindGroup(bloomOptionsBindGroupLayout, bloomOptionsBindGroup);
|
|
189
|
-
// pass.setBindGroup(colorMaskBindGroupLayout, colorMaskBindGroup);
|
|
190
|
-
// pass.draw(6);
|
|
191
|
-
|
|
192
|
-
// // Mask draw
|
|
193
|
-
// pass.setPipeline(colorMaskPipeline);
|
|
194
|
-
// pass.setBindGroup(textureBindGroupLayout, textureBindGroup);
|
|
195
|
-
// pass.setBindGroup(colorMaskBindGroupLayout, colorMaskBindGroup);
|
|
196
|
-
// pass.draw(6);
|
|
197
|
-
// }
|
|
198
|
-
// );
|
|
199
|
-
// root['~unstable'].flush();
|
|
200
|
-
|
|
201
|
-
bloomPipeline.withColorAttachment(bloomAttachment).draw(6);
|
|
202
|
-
colorMaskPipeline.withColorAttachment(colorMaskAttachment).draw(6);
|
|
203
|
-
context.present();
|
|
204
|
-
frameRef.current = requestAnimationFrame(render);
|
|
205
|
-
};
|
|
206
|
-
frameRef.current = requestAnimationFrame(render);
|
|
207
|
-
return () => {
|
|
208
|
-
if (frameRef.current) cancelAnimationFrame(frameRef.current);
|
|
209
|
-
};
|
|
210
|
-
}, [device, context, root, presentationFormat, imageTexture, rotationShared, bloomOptions, colorMaskOptions]);
|
|
211
|
-
return /*#__PURE__*/_jsx(Canvas, {
|
|
212
|
-
ref: ref,
|
|
213
|
-
style: {
|
|
214
|
-
width,
|
|
215
|
-
height,
|
|
216
|
-
aspectRatio: width / height
|
|
217
|
-
},
|
|
218
|
-
transparent: Platform.OS === 'ios'
|
|
219
|
-
});
|
|
220
|
-
}
|
|
221
|
-
export { subscribeToOrientationChange, getAngleFromDimensions };
|
|
3
|
+
import { useOrientation } from "./hooks/useOrientation.js";
|
|
4
|
+
import { getAngleFromDimensions, isLandscapeMode, subscribeToOrientationChange } from "./shaders/utils.js";
|
|
5
|
+
export { subscribeToOrientationChange, getAngleFromDimensions, isLandscapeMode, useOrientation };
|
|
6
|
+
export { Shine } from "./components/Shine.js";
|
|
7
|
+
export { ShineGroup } from "./components/ShineGroup.js";
|
|
8
|
+
export * from "./utils/vector.js";
|
|
222
9
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","useState","Canvas","useDevice","useGPUContext","getOrInitRoot","mainVertex","getBitmapFromURI","createTexture","loadTexture","clamp","rotate2D","subscribeToOrientationChange","getAngleFromDimensions","bloomOptionsBindGroupLayout","colorMaskBindGroupLayout","rotationValuesBindGroupLayout","textureBindGroupLayout","SensorType","useAnimatedSensor","useDerivedValue","useSharedValue","d","Platform","bloomFragment","createBloomOptionsBindGroup","createBloomOptionsBuffer","createColorMaskBindGroup","createColorMaskBuffer","createRotationBuffer","createRotationValuesBindGroup","createBindGroupPairs","createBloomOptions","createColorMask","attachBindGroups","getDefaultTarget","colorMaskFragment","jsx","_jsx","Shine","width","height","imageURI","bloomOptions","colorMaskOptions","device","root","ref","context","presentationFormat","navigator","gpu","getPreferredCanvasFormat","frameRef","imageTexture","setImageTexture","orientationAngle","rotationShared","initialGravity","calibSum","calibCount","calibrated","gravitySensor","GRAVITY","interval","console","log","value","unsubscribe","angleDeg","v","sensor","x","y","z","gx","gy","gz","CALIBRATION_SAMPLES","alpha","scale","s","c","avg","init","dx","dy","dz","mx","my","screenX","screenY","prev","smoothX","smoothY","smoothZ","bitmap","texture","configure","format","alphaMode","sampler","createSampler","magFilter","minFilter","textureBindGroup","createBindGroup","unwrap","createView","rotationBuffer","rotationBindGroup","bloomOptionsBuffer","bloomOptionsBindGroup","colorMaskBuffer","baseColor","colorMaskBindGroup","bloomBGP","maskBGP","bloomPipeline","withVertex","withFragment","createPipeline","colorMaskPipeline","rot","vec3f","view","bloomAttachment","colorMaskAttachment","render","write","getCurrentTexture","clearValue","loadOp","storeOp","withColorAttachment","draw","present","current","requestAnimationFrame","cancelAnimationFrame","style","aspectRatio","transparent","OS"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
|
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":[]}
|
|
@@ -12,22 +12,32 @@ export const textureBindGroupLayout = tgpu.bindGroupLayout({
|
|
|
12
12
|
sampler: 'filtering'
|
|
13
13
|
}
|
|
14
14
|
});
|
|
15
|
-
export const
|
|
15
|
+
export const maskTextureBindGroupLayout = tgpu.bindGroupLayout({
|
|
16
|
+
texture: {
|
|
17
|
+
texture: 'float',
|
|
18
|
+
dimension: '2d',
|
|
19
|
+
sampleType: 'float'
|
|
20
|
+
},
|
|
21
|
+
sampler: {
|
|
22
|
+
sampler: 'filtering'
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
export const rotationBindGroupLayout = tgpu.bindGroupLayout({
|
|
16
26
|
vec: {
|
|
17
27
|
uniform: d.vec3f
|
|
18
28
|
}
|
|
19
29
|
});
|
|
20
|
-
export const
|
|
30
|
+
export const glareSchema = d.struct({
|
|
21
31
|
glowPower: d.f32,
|
|
22
32
|
hueShiftAngleMax: d.f32,
|
|
23
33
|
hueShiftAngleMin: d.f32,
|
|
24
34
|
hueBlendPower: d.f32,
|
|
25
35
|
lightIntensity: d.f32,
|
|
26
|
-
|
|
36
|
+
glareIntensity: d.f32
|
|
27
37
|
});
|
|
28
|
-
export const
|
|
29
|
-
|
|
30
|
-
uniform:
|
|
38
|
+
export const glareBindGroupLayout = tgpu.bindGroupLayout({
|
|
39
|
+
glareOptions: {
|
|
40
|
+
uniform: glareSchema
|
|
31
41
|
}
|
|
32
42
|
});
|
|
33
43
|
export const colorMaskSchema = d.struct({
|
|
@@ -42,4 +52,29 @@ export const colorMaskBindGroupLayout = tgpu.bindGroupLayout({
|
|
|
42
52
|
uniform: colorMaskSchema
|
|
43
53
|
}
|
|
44
54
|
});
|
|
55
|
+
export const bufferData = {
|
|
56
|
+
rotation: {
|
|
57
|
+
schema: d.vec3f,
|
|
58
|
+
usage: 'uniform'
|
|
59
|
+
},
|
|
60
|
+
glare: {
|
|
61
|
+
schema: glareSchema,
|
|
62
|
+
usage: 'uniform'
|
|
63
|
+
},
|
|
64
|
+
colorMask: {
|
|
65
|
+
schema: colorMaskSchema,
|
|
66
|
+
usage: 'uniform'
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
// export const holoSchema = d.struct({
|
|
71
|
+
// intensity: d.f32,
|
|
72
|
+
// waveCallback: WaveCallback, //TgpuFn<(uv: d.Vec2f) => d.Vec2f>,
|
|
73
|
+
// });
|
|
74
|
+
|
|
75
|
+
// export type holoSchema = typeof holoSchema;
|
|
76
|
+
|
|
77
|
+
// export const holoBindGroupLayout = tgpu.bindGroupLayout({
|
|
78
|
+
// holoOptions: { uniform: holoSchema },
|
|
79
|
+
// });
|
|
45
80
|
//# sourceMappingURL=bindGroupLayouts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["tgpu","d","textureBindGroupLayout","bindGroupLayout","texture","dimension","sampleType","sampler","
|
|
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,45 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import * as d from 'typegpu/data';
|
|
4
|
-
import {
|
|
5
|
-
import { colorMaskToTyped,
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
};
|
|
11
|
-
export const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
};
|
|
17
|
-
export const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
};
|
|
39
|
-
export const createColorMaskBindGroup = (root, buffer) => {
|
|
40
|
-
const colorMaskBindGroup = root.createBindGroup(colorMaskBindGroupLayout, {
|
|
41
|
-
mask: buffer
|
|
42
|
-
});
|
|
43
|
-
return colorMaskBindGroup;
|
|
44
|
-
};
|
|
4
|
+
import { glareBindGroupLayout, glareSchema, colorMaskBindGroupLayout, rotationBindGroupLayout, colorMaskSchema } from "./bindGroupLayouts.js";
|
|
5
|
+
import { colorMaskToTyped, createGlareOptions, createColorMask, mapToF32 } from "../types/typeUtils.js";
|
|
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
|
+
});
|
|
23
|
+
|
|
24
|
+
// export const crateHoloBuffer = (
|
|
25
|
+
// root: TgpuRoot,
|
|
26
|
+
// initValues: Partial<HoloOptions>
|
|
27
|
+
// ) => {
|
|
28
|
+
// const holoOptions: HoloOptions = createHoloOptions({ ...initValues });
|
|
29
|
+
// const holoOptionsTyped = {
|
|
30
|
+
// intensity: d.f32(holoOptions.intensity),
|
|
31
|
+
// waveCallback: holoOptions.waveCallback,
|
|
32
|
+
// };
|
|
33
|
+
|
|
34
|
+
// const holoBuffer = root
|
|
35
|
+
// .createBuffer(holoSchema, holoOptionsTyped)
|
|
36
|
+
// .$usage('uniform');
|
|
37
|
+
// };
|
|
45
38
|
//# sourceMappingURL=bindGroupUtils.js.map
|
|
@@ -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":[]}
|
|
@@ -20,9 +20,9 @@ const colorMaskFragment = tgpu['~unstable'].fragmentFn({
|
|
|
20
20
|
const upperCheck = std.all(std.le(color.xyz, maskedColorUpper));
|
|
21
21
|
const lowerCheck = std.all(std.ge(color.xyz, maskedColorLower));
|
|
22
22
|
if (upperCheck && lowerCheck) {
|
|
23
|
-
return color;
|
|
23
|
+
return d.vec4f(color.xyz, 0.0);
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
return d.vec4f(1.0);
|
|
26
26
|
});
|
|
27
27
|
export default colorMaskFragment;
|
|
28
28
|
//# sourceMappingURL=colorMaskFragment.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["tgpu","d","std","textureBindGroupLayout","colorMaskBindGroupLayout","colorMaskFragment","fragmentFn","in","uv","vec2f","out","vec4f","input","texcoord","x","y","mask","$","maskedColor","baseColor","rgbToleranceRange","color","textureSample","texture","sampler","maskedColorLower","sub","lower","maskedColorUpper","add","upper","upperCheck","all","le","xyz","lowerCheck","ge"
|
|
1
|
+
{"version":3,"names":["tgpu","d","std","textureBindGroupLayout","colorMaskBindGroupLayout","colorMaskFragment","fragmentFn","in","uv","vec2f","out","vec4f","input","texcoord","x","y","mask","$","maskedColor","baseColor","rgbToleranceRange","color","textureSample","texture","sampler","maskedColorLower","sub","lower","maskedColorUpper","add","upper","upperCheck","all","le","xyz","lowerCheck","ge"],"sourceRoot":"../../../../src","sources":["shaders/fragmentShaders/colorMaskFragment.ts"],"mappings":";;AAAA,OAAOA,IAAI,MAAM,SAAS;AAC1B,OAAO,KAAKC,CAAC,MAAM,cAAc;AACjC,OAAO,KAAKC,GAAG,MAAM,aAAa;AAClC,SACEC,sBAAsB,EACtBC,wBAAwB,QACnB,wBAAqB;AAE5B,MAAMC,iBAAiB,GAAGL,IAAI,CAAC,WAAW,CAAC,CAACM,UAAU,CAAC;EACrDC,EAAE,EAAE;IAAEC,EAAE,EAAEP,CAAC,CAACQ;EAAM,CAAC;EACnBC,GAAG,EAAET,CAAC,CAACU;AACT,CAAC,CAAC,CAAEC,KAAK,IAAK;EACZ,MAAMC,QAAQ,GAAGZ,CAAC,CAACQ,KAAK,CAACG,KAAK,CAACJ,EAAE,CAACM,CAAC,EAAE,GAAG,GAAGF,KAAK,CAACJ,EAAE,CAACO,CAAC,CAAC;EAEtD,MAAMC,IAAI,GAAGZ,wBAAwB,CAACa,CAAC,CAACD,IAAI;EAC5C,MAAME,WAAW,GAAGF,IAAI,CAACG,SAAS;EAClC,MAAMC,iBAAiB,GAAGJ,IAAI,CAACI,iBAAiB;EAEhD,IAAIC,KAAK,GAAGnB,GAAG,CAACoB,aAAa,CAC3BnB,sBAAsB,CAACc,CAAC,CAACM,OAAO,EAChCpB,sBAAsB,CAACc,CAAC,CAACO,OAAO,EAChCX,QACF,CAAC;EAED,MAAMY,gBAAgB,GAAGvB,GAAG,CAACwB,GAAG,CAACR,WAAW,EAAEE,iBAAiB,CAACO,KAAK,CAAC;EACtE,MAAMC,gBAAgB,GAAG1B,GAAG,CAAC2B,GAAG,CAACX,WAAW,EAAEE,iBAAiB,CAACU,KAAK,CAAC;EACtE,MAAMC,UAAU,GAAG7B,GAAG,CAAC8B,GAAG,CAAC9B,GAAG,CAAC+B,EAAE,CAACZ,KAAK,CAACa,GAAG,EAAEN,gBAAgB,CAAC,CAAC;EAC/D,MAAMO,UAAU,GAAGjC,GAAG,CAAC8B,GAAG,CAAC9B,GAAG,CAACkC,EAAE,CAACf,KAAK,CAACa,GAAG,EAAET,gBAAgB,CAAC,CAAC;EAC/D,IAAIM,UAAU,IAAII,UAAU,EAAE;IAC5B,OAAOlC,CAAC,CAACU,KAAK,CAACU,KAAK,CAACa,GAAG,EAAE,GAAG,CAAC;EAChC;EACA,OAAOjC,CAAC,CAACU,KAAK,CAAC,GAAG,CAAC;AACrB,CAAC,CAAC;AAEF,eAAeN,iBAAiB","ignoreList":[]}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import tgpu from 'typegpu';
|
|
4
|
+
import * as d from 'typegpu/data';
|
|
5
|
+
import * as std from 'typegpu/std';
|
|
6
|
+
import { rotationBindGroupLayout, textureBindGroupLayout, glareBindGroupLayout
|
|
7
|
+
// colorMaskBindGroupLayout,
|
|
8
|
+
} from "../bindGroupLayouts.js";
|
|
9
|
+
import { glareColorShift, hueShift, overlayChannels } from "../tgpuUtils.js";
|
|
10
|
+
export const glareFragment = tgpu['~unstable'].fragmentFn({
|
|
11
|
+
in: {
|
|
12
|
+
uv: d.vec2f
|
|
13
|
+
},
|
|
14
|
+
out: d.vec4f
|
|
15
|
+
})(input => {
|
|
16
|
+
const texcoord = d.vec2f(input.uv.x, 1.0 - input.uv.y);
|
|
17
|
+
const uv = d.vec2f(input.uv.x, 1.0 - input.uv.y);
|
|
18
|
+
const centeredCoords = std.sub(std.mul(uv, 2.0), 1); //-1 to 1
|
|
19
|
+
|
|
20
|
+
const rot = rotationBindGroupLayout.$.vec;
|
|
21
|
+
const center = std.add(d.vec2f(0.0), d.vec2f(rot.x, rot.y));
|
|
22
|
+
const glareOptions = glareBindGroupLayout.$.glareOptions;
|
|
23
|
+
const glareIntensity = glareOptions.glareIntensity;
|
|
24
|
+
const glowPower = glareOptions.glowPower;
|
|
25
|
+
const hueBlendPower = glareOptions.hueBlendPower;
|
|
26
|
+
const hueShiftAngleMax = glareOptions.hueShiftAngleMax;
|
|
27
|
+
const hueShiftAngleMin = glareOptions.hueShiftAngleMin;
|
|
28
|
+
const lightIntensity = glareOptions.lightIntensity;
|
|
29
|
+
|
|
30
|
+
// const mask = colorMaskBindGroupLayout.$.mask;
|
|
31
|
+
// const maskedColor = mask.baseColor;
|
|
32
|
+
// const rgbToleranceRange = mask.rgbToleranceRange;
|
|
33
|
+
|
|
34
|
+
let color = std.textureSample(textureBindGroupLayout.$.texture, textureBindGroupLayout.$.sampler, texcoord);
|
|
35
|
+
|
|
36
|
+
// const maskedColorLower = std.sub(maskedColor, rgbToleranceRange.lower);
|
|
37
|
+
// const maskedColorUpper = std.add(maskedColor, rgbToleranceRange.upper);
|
|
38
|
+
// const upperCheck = std.all(std.le(color.xyz, maskedColorUpper));
|
|
39
|
+
// const lowerCheck = std.all(std.ge(color.xyz, maskedColorLower));
|
|
40
|
+
// if (upperCheck && lowerCheck) {
|
|
41
|
+
// return color;
|
|
42
|
+
// }
|
|
43
|
+
|
|
44
|
+
//glareIntensity
|
|
45
|
+
const dst = std.exp(-std.distance(center, centeredCoords));
|
|
46
|
+
const distToCenter = std.smoothstep(0.0, 1 / glareIntensity, dst);
|
|
47
|
+
|
|
48
|
+
//glowPower
|
|
49
|
+
let glow = d.vec3f(distToCenter);
|
|
50
|
+
glow = std.mul(glow, glowPower * color.w);
|
|
51
|
+
|
|
52
|
+
//hueBlend
|
|
53
|
+
const hueBlend = d.f32(hueBlendPower) * dst / 10.0;
|
|
54
|
+
|
|
55
|
+
//lightIntensity
|
|
56
|
+
glow = std.add(glow, lightIntensity / 10.0);
|
|
57
|
+
let shiftedRGB = glareColorShift(color.xyz, dst / (lightIntensity * 2));
|
|
58
|
+
|
|
59
|
+
//hueShiftAngleMin/Max
|
|
60
|
+
const hueShiftAngle = std.smoothstep(hueShiftAngleMin, hueShiftAngleMax, distToCenter);
|
|
61
|
+
const shiftedHue = hueShift(shiftedRGB, hueShiftAngle);
|
|
62
|
+
shiftedRGB = overlayChannels(shiftedRGB, shiftedHue);
|
|
63
|
+
color = d.vec4f(std.mix(color.xyz, shiftedRGB, hueBlend), color.w);
|
|
64
|
+
const baseColor = color;
|
|
65
|
+
const blendColor = glow;
|
|
66
|
+
const combined = overlayChannels(baseColor.xyz, blendColor);
|
|
67
|
+
color = d.vec4f(std.mix(color.xyz, combined, glow), color.w);
|
|
68
|
+
return color;
|
|
69
|
+
});
|
|
70
|
+
export const newGlareFragment = tgpu['~unstable'].fragmentFn({
|
|
71
|
+
in: {
|
|
72
|
+
uv: d.vec2f
|
|
73
|
+
},
|
|
74
|
+
out: d.vec4f
|
|
75
|
+
})(input => {
|
|
76
|
+
const texcoord = d.vec2f(input.uv.x, 1.0 - input.uv.y);
|
|
77
|
+
const uv = d.vec2f(input.uv.x, 1.0 - input.uv.y);
|
|
78
|
+
const centeredCoords = std.sub(std.mul(uv, 2.0), 1.0);
|
|
79
|
+
const rot = rotationBindGroupLayout.$.vec;
|
|
80
|
+
const center = std.add(d.vec2f(0.0), d.vec2f(rot.x, rot.y)); // do not change
|
|
81
|
+
|
|
82
|
+
const opts = glareBindGroupLayout.$.glareOptions;
|
|
83
|
+
const glareIntensity = opts.glareIntensity; // [0..∞): bigger → wider/stronger area
|
|
84
|
+
const glowPower = opts.glowPower; // (0..∞): curve shaping; bigger → softer/wider glow
|
|
85
|
+
const hueBlendPower = opts.hueBlendPower; // [0..1+]: how much hue-shifted color blends in
|
|
86
|
+
const hueShiftAngleMin = opts.hueShiftAngleMin; // radians
|
|
87
|
+
const hueShiftAngleMax = opts.hueShiftAngleMax; // radians
|
|
88
|
+
const lightIntensity = opts.lightIntensity / 1.3; // [0..∞): brightness boost of the glare/bloom
|
|
89
|
+
|
|
90
|
+
let color = std.textureSample(textureBindGroupLayout.$.texture, textureBindGroupLayout.$.sampler, texcoord);
|
|
91
|
+
const dist = std.distance(center, centeredCoords);
|
|
92
|
+
const radial = std.exp(-dist); // (0,1], steeper near center
|
|
93
|
+
const radialScaled = std.mul(radial, std.add(1.0, std.max(0.0, glareIntensity)));
|
|
94
|
+
const influenceRaw = std.smoothstep(0.0, 1.0, radialScaled); // 0..1
|
|
95
|
+
const curveExp = std.clamp(glowPower, 0.05, 64.0);
|
|
96
|
+
const glowMask = std.pow(influenceRaw, std.div(1.0, curveExp)); // 0..1
|
|
97
|
+
|
|
98
|
+
const maskedGlow = std.mul(glowMask, color.w); // 0..1
|
|
99
|
+
const boostedRGB = glareColorShift(color.xyz, maskedGlow);
|
|
100
|
+
const hueT = std.clamp(maskedGlow, 0.0, 1.0);
|
|
101
|
+
const hueAngle = std.mix(hueShiftAngleMin, hueShiftAngleMax, hueT);
|
|
102
|
+
const hueShifted = hueShift(boostedRGB, hueAngle);
|
|
103
|
+
const hueMixWeight = std.clamp(std.mul(hueBlendPower / 5.0, maskedGlow), 0.0, 1.0);
|
|
104
|
+
const chromaMixed = std.mix(color.xyz, hueShifted, hueMixWeight);
|
|
105
|
+
const glareStrength = std.clamp(lightIntensity, 0.0, 100.0);
|
|
106
|
+
const glareLayer = std.mul(d.vec3f(maskedGlow), glareStrength);
|
|
107
|
+
const overlaidRGB = overlayChannels(chromaMixed, glareLayer);
|
|
108
|
+
const finalRGB = std.mix(chromaMixed, overlaidRGB, d.vec3f(maskedGlow));
|
|
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
|
+
|
|
113
|
+
return d.vec4f(outRGB, color.w);
|
|
114
|
+
});
|
|
115
|
+
//# sourceMappingURL=glareFragment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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":[]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import tgpu from 'typegpu';
|
|
4
|
+
import * as d from 'typegpu/data';
|
|
5
|
+
import * as std from 'typegpu/std';
|
|
6
|
+
import { rotationBindGroupLayout, textureBindGroupLayout } from "../bindGroupLayouts.js";
|
|
7
|
+
import { hueShift } from "../tgpuUtils.js";
|
|
8
|
+
import { waveCallbackSlot } from "../../enums/waveCallback.js";
|
|
9
|
+
export const holoFragment = tgpu['~unstable'].fragmentFn({
|
|
10
|
+
in: {
|
|
11
|
+
uv: d.vec2f
|
|
12
|
+
},
|
|
13
|
+
out: d.vec4f
|
|
14
|
+
})(input => {
|
|
15
|
+
const texcoord = d.vec2f(input.uv.x, 1.0 - input.uv.y);
|
|
16
|
+
const uv = texcoord;
|
|
17
|
+
const textureColor = std.textureSample(textureBindGroupLayout.$.texture, textureBindGroupLayout.$.sampler, texcoord);
|
|
18
|
+
const rot = rotationBindGroupLayout.$.vec;
|
|
19
|
+
const wave = waveCallbackSlot.$(rot.xy);
|
|
20
|
+
const waveX = wave.x;
|
|
21
|
+
const waveY = wave.y;
|
|
22
|
+
const band = std.add(0.2 * waveX * uv.x, 2 * waveY * uv.y);
|
|
23
|
+
const hueAngle = std.mul(std.abs(band), 10 * Math.PI * rot.x / 3);
|
|
24
|
+
const rainbowColor = hueShift(d.vec3f(1.0, 1.0, 1.0), hueAngle);
|
|
25
|
+
const finalColor = std.mul(rainbowColor, 1.0);
|
|
26
|
+
return d.vec4f(finalColor, 0.7 * textureColor.w);
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=holoFragment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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":[]}
|