react-native-shine 0.2.2 → 0.3.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.
Files changed (111) hide show
  1. package/README.md +1 -1
  2. package/lib/module/components/Shine.js +269 -0
  3. package/lib/module/components/Shine.js.map +1 -0
  4. package/lib/module/components/ShineGroup.js +104 -0
  5. package/lib/module/components/ShineGroup.js.map +1 -0
  6. package/lib/module/enums/waveCallback.js +19 -0
  7. package/lib/module/enums/waveCallback.js.map +1 -0
  8. package/lib/module/hooks/useOrientation.js +16 -0
  9. package/lib/module/hooks/useOrientation.js.map +1 -0
  10. package/lib/module/index.js +5 -219
  11. package/lib/module/index.js.map +1 -1
  12. package/lib/module/shaders/bindGroupLayouts.js +40 -5
  13. package/lib/module/shaders/bindGroupLayouts.js.map +1 -1
  14. package/lib/module/shaders/bindGroupUtils.js +27 -12
  15. package/lib/module/shaders/bindGroupUtils.js.map +1 -1
  16. package/lib/module/shaders/fragmentShaders/colorMaskFragment.js +2 -2
  17. package/lib/module/shaders/fragmentShaders/colorMaskFragment.js.map +1 -1
  18. package/lib/module/shaders/fragmentShaders/glareFragment.js +114 -0
  19. package/lib/module/shaders/fragmentShaders/glareFragment.js.map +1 -0
  20. package/lib/module/shaders/fragmentShaders/holoFragment.js +33 -0
  21. package/lib/module/shaders/fragmentShaders/holoFragment.js.map +1 -0
  22. package/lib/module/shaders/fragmentShaders/maskFragment.js +20 -0
  23. package/lib/module/shaders/fragmentShaders/maskFragment.js.map +1 -0
  24. package/lib/module/shaders/fragmentShaders/reverseHoloFragment.js +46 -0
  25. package/lib/module/shaders/fragmentShaders/reverseHoloFragment.js.map +1 -0
  26. package/lib/module/shaders/pipelineSetups.js +82 -13
  27. package/lib/module/shaders/pipelineSetups.js.map +1 -1
  28. package/lib/module/shaders/{resourceManagement.js → resourceManagement/bitmaps.js} +2 -1
  29. package/lib/module/shaders/resourceManagement/bitmaps.js.map +1 -0
  30. package/lib/module/shaders/resourceManagement/bufferManager.js +46 -0
  31. package/lib/module/shaders/resourceManagement/bufferManager.js.map +1 -0
  32. package/lib/module/shaders/resourceManagement/textures.js +17 -0
  33. package/lib/module/shaders/resourceManagement/textures.js.map +1 -0
  34. package/lib/module/shaders/tgpuUtils.js +19 -1
  35. package/lib/module/shaders/tgpuUtils.js.map +1 -1
  36. package/lib/module/shaders/utils.js +0 -14
  37. package/lib/module/shaders/utils.js.map +1 -1
  38. package/lib/module/shaders/vertexShaders/mainRotationEffectVertex.js +47 -0
  39. package/lib/module/shaders/vertexShaders/mainRotationEffectVertex.js.map +1 -0
  40. package/lib/module/types/typeUtils.js +17 -5
  41. package/lib/module/types/typeUtils.js.map +1 -1
  42. package/lib/typescript/src/components/Shine.d.ts +17 -0
  43. package/lib/typescript/src/components/Shine.d.ts.map +1 -0
  44. package/lib/typescript/src/components/ShineGroup.d.ts +8 -0
  45. package/lib/typescript/src/components/ShineGroup.d.ts.map +1 -0
  46. package/lib/typescript/src/enums/waveCallback.d.ts +9 -0
  47. package/lib/typescript/src/enums/waveCallback.d.ts.map +1 -0
  48. package/lib/typescript/src/hooks/useOrientation.d.ts +2 -0
  49. package/lib/typescript/src/hooks/useOrientation.d.ts.map +1 -0
  50. package/lib/typescript/src/index.d.ts +6 -11
  51. package/lib/typescript/src/index.d.ts.map +1 -1
  52. package/lib/typescript/src/shaders/bindGroupLayouts.d.ts +44 -6
  53. package/lib/typescript/src/shaders/bindGroupLayouts.d.ts.map +1 -1
  54. package/lib/typescript/src/shaders/bindGroupUtils.d.ts +8 -8
  55. package/lib/typescript/src/shaders/bindGroupUtils.d.ts.map +1 -1
  56. package/lib/typescript/src/shaders/fragmentShaders/glareFragment.d.ts +8 -0
  57. package/lib/typescript/src/shaders/fragmentShaders/glareFragment.d.ts.map +1 -0
  58. package/lib/typescript/src/shaders/fragmentShaders/holoFragment.d.ts +5 -0
  59. package/lib/typescript/src/shaders/fragmentShaders/holoFragment.d.ts.map +1 -0
  60. package/lib/typescript/src/shaders/fragmentShaders/maskFragment.d.ts +6 -0
  61. package/lib/typescript/src/shaders/fragmentShaders/maskFragment.d.ts.map +1 -0
  62. package/lib/typescript/src/shaders/fragmentShaders/reverseHoloFragment.d.ts +5 -0
  63. package/lib/typescript/src/shaders/fragmentShaders/reverseHoloFragment.d.ts.map +1 -0
  64. package/lib/typescript/src/shaders/pipelineSetups.d.ts +9 -4
  65. package/lib/typescript/src/shaders/pipelineSetups.d.ts.map +1 -1
  66. package/lib/typescript/src/shaders/{resourceManagement.d.ts → resourceManagement/bitmaps.d.ts} +1 -1
  67. package/lib/typescript/src/shaders/resourceManagement/bitmaps.d.ts.map +1 -0
  68. package/lib/typescript/src/shaders/resourceManagement/bufferManager.d.ts +28 -0
  69. package/lib/typescript/src/shaders/resourceManagement/bufferManager.d.ts.map +1 -0
  70. package/lib/typescript/src/shaders/resourceManagement/textures.d.ts +7 -0
  71. package/lib/typescript/src/shaders/resourceManagement/textures.d.ts.map +1 -0
  72. package/lib/typescript/src/shaders/tgpuUtils.d.ts +5 -1
  73. package/lib/typescript/src/shaders/tgpuUtils.d.ts.map +1 -1
  74. package/lib/typescript/src/shaders/utils.d.ts +1 -7
  75. package/lib/typescript/src/shaders/utils.d.ts.map +1 -1
  76. package/lib/typescript/src/shaders/vertexShaders/mainRotationEffectVertex.d.ts +6 -0
  77. package/lib/typescript/src/shaders/vertexShaders/mainRotationEffectVertex.d.ts.map +1 -0
  78. package/lib/typescript/src/types/typeUtils.d.ts +3 -2
  79. package/lib/typescript/src/types/typeUtils.d.ts.map +1 -1
  80. package/lib/typescript/src/types/types.d.ts +7 -2
  81. package/lib/typescript/src/types/types.d.ts.map +1 -1
  82. package/package.json +4 -3
  83. package/scripts/postinstall.js +16 -17
  84. package/src/components/Shine.tsx +480 -0
  85. package/src/components/ShineGroup.tsx +107 -0
  86. package/src/enums/waveCallback.ts +22 -0
  87. package/src/hooks/useOrientation.ts +20 -0
  88. package/src/index.tsx +6 -322
  89. package/src/shaders/bindGroupLayouts.ts +43 -6
  90. package/src/shaders/bindGroupUtils.ts +34 -19
  91. package/src/shaders/fragmentShaders/colorMaskFragment.ts +2 -2
  92. package/src/shaders/fragmentShaders/glareFragment.ts +142 -0
  93. package/src/shaders/fragmentShaders/holoFragment.ts +43 -0
  94. package/src/shaders/fragmentShaders/maskFragment.ts +31 -0
  95. package/src/shaders/fragmentShaders/reverseHoloFragment.ts +71 -0
  96. package/src/shaders/pipelineSetups.ts +161 -14
  97. package/src/shaders/{resourceManagement.ts → resourceManagement/bitmaps.ts} +1 -0
  98. package/src/shaders/resourceManagement/bufferManager.ts +82 -0
  99. package/src/shaders/resourceManagement/textures.ts +30 -0
  100. package/src/shaders/tgpuUtils.ts +36 -1
  101. package/src/shaders/utils.ts +0 -30
  102. package/src/shaders/vertexShaders/mainRotationEffectVertex.ts +76 -0
  103. package/src/types/typeUtils.ts +22 -8
  104. package/src/types/types.ts +8 -2
  105. package/lib/module/shaders/fragmentShaders/bloomFragment.js +0 -66
  106. package/lib/module/shaders/fragmentShaders/bloomFragment.js.map +0 -1
  107. package/lib/module/shaders/resourceManagement.js.map +0 -1
  108. package/lib/typescript/src/shaders/fragmentShaders/bloomFragment.d.ts +0 -6
  109. package/lib/typescript/src/shaders/fragmentShaders/bloomFragment.d.ts.map +0 -1
  110. package/lib/typescript/src/shaders/resourceManagement.d.ts.map +0 -1
  111. package/src/shaders/fragmentShaders/bloomFragment.ts +0 -83
