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.
Files changed (141) hide show
  1. package/README.md +22 -7
  2. package/lib/module/components/Content.js +232 -0
  3. package/lib/module/components/Content.js.map +1 -0
  4. package/lib/module/components/Shine.js +33 -0
  5. package/lib/module/components/Shine.js.map +1 -0
  6. package/lib/module/components/ShineGroup.js +92 -0
  7. package/lib/module/components/ShineGroup.js.map +1 -0
  8. package/lib/module/enums/waveCallback.js +19 -0
  9. package/lib/module/enums/waveCallback.js.map +1 -0
  10. package/lib/module/hooks/useAnimationFrame.js +17 -0
  11. package/lib/module/hooks/useAnimationFrame.js.map +1 -0
  12. package/lib/module/hooks/useOrientation.js +10 -0
  13. package/lib/module/hooks/useOrientation.js.map +1 -0
  14. package/lib/module/index.js +6 -219
  15. package/lib/module/index.js.map +1 -1
  16. package/lib/module/shaders/bindGroupLayouts.js +41 -6
  17. package/lib/module/shaders/bindGroupLayouts.js.map +1 -1
  18. package/lib/module/shaders/bindGroupUtils.js +34 -41
  19. package/lib/module/shaders/bindGroupUtils.js.map +1 -1
  20. package/lib/module/shaders/fragmentShaders/colorMaskFragment.js +2 -2
  21. package/lib/module/shaders/fragmentShaders/colorMaskFragment.js.map +1 -1
  22. package/lib/module/shaders/fragmentShaders/glareFragment.js +115 -0
  23. package/lib/module/shaders/fragmentShaders/glareFragment.js.map +1 -0
  24. package/lib/module/shaders/fragmentShaders/holoFragment.js +28 -0
  25. package/lib/module/shaders/fragmentShaders/holoFragment.js.map +1 -0
  26. package/lib/module/shaders/fragmentShaders/maskFragment.js +20 -0
  27. package/lib/module/shaders/fragmentShaders/maskFragment.js.map +1 -0
  28. package/lib/module/shaders/fragmentShaders/reverseHoloFragment.js +46 -0
  29. package/lib/module/shaders/fragmentShaders/reverseHoloFragment.js.map +1 -0
  30. package/lib/module/shaders/pipelineSetups.js +72 -17
  31. package/lib/module/shaders/pipelineSetups.js.map +1 -1
  32. package/lib/module/shaders/{resourceManagement.js → resourceManagement/bitmaps.js} +2 -1
  33. package/lib/module/shaders/resourceManagement/bitmaps.js.map +1 -0
  34. package/lib/module/shaders/resourceManagement/bufferManager.js +46 -0
  35. package/lib/module/shaders/resourceManagement/bufferManager.js.map +1 -0
  36. package/lib/module/shaders/resourceManagement/textures.js +24 -0
  37. package/lib/module/shaders/resourceManagement/textures.js.map +1 -0
  38. package/lib/module/shaders/tgpuUtils.js +19 -1
  39. package/lib/module/shaders/tgpuUtils.js.map +1 -1
  40. package/lib/module/shaders/utils.js +8 -36
  41. package/lib/module/shaders/utils.js.map +1 -1
  42. package/lib/module/shaders/vertexShaders/mainRotationEffectVertex.js +47 -0
  43. package/lib/module/shaders/vertexShaders/mainRotationEffectVertex.js.map +1 -0
  44. package/lib/module/types/size.js +2 -0
  45. package/lib/module/types/size.js.map +1 -0
  46. package/lib/module/types/typeUtils.js +17 -19
  47. package/lib/module/types/typeUtils.js.map +1 -1
  48. package/lib/module/types/vector.js +2 -0
  49. package/lib/module/types/vector.js.map +1 -0
  50. package/lib/module/utils/size.js +25 -0
  51. package/lib/module/utils/size.js.map +1 -0
  52. package/lib/module/utils/vector.js +168 -0
  53. package/lib/module/utils/vector.js.map +1 -0
  54. package/lib/typescript/src/components/Content.d.ts +23 -0
  55. package/lib/typescript/src/components/Content.d.ts.map +1 -0
  56. package/lib/typescript/src/components/Shine.d.ts +7 -0
  57. package/lib/typescript/src/components/Shine.d.ts.map +1 -0
  58. package/lib/typescript/src/components/ShineGroup.d.ts +6 -0
  59. package/lib/typescript/src/components/ShineGroup.d.ts.map +1 -0
  60. package/lib/typescript/src/enums/waveCallback.d.ts +9 -0
  61. package/lib/typescript/src/enums/waveCallback.d.ts.map +1 -0
  62. package/lib/typescript/src/hooks/useAnimationFrame.d.ts +2 -0
  63. package/lib/typescript/src/hooks/useAnimationFrame.d.ts.map +1 -0
  64. package/lib/typescript/src/hooks/useOrientation.d.ts +4 -0
  65. package/lib/typescript/src/hooks/useOrientation.d.ts.map +1 -0
  66. package/lib/typescript/src/index.d.ts +8 -11
  67. package/lib/typescript/src/index.d.ts.map +1 -1
  68. package/lib/typescript/src/shaders/bindGroupLayouts.d.ts +46 -8
  69. package/lib/typescript/src/shaders/bindGroupLayouts.d.ts.map +1 -1
  70. package/lib/typescript/src/shaders/bindGroupUtils.d.ts +9 -9
  71. package/lib/typescript/src/shaders/bindGroupUtils.d.ts.map +1 -1
  72. package/lib/typescript/src/shaders/fragmentShaders/glareFragment.d.ts +8 -0
  73. package/lib/typescript/src/shaders/fragmentShaders/glareFragment.d.ts.map +1 -0
  74. package/lib/typescript/src/shaders/fragmentShaders/holoFragment.d.ts +5 -0
  75. package/lib/typescript/src/shaders/fragmentShaders/holoFragment.d.ts.map +1 -0
  76. package/lib/typescript/src/shaders/fragmentShaders/maskFragment.d.ts +6 -0
  77. package/lib/typescript/src/shaders/fragmentShaders/maskFragment.d.ts.map +1 -0
  78. package/lib/typescript/src/shaders/fragmentShaders/reverseHoloFragment.d.ts +5 -0
  79. package/lib/typescript/src/shaders/fragmentShaders/reverseHoloFragment.d.ts.map +1 -0
  80. package/lib/typescript/src/shaders/pipelineSetups.d.ts +9 -4
  81. package/lib/typescript/src/shaders/pipelineSetups.d.ts.map +1 -1
  82. package/lib/typescript/src/shaders/{resourceManagement.d.ts → resourceManagement/bitmaps.d.ts} +1 -1
  83. package/lib/typescript/src/shaders/resourceManagement/bitmaps.d.ts.map +1 -0
  84. package/lib/typescript/src/shaders/resourceManagement/bufferManager.d.ts +28 -0
  85. package/lib/typescript/src/shaders/resourceManagement/bufferManager.d.ts.map +1 -0
  86. package/lib/typescript/src/shaders/resourceManagement/textures.d.ts +8 -0
  87. package/lib/typescript/src/shaders/resourceManagement/textures.d.ts.map +1 -0
  88. package/lib/typescript/src/shaders/tgpuUtils.d.ts +5 -1
  89. package/lib/typescript/src/shaders/tgpuUtils.d.ts.map +1 -1
  90. package/lib/typescript/src/shaders/utils.d.ts +3 -10
  91. package/lib/typescript/src/shaders/utils.d.ts.map +1 -1
  92. package/lib/typescript/src/shaders/vertexShaders/mainRotationEffectVertex.d.ts +6 -0
  93. package/lib/typescript/src/shaders/vertexShaders/mainRotationEffectVertex.d.ts.map +1 -0
  94. package/lib/typescript/src/types/size.d.ts +5 -0
  95. package/lib/typescript/src/types/size.d.ts.map +1 -0
  96. package/lib/typescript/src/types/typeUtils.d.ts +3 -5
  97. package/lib/typescript/src/types/typeUtils.d.ts.map +1 -1
  98. package/lib/typescript/src/types/types.d.ts +10 -3
  99. package/lib/typescript/src/types/types.d.ts.map +1 -1
  100. package/lib/typescript/src/types/vector.d.ts +11 -0
  101. package/lib/typescript/src/types/vector.d.ts.map +1 -0
  102. package/lib/typescript/src/utils/size.d.ts +5 -0
  103. package/lib/typescript/src/utils/size.d.ts.map +1 -0
  104. package/lib/typescript/src/utils/vector.d.ts +33 -0
  105. package/lib/typescript/src/utils/vector.d.ts.map +1 -0
  106. package/package.json +7 -5
  107. package/scripts/postinstall.js +16 -17
  108. package/src/components/Content.tsx +403 -0
  109. package/src/components/Shine.tsx +38 -0
  110. package/src/components/ShineGroup.tsx +100 -0
  111. package/src/enums/waveCallback.ts +22 -0
  112. package/src/hooks/useAnimationFrame.ts +21 -0
  113. package/src/hooks/useOrientation.ts +18 -0
  114. package/src/index.tsx +14 -322
  115. package/src/shaders/bindGroupLayouts.ts +45 -8
  116. package/src/shaders/bindGroupUtils.ts +50 -65
  117. package/src/shaders/fragmentShaders/colorMaskFragment.ts +2 -2
  118. package/src/shaders/fragmentShaders/glareFragment.ts +143 -0
  119. package/src/shaders/fragmentShaders/holoFragment.ts +35 -0
  120. package/src/shaders/fragmentShaders/maskFragment.ts +31 -0
  121. package/src/shaders/fragmentShaders/reverseHoloFragment.ts +71 -0
  122. package/src/shaders/pipelineSetups.ts +152 -20
  123. package/src/shaders/{resourceManagement.ts → resourceManagement/bitmaps.ts} +1 -0
  124. package/src/shaders/resourceManagement/bufferManager.ts +82 -0
  125. package/src/shaders/resourceManagement/textures.ts +42 -0
  126. package/src/shaders/tgpuUtils.ts +36 -1
  127. package/src/shaders/utils.ts +13 -57
  128. package/src/shaders/vertexShaders/mainRotationEffectVertex.ts +76 -0
  129. package/src/types/size.ts +4 -0
  130. package/src/types/typeUtils.ts +22 -36
  131. package/src/types/types.ts +19 -3
  132. package/src/types/vector.ts +13 -0
  133. package/src/utils/size.ts +12 -0
  134. package/src/utils/vector.ts +132 -0
  135. package/lib/module/shaders/fragmentShaders/bloomFragment.js +0 -66
  136. package/lib/module/shaders/fragmentShaders/bloomFragment.js.map +0 -1
  137. package/lib/module/shaders/resourceManagement.js.map +0 -1
  138. package/lib/typescript/src/shaders/fragmentShaders/bloomFragment.d.ts +0 -6
  139. package/lib/typescript/src/shaders/fragmentShaders/bloomFragment.d.ts.map +0 -1
  140. package/lib/typescript/src/shaders/resourceManagement.d.ts.map +0 -1
  141. package/src/shaders/fragmentShaders/bloomFragment.ts +0 -83
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"names":["tgpu","d","std","textureBindGroupLayout","maskTextureBindGroupLayout","maskFragment","fragmentFn","in","uv","vec2f","out","vec4f","input","texcoord","x","y","mask","textureSample","$","texture","sampler","reversedMask","sub","xyz","w","color"],"sourceRoot":"../../../../src","sources":["shaders/fragmentShaders/maskFragment.ts"],"mappings":";;AAAA,OAAOA,IAAI,MAAM,SAAS;AAC1B,OAAO,KAAKC,CAAC,MAAM,cAAc;AACjC,OAAO,KAAKC,GAAG,MAAM,aAAa;AAClC,SACEC,sBAAsB,EACtBC,0BAA0B,QACrB,wBAAqB;AAE5B,MAAMC,YAAY,GAAGL,IAAI,CAAC,WAAW,CAAC,CAACM,UAAU,CAAC;EAChDC,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,GAAGd,GAAG,CAACe,aAAa,CAC5Bb,0BAA0B,CAACc,CAAC,CAACC,OAAO,EACpCf,0BAA0B,CAACc,CAAC,CAACE,OAAO,EACpCP,QACF,CAAC;EACD,MAAMQ,YAAY,GAAGpB,CAAC,CAACU,KAAK,CAACT,GAAG,CAACoB,GAAG,CAAC,GAAG,EAAEN,IAAI,CAACO,GAAG,CAAC,EAAEP,IAAI,CAACQ,CAAC,CAAC;EAE5D,IAAIC,KAAK,GAAGvB,GAAG,CAACe,aAAa,CAC3Bd,sBAAsB,CAACe,CAAC,CAACC,OAAO,EAChChB,sBAAsB,CAACe,CAAC,CAACE,OAAO,EAChCP,QACF,CAAC;EAED,OAAOZ,CAAC,CAACU,KAAK,CAACc,KAAK,CAACF,GAAG,EAAEF,YAAY,CAACP,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF,eAAeT,YAAY","ignoreList":[]}
@@ -0,0 +1,46 @@
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, rotationBindGroupLayout, glareBindGroupLayout } from "../bindGroupLayouts.js";
7
+ import { hueShift } from "../tgpuUtils.js";
8
+ export const reverseHoloFragment = tgpu['~unstable'].fragmentFn({
9
+ in: {
10
+ uv: d.vec2f
11
+ },
12
+ out: d.vec4f
13
+ })(input => {
14
+ const texcoord = d.vec2f(input.uv.x, 1.0 - input.uv.y);
15
+ const uv = texcoord;
16
+ const centeredCoords = std.sub(std.mul(uv, 2.0), 1.0);
17
+ const rot = rotationBindGroupLayout.$.vec;
18
+ const center = std.add(d.vec2f(0.0), d.vec2f(rot.x, rot.y)); // center from device orientation/touch
19
+
20
+ const opts = glareBindGroupLayout.$.glareOptions;
21
+ const glareIntensity = opts.glareIntensity;
22
+ const glowPower = opts.glowPower;
23
+ const hueBlendPower = opts.hueBlendPower;
24
+ const hueShiftAngleMin = opts.hueShiftAngleMin;
25
+ const hueShiftAngleMax = opts.hueShiftAngleMax;
26
+ const lightIntensity = opts.lightIntensity;
27
+ const cardColor = std.textureSample(textureBindGroupLayout.$.texture, textureBindGroupLayout.$.sampler, texcoord);
28
+ const holoMaskColor = std.textureSample(maskTextureBindGroupLayout.$.texture, maskTextureBindGroupLayout.$.sampler, texcoord);
29
+ const dist = std.distance(centeredCoords, center);
30
+ const rFalloff = std.exp(-dist);
31
+ const scaledRadial = std.mul(rFalloff, std.add(1.0, std.max(0.0, glareIntensity)));
32
+ const influence = std.smoothstep(0.0, 1.0, scaledRadial);
33
+ const curvePower = std.clamp(glowPower, 0.05, 64.0);
34
+ const glowMask = std.pow(influence, std.div(1.0, curvePower));
35
+ const holoFactor = (1.0 - holoMaskColor.x) * holoMaskColor.w * std.pow(scaledRadial, 1.5);
36
+ const maskedGlow = std.mul(glowMask, holoFactor); // only affect masked areas
37
+
38
+ const hueAmount = std.mix(hueShiftAngleMin, hueShiftAngleMax, std.clamp(maskedGlow, 0.0, 1.0));
39
+ const sparkleHue = hueShift(cardColor.xyz, hueAmount);
40
+ const hueMixAmt = std.clamp(hueBlendPower / 5.0 * maskedGlow, 0.0, 1.0);
41
+ const chromaMix = std.mix(cardColor.xyz, sparkleHue, hueMixAmt);
42
+ const shineStrength = std.clamp(lightIntensity, 1.0, 100.0);
43
+ const shineLayer = std.mul(chromaMix, 1.5 * shineStrength * maskedGlow);
44
+ return d.vec4f(shineLayer, 1 - maskedGlow);
45
+ });
46
+ //# sourceMappingURL=reverseHoloFragment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["tgpu","d","std","textureBindGroupLayout","maskTextureBindGroupLayout","rotationBindGroupLayout","glareBindGroupLayout","hueShift","reverseHoloFragment","fragmentFn","in","uv","vec2f","out","vec4f","input","texcoord","x","y","centeredCoords","sub","mul","rot","$","vec","center","add","opts","glareOptions","glareIntensity","glowPower","hueBlendPower","hueShiftAngleMin","hueShiftAngleMax","lightIntensity","cardColor","textureSample","texture","sampler","holoMaskColor","dist","distance","rFalloff","exp","scaledRadial","max","influence","smoothstep","curvePower","clamp","glowMask","pow","div","holoFactor","w","maskedGlow","hueAmount","mix","sparkleHue","xyz","hueMixAmt","chromaMix","shineStrength","shineLayer"],"sourceRoot":"../../../../src","sources":["shaders/fragmentShaders/reverseHoloFragment.ts"],"mappings":"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","ignoreList":[]}
@@ -1,26 +1,28 @@
1
1
  "use strict";