@@ -1,222 +1,8 @@
1
1
  "use strict";
2
2
 
3
- import { useEffect, useRef, useState } from 'react';
4
- import { Canvas, useDevice, useGPUContext } from 'react-native-wgpu';
5
- import { getOrInitRoot } from "./roots.js";
6
- import mainVertex from "./shaders/vertexShaders/mainVertex.js";
7
- import getBitmapFromURI from "./shaders/resourceManagement.js";
8
- import { createTexture, loadTexture, clamp, rotate2D, subscribeToOrientationChange, getAngleFromDimensions } from "./shaders/utils.js";
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, subscribeToOrientationChange } from "./shaders/utils.js";
5
+ export { subscribeToOrientationChange, getAngleFromDimensions, useOrientation };
6
+ export { Shine } from "./components/Shine.js";
7
+ export { ShineGroup } from "./components/ShineGroup.js";
222
8
  //# sourceMappingURL=index.js.map
@@ -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","subscribeToOrientationChange","Shine","ShineGroup"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,cAAc,QAAQ,2BAAwB;AACvD,SACEC,sBAAsB,EACtBC,4BAA4B,QACvB,oBAAiB;AAExB,SAASA,4BAA4B,EAAED,sBAAsB,EAAED,cAAc;AAC7E,SAASG,KAAK,QAAQ,uBAAoB;AAC1C,SAASC,UAAU,QAAQ,4BAAyB","ignoreList":[]}
@@ -12,22 +12,32 @@ export const textureBindGroupLayout = tgpu.bindGroupLayout({
12
12
  sampler: 'filtering'
13
13
  }
14
14
  });
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
+ });
15
25
  export const rotationValuesBindGroupLayout = tgpu.bindGroupLayout({
16
26
  vec: {
17
27
  uniform: d.vec3f
18
28
  }
19
29
  });
20
- export const bloomOptionsSchema = d.struct({
30
+ export const glareOptionsSchema = 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
- bloomIntensity: d.f32
36
+ glareIntensity: d.f32
27
37
  });
28
- export const bloomOptionsBindGroupLayout = tgpu.bindGroupLayout({
29
- bloomOptions: {
30
- uniform: bloomOptionsSchema
38
+ export const glareOptionsBindGroupLayout = tgpu.bindGroupLayout({
39
+ glareOptions: {
40
+ uniform: glareOptionsSchema
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
+ rotationBuffer: {
57
+ schema: d.vec3f,
58
+ usage: 'uniform'
59
+ },
60
+ glareBuffer: {
61
+ schema: glareOptionsSchema,
62
+ usage: 'uniform'
63
+ },
64
+ colorMaskBuffer: {
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","rotationValuesBindGroupLayout","vec","uniform","vec3f","bloomOptionsSchema","struct","glowPower","f32","hueShiftAngleMax","hueShiftAngleMin","hueBlendPower","lightIntensity","bloomIntensity","bloomOptionsBindGroupLayout","bloomOptions","colorMaskSchema","baseColor","rgbToleranceRange","upper","lower","colorMaskBindGroupLayout","mask"],"sourceRoot":"../../../src","sources":["shaders/bindGroupLayouts.ts"],"mappings":";;AAAA,OAAOA,IAAI,MAAM,SAAS;AAC1B,OAAO,KAAKC,CAAC,MAAM,cAAc;AAEjC,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,6BAA6B,GAAGR,IAAI,CAACG,eAAe,CAAC;EAChEM,GAAG,EAAE;IAAEC,OAAO,EAAET,CAAC,CAACU;EAAM;AAC1B,CAAC,CAAC;AAEF,OAAO,MAAMC,kBAAkB,GAAGX,CAAC,CAACY,MAAM,CAAC;EACzCC,SAAS,EAAEb,CAAC,CAACc,GAAG;EAChBC,gBAAgB,EAAEf,CAAC,CAACc,GAAG;EACvBE,gBAAgB,EAAEhB,CAAC,CAACc,GAAG;EACvBG,aAAa,EAAEjB,CAAC,CAACc,GAAG;EACpBI,cAAc,EAAElB,CAAC,CAACc,GAAG;EACrBK,cAAc,EAAEnB,CAAC,CAACc;AACpB,CAAC,CAAC;AAIF,OAAO,MAAMM,2BAA2B,GAAGrB,IAAI,CAACG,eAAe,CAAC;EAC9DmB,YAAY,EAAE;IAAEZ,OAAO,EAAEE;EAAmB;AAC9C,CAAC,CAAC;AAEF,OAAO,MAAMW,eAAe,GAAGtB,CAAC,CAACY,MAAM,CAAC;EACtCW,SAAS,EAAEvB,CAAC,CAACU,KAAK;EAClBc,iBAAiB,EAAExB,CAAC,CAACY,MAAM,CAAC;IAC1Ba,KAAK,EAAEzB,CAAC,CAACU,KAAK;IACdgB,KAAK,EAAE1B,CAAC,CAACU;EACX,CAAC;AACH,CAAC,CAAC;AAIF,OAAO,MAAMiB,wBAAwB,GAAG5B,IAAI,CAACG,eAAe,CAAC;EAC3D0B,IAAI,EAAE;IAAEnB,OAAO,EAAEa;EAAgB;AACnC,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["tgpu","d","textureBindGroupLayout","bindGroupLayout","texture","dimension","sampleType","sampler","maskTextureBindGroupLayout","rotationValuesBindGroupLayout","vec","uniform","vec3f","glareOptionsSchema","struct","glowPower","f32","hueShiftAngleMax","hueShiftAngleMin","hueBlendPower","lightIntensity","glareIntensity","glareOptionsBindGroupLayout","glareOptions","colorMaskSchema","baseColor","rgbToleranceRange","upper","lower","colorMaskBindGroupLayout","mask","bufferData","rotationBuffer","schema","usage","glareBuffer","colorMaskBuffer"],"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,6BAA6B,GAAGT,IAAI,CAACG,eAAe,CAAC;EAChEO,GAAG,EAAE;IAAEC,OAAO,EAAEV,CAAC,CAACW;EAAM;AAC1B,CAAC,CAAC;AAEF,OAAO,MAAMC,kBAAkB,GAAGZ,CAAC,CAACa,MAAM,CAAC;EACzCC,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,2BAA2B,GAAGtB,IAAI,CAACG,eAAe,CAAC;EAC9DoB,YAAY,EAAE;IAAEZ,OAAO,EAAEE;EAAmB;AAC9C,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,cAAc,EAAE;IACdC,MAAM,EAAEhC,CAAC,CAACW,KAAK;IACfsB,KAAK,EAAE;EACT,CAAC;EACDC,WAAW,EAAE;IACXF,MAAM,EAAEpB,kBAAkB;IAC1BqB,KAAK,EAAE;EACT,CAAC;EACDE,eAAe,EAAE;IACfH,MAAM,EAAET,eAAe;IACvBU,KAAK,EAAE;EACT;AACF,CAGC;;AAID;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA","ignoreList":[]}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  import * as d from 'typegpu/data';
4
- import { bloomOptionsBindGroupLayout, bloomOptionsSchema, colorMaskBindGroupLayout, colorMaskSchema, rotationValuesBindGroupLayout } from "./bindGroupLayouts.js";
5
- import { colorMaskToTyped, createBloomOptions, createColorMask, mapToF32 } from "../types/typeUtils.js";
4
+ import { glareOptionsBindGroupLayout, glareOptionsSchema, colorMaskBindGroupLayout, colorMaskSchema, rotationValuesBindGroupLayout } from "./bindGroupLayouts.js";
5
+ import { colorMaskToTyped, createGlareOptions, createColorMask, mapToF32 } from "../types/typeUtils.js";
6
6
  export const createRotationBuffer = (root, initValues) => {
7
7
  const init = initValues ? d.vec3f(initValues.x, initValues.y, initValues.z) : d.vec3f(0.0);
8
8
  const rotationValuesBuffer = root.createBuffer(d.vec3f, init).$usage('uniform');
@@ -10,23 +10,23 @@ export const createRotationBuffer = (root, initValues) => {
10
10
  };
11
11
  export const createRotationValuesBindGroup = (root, buffer) => {
12
12
  const rotationValuesBindGroup = root.createBindGroup(rotationValuesBindGroupLayout, {
13
- vec: buffer
13
+ vec: root.unwrap(buffer)
14
14
  });
15
15
  return rotationValuesBindGroup;
16
16
  };
17
- export const createBloomOptionsBuffer = (root, initValues) => {
18
- const bloomOptions = createBloomOptions({
17
+ export const createGlareOptionsBuffer = (root, initValues) => {
18
+ const glareOptions = createGlareOptions({
19
19
  ...initValues
20
20
  });
21
- const bloomOptionsTyped = mapToF32(bloomOptions);
22
- const bloomOptionsBuffer = root.createBuffer(bloomOptionsSchema, bloomOptionsTyped).$usage('uniform');
23
- return bloomOptionsBuffer;
21
+ const glareOptionsTyped = mapToF32(glareOptions);
22
+ const glareOptionsBuffer = root.createBuffer(glareOptionsSchema, glareOptionsTyped).$usage('uniform');
23
+ return glareOptionsBuffer;
24
24
  };
25
- export const createBloomOptionsBindGroup = (root, buffer) => {
26
- const bloomOptionsBindGroup = root.createBindGroup(bloomOptionsBindGroupLayout, {
27
- bloomOptions: buffer
25
+ export const createGlareOptionsBindGroup = (root, buffer) => {
26
+ const glareOptionsBindGroup = root.createBindGroup(glareOptionsBindGroupLayout, {
27
+ glareOptions: buffer
28
28
  });
29
- return bloomOptionsBindGroup;
29
+ return glareOptionsBindGroup;
30
30
  };
31
31
  export const createColorMaskBuffer = (root, initValues) => {
32
32
  const colorMask = createColorMask({
@@ -42,4 +42,19 @@ export const createColorMaskBindGroup = (root, buffer) => {
42
42
  });
43
43
  return colorMaskBindGroup;
44
44
  };
45
+
46
+ // export const crateHoloBuffer = (
47
+ // root: TgpuRoot,
48
+ // initValues: Partial<HoloOptions>
49
+ // ) => {
50
+ // const holoOptions: HoloOptions = createHoloOptions({ ...initValues });
51
+ // const holoOptionsTyped = {
52
+ // intensity: d.f32(holoOptions.intensity),
53
+ // waveCallback: holoOptions.waveCallback,
54
+ // };
55
+
56
+ // const holoBuffer = root
57
+ // .createBuffer(holoSchema, holoOptionsTyped)
58
+ // .$usage('uniform');
59
+ // };
45
60
  //# sourceMappingURL=bindGroupUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["d","bloomOptionsBindGroupLayout","bloomOptionsSchema","colorMaskBindGroupLayout","colorMaskSchema","rotationValuesBindGroupLayout","colorMaskToTyped","createBloomOptions","createColorMask","mapToF32","createRotationBuffer","root","initValues","init","vec3f","x","y","z","rotationValuesBuffer","createBuffer","$usage","createRotationValuesBindGroup","buffer","rotationValuesBindGroup","createBindGroup","vec","createBloomOptionsBuffer","bloomOptions","bloomOptionsTyped","bloomOptionsBuffer","createBloomOptionsBindGroup","bloomOptionsBindGroup","createColorMaskBuffer","colorMask","colorMaskTyped","colorMaskBuffer","createColorMaskBindGroup","colorMaskBindGroup","mask"],"sourceRoot":"../../../src","sources":["shaders/bindGroupUtils.ts"],"mappings":";;AACA,OAAO,KAAKA,CAAC,MAAM,cAAc;AACjC,SACEC,2BAA2B,EAC3BC,kBAAkB,EAClBC,wBAAwB,EACxBC,eAAe,EACfC,6BAA6B,QACxB,uBAAoB;AAM3B,SACEC,gBAAgB,EAChBC,kBAAkB,EAClBC,eAAe,EACfC,QAAQ,QACH,uBAAoB;AAE3B,OAAO,MAAMC,oBAAoB,GAAGA,CAClCC,IAAc,EACdC,UAAgD,KAC7C;EACH,MAAMC,IAAI,GAAGD,UAAU,GACnBZ,CAAC,CAACc,KAAK,CAACF,UAAU,CAACG,CAAC,EAAEH,UAAU,CAACI,CAAC,EAAEJ,UAAU,CAACK,CAAC,CAAC,GACjDjB,CAAC,CAACc,KAAK,CAAC,GAAG,CAAC;EAChB,MAAMI,oBAAoB,GAAGP,IAAI,CAC9BQ,YAAY,CAACnB,CAAC,CAACc,KAAK,EAAED,IAAI,CAAC,CAC3BO,MAAM,CAAC,SAAS,CAAC;EAEpB,OAAOF,oBAAoB;AAC7B,CAAC;AAED,OAAO,MAAMG,6BAA6B,GAAGA,CAC3CV,IAAc,EACdW,MAAyC,KACtC;EACH,MAAMC,uBAAuB,GAAGZ,IAAI,CAACa,eAAe,CAClDnB,6BAA6B,EAC7B;IACEoB,GAAG,EAAEH;EACP,CACF,CAAC;EAED,OAAOC,uBAAuB;AAChC,CAAC;AAED,OAAO,MAAMG,wBAAwB,GAAGA,CACtCf,IAAc,EACdC,UAAkC,KAC/B;EACH,MAAMe,YAA0B,GAAGpB,kBAAkB,CAAC;IAAE,GAAGK;EAAW,CAAC,CAAC;EACxE,MAAMgB,iBAAiB,GAAGnB,QAAQ,CAACkB,YAAY,CAAC;EAEhD,MAAME,kBAAkB,GAAGlB,IAAI,CAC5BQ,YAAY,CAACjB,kBAAkB,EAAE0B,iBAAiB,CAAC,CACnDR,MAAM,CAAC,SAAS,CAAC;EAEpB,OAAOS,kBAAkB;AAC3B,CAAC;AAED,OAAO,MAAMC,2BAA2B,GAAGA,CACzCnB,IAAc,EACdW,MAAoD,KACjD;EACH,MAAMS,qBAAqB,GAAGpB,IAAI,CAACa,eAAe,CAChDvB,2BAA2B,EAC3B;IACE0B,YAAY,EAAEL;EAChB,CACF,CAAC;EAED,OAAOS,qBAAqB;AAC9B,CAAC;AAED,OAAO,MAAMC,qBAAqB,GAAGA,CACnCrB,IAAc,EACdC,UAAqD,KAClD;EACH,MAAMqB,SAAoB,GAAGzB,eAAe,CAAC;IAAE,GAAGI;EAAW,CAAC,CAAC;EAC/D,MAAMsB,cAAc,GAAG5B,gBAAgB,CAAC2B,SAAS,CAAC;EAElD,MAAME,eAAe,GAAGxB,IAAI,CACzBQ,YAAY,CAACf,eAAe,EAAE8B,cAAc,CAAC,CAC7Cd,MAAM,CAAC,SAAS,CAAC;EAEpB,OAAOe,eAAe;AACxB,CAAC;AAED,OAAO,MAAMC,wBAAwB,GAAGA,CACtCzB,IAAc,EACdW,MAAiD,KAC9C;EACH,MAAMe,kBAAkB,GAAG1B,IAAI,CAACa,eAAe,CAACrB,wBAAwB,EAAE;IACxEmC,IAAI,EAAEhB;EACR,CAAC,CAAC;EAEF,OAAOe,kBAAkB;AAC3B,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["d","glareOptionsBindGroupLayout","glareOptionsSchema","colorMaskBindGroupLayout","colorMaskSchema","rotationValuesBindGroupLayout","colorMaskToTyped","createGlareOptions","createColorMask","mapToF32","createRotationBuffer","root","initValues","init","vec3f","x","y","z","rotationValuesBuffer","createBuffer","$usage","createRotationValuesBindGroup","buffer","rotationValuesBindGroup","createBindGroup","vec","unwrap","createGlareOptionsBuffer","glareOptions","glareOptionsTyped","glareOptionsBuffer","createGlareOptionsBindGroup","glareOptionsBindGroup","createColorMaskBuffer","colorMask","colorMaskTyped","colorMaskBuffer","createColorMaskBindGroup","colorMaskBindGroup","mask"],"sourceRoot":"../../../src","sources":["shaders/bindGroupUtils.ts"],"mappings":";;AACA,OAAO,KAAKA,CAAC,MAAM,cAAc;AACjC,SACEC,2BAA2B,EAC3BC,kBAAkB,EAClBC,wBAAwB,EACxBC,eAAe,EACfC,6BAA6B,QACxB,uBAAoB;AAM3B,SACEC,gBAAgB,EAChBC,kBAAkB,EAClBC,eAAe,EACfC,QAAQ,QACH,uBAAoB;AAE3B,OAAO,MAAMC,oBAAoB,GAAGA,CAClCC,IAAc,EACdC,UAAgD,KAC7C;EACH,MAAMC,IAAI,GAAGD,UAAU,GACnBZ,CAAC,CAACc,KAAK,CAACF,UAAU,CAACG,CAAC,EAAEH,UAAU,CAACI,CAAC,EAAEJ,UAAU,CAACK,CAAC,CAAC,GACjDjB,CAAC,CAACc,KAAK,CAAC,GAAG,CAAC;EAChB,MAAMI,oBAAoB,GAAGP,IAAI,CAC9BQ,YAAY,CAACnB,CAAC,CAACc,KAAK,EAAED,IAAI,CAAC,CAC3BO,MAAM,CAAC,SAAS,CAAC;EAEpB,OAAOF,oBAAoB;AAC7B,CAAC;AAED,OAAO,MAAMG,6BAA6B,GAAGA,CAC3CV,IAAc,EACdW,MAA2B,KACxB;EACH,MAAMC,uBAAuB,GAAGZ,IAAI,CAACa,eAAe,CAClDnB,6BAA6B,EAC7B;IACEoB,GAAG,EAAEd,IAAI,CAACe,MAAM,CAACJ,MAAM;EACzB,CACF,CAAC;EAED,OAAOC,uBAAuB;AAChC,CAAC;AAED,OAAO,MAAMI,wBAAwB,GAAGA,CACtChB,IAAc,EACdC,UAAkC,KAC/B;EACH,MAAMgB,YAA0B,GAAGrB,kBAAkB,CAAC;IAAE,GAAGK;EAAW,CAAC,CAAC;EACxE,MAAMiB,iBAAiB,GAAGpB,QAAQ,CAACmB,YAAY,CAAC;EAEhD,MAAME,kBAAkB,GAAGnB,IAAI,CAC5BQ,YAAY,CAACjB,kBAAkB,EAAE2B,iBAAiB,CAAC,CACnDT,MAAM,CAAC,SAAS,CAAC;EAEpB,OAAOU,kBAAkB;AAC3B,CAAC;AAED,OAAO,MAAMC,2BAA2B,GAAGA,CACzCpB,IAAc,EACdW,MAAoD,KACjD;EACH,MAAMU,qBAAqB,GAAGrB,IAAI,CAACa,eAAe,CAChDvB,2BAA2B,EAC3B;IACE2B,YAAY,EAAEN;EAChB,CACF,CAAC;EAED,OAAOU,qBAAqB;AAC9B,CAAC;AAED,OAAO,MAAMC,qBAAqB,GAAGA,CACnCtB,IAAc,EACdC,UAAqD,KAClD;EACH,MAAMsB,SAAoB,GAAG1B,eAAe,CAAC;IAAE,GAAGI;EAAW,CAAC,CAAC;EAC/D,MAAMuB,cAAc,GAAG7B,gBAAgB,CAAC4B,SAAS,CAAC;EAElD,MAAME,eAAe,GAAGzB,IAAI,CACzBQ,YAAY,CAACf,eAAe,EAAE+B,cAAc,CAAC,CAC7Cf,MAAM,CAAC,SAAS,CAAC;EAEpB,OAAOgB,eAAe;AACxB,CAAC;AAED,OAAO,MAAMC,wBAAwB,GAAGA,CACtC1B,IAAc,EACdW,MAAiD,KAC9C;EACH,MAAMgB,kBAAkB,GAAG3B,IAAI,CAACa,eAAe,CAACrB,wBAAwB,EAAE;IACxEoC,IAAI,EAAEjB;EACR,CAAC,CAAC;EAEF,OAAOgB,kBAAkB;AAC3B,CAAC;;AAED;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
- std.discard();
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","discard"],"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,OAAOd,KAAK;EACd;EACAnB,GAAG,CAACmC,OAAO,CAAC,CAAC;AACf,CAAC,CAAC;AAEF,eAAehC,iBAAiB","ignoreList":[]}
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,114 @@
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 { rotationValuesBindGroupLayout, textureBindGroupLayout, glareOptionsBindGroupLayout
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 = rotationValuesBindGroupLayout.$.vec;
21
+ const center = std.add(d.vec2f(0.0), d.vec2f(rot.x, rot.y));
22
+ const glareOptions = glareOptionsBindGroupLayout.$.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 = rotationValuesBindGroupLayout.$.vec;
80
+ const center = std.add(d.vec2f(0.0), d.vec2f(rot.x, rot.y)); // do not change
81
+
82
+ const opts = glareOptionsBindGroupLayout.$.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
+
110
+ // Optional mild safety clamp to avoid NaNs/overflow artifacts.
111
+ const outRGB = std.clamp(finalRGB, d.vec3f(0.0), d.vec3f(1.0));
112
+ return d.vec4f(outRGB, color.w);
113
+ });
114
+ //# sourceMappingURL=glareFragment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["tgpu","d","std","rotationValuesBindGroupLayout","textureBindGroupLayout","glareOptionsBindGroupLayout","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,33 @@
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 { rotationValuesBindGroupLayout, 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 centeredCoords = std.sub(std.mul(uv, 2.0), 1.0);
18
+ const textureColor = std.textureSample(textureBindGroupLayout.$.texture, textureBindGroupLayout.$.sampler, texcoord);
19
+ const rot = rotationValuesBindGroupLayout.$.vec;
20
+ const center = std.add(d.vec2f(0.0), d.vec2f(rot.x, rot.y));
21
+ const wave = waveCallbackSlot.$(rot.xy);
22
+ const waveX = wave.x;
23
+ 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);
28
+ const hueAngle = std.mul(std.abs(band), 10 * Math.PI * rot.x / 3);
29
+ const rainbowColor = hueShift(d.vec3f(1.0, 1.0, 1.0), hueAngle);
30
+ const finalColor = std.mul(rainbowColor, falloff);
31
+ return d.vec4f(finalColor, 1 - falloff * dist * textureColor.w);
32
+ });
33
+ //# sourceMappingURL=holoFragment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["tgpu","d","std","rotationValuesBindGroupLayout","textureBindGroupLayout","hueShift","waveCallbackSlot","holoFragment","fragmentFn","in","uv","vec2f","out","vec4f","input","texcoord","x","y","centeredCoords","sub","mul","textureColor","textureSample","$","texture","sampler","rot","vec","center","add","wave","xy","waveX","waveY","band","dist","distance","intensity","clamp","falloff","pow","exp","hueAngle","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,6BAA6B,EAC7BC,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,cAAc,GAAGhB,GAAG,CAACiB,GAAG,CAACjB,GAAG,CAACkB,GAAG,CAACV,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC;EAErD,MAAMW,YAAY,GAAGnB,GAAG,CAACoB,aAAa,CACpClB,sBAAsB,CAACmB,CAAC,CAACC,OAAO,EAChCpB,sBAAsB,CAACmB,CAAC,CAACE,OAAO,EAChCV,QACF,CAAC;EAED,MAAMW,GAAG,GAAGvB,6BAA6B,CAACoB,CAAC,CAACI,GAAG;EAC/C,MAAMC,MAAM,GAAG1B,GAAG,CAAC2B,GAAG,CAAC5B,CAAC,CAACU,KAAK,CAAC,GAAG,CAAC,EAAEV,CAAC,CAACU,KAAK,CAACe,GAAG,CAACV,CAAC,EAAEU,GAAG,CAACT,CAAC,CAAC,CAAC;EAE3D,MAAMa,IAAI,GAAGxB,gBAAgB,CAACiB,CAAC,CAACG,GAAG,CAACK,EAAE,CAAC;EACvC,MAAMC,KAAK,GAAGF,IAAI,CAACd,CAAC;EACpB,MAAMiB,KAAK,GAAGH,IAAI,CAACb,CAAC;EAEpB,MAAMiB,IAAI,GAAGhC,GAAG,CAAC2B,GAAG,CAACG,KAAK,EAAEC,KAAK,CAAC;EAElC,MAAME,IAAI,GAAGjC,GAAG,CAACkC,QAAQ,CAAClB,cAAc,EAAEU,MAAM,CAAC;EACjD,MAAMS,SAAS,GAAGnC,GAAG,CAACoC,KAAK,CAAC,GAAG,GAAGH,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;EACjD,MAAMI,OAAO,GAAGrC,GAAG,CAACsC,GAAG,CAACtC,GAAG,CAACuC,GAAG,CAAC,CAACN,IAAI,CAAC,EAAE,GAAG,GAAGE,SAAS,CAAC;EAExD,MAAMK,QAAQ,GAAGxC,GAAG,CAACkB,GAAG,CAAClB,GAAG,CAACyC,GAAG,CAACT,IAAI,CAAC,EAAG,EAAE,GAAGU,IAAI,CAACC,EAAE,GAAGnB,GAAG,CAACV,CAAC,GAAI,CAAC,CAAC;EACnE,MAAM8B,YAAY,GAAGzC,QAAQ,CAACJ,CAAC,CAAC8C,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAEL,QAAQ,CAAC;EAC/D,MAAMM,UAAU,GAAG9C,GAAG,CAACkB,GAAG,CAAC0B,YAAY,EAAEP,OAAO,CAAC;EAEjD,OAAOtC,CAAC,CAACY,KAAK,CAACmC,UAAU,EAAE,CAAC,GAAGT,OAAO,GAAGJ,IAAI,GAAGd,YAAY,CAAC4B,CAAC,CAAC;AACjE,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,20 @@
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 { textureBindGroupLayout, maskTextureBindGroupLayout } from "../bindGroupLayouts.js";
7
+ const maskFragment = tgpu['~unstable'].fragmentFn({
8
+ in: {
9
+ uv: d.vec2f
10
+ },
11
+ out: d.vec4f
12
+ })(input => {
13
+ const texcoord = d.vec2f(input.uv.x, 1.0 - input.uv.y);
14
+ const mask = std.textureSample(maskTextureBindGroupLayout.$.texture, maskTextureBindGroupLayout.$.sampler, texcoord);
15
+ const reversedMask = d.vec4f(std.sub(1.0, mask.xyz), mask.w);
16
+ let color = std.textureSample(textureBindGroupLayout.$.texture, textureBindGroupLayout.$.sampler, texcoord);
17
+ return d.vec4f(color.xyz, reversedMask.x);
18
+ });
19
+ export default maskFragment;
20
+ //# sourceMappingURL=maskFragment.js.map