2
2
 
3
- export const attachBindGroups = (pipeline, bindGroupPairs) => {
4
- for (const pair of bindGroupPairs) {
5
- pipeline = pipeline.with(pair.layout, pair.group);
3
+ import { maskTextureBindGroupLayout, textureBindGroupLayout } from "./bindGroupLayouts.js";
4
+ import mainVertex from "./vertexShaders/mainVertex.js";
5
+ import maskFragment from "./fragmentShaders/maskFragment.js";
6
+ import { reverseHoloFragment } from "./fragmentShaders/reverseHoloFragment.js";
7
+ import { holoFragment } from "./fragmentShaders/holoFragment.js";
8
+ import { WAVE_CALLBACKS, waveCallbackFn, waveCallbackSlot } from "../enums/waveCallback.js";
9
+ export const attachBindGroups = (pipeline, bindGroups) => bindGroups.reduce((acc, bindGroup) => acc.with(bindGroup.layout, bindGroup), pipeline);
10
+ export const blend = {
11
+ color: {
12
+ srcFactor: 'one-minus-src-alpha',
13
+ dstFactor: 'src-alpha',
14
+ operation: 'add'
15
+ },
16
+ alpha: {
17
+ srcFactor: 'one-minus-src-alpha',
18
+ dstFactor: 'dst-alpha',
19
+ operation: 'add'
6
20
  }
7
- return pipeline;
8
21
  };
9
- export const getDefaultTarget = presentationFormat => {
22
+ export const getDefaultTarget = (presentationFormat, blendMode) => {
10
23
  return {
11
24
  format: presentationFormat,
12
- blend: {
13
- color: {
14
- srcFactor: 'src-alpha',
15
- dstFactor: 'one-minus-src-alpha',
16
- operation: 'add'
17
- },
18
- alpha: {
19
- srcFactor: 'one',
20
- dstFactor: 'one-minus-src-alpha',
21
- operation: 'add'
22
- }
23
- }
25
+ blend: blendMode
24
26
  };
25
27
  };
26
28
  export const attachBindGroupsToPass = (pass, bindGroupPairs) => {
@@ -29,4 +31,57 @@ export const attachBindGroupsToPass = (pass, bindGroupPairs) => {
29
31
  }
30
32
  return pass;
31
33
  };
34
+ export const createMaskPipeline = (root, maskTexture, bindGroups, sampler, presentationFormat) => {
35
+ if (!maskTexture) return;
36
+ const maskTextureBindGroup = root.createBindGroup(maskTextureBindGroupLayout, {
37
+ texture: root.unwrap(maskTexture).createView(),
38
+ sampler
39
+ });
40
+ const maskBGP = [maskTextureBindGroup];
41
+ for (let i = 0; i < bindGroups.length; i++) {
42
+ maskBGP.push(bindGroups[i]);
43
+ }
44
+ let maskPipeline = root['~unstable'].withVertex(mainVertex, {}).withFragment(maskFragment, getDefaultTarget(presentationFormat, blend)).createPipeline();
45
+ maskPipeline = attachBindGroups(maskPipeline, maskBGP);
46
+ return maskPipeline;
47
+ };
48
+ export const createReverseHoloPipeline = (root, texture, bindGroups, sampler, presentationFormat) => {
49
+ if (!texture) return;
50
+ const reverseHoloBindGroup = root.createBindGroup(maskTextureBindGroupLayout, {
51
+ texture: root.unwrap(texture).createView(),
52
+ sampler
53
+ });
54
+ const reverseHoloBGP = [...bindGroups, reverseHoloBindGroup];
55
+ let reverseHoloPipeline = root['~unstable'].withVertex(mainVertex, {}).withFragment(reverseHoloFragment, getDefaultTarget(presentationFormat, blend)).createPipeline();
56
+ reverseHoloPipeline = attachBindGroups(reverseHoloPipeline, reverseHoloBGP);
57
+ return reverseHoloPipeline;
58
+ };
59
+ export const createRainbowHoloPipeline = (root, texture, bindGroups, sampler, presentationFormat) => {
60
+ if (!texture) return;
61
+ const imageTextureBindGroup = root.createBindGroup(textureBindGroupLayout, {
62
+ texture: root.unwrap(texture).createView(),
63
+ sampler
64
+ });
65
+ let rainbowHoloPipeline = root['~unstable'].with(waveCallbackSlot, waveCallbackFn(WAVE_CALLBACKS.default)).withVertex(mainVertex, {}).withFragment(holoFragment, getDefaultTarget(presentationFormat, blend)).createPipeline();
66
+ rainbowHoloPipeline = attachBindGroups(rainbowHoloPipeline, [...bindGroups, imageTextureBindGroup]);
67
+ return rainbowHoloPipeline;
68
+ };
69
+ export function renderPipelinesInSinglePass(root, pipelines, view) {
70
+ const unstableRoot = root['~unstable'];
71
+ const attachment = {
72
+ view,
73
+ clearValue: [0, 0, 0, 0],
74
+ loadOp: 'clear',
75
+ storeOp: 'store'
76
+ };
77
+ unstableRoot.beginRenderPass({
78
+ colorAttachments: [attachment]
79
+ }, pass => {
80
+ for (const pipeline of pipelines) {
81
+ pass.setPipeline(pipeline);
82
+ pass.draw(6);
83
+ }
84
+ });
85
+ unstableRoot.flush();
86
+ }
32
87
  //# sourceMappingURL=pipelineSetups.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["attachBindGroups","pipeline","bindGroupPairs","pair","with","layout","group","getDefaultTarget","presentationFormat","format","blend","color","srcFactor","dstFactor","operation","alpha","attachBindGroupsToPass","pass","setBindGroup"],"sourceRoot":"../../../src","sources":["shaders/pipelineSetups.ts"],"mappings":";;AAGA,OAAO,MAAMA,gBAAgB,GAAGA,CAC9BC,QAA4B,EAC5BC,cAA+B,KAC5B;EACH,KAAK,MAAMC,IAAI,IAAID,cAAc,EAAE;IACjCD,QAAQ,GAAGA,QAAQ,CAACG,IAAI,CAACD,IAAI,CAACE,MAAM,EAAEF,IAAI,CAACG,KAAK,CAAC;EACnD;EAEA,OAAOL,QAAQ;AACjB,CAAC;AAED,OAAO,MAAMM,gBAAgB,GAC3BC,kBAAoC,IACZ;EACxB,OAAO;IACLC,MAAM,EAAED,kBAAkB;IAC1BE,KAAK,EAAE;MACLC,KAAK,EAAE;QACLC,SAAS,EAAE,WAAW;QACtBC,SAAS,EAAE,qBAAqB;QAChCC,SAAS,EAAE;MACb,CAAC;MACDC,KAAK,EAAE;QACLH,SAAS,EAAE,KAAK;QAChBC,SAAS,EAAE,qBAAqB;QAChCC,SAAS,EAAE;MACb;IACF;EACF,CAAC;AACH,CAAC;AAED,OAAO,MAAME,sBAAsB,GAAGA,CACpCC,IAAS,EACTf,cAA+B,KAC5B;EACH,KAAK,MAAMC,IAAI,IAAID,cAAc,EAAE;IACjCe,IAAI,CAACC,YAAY,CAACf,IAAI,CAACE,MAAM,EAAEF,IAAI,CAACG,KAAK,CAAC;EAC5C;EAEA,OAAOW,IAAI;AACb,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["maskTextureBindGroupLayout","textureBindGroupLayout","mainVertex","maskFragment","reverseHoloFragment","holoFragment","WAVE_CALLBACKS","waveCallbackFn","waveCallbackSlot","attachBindGroups","pipeline","bindGroups","reduce","acc","bindGroup","with","layout","blend","color","srcFactor","dstFactor","operation","alpha","getDefaultTarget","presentationFormat","blendMode","format","attachBindGroupsToPass","pass","bindGroupPairs","pair","setBindGroup","group","createMaskPipeline","root","maskTexture","sampler","maskTextureBindGroup","createBindGroup","texture","unwrap","createView","maskBGP","i","length","push","maskPipeline","withVertex","withFragment","createPipeline","createReverseHoloPipeline","reverseHoloBindGroup","reverseHoloBGP","reverseHoloPipeline","createRainbowHoloPipeline","imageTextureBindGroup","rainbowHoloPipeline","default","renderPipelinesInSinglePass","pipelines","view","unstableRoot","attachment","clearValue","loadOp","storeOp","beginRenderPass","colorAttachments","setPipeline","draw","flush"],"sourceRoot":"../../../src","sources":["shaders/pipelineSetups.ts"],"mappings":"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","ignoreList":[]}
@@ -11,9 +11,10 @@ const getBitmapFromURI = async uri => {
11
11
  const response = await fetch(fileURI);
12
12
  const blob = await response.blob();
13
13
  const imageBitmap = await createImageBitmap(blob);
14
+ console.log('bitmap size: ', imageBitmap);
14
15
  uriToBitmapMap.set(uri, imageBitmap);
15
16
  return imageBitmap;
16
17
  };
17
18
  const uriToBitmapMap = new Map();
18
19
  export default getBitmapFromURI;
19
- //# sourceMappingURL=resourceManagement.js.map
20
+ //# sourceMappingURL=bitmaps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Asset","getBitmapFromURI","uri","uriToBitmapMap","has","get","console","log","ast","fromURI","downloadAsync","fileURI","localUri","response","fetch","blob","imageBitmap","createImageBitmap","set","Map"],"sourceRoot":"../../../../src","sources":["shaders/resourceManagement/bitmaps.ts"],"mappings":";;AAAA,SAASA,KAAK,QAAQ,YAAY;AAElC,MAAMC,gBAAgB,GAAG,MAAOC,GAAW,IAA2B;EACpE,IAAIC,cAAc,CAACC,GAAG,CAACF,GAAG,CAAC,EAAE,OAAOC,cAAc,CAACE,GAAG,CAACH,GAAG,CAAC;EAC3DI,OAAO,CAACC,GAAG,CAAC,8CAA8C,CAAC;EAE3D,MAAMC,GAAG,GAAGR,KAAK,CAACS,OAAO,CAACP,GAAG,CAAC;EAC9B,MAAMM,GAAG,CAACE,aAAa,CAAC,CAAC;EACzB,MAAMC,OAAO,GAAGH,GAAG,CAACI,QAAQ,IAAIJ,GAAG,CAACN,GAAG;EAEvCI,OAAO,CAACC,GAAG,CAAC,uCAAuC,CAAC;EACpD,MAAMM,QAAQ,GAAG,MAAMC,KAAK,CAACH,OAAO,CAAC;EACrC,MAAMI,IAAI,GAAG,MAAMF,QAAQ,CAACE,IAAI,CAAC,CAAC;EAClC,MAAMC,WAAW,GAAG,MAAMC,iBAAiB,CAACF,IAAI,CAAC;EAEjDT,OAAO,CAACC,GAAG,CAAC,eAAe,EAAES,WAAW,CAAC;EACzCb,cAAc,CAACe,GAAG,CAAChB,GAAG,EAAEc,WAAW,CAAC;EACpC,OAAOA,WAAW;AACpB,CAAC;AAED,MAAMb,cAAc,GAAG,IAAIgB,GAAG,CAAsB,CAAC;AAErD,eAAelB,gBAAgB","ignoreList":[]}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ export class TypedBufferMap {
4
+ buffers = {};
5
+ constructor(schemas) {
6
+ this.schemas = schemas;
7
+ }
8
+ set(key, buffer) {
9
+ this.buffers[key] = buffer;
10
+ }
11
+ get(key) {
12
+ return this.buffers[key];
13
+ }
14
+ addBuffer(root, key, initValues) {
15
+ const entry = this.schemas[key];
16
+ if (!entry) {
17
+ throw new Error(`No schema found for buffer key "${String(key)}"`);
18
+ }
19
+ const {
20
+ schema,
21
+ usage
22
+ } = entry;
23
+ if (this.buffers[key]) {
24
+ console.warn(`Buffer "${String(key)}" already exists. Skipping...`);
25
+ return this.buffers[key];
26
+ }
27
+ const buffer = initValues ? root.createBuffer(schema, initValues) : root.createBuffer(schema);
28
+ const typedBuffer = buffer.$usage(usage);
29
+ this.buffers[key] = typedBuffer;
30
+ return typedBuffer;
31
+ }
32
+ keys() {
33
+ return Object.keys(this.buffers);
34
+ }
35
+ has(key) {
36
+ return !!this.buffers[key];
37
+ }
38
+ delete(key) {
39
+ const buf = this.buffers[key];
40
+ if (buf) {
41
+ buf.destroy?.();
42
+ delete this.buffers[key];
43
+ }
44
+ }
45
+ }
46
+ //# sourceMappingURL=bufferManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TypedBufferMap","buffers","constructor","schemas","set","key","buffer","get","addBuffer","root","initValues","entry","Error","String","schema","usage","console","warn","createBuffer","typedBuffer","$usage","keys","Object","has","delete","buf","destroy"],"sourceRoot":"../../../../src","sources":["shaders/resourceManagement/bufferManager.ts"],"mappings":";;AAcA,OAAO,MAAMA,cAAc,CAKzB;EACQC,OAAO,GAEX,CAAC,CAAC;EAENC,WAAWA,CAASC,OAAiB,EAAE;IAAA,KAAnBA,OAAiB,GAAjBA,OAAiB;EAAG;EAExCC,GAAGA,CACDC,GAAM,EACNC,MAA6C,EACvC;IACN,IAAI,CAACL,OAAO,CAACI,GAAG,CAAC,GAAGC,MAAM;EAC5B;EAEAC,GAAGA,CACDF,GAAM,EAC6C;IACnD,OAAO,IAAI,CAACJ,OAAO,CAACI,GAAG,CAAC;EAC1B;EAEAG,SAASA,CACPC,IAAc,EACdJ,GAAM,EACNK,UAA6C,EACN;IACvC,MAAMC,KAAK,GAAG,IAAI,CAACR,OAAO,CAACE,GAAG,CAAC;IAC/B,IAAI,CAACM,KAAK,EAAE;MACV,MAAM,IAAIC,KAAK,CAAC,mCAAmCC,MAAM,CAACR,GAAG,CAAC,GAAG,CAAC;IACpE;IAEA,MAAM;MAAES,MAAM;MAAEC;IAAM,CAAC,GAAGJ,KAAK;IAC/B,IAAI,IAAI,CAACV,OAAO,CAACI,GAAG,CAAC,EAAE;MACrBW,OAAO,CAACC,IAAI,CAAC,WAAWJ,MAAM,CAACR,GAAG,CAAC,+BAA+B,CAAC;MACnE,OAAO,IAAI,CAACJ,OAAO,CAACI,GAAG,CAAC;IAC1B;IAEA,MAAMC,MAAM,GAAGI,UAAU,GACrBD,IAAI,CAACS,YAAY,CAACJ,MAAM,EAAEJ,UAAU,CAAC,GACrCD,IAAI,CAACS,YAAY,CAACJ,MAAM,CAAC;IAE7B,MAAMK,WAAW,GAAGb,MAAM,CAACc,MAAM,CAACL,KAAK,CAEtC;IACD,IAAI,CAACd,OAAO,CAACI,GAAG,CAAC,GAAGc,WAAW;IAC/B,OAAOA,WAAW;EACpB;EAEAE,IAAIA,CAAA,EAAuB;IACzB,OAAOC,MAAM,CAACD,IAAI,CAAC,IAAI,CAACpB,OAAO,CAAC;EAClC;EAEAsB,GAAGA,CAA2BlB,GAAM,EAAW;IAC7C,OAAO,CAAC,CAAC,IAAI,CAACJ,OAAO,CAACI,GAAG,CAAC;EAC5B;EAEAmB,MAAMA,CAA2BnB,GAAM,EAAQ;IAC7C,MAAMoB,GAAG,GAAG,IAAI,CAACxB,OAAO,CAACI,GAAG,CAAC;IAC7B,IAAIoB,GAAG,EAAE;MACPA,GAAG,CAACC,OAAO,GAAG,CAAC;MACf,OAAO,IAAI,CAACzB,OAAO,CAACI,GAAG,CAAC;IAC1B;EACF;AACF","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ import getBitmapFromURI from "./bitmaps.js";
4
+ export const createTexture = async (root, size) => {
5
+ const texture = root['~unstable'].createTexture({
6
+ size: [size.width, size.height],
7
+ format: 'rgba8unorm'
8
+ }).$usage('sampled', 'render');
9
+ return texture;
10
+ };
11
+ export const loadTexture = async (root, imageBitmap, texture) => {
12
+ root.device.queue.copyExternalImageToTexture({
13
+ source: imageBitmap
14
+ }, {
15
+ texture: root.unwrap(texture)
16
+ }, [imageBitmap.width, imageBitmap.height]);
17
+ };
18
+ export async function loadBitmap(root, imageURI, setTexture) {
19
+ const bitmap = await getBitmapFromURI(imageURI);
20
+ const texture = await createTexture(root, bitmap);
21
+ setTexture(texture);
22
+ await loadTexture(root, bitmap, texture);
23
+ }
24
+ //# sourceMappingURL=textures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getBitmapFromURI","createTexture","root","size","texture","width","height","format","$usage","loadTexture","imageBitmap","device","queue","copyExternalImageToTexture","source","unwrap","loadBitmap","imageURI","setTexture","bitmap"],"sourceRoot":"../../../../src","sources":["shaders/resourceManagement/textures.ts"],"mappings":";;AACA,OAAOA,gBAAgB,MAAM,cAAW;AAExC,OAAO,MAAMC,aAAa,GAAG,MAAAA,CAC3BC,IAAc,EACdC,IAGC,KACwB;EACzB,MAAMC,OAAO,GAAGF,IAAI,CAAC,WAAW,CAAC,CAC9BD,aAAa,CAAC;IACbE,IAAI,EAAE,CAACA,IAAI,CAACE,KAAK,EAAEF,IAAI,CAACG,MAAM,CAAC;IAC/BC,MAAM,EAAE;EACV,CAAC,CAAC,CACDC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC;EAE9B,OAAOJ,OAAO;AAChB,CAAC;AAED,OAAO,MAAMK,WAAW,GAAG,MAAAA,CACzBP,IAAc,EACdQ,WAAwB,EACxBN,OAAoB,KACjB;EACHF,IAAI,CAACS,MAAM,CAACC,KAAK,CAACC,0BAA0B,CAC1C;IAAEC,MAAM,EAAEJ;EAAY,CAAC,EACvB;IAAEN,OAAO,EAAEF,IAAI,CAACa,MAAM,CAACX,OAAO;EAAE,CAAC,EACjC,CAACM,WAAW,CAACL,KAAK,EAAEK,WAAW,CAACJ,MAAM,CACxC,CAAC;AACH,CAAC;AAED,OAAO,eAAeU,UAAUA,CAC9Bd,IAAc,EACde,QAAgB,EAChBC,UAAwD,EACxD;EACA,MAAMC,MAAM,GAAG,MAAMnB,gBAAgB,CAACiB,QAAQ,CAAC;EAC/C,MAAMb,OAAO,GAAG,MAAMH,aAAa,CAACC,IAAI,EAAEiB,MAAM,CAAC;EACjDD,UAAU,CAACd,OAAO,CAAC;EACnB,MAAMK,WAAW,CAACP,IAAI,EAAEiB,MAAM,EAAEf,OAAO,CAAC;AAC1C","ignoreList":[]}
@@ -20,7 +20,7 @@ export const hueShift = tgpu.fn([d.vec3f, d.f32], d.vec3f)((rgb, angle) => {
20
20
  const b = std.add(std.add(yiqY, std.mul(i, -1.105)), std.mul(q, 1.702));
21
21
  return d.vec3f(r, g, b);
22
22
  });
23
- export const bloomColorShift = tgpu.fn([d.vec3f, d.f32], d.vec3f)((color, power) => {
23
+ export const glareColorShift = tgpu.fn([d.vec3f, d.f32], d.vec3f)((color, power) => {
24
24
  const maxValue = std.max(std.max(color.x, color.y), color.z);
25
25
  const scale = std.mix(d.f32(1.0), d.f32(1.0) / std.max(maxValue, d.f32(0.001)), power);
26
26
  const boosted = std.mul(color, scale);
@@ -35,4 +35,22 @@ export const overlayChannel = tgpu.fn([d.f32, d.f32], d.f32)((base, blend) => {
35
35
  export const overlayChannels = tgpu.fn([d.vec3f, d.vec3f], d.vec3f)((base, blend) => {
36
36
  return d.vec3f(overlayChannel(base.x, blend.x), overlayChannel(base.y, blend.y), overlayChannel(base.z, blend.z));
37
37
  });
38
+
39
+ /** Rec.601 luma */
40
+ export const luma601 = tgpu.fn([d.vec3f], d.f32)(rgb => {
41
+ return std.add(std.mul(rgb.x, 0.299), std.add(std.mul(rgb.y, 0.587), std.mul(rgb.z, 0.114)));
42
+ });
43
+ export const tiltTowardsLighterNeighbor = tgpu.fn([d.vec3f, d.f32], d.vec3f)((rgb, t) => {
44
+ const toYellow = d.vec3f(std.max(rgb.x, rgb.y), std.max(rgb.x, rgb.y), rgb.z);
45
+ const toCyan = d.vec3f(rgb.x, std.max(rgb.y, rgb.z), std.max(rgb.y, rgb.z));
46
+ const yYellow = luma601(toYellow);
47
+ const yCyan = luma601(toCyan);
48
+ const toColor = std.select(toCyan, toYellow, yYellow >= yCyan);
49
+ const tClamped = std.clamp(t, 0.0, 1.0);
50
+ return std.mix(rgb, toColor, tClamped);
51
+ });
52
+ export const linearstep = tgpu.fn([d.f32, d.f32, d.f32], d.f32)((num1, num2, x) => {
53
+ const t = (x - num1) / (num2 - num1);
54
+ return std.clamp(t, 0, 1);
55
+ });
38
56
  //# sourceMappingURL=tgpuUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["tgpu","std","d","hueShift","fn","vec3f","f32","rgb","angle","yiqY","add","mul","x","y","z","yiqI","sub","yiqQ","cosA","cos","sinA","sin","i","q","r","g","b","bloomColorShift","color","power","maxValue","max","scale","mix","boosted","saturated","overlayChannel","base","blend","mult","screen","select","overlayChannels"],"sourceRoot":"../../../src","sources":["shaders/tgpuUtils.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["tgpu","std","d","hueShift","fn","vec3f","f32","rgb","angle","yiqY","add","mul","x","y","z","yiqI","sub","yiqQ","cosA","cos","sinA","sin","i","q","r","g","b","glareColorShift","color","power","maxValue","max","scale","mix","boosted","saturated","overlayChannel","base","blend","mult","screen","select","overlayChannels","luma601","tiltTowardsLighterNeighbor","t","toYellow","toCyan","yYellow","yCyan","toColor","tClamped","clamp","linearstep","num1","num2"],"sourceRoot":"../../../src","sources":["shaders/tgpuUtils.ts"],"mappings":"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","ignoreList":[]}
@@ -1,20 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  import { Dimensions } from 'react-native';
4
- export const createTexture = async (root, size) => {
5
- const texture = root['~unstable'].createTexture({
6
- size: [size.width, size.height],
7
- format: 'rgba8unorm'
8
- }).$usage('sampled', 'render');
9
- return texture;
10
- };
11
- export const loadTexture = async (root, imageBitmap, texture) => {
12
- root.device.queue.copyExternalImageToTexture({
13
- source: imageBitmap
14
- }, {
15
- texture: root.unwrap(texture)
16
- }, [imageBitmap.width, imageBitmap.height]);
17
- };
18
4
  export const rotateVectorByQuaternion = (vec, quaternion) => {
19
5
  'worklet';
20
6
 
@@ -28,38 +14,24 @@ export const rotateVectorByQuaternion = (vec, quaternion) => {
28
14
  const rotated = [vec[0] + 2.0 * crossQT2[0], vec[1] + 2.0 * crossQT2[1], vec[2] + 2.0 * crossQT2[2]];
29
15
  return [rotated[0], rotated[1], rotated[2]];
30
16
  };
31
- export const clamp = (v, min = -1, max = 1) => {
32
- 'worklet';
33
-
34
- return Math.max(min, Math.min(max, v));
35
- };
36
- export const rotate2D = ([x, y], angleDeg) => {
37
- 'worklet';
38
-
39
- const rad = angleDeg * Math.PI / 180;
40
- const c = Math.cos(rad);
41
- const s = Math.sin(rad);
42
- return [x * c - y * s, x * s + y * c];
43
- };
44
17
 
45
18
  // Simple helper to get angle from dimensions (0 or 90)
46
19
  export function getAngleFromDimensions() {
20
+ return 90 * Number(isLandscapeMode());
21
+ }
22
+ export function isLandscapeMode() {
47
23
  const {
48
24
  width,
49
25
  height
50
26
  } = Dimensions.get('window');
51
- return width >= height ? 90 : 0;
27
+ return width >= height;
52
28
  }
53
29
 
54
30
  // Subscribe to orientation change via Dimensions API only
55
31
  export function subscribeToOrientationChange(callback) {
56
- callback(getAngleFromDimensions());
57
- const handler = () => {
58
- callback(getAngleFromDimensions());
59
- };
60
- const dimSub = Dimensions.addEventListener('change', handler);
61
- return () => {
62
- dimSub.remove();
63
- };
32
+ const handler = () => callback(isLandscapeMode());
33
+ const subscription = Dimensions.addEventListener('change', handler);
34
+ handler();
35
+ return () => subscription.remove();
64
36
  }
65
37
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Dimensions","createTexture","root","size","texture","width","height","format","$usage","loadTexture","imageBitmap","device","queue","copyExternalImageToTexture","source","unwrap","rotateVectorByQuaternion","vec","quaternion","t","t2","crossQT2","rotated","clamp","v","min","max","Math","rotate2D","x","y","angleDeg","rad","PI","c","cos","s","sin","getAngleFromDimensions","get","subscribeToOrientationChange","callback","handler","dimSub","addEventListener","remove"],"sourceRoot":"../../../src","sources":["shaders/utils.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Dimensions","rotateVectorByQuaternion","vec","quaternion","t","t2","crossQT2","rotated","getAngleFromDimensions","Number","isLandscapeMode","width","height","get","subscribeToOrientationChange","callback","handler","subscription","addEventListener","remove"],"sourceRoot":"../../../src","sources":["shaders/utils.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AAGzC,OAAO,MAAMC,wBAAwB,GAAGA,CACtCC,GAAS,EACTC,UAAsB,KACb;EACT,SAAS;;EACT,MAAMC,CAAO,GAAG,CACdD,UAAU,CAAC,CAAC,CAAC,GAAGD,GAAG,CAAC,CAAC,CAAC,GAAGC,UAAU,CAAC,CAAC,CAAC,GAAGD,GAAG,CAAC,CAAC,CAAC,EAC/CC,UAAU,CAAC,CAAC,CAAC,GAAGD,GAAG,CAAC,CAAC,CAAC,GAAGC,UAAU,CAAC,CAAC,CAAC,GAAGD,GAAG,CAAC,CAAC,CAAC,EAC/CC,UAAU,CAAC,CAAC,CAAC,GAAGD,GAAG,CAAC,CAAC,CAAC,GAAGC,UAAU,CAAC,CAAC,CAAC,GAAGD,GAAG,CAAC,CAAC,CAAC,CAChD;;EAED;EACA,MAAMG,EAAQ,GAAG,CACfF,UAAU,CAAC,CAAC,CAAC,GAAGD,GAAG,CAAC,CAAC,CAAC,GAAGE,CAAC,CAAC,CAAC,CAAC,EAC7BD,UAAU,CAAC,CAAC,CAAC,GAAGD,GAAG,CAAC,CAAC,CAAC,GAAGE,CAAC,CAAC,CAAC,CAAC,EAC7BD,UAAU,CAAC,CAAC,CAAC,GAAGD,GAAG,CAAC,CAAC,CAAC,GAAGE,CAAC,CAAC,CAAC,CAAC,CAC9B;EAED,MAAME,QAAc,GAAG,CACrBH,UAAU,CAAC,CAAC,CAAC,GAAGE,EAAE,CAAC,CAAC,CAAC,GAAGF,UAAU,CAAC,CAAC,CAAC,GAAGE,EAAE,CAAC,CAAC,CAAC,EAC7CF,UAAU,CAAC,CAAC,CAAC,GAAGE,EAAE,CAAC,CAAC,CAAC,GAAGF,UAAU,CAAC,CAAC,CAAC,GAAGE,EAAE,CAAC,CAAC,CAAC,EAC7CF,UAAU,CAAC,CAAC,CAAC,GAAGE,EAAE,CAAC,CAAC,CAAC,GAAGF,UAAU,CAAC,CAAC,CAAC,GAAGE,EAAE,CAAC,CAAC,CAAC,CAC9C;;EAED;EACA,MAAME,OAAa,GAAG,CACpBL,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGI,QAAQ,CAAC,CAAC,CAAC,EAC1BJ,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGI,QAAQ,CAAC,CAAC,CAAC,EAC1BJ,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGI,QAAQ,CAAC,CAAC,CAAC,CAC3B;EAED,OAAO,CAACC,OAAO,CAAC,CAAC,CAAC,EAAEA,OAAO,CAAC,CAAC,CAAC,EAAEA,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;;AAED;AACA,OAAO,SAASC,sBAAsBA,CAAA,EAAG;EACvC,OAAO,EAAE,GAAGC,MAAM,CAACC,eAAe,CAAC,CAAC,CAAC;AACvC;AAEA,OAAO,SAASA,eAAeA,CAAA,EAAG;EAChC,MAAM;IAAEC,KAAK;IAAEC;EAAO,CAAC,GAAGZ,UAAU,CAACa,GAAG,CAAC,QAAQ,CAAC;EAElD,OAAOF,KAAK,IAAIC,MAAM;AACxB;;AAEA;AACA,OAAO,SAASE,4BAA4BA,CAC1CC,QAAwC,EACxC;EACA,MAAMC,OAAO,GAAGA,CAAA,KAAMD,QAAQ,CAACL,eAAe,CAAC,CAAC,CAAC;EACjD,MAAMO,YAAY,GAAGjB,UAAU,CAACkB,gBAAgB,CAAC,QAAQ,EAAEF,OAAO,CAAC;EAEnEA,OAAO,CAAC,CAAC;EAET,OAAO,MAAMC,YAAY,CAACE,MAAM,CAAC,CAAC;AACpC","ignoreList":[]}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ import tgpu from 'typegpu';
4
+ import * as std from 'typegpu/std';
5
+ import * as d from 'typegpu/data';
6
+ import { rotationBindGroupLayout } from "../bindGroupLayouts.js";
7
+ const mainRotationEffectVertex = tgpu['~unstable'].vertexFn({
8
+ in: {
9
+ vertexIndex: d.builtin.vertexIndex
10
+ },
11
+ out: {
12
+ position: d.builtin.position,
13
+ uv: d.vec2f
14
+ }
15
+ })(input => {
16
+ const rot = rotationBindGroupLayout.$.vec;
17
+
18
+ // Maximum rotation angles in radians
19
+ const maxAngle = d.f32(25.0 * Math.PI / 180.0);
20
+ const ax = d.f32(-rot.y * maxAngle); // rotateX depends on vertical touch
21
+ const ay = d.f32(-rot.x * 1.0); // rotateY depends on horizontal touch
22
+
23
+ const positions = [d.vec2f(-1.0, -1.0), d.vec2f(1.0, 1.0), d.vec2f(1.0, -1.0), d.vec2f(-1.0, -1.0), d.vec2f(-1.0, 1.0), d.vec2f(1.0, 1.0)];
24
+ const uvs = [d.vec2f(0.0, 0.0), d.vec2f(1.0, 1.0), d.vec2f(1.0, 0.0), d.vec2f(0.0, 0.0), d.vec2f(0.0, 1.0), d.vec2f(1.0, 1.0)];
25
+ const index = input.vertexIndex;
26
+ const pos = d.vec3f(positions[index], 0.0);
27
+ const pivot = d.vec3f(rot.x, rot.y, 0.0);
28
+ const relative = std.sub(pos, pivot);
29
+ const cosX = std.cos(ax);
30
+ const sinX = std.sin(ax);
31
+ const rotatedX = d.vec3f(relative.x, cosX * relative.y - sinX * relative.z, sinX * relative.y + cosX * relative.z);
32
+ const cosY = std.cos(ay);
33
+ const sinY = std.sin(ay);
34
+ const rotatedXY = d.vec3f(cosY * rotatedX.x + sinY * rotatedX.z, rotatedX.y, -sinY * rotatedX.x + cosY * rotatedX.z);
35
+ const finalPos3D = std.add(rotatedXY, pivot);
36
+ const perspective = 100.0;
37
+ const zOffset = 2.5;
38
+ const z = finalPos3D.z + zOffset;
39
+ const persp = perspective / (perspective + z);
40
+ const finalPos = d.vec4f(finalPos3D.x * persp, finalPos3D.y * persp, 0.0, 1.0);
41
+ return {
42
+ position: finalPos,
43
+ uv: uvs[index]
44
+ };
45
+ });
46
+ export default mainRotationEffectVertex;
47
+ //# sourceMappingURL=mainRotationEffectVertex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["tgpu","std","d","rotationBindGroupLayout","mainRotationEffectVertex","vertexFn","in","vertexIndex","builtin","out","position","uv","vec2f","input","rot","$","vec","maxAngle","f32","Math","PI","ax","y","ay","x","positions","uvs","index","pos","vec3f","pivot","relative","sub","cosX","cos","sinX","sin","rotatedX","z","cosY","sinY","rotatedXY","finalPos3D","add","perspective","zOffset","persp","finalPos","vec4f"],"sourceRoot":"../../../../src","sources":["shaders/vertexShaders/mainRotationEffectVertex.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=size.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/size.ts"],"mappings":"","ignoreList":[]}
@@ -2,24 +2,25 @@
2
2
 
3
3
  import { f32, vec2f, vec3f, vec4f } from 'typegpu/data';
4
4
  import { div } from 'typegpu/std';
5
- export const createBloomOptions = options => {
5
+ import { WAVE_CALLBACKS } from "../enums/waveCallback.js";
6
+ export const createGlareOptions = options => {
6
7
  const {
7
8
  glowPower,
8
9
  hueShiftAngleMax,
9
10
  hueShiftAngleMin,
10
11
  hueBlendPower,
11
12
  lightIntensity,
12
- bloomIntensity
13
+ glareIntensity
13
14
  } = options;
14
- const bloomOp = {
15
+ const glareOp = {
15
16
  glowPower: glowPower ?? 1.0,
16
17
  hueShiftAngleMax: hueShiftAngleMax ?? 1.0,
17
18
  hueShiftAngleMin: hueShiftAngleMin ?? 0.0,
18
19
  hueBlendPower: hueBlendPower ?? 1.0,
19
20
  lightIntensity: lightIntensity ?? 1.0,
20
- bloomIntensity: bloomIntensity ?? 1.0
21
+ glareIntensity: glareIntensity ?? 1.0
21
22
  };
22
- return bloomOp;
23
+ return glareOp;
23
24
  };
24
25
  export const mapToF32 = obj => {
25
26
  const result = {};
@@ -57,6 +58,17 @@ export const colorMaskToTyped = colorMask => {
57
58
  };
58
59
  return result;
59
60
  };
61
+ export const createHoloOptions = options => {
62
+ const {
63
+ intensity,
64
+ waveCallback
65
+ } = options;
66
+ const holoOpt = {
67
+ intensity: intensity ?? 0.7,
68
+ waveCallback: waveCallback ?? WAVE_CALLBACKS.default
69
+ };
70
+ return holoOpt;
71
+ };
60
72
  export const numberArrToTyped = vec => {
61
73
  let convFn = null;
62
74
  switch (vec.length) {
@@ -75,18 +87,4 @@ export const numberArrToTyped = vec => {
75
87
  const typed = convFn(...vec);
76
88
  return typed;
77
89
  };
78
- export const createBindGroupPair = (bindGroupLayout, bindGroup) => {
79
- return {
80
- layout: bindGroupLayout,
81
- group: bindGroup
82
- };
83
- };
84
- export const createBindGroupPairs = (bindGroupLayouts, bindGroups) => {
85
- if (bindGroupLayouts.length > 0 && bindGroupLayouts.length !== bindGroups.length) throw new Error('createBindGroups: bindGroupLayout and bindGroup arrrays must be of the same length');
86
- const pairs = [];
87
- for (let i = 0; i < bindGroupLayouts.length; i++) {
88
- pairs.push(createBindGroupPair(bindGroupLayouts[i], bindGroups[i]));
89
- }
90
- return pairs;
91
- };
92
90
  //# sourceMappingURL=typeUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["f32","vec2f","vec3f","vec4f","div","createBloomOptions","options","glowPower","hueShiftAngleMax","hueShiftAngleMin","hueBlendPower","lightIntensity","bloomIntensity","bloomOp","mapToF32","obj","result","key","createColorMask","colorMask","baseColor","rgbToleranceRange","baseTolerance","upper","lower","tolerance","mask","colorMaskToTyped","numberArrToTyped","vec","convFn","length","Error","typed","createBindGroupPair","bindGroupLayout","bindGroup","layout","group","createBindGroupPairs","bindGroupLayouts","bindGroups","pairs","i","push"],"sourceRoot":"../../../src","sources":["types/typeUtils.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["f32","vec2f","vec3f","vec4f","div","WAVE_CALLBACKS","createGlareOptions","options","glowPower","hueShiftAngleMax","hueShiftAngleMin","hueBlendPower","lightIntensity","glareIntensity","glareOp","mapToF32","obj","result","key","createColorMask","colorMask","baseColor","rgbToleranceRange","baseTolerance","upper","lower","tolerance","mask","colorMaskToTyped","numberArrToTyped","createHoloOptions","intensity","waveCallback","holoOpt","default","vec","convFn","length","Error","typed"],"sourceRoot":"../../../src","sources":["types/typeUtils.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=vector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/vector.ts"],"mappings":"","ignoreList":[]}