react-native-shine 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/module/components/Content.js +126 -135
- package/lib/module/components/Content.js.map +1 -1
- package/lib/module/components/Shine.js +22 -3
- package/lib/module/components/Shine.js.map +1 -1
- package/lib/module/components/ShineGroup.js +0 -4
- package/lib/module/components/ShineGroup.js.map +1 -1
- package/lib/module/enums/colorPresets.js +192 -0
- package/lib/module/enums/colorPresets.js.map +1 -1
- package/lib/module/enums/effectDefaults.js +59 -0
- package/lib/module/enums/effectDefaults.js.map +1 -0
- package/lib/module/enums/effectPresets.js +67 -10
- package/lib/module/enums/effectPresets.js.map +1 -1
- package/lib/module/shaders/bindGroupLayouts.js +50 -27
- package/lib/module/shaders/bindGroupLayouts.js.map +1 -1
- package/lib/module/shaders/bindGroupUtils.js +30 -44
- package/lib/module/shaders/bindGroupUtils.js.map +1 -1
- package/lib/module/shaders/colorConversions.js +78 -0
- package/lib/module/shaders/colorConversions.js.map +1 -0
- package/lib/module/shaders/computeShaders/precomputeColorMask.js +34 -0
- package/lib/module/shaders/computeShaders/precomputeColorMask.js.map +1 -0
- package/lib/module/shaders/fragmentShaders/baseTextureFragment.js +4 -9
- package/lib/module/shaders/fragmentShaders/baseTextureFragment.js.map +1 -1
- package/lib/module/shaders/fragmentShaders/colorMaskFragment.js +28 -41
- package/lib/module/shaders/fragmentShaders/colorMaskFragment.js.map +1 -1
- package/lib/module/shaders/fragmentShaders/glareFlareFragment.js +84 -0
- package/lib/module/shaders/fragmentShaders/glareFlareFragment.js.map +1 -0
- package/lib/module/shaders/fragmentShaders/glareFragment.js +8 -88
- package/lib/module/shaders/fragmentShaders/glareFragment.js.map +1 -1
- package/lib/module/shaders/fragmentShaders/holoFragment.js +120 -11
- package/lib/module/shaders/fragmentShaders/holoFragment.js.map +1 -1
- package/lib/module/shaders/fragmentShaders/maskFragment.js +5 -4
- package/lib/module/shaders/fragmentShaders/maskFragment.js.map +1 -1
- package/lib/module/shaders/fragmentShaders/reverseHoloFragment.js +7 -7
- package/lib/module/shaders/fragmentShaders/reverseHoloFragment.js.map +1 -1
- package/lib/module/shaders/pipelineSetups.js +5 -62
- package/lib/module/shaders/pipelineSetups.js.map +1 -1
- package/lib/module/shaders/resourceManagement/bufferManager.js.map +1 -1
- package/lib/module/shaders/resourceManagement/buffersMap.js +41 -0
- package/lib/module/shaders/resourceManagement/buffersMap.js.map +1 -0
- package/lib/module/shaders/resourceManagement/pipelineMap.js +115 -0
- package/lib/module/shaders/resourceManagement/pipelineMap.js.map +1 -0
- package/lib/module/shaders/resourceManagement/textures.js +2 -2
- package/lib/module/shaders/resourceManagement/textures.js.map +1 -1
- package/lib/module/shaders/tgpuUtils.js +41 -0
- package/lib/module/shaders/tgpuUtils.js.map +1 -1
- package/lib/module/shaders/utils.js +21 -2
- package/lib/module/shaders/utils.js.map +1 -1
- package/lib/module/shaders/vertexShaders/mainRotationEffectVertex.js +4 -4
- package/lib/module/shaders/vertexShaders/mainRotationEffectVertex.js.map +1 -1
- package/lib/module/types/typeUtils.js +29 -159
- package/lib/module/types/typeUtils.js.map +1 -1
- package/lib/module/types/types.js +8 -1
- package/lib/module/types/types.js.map +1 -1
- package/lib/module/utils/size.js +4 -4
- package/lib/module/utils/vector.js +38 -38
- package/lib/typescript/src/components/Content.d.ts +6 -6
- package/lib/typescript/src/components/Content.d.ts.map +1 -1
- package/lib/typescript/src/components/Shine.d.ts.map +1 -1
- package/lib/typescript/src/components/ShineGroup.d.ts +1 -1
- package/lib/typescript/src/components/ShineGroup.d.ts.map +1 -1
- package/lib/typescript/src/enums/colorPresets.d.ts +152 -0
- package/lib/typescript/src/enums/colorPresets.d.ts.map +1 -1
- package/lib/typescript/src/enums/effectDefaults.d.ts +39 -0
- package/lib/typescript/src/enums/effectDefaults.d.ts.map +1 -0
- package/lib/typescript/src/enums/effectPresets.d.ts +284 -5
- package/lib/typescript/src/enums/effectPresets.d.ts.map +1 -1
- package/lib/typescript/src/shaders/bindGroupLayouts.d.ts +82 -41
- package/lib/typescript/src/shaders/bindGroupLayouts.d.ts.map +1 -1
- package/lib/typescript/src/shaders/bindGroupUtils.d.ts +86 -70
- package/lib/typescript/src/shaders/bindGroupUtils.d.ts.map +1 -1
- package/lib/typescript/src/shaders/colorConversions.d.ts +4 -0
- package/lib/typescript/src/shaders/colorConversions.d.ts.map +1 -0
- package/lib/typescript/src/shaders/computeShaders/precomputeColorMask.d.ts +5 -0
- package/lib/typescript/src/shaders/computeShaders/precomputeColorMask.d.ts.map +1 -0
- package/lib/typescript/src/shaders/fragmentShaders/baseTextureFragment.d.ts.map +1 -1
- package/lib/typescript/src/shaders/fragmentShaders/colorMaskFragment.d.ts.map +1 -1
- package/lib/typescript/src/shaders/fragmentShaders/glareFlareFragment.d.ts +5 -0
- package/lib/typescript/src/shaders/fragmentShaders/glareFlareFragment.d.ts.map +1 -0
- package/lib/typescript/src/shaders/fragmentShaders/glareFragment.d.ts +0 -3
- package/lib/typescript/src/shaders/fragmentShaders/glareFragment.d.ts.map +1 -1
- package/lib/typescript/src/shaders/fragmentShaders/holoFragment.d.ts +7 -0
- package/lib/typescript/src/shaders/fragmentShaders/holoFragment.d.ts.map +1 -1
- package/lib/typescript/src/shaders/fragmentShaders/maskFragment.d.ts.map +1 -1
- package/lib/typescript/src/shaders/fragmentShaders/reverseHoloFragment.d.ts.map +1 -1
- package/lib/typescript/src/shaders/pipelineSetups.d.ts +3 -10
- package/lib/typescript/src/shaders/pipelineSetups.d.ts.map +1 -1
- package/lib/typescript/src/shaders/resourceManagement/bufferManager.d.ts +5 -3
- package/lib/typescript/src/shaders/resourceManagement/bufferManager.d.ts.map +1 -1
- package/lib/typescript/src/shaders/resourceManagement/buffersMap.d.ts +10 -0
- package/lib/typescript/src/shaders/resourceManagement/buffersMap.d.ts.map +1 -0
- package/lib/typescript/src/shaders/resourceManagement/pipelineMap.d.ts +24 -0
- package/lib/typescript/src/shaders/resourceManagement/pipelineMap.d.ts.map +1 -0
- package/lib/typescript/src/shaders/resourceManagement/textures.d.ts +0 -1
- package/lib/typescript/src/shaders/resourceManagement/textures.d.ts.map +1 -1
- package/lib/typescript/src/shaders/tgpuUtils.d.ts +3 -0
- package/lib/typescript/src/shaders/tgpuUtils.d.ts.map +1 -1
- package/lib/typescript/src/shaders/utils.d.ts +1 -0
- package/lib/typescript/src/shaders/utils.d.ts.map +1 -1
- package/lib/typescript/src/types/typeUtils.d.ts +16 -51
- package/lib/typescript/src/types/typeUtils.d.ts.map +1 -1
- package/lib/typescript/src/types/types.d.ts +59 -54
- package/lib/typescript/src/types/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/Content.tsx +130 -269
- package/src/components/Shine.tsx +28 -3
- package/src/components/ShineGroup.tsx +0 -4
- package/src/enums/colorPresets.ts +59 -1
- package/src/enums/effectDefaults.ts +57 -0
- package/src/enums/effectPresets.ts +142 -9
- package/src/shaders/bindGroupLayouts.ts +64 -28
- package/src/shaders/bindGroupUtils.ts +66 -69
- package/src/shaders/colorConversions.ts +88 -0
- package/src/shaders/computeShaders/precomputeColorMask.ts +29 -0
- package/src/shaders/fragmentShaders/baseTextureFragment.ts +2 -10
- package/src/shaders/fragmentShaders/colorMaskFragment.ts +34 -55
- package/src/shaders/fragmentShaders/glareFlareFragment.ts +79 -0
- package/src/shaders/fragmentShaders/glareFragment.ts +9 -84
- package/src/shaders/fragmentShaders/holoFragment.ts +139 -11
- package/src/shaders/fragmentShaders/maskFragment.ts +3 -9
- package/src/shaders/fragmentShaders/reverseHoloFragment.ts +4 -9
- package/src/shaders/pipelineSetups.ts +16 -125
- package/src/shaders/resourceManagement/bufferManager.ts +8 -3
- package/src/shaders/resourceManagement/buffersMap.ts +80 -0
- package/src/shaders/resourceManagement/pipelineMap.ts +169 -0
- package/src/shaders/resourceManagement/textures.ts +2 -2
- package/src/shaders/tgpuUtils.ts +29 -0
- package/src/shaders/utils.ts +29 -0
- package/src/shaders/vertexShaders/mainRotationEffectVertex.ts +2 -2
- package/src/types/typeUtils.ts +53 -164
- package/src/types/types.ts +111 -60
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import tgpu from 'typegpu';
|
|
4
|
+
import * as std from 'typegpu/std';
|
|
5
|
+
import * as d from 'typegpu/data';
|
|
6
|
+
// branchless implementation
|
|
7
|
+
export const RGBToHSL = (globalThis.__TYPEGPU_AUTONAME__ ?? (a => a))(tgpu.fn([d.vec3f], d.vec3f)(($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = rgb => {
|
|
8
|
+
const chroma_max = std.max(rgb.x, std.max(rgb.y, rgb.z));
|
|
9
|
+
const chroma_min = std.min(rgb.x, std.min(rgb.y, rgb.z));
|
|
10
|
+
const chroma = chroma_max - chroma_min;
|
|
11
|
+
const lightness = (chroma_max + chroma_min) / 2.0;
|
|
12
|
+
const safe_chroma = chroma + d.f32(chroma === 0.0);
|
|
13
|
+
const saturation_denomitator = 1.0 - std.abs(2.0 * lightness - 1.0);
|
|
14
|
+
const safe_saturation_denominator = saturation_denomitator + d.f32(saturation_denomitator === 0.0);
|
|
15
|
+
const safe_saturation = chroma / safe_saturation_denominator;
|
|
16
|
+
const hue_red = (rgb.y - rgb.z) / safe_chroma % 6;
|
|
17
|
+
const hue_green = (rgb.z - rgb.x) / safe_chroma + 2.0;
|
|
18
|
+
const hue_blue = (rgb.x - rgb.y) / safe_chroma + 4.0;
|
|
19
|
+
let hue_prime = hue_red;
|
|
20
|
+
hue_prime = std.select(hue_prime, hue_green, chroma_max === rgb.y);
|
|
21
|
+
hue_prime = std.select(hue_prime, hue_blue, chroma_max === rgb.z);
|
|
22
|
+
hue_prime = std.select(hue_prime, hue_prime + 6, hue_prime < 0);
|
|
23
|
+
const safe_hue = hue_prime * 60;
|
|
24
|
+
const hue = std.select(0.0, safe_hue, chroma !== 0);
|
|
25
|
+
return d.vec3f(hue, safe_saturation, lightness);
|
|
26
|
+
}, {
|
|
27
|
+
v: 1,
|
|
28
|
+
name: void 0,
|
|
29
|
+
ast: {"params":[{"type":"i","name":"rgb"}],"body":[0,[[13,"chroma_max",[6,[7,"std","max"],[[7,"rgb","x"],[6,[7,"std","max"],[[7,"rgb","y"],[7,"rgb","z"]]]]]],[13,"chroma_min",[6,[7,"std","min"],[[7,"rgb","x"],[6,[7,"std","min"],[[7,"rgb","y"],[7,"rgb","z"]]]]]],[13,"chroma",[1,"chroma_max","-","chroma_min"]],[13,"lightness",[1,[1,"chroma_max","+","chroma_min"],"/",[5,"2"]]],[13,"safe_chroma",[1,"chroma","+",[6,[7,"d","f32"],[[1,"chroma","==",[5,"0"]]]]]],[13,"saturation_denomitator",[1,[5,"1"],"-",[6,[7,"std","abs"],[[1,[1,[5,"2"],"*","lightness"],"-",[5,"1"]]]]]],[13,"safe_saturation_denominator",[1,"saturation_denomitator","+",[6,[7,"d","f32"],[[1,"saturation_denomitator","==",[5,"0"]]]]]],[13,"safe_saturation",[1,"chroma","/","safe_saturation_denominator"]],[13,"hue_red",[1,[1,[1,[7,"rgb","y"],"-",[7,"rgb","z"]],"/","safe_chroma"],"%",[5,"6"]]],[13,"hue_green",[1,[1,[1,[7,"rgb","z"],"-",[7,"rgb","x"]],"/","safe_chroma"],"+",[5,"2"]]],[13,"hue_blue",[1,[1,[1,[7,"rgb","x"],"-",[7,"rgb","y"]],"/","safe_chroma"],"+",[5,"4"]]],[12,"hue_prime","hue_red"],[2,"hue_prime","=",[6,[7,"std","select"],["hue_prime","hue_green",[1,"chroma_max","==",[7,"rgb","y"]]]]],[2,"hue_prime","=",[6,[7,"std","select"],["hue_prime","hue_blue",[1,"chroma_max","==",[7,"rgb","z"]]]]],[2,"hue_prime","=",[6,[7,"std","select"],["hue_prime",[1,"hue_prime","+",[5,"6"]],[1,"hue_prime","<",[5,"0"]]]]],[13,"safe_hue",[1,"hue_prime","*",[5,"60"]]],[13,"hue",[6,[7,"std","select"],[[5,"0"],"safe_hue",[1,"chroma","!=",[5,"0"]]]]],[10,[6,[7,"d","vec3f"],["hue","safe_saturation","lightness"]]]]],"externalNames":["std","d"]},
|
|
30
|
+
get externals() {
|
|
31
|
+
return {
|
|
32
|
+
std,
|
|
33
|
+
d
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}) && $.f)({})), "RGBToHSL");
|
|
37
|
+
export const HSLToRGB = (globalThis.__TYPEGPU_AUTONAME__ ?? (a => a))(tgpu.fn([d.vec3f], d.vec3f)(($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = rgb => {
|
|
38
|
+
// Your HSL values
|
|
39
|
+
const h = rgb.x;
|
|
40
|
+
const s = rgb.y;
|
|
41
|
+
const l = rgb.z;
|
|
42
|
+
// 1. Calculate Chroma (c)
|
|
43
|
+
let c = (1.0 - std.abs(2.0 * l - 1.0)) * s;
|
|
44
|
+
|
|
45
|
+
// 2. Calculate H_prime (H') and the intermediate value (x)
|
|
46
|
+
// H' is H mapped to a 0.0-6.0 range
|
|
47
|
+
let h_prime = h / 60.0 % 6.0;
|
|
48
|
+
let x = c * (1.0 - std.abs(h_prime % 2.0 - 1.0));
|
|
49
|
+
|
|
50
|
+
// 3. Get the integer "sector" (0-5)
|
|
51
|
+
let i = std.floor(h_prime);
|
|
52
|
+
|
|
53
|
+
// 4. Find the (r', g', b') triplet using a branchless switch.
|
|
54
|
+
// We multiply each possible triplet by 1.0 if it's the right
|
|
55
|
+
// sector, or 0.0 if not, then add them all together.
|
|
56
|
+
let rgb_prime = d.vec3f(0.0);
|
|
57
|
+
rgb_prime = std.add(rgb_prime, std.mix(d.vec3f(), d.vec3f(c, x, 0.0), d.f32(i === 0.0)));
|
|
58
|
+
rgb_prime = std.add(rgb_prime, std.mix(d.vec3f(), d.vec3f(x, c, 0.0), d.f32(i === 1.0)));
|
|
59
|
+
rgb_prime = std.add(rgb_prime, std.mix(d.vec3f(), d.vec3f(0, c, x), d.f32(i === 2.0)));
|
|
60
|
+
rgb_prime = std.add(rgb_prime, std.mix(d.vec3f(), d.vec3f(0, x, c), d.f32(i === 3.0)));
|
|
61
|
+
rgb_prime = std.add(rgb_prime, std.mix(d.vec3f(), d.vec3f(x, 0, c), d.f32(i === 4.0)));
|
|
62
|
+
rgb_prime = std.add(rgb_prime, std.mix(d.vec3f(), d.vec3f(c, 0, x), d.f32(i === 5.0)));
|
|
63
|
+
|
|
64
|
+
// 5. Calculate the lightness offset (m) and add it to all components
|
|
65
|
+
let m = l - c / 2.0;
|
|
66
|
+
return std.add(rgb_prime, d.vec3f(m));
|
|
67
|
+
}, {
|
|
68
|
+
v: 1,
|
|
69
|
+
name: void 0,
|
|
70
|
+
ast: {"params":[{"type":"i","name":"rgb"}],"body":[0,[[13,"h",[7,"rgb","x"]],[13,"s",[7,"rgb","y"]],[13,"l",[7,"rgb","z"]],[12,"c",[1,[1,[5,"1"],"-",[6,[7,"std","abs"],[[1,[1,[5,"2"],"*","l"],"-",[5,"1"]]]]],"*","s"]],[12,"h_prime",[1,[1,"h","/",[5,"60"]],"%",[5,"6"]]],[12,"x",[1,"c","*",[1,[5,"1"],"-",[6,[7,"std","abs"],[[1,[1,"h_prime","%",[5,"2"]],"-",[5,"1"]]]]]]],[12,"i",[6,[7,"std","floor"],["h_prime"]]],[12,"rgb_prime",[6,[7,"d","vec3f"],[[5,"0"]]]],[2,"rgb_prime","=",[6,[7,"std","add"],["rgb_prime",[6,[7,"std","mix"],[[6,[7,"d","vec3f"],[]],[6,[7,"d","vec3f"],["c","x",[5,"0"]]],[6,[7,"d","f32"],[[1,"i","==",[5,"0"]]]]]]]]],[2,"rgb_prime","=",[6,[7,"std","add"],["rgb_prime",[6,[7,"std","mix"],[[6,[7,"d","vec3f"],[]],[6,[7,"d","vec3f"],["x","c",[5,"0"]]],[6,[7,"d","f32"],[[1,"i","==",[5,"1"]]]]]]]]],[2,"rgb_prime","=",[6,[7,"std","add"],["rgb_prime",[6,[7,"std","mix"],[[6,[7,"d","vec3f"],[]],[6,[7,"d","vec3f"],[[5,"0"],"c","x"]],[6,[7,"d","f32"],[[1,"i","==",[5,"2"]]]]]]]]],[2,"rgb_prime","=",[6,[7,"std","add"],["rgb_prime",[6,[7,"std","mix"],[[6,[7,"d","vec3f"],[]],[6,[7,"d","vec3f"],[[5,"0"],"x","c"]],[6,[7,"d","f32"],[[1,"i","==",[5,"3"]]]]]]]]],[2,"rgb_prime","=",[6,[7,"std","add"],["rgb_prime",[6,[7,"std","mix"],[[6,[7,"d","vec3f"],[]],[6,[7,"d","vec3f"],["x",[5,"0"],"c"]],[6,[7,"d","f32"],[[1,"i","==",[5,"4"]]]]]]]]],[2,"rgb_prime","=",[6,[7,"std","add"],["rgb_prime",[6,[7,"std","mix"],[[6,[7,"d","vec3f"],[]],[6,[7,"d","vec3f"],["c",[5,"0"],"x"]],[6,[7,"d","f32"],[[1,"i","==",[5,"5"]]]]]]]]],[12,"m",[1,"l","-",[1,"c","/",[5,"2"]]]],[10,[6,[7,"std","add"],["rgb_prime",[6,[7,"d","vec3f"],["m"]]]]]]],"externalNames":["std","d"]},
|
|
71
|
+
get externals() {
|
|
72
|
+
return {
|
|
73
|
+
std,
|
|
74
|
+
d
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}) && $.f)({})), "HSLToRGB");
|
|
78
|
+
//# sourceMappingURL=colorConversions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["tgpu","std","d","RGBToHSL","globalThis","__TYPEGPU_AUTONAME__","a","fn","vec3f","$","__TYPEGPU_META__","WeakMap","set","f","rgb","chroma_max","max","x","y","z","chroma_min","min","chroma","lightness","safe_chroma","f32","saturation_denomitator","abs","safe_saturation_denominator","safe_saturation","hue_red","hue_green","hue_blue","hue_prime","select","safe_hue","hue","v","name","ast","{\"params\":[{\"type\":\"i\",\"name\":\"rgb\"}],\"body\":[0,[[13,\"chroma_max\",[6,[7,\"std\",\"max\"],[[7,\"rgb\",\"x\"],[6,[7,\"std\",\"max\"],[[7,\"rgb\",\"y\"],[7,\"rgb\",\"z\"]]]]]],[13,\"chroma_min\",[6,[7,\"std\",\"min\"],[[7,\"rgb\",\"x\"],[6,[7,\"std\",\"min\"],[[7,\"rgb\",\"y\"],[7,\"rgb\",\"z\"]]]]]],[13,\"chroma\",[1,\"chroma_max\",\"-\",\"chroma_min\"]],[13,\"lightness\",[1,[1,\"chroma_max\",\"+\",\"chroma_min\"],\"/\",[5,\"2\"]]],[13,\"safe_chroma\",[1,\"chroma\",\"+\",[6,[7,\"d\",\"f32\"],[[1,\"chroma\",\"==\",[5,\"0\"]]]]]],[13,\"saturation_denomitator\",[1,[5,\"1\"],\"-\",[6,[7,\"std\",\"abs\"],[[1,[1,[5,\"2\"],\"*\",\"lightness\"],\"-\",[5,\"1\"]]]]]],[13,\"safe_saturation_denominator\",[1,\"saturation_denomitator\",\"+\",[6,[7,\"d\",\"f32\"],[[1,\"saturation_denomitator\",\"==\",[5,\"0\"]]]]]],[13,\"safe_saturation\",[1,\"chroma\",\"/\",\"safe_saturation_denominator\"]],[13,\"hue_red\",[1,[1,[1,[7,\"rgb\",\"y\"],\"-\",[7,\"rgb\",\"z\"]],\"/\",\"safe_chroma\"],\"%\",[5,\"6\"]]],[13,\"hue_green\",[1,[1,[1,[7,\"rgb\",\"z\"],\"-\",[7,\"rgb\",\"x\"]],\"/\",\"safe_chroma\"],\"+\",[5,\"2\"]]],[13,\"hue_blue\",[1,[1,[1,[7,\"rgb\",\"x\"],\"-\",[7,\"rgb\",\"y\"]],\"/\",\"safe_chroma\"],\"+\",[5,\"4\"]]],[12,\"hue_prime\",\"hue_red\"],[2,\"hue_prime\",\"=\",[6,[7,\"std\",\"select\"],[\"hue_prime\",\"hue_green\",[1,\"chroma_max\",\"==\",[7,\"rgb\",\"y\"]]]]],[2,\"hue_prime\",\"=\",[6,[7,\"std\",\"select\"],[\"hue_prime\",\"hue_blue\",[1,\"chroma_max\",\"==\",[7,\"rgb\",\"z\"]]]]],[2,\"hue_prime\",\"=\",[6,[7,\"std\",\"select\"],[\"hue_prime\",[1,\"hue_prime\",\"+\",[5,\"6\"]],[1,\"hue_prime\",\"<\",[5,\"0\"]]]]],[13,\"safe_hue\",[1,\"hue_prime\",\"*\",[5,\"60\"]]],[13,\"hue\",[6,[7,\"std\",\"select\"],[[5,\"0\"],\"safe_hue\",[1,\"chroma\",\"!=\",[5,\"0\"]]]]],[10,[6,[7,\"d\",\"vec3f\"],[\"hue\",\"safe_saturation\",\"lightness\"]]]]],\"externalNames\":[\"std\",\"d\"]}","externals","HSLToRGB","h","s","l","c","h_prime","i","floor","rgb_prime","add","mix","m","{\"params\":[{\"type\":\"i\",\"name\":\"rgb\"}],\"body\":[0,[[13,\"h\",[7,\"rgb\",\"x\"]],[13,\"s\",[7,\"rgb\",\"y\"]],[13,\"l\",[7,\"rgb\",\"z\"]],[12,\"c\",[1,[1,[5,\"1\"],\"-\",[6,[7,\"std\",\"abs\"],[[1,[1,[5,\"2\"],\"*\",\"l\"],\"-\",[5,\"1\"]]]]],\"*\",\"s\"]],[12,\"h_prime\",[1,[1,\"h\",\"/\",[5,\"60\"]],\"%\",[5,\"6\"]]],[12,\"x\",[1,\"c\",\"*\",[1,[5,\"1\"],\"-\",[6,[7,\"std\",\"abs\"],[[1,[1,\"h_prime\",\"%\",[5,\"2\"]],\"-\",[5,\"1\"]]]]]]],[12,\"i\",[6,[7,\"std\",\"floor\"],[\"h_prime\"]]],[12,\"rgb_prime\",[6,[7,\"d\",\"vec3f\"],[[5,\"0\"]]]],[2,\"rgb_prime\",\"=\",[6,[7,\"std\",\"add\"],[\"rgb_prime\",[6,[7,\"std\",\"mix\"],[[6,[7,\"d\",\"vec3f\"],[]],[6,[7,\"d\",\"vec3f\"],[\"c\",\"x\",[5,\"0\"]]],[6,[7,\"d\",\"f32\"],[[1,\"i\",\"==\",[5,\"0\"]]]]]]]]],[2,\"rgb_prime\",\"=\",[6,[7,\"std\",\"add\"],[\"rgb_prime\",[6,[7,\"std\",\"mix\"],[[6,[7,\"d\",\"vec3f\"],[]],[6,[7,\"d\",\"vec3f\"],[\"x\",\"c\",[5,\"0\"]]],[6,[7,\"d\",\"f32\"],[[1,\"i\",\"==\",[5,\"1\"]]]]]]]]],[2,\"rgb_prime\",\"=\",[6,[7,\"std\",\"add\"],[\"rgb_prime\",[6,[7,\"std\",\"mix\"],[[6,[7,\"d\",\"vec3f\"],[]],[6,[7,\"d\",\"vec3f\"],[[5,\"0\"],\"c\",\"x\"]],[6,[7,\"d\",\"f32\"],[[1,\"i\",\"==\",[5,\"2\"]]]]]]]]],[2,\"rgb_prime\",\"=\",[6,[7,\"std\",\"add\"],[\"rgb_prime\",[6,[7,\"std\",\"mix\"],[[6,[7,\"d\",\"vec3f\"],[]],[6,[7,\"d\",\"vec3f\"],[[5,\"0\"],\"x\",\"c\"]],[6,[7,\"d\",\"f32\"],[[1,\"i\",\"==\",[5,\"3\"]]]]]]]]],[2,\"rgb_prime\",\"=\",[6,[7,\"std\",\"add\"],[\"rgb_prime\",[6,[7,\"std\",\"mix\"],[[6,[7,\"d\",\"vec3f\"],[]],[6,[7,\"d\",\"vec3f\"],[\"x\",[5,\"0\"],\"c\"]],[6,[7,\"d\",\"f32\"],[[1,\"i\",\"==\",[5,\"4\"]]]]]]]]],[2,\"rgb_prime\",\"=\",[6,[7,\"std\",\"add\"],[\"rgb_prime\",[6,[7,\"std\",\"mix\"],[[6,[7,\"d\",\"vec3f\"],[]],[6,[7,\"d\",\"vec3f\"],[\"c\",[5,\"0\"],\"x\"]],[6,[7,\"d\",\"f32\"],[[1,\"i\",\"==\",[5,\"5\"]]]]]]]]],[12,\"m\",[1,\"l\",\"-\",[1,\"c\",\"/\",[5,\"2\"]]]],[10,[6,[7,\"std\",\"add\"],[\"rgb_prime\",[6,[7,\"d\",\"vec3f\"],[\"m\"]]]]]]],\"externalNames\":[\"std\",\"d\"]}"],"sourceRoot":"../../../src","sources":["shaders/colorConversions.ts"],"mappings":";;AAAA,OAAOA,IAAI,MAAM,SAAS;AAC1B,OAAO,KAAKC,GAAG,MAAM,aAAa;AAClC,OAAO,KAAKC,CAAC,MAAM,cAAc;AACjC;AACA,OAAO,MAAMC,QAAQ,IAAAC,UAAA,CAAAC,oBAAA,KAAAC,CAAA,IAAAA,CAAA,GAAGN,IAAI,CAACO,EAAE,CAC7B,CAACL,CAAC,CAACM,KAAK,CAAC,EACTN,CAAC,CAACM,KACJ,CAAC,EAAAC,CAAA,KAAAL,UAAA,CAAAM,gBAAA,SAAAC,OAAA,IAAAC,GAAA,CAAAH,CAAA,CAAAI,CAAA,GAAEC,GAAG,IAAK;EACT,MAAMC,UAAU,GAAGd,GAAG,CAACe,GAAG,CAACF,GAAG,CAACG,CAAC,EAAEhB,GAAG,CAACe,GAAG,CAACF,GAAG,CAACI,CAAC,EAAEJ,GAAG,CAACK,CAAC,CAAC,CAAC;EACxD,MAAMC,UAAU,GAAGnB,GAAG,CAACoB,GAAG,CAACP,GAAG,CAACG,CAAC,EAAEhB,GAAG,CAACoB,GAAG,CAACP,GAAG,CAACI,CAAC,EAAEJ,GAAG,CAACK,CAAC,CAAC,CAAC;EACxD,MAAMG,MAAM,GAAGP,UAAU,GAAGK,UAAU;EACtC,MAAMG,SAAS,GAAG,CAACR,UAAU,GAAGK,UAAU,IAAI,GAAG;EAEjD,MAAMI,WAAW,GAAGF,MAAM,GAAGpB,CAAC,CAACuB,GAAG,CAACH,MAAM,KAAK,GAAG,CAAC;EAClD,MAAMI,sBAAsB,GAAG,GAAG,GAAGzB,GAAG,CAAC0B,GAAG,CAAC,GAAG,GAAGJ,SAAS,GAAG,GAAG,CAAC;EACnE,MAAMK,2BAA2B,GAC/BF,sBAAsB,GAAGxB,CAAC,CAACuB,GAAG,CAACC,sBAAsB,KAAK,GAAG,CAAC;EAEhE,MAAMG,eAAe,GAAGP,MAAM,GAAGM,2BAA2B;EAE5D,MAAME,OAAO,GAAI,CAAChB,GAAG,CAACI,CAAC,GAAGJ,GAAG,CAACK,CAAC,IAAIK,WAAW,GAAI,CAAC;EACnD,MAAMO,SAAS,GAAG,CAACjB,GAAG,CAACK,CAAC,GAAGL,GAAG,CAACG,CAAC,IAAIO,WAAW,GAAG,GAAG;EACrD,MAAMQ,QAAQ,GAAG,CAAClB,GAAG,CAACG,CAAC,GAAGH,GAAG,CAACI,CAAC,IAAIM,WAAW,GAAG,GAAG;EAEpD,IAAIS,SAAS,GAAGH,OAAO;EACvBG,SAAS,GAAGhC,GAAG,CAACiC,MAAM,CAACD,SAAS,EAAEF,SAAS,EAAEhB,UAAU,KAAKD,GAAG,CAACI,CAAC,CAAC;EAClEe,SAAS,GAAGhC,GAAG,CAACiC,MAAM,CAACD,SAAS,EAAED,QAAQ,EAAEjB,UAAU,KAAKD,GAAG,CAACK,CAAC,CAAC;EAEjEc,SAAS,GAAGhC,GAAG,CAACiC,MAAM,CAACD,SAAS,EAAEA,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAG,CAAC,CAAC;EAE/D,MAAME,QAAQ,GAAGF,SAAS,GAAG,EAAE;EAC/B,MAAMG,GAAG,GAAGnC,GAAG,CAACiC,MAAM,CAAC,GAAG,EAAEC,QAAQ,EAAEb,MAAM,KAAK,CAAC,CAAC;EACnD,OAAOpB,CAAC,CAACM,KAAK,CAAC4B,GAAG,EAAEP,eAAe,EAAEN,SAAS,CAAC;AACjD,CAAC;EAAAc,CAAA;EAAAC,IAAA;EAAAC,GAAA,EAAAC,okDAAA;EAAA,IAAAC,UAAA;IAAA;MAAAxC,GAAA;MAAAC;IAAA;EAAA;AAAA,MAAAO,CAAA,CAAAI,CAAA,mBAAC;AAEF,OAAO,MAAM6B,QAAQ,IAAAtC,UAAA,CAAAC,oBAAA,KAAAC,CAAA,IAAAA,CAAA,GAAGN,IAAI,CAACO,EAAE,CAC7B,CAACL,CAAC,CAACM,KAAK,CAAC,EACTN,CAAC,CAACM,KACJ,CAAC,EAAAC,CAAA,KAAAL,UAAA,CAAAM,gBAAA,SAAAC,OAAA,IAAAC,GAAA,CAAAH,CAAA,CAAAI,CAAA,GAAEC,GAAG,IAAK;EACT;EACA,MAAM6B,CAAC,GAAG7B,GAAG,CAACG,CAAC;EACf,MAAM2B,CAAC,GAAG9B,GAAG,CAACI,CAAC;EACf,MAAM2B,CAAC,GAAG/B,GAAG,CAACK,CAAC;EACf;EACA,IAAI2B,CAAC,GAAG,CAAC,GAAG,GAAG7C,GAAG,CAAC0B,GAAG,CAAC,GAAG,GAAGkB,CAAC,GAAG,GAAG,CAAC,IAAID,CAAC;;EAE1C;EACA;EACA,IAAIG,OAAO,GAAIJ,CAAC,GAAG,IAAI,GAAI,GAAG;EAC9B,IAAI1B,CAAC,GAAG6B,CAAC,IAAI,GAAG,GAAG7C,GAAG,CAAC0B,GAAG,CAAEoB,OAAO,GAAG,GAAG,GAAI,GAAG,CAAC,CAAC;;EAElD;EACA,IAAIC,CAAC,GAAG/C,GAAG,CAACgD,KAAK,CAACF,OAAO,CAAC;;EAE1B;EACA;EACA;EACA,IAAIG,SAAS,GAAGhD,CAAC,CAACM,KAAK,CAAC,GAAG,CAAC;EAE5B0C,SAAS,GAAGjD,GAAG,CAACkD,GAAG,CACjBD,SAAS,EACTjD,GAAG,CAACmD,GAAG,CAAClD,CAAC,CAACM,KAAK,CAAC,CAAC,EAAEN,CAAC,CAACM,KAAK,CAACsC,CAAC,EAAE7B,CAAC,EAAE,GAAG,CAAC,EAAEf,CAAC,CAACuB,GAAG,CAACuB,CAAC,KAAK,GAAG,CAAC,CACzD,CAAC;EACDE,SAAS,GAAGjD,GAAG,CAACkD,GAAG,CACjBD,SAAS,EACTjD,GAAG,CAACmD,GAAG,CAAClD,CAAC,CAACM,KAAK,CAAC,CAAC,EAAEN,CAAC,CAACM,KAAK,CAACS,CAAC,EAAE6B,CAAC,EAAE,GAAG,CAAC,EAAE5C,CAAC,CAACuB,GAAG,CAACuB,CAAC,KAAK,GAAG,CAAC,CACzD,CAAC;EACDE,SAAS,GAAGjD,GAAG,CAACkD,GAAG,CACjBD,SAAS,EACTjD,GAAG,CAACmD,GAAG,CAAClD,CAAC,CAACM,KAAK,CAAC,CAAC,EAAEN,CAAC,CAACM,KAAK,CAAC,CAAC,EAAEsC,CAAC,EAAE7B,CAAC,CAAC,EAAEf,CAAC,CAACuB,GAAG,CAACuB,CAAC,KAAK,GAAG,CAAC,CACvD,CAAC;EACDE,SAAS,GAAGjD,GAAG,CAACkD,GAAG,CACjBD,SAAS,EACTjD,GAAG,CAACmD,GAAG,CAAClD,CAAC,CAACM,KAAK,CAAC,CAAC,EAAEN,CAAC,CAACM,KAAK,CAAC,CAAC,EAAES,CAAC,EAAE6B,CAAC,CAAC,EAAE5C,CAAC,CAACuB,GAAG,CAACuB,CAAC,KAAK,GAAG,CAAC,CACvD,CAAC;EACDE,SAAS,GAAGjD,GAAG,CAACkD,GAAG,CACjBD,SAAS,EACTjD,GAAG,CAACmD,GAAG,CAAClD,CAAC,CAACM,KAAK,CAAC,CAAC,EAAEN,CAAC,CAACM,KAAK,CAACS,CAAC,EAAE,CAAC,EAAE6B,CAAC,CAAC,EAAE5C,CAAC,CAACuB,GAAG,CAACuB,CAAC,KAAK,GAAG,CAAC,CACvD,CAAC;EACDE,SAAS,GAAGjD,GAAG,CAACkD,GAAG,CACjBD,SAAS,EACTjD,GAAG,CAACmD,GAAG,CAAClD,CAAC,CAACM,KAAK,CAAC,CAAC,EAAEN,CAAC,CAACM,KAAK,CAACsC,CAAC,EAAE,CAAC,EAAE7B,CAAC,CAAC,EAAEf,CAAC,CAACuB,GAAG,CAACuB,CAAC,KAAK,GAAG,CAAC,CACvD,CAAC;;EAED;EACA,IAAIK,CAAC,GAAGR,CAAC,GAAGC,CAAC,GAAG,GAAG;EACnB,OAAO7C,GAAG,CAACkD,GAAG,CAACD,SAAS,EAAEhD,CAAC,CAACM,KAAK,CAAC6C,CAAC,CAAC,CAAC;AACvC,CAAC;EAAAhB,CAAA;EAAAC,IAAA;EAAAC,GAAA,EAAAe,4nDAAA;EAAA,IAAAb,UAAA;IAAA;MAAAxC,GAAA;MAAAC;IAAA;EAAA;AAAA,MAAAO,CAAA,CAAAI,CAAA,mBAAC","ignoreList":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
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 { precomputeColorMaskBindGroupLayout, sharedBindGroupLayout } from "./../bindGroupLayouts.js";
|
|
7
|
+
export const precomputeColorMask = (globalThis.__TYPEGPU_AUTONAME__ ?? (a => a))(tgpu['~unstable'].computeFn({
|
|
8
|
+
in: {
|
|
9
|
+
gid: d.builtin.globalInvocationId
|
|
10
|
+
},
|
|
11
|
+
workgroupSize: [8, 8, 1]
|
|
12
|
+
})(($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = input => {
|
|
13
|
+
const x = input.gid.x;
|
|
14
|
+
const y = input.gid.y;
|
|
15
|
+
const colorMaskStorageTexture = precomputeColorMaskBindGroupLayout.$.colorMaskStorage;
|
|
16
|
+
const size = std.textureDimensions(colorMaskStorageTexture);
|
|
17
|
+
if (x >= size.x || y >= size.y) return;
|
|
18
|
+
const uv = d.vec2f(d.f32(x) / d.f32(size.x), d.f32(y) / d.f32(size.y));
|
|
19
|
+
const colorSampled = std.textureSample(sharedBindGroupLayout.$.texture, sharedBindGroupLayout.$.sampler, uv);
|
|
20
|
+
std.textureStore(colorMaskStorageTexture, d.vec2u(x, y), colorSampled);
|
|
21
|
+
}, {
|
|
22
|
+
v: 1,
|
|
23
|
+
name: void 0,
|
|
24
|
+
ast: {"params":[{"type":"i","name":"input"}],"body":[0,[[13,"x",[7,[7,"input","gid"],"x"]],[13,"y",[7,[7,"input","gid"],"y"]],[13,"colorMaskStorageTexture",[7,[7,"precomputeColorMaskBindGroupLayout","$"],"colorMaskStorage"]],[13,"size",[6,[7,"std","textureDimensions"],["colorMaskStorageTexture"]]],[11,[3,[1,"x",">=",[7,"size","x"]],"||",[1,"y",">=",[7,"size","y"]]],[10]],[13,"uv",[6,[7,"d","vec2f"],[[1,[6,[7,"d","f32"],["x"]],"/",[6,[7,"d","f32"],[[7,"size","x"]]]],[1,[6,[7,"d","f32"],["y"]],"/",[6,[7,"d","f32"],[[7,"size","y"]]]]]]],[13,"colorSampled",[6,[7,"std","textureSample"],[[7,[7,"sharedBindGroupLayout","$"],"texture"],[7,[7,"sharedBindGroupLayout","$"],"sampler"],"uv"]]],[6,[7,"std","textureStore"],["colorMaskStorageTexture",[6,[7,"d","vec2u"],["x","y"]],"colorSampled"]]]],"externalNames":["precomputeColorMaskBindGroupLayout","std","d","sharedBindGroupLayout"]},
|
|
25
|
+
get externals() {
|
|
26
|
+
return {
|
|
27
|
+
precomputeColorMaskBindGroupLayout,
|
|
28
|
+
std,
|
|
29
|
+
d,
|
|
30
|
+
sharedBindGroupLayout
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}) && $.f)({})), "precomputeColorMask");
|
|
34
|
+
//# sourceMappingURL=precomputeColorMask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["tgpu","d","std","precomputeColorMaskBindGroupLayout","sharedBindGroupLayout","precomputeColorMask","globalThis","__TYPEGPU_AUTONAME__","a","computeFn","in","gid","builtin","globalInvocationId","workgroupSize","$","__TYPEGPU_META__","WeakMap","set","f","input","x","y","colorMaskStorageTexture","colorMaskStorage","size","textureDimensions","uv","vec2f","f32","colorSampled","textureSample","texture","sampler","textureStore","vec2u","v","name","ast","{\"params\":[{\"type\":\"i\",\"name\":\"input\"}],\"body\":[0,[[13,\"x\",[7,[7,\"input\",\"gid\"],\"x\"]],[13,\"y\",[7,[7,\"input\",\"gid\"],\"y\"]],[13,\"colorMaskStorageTexture\",[7,[7,\"precomputeColorMaskBindGroupLayout\",\"$\"],\"colorMaskStorage\"]],[13,\"size\",[6,[7,\"std\",\"textureDimensions\"],[\"colorMaskStorageTexture\"]]],[11,[3,[1,\"x\",\">=\",[7,\"size\",\"x\"]],\"||\",[1,\"y\",\">=\",[7,\"size\",\"y\"]]],[10]],[13,\"uv\",[6,[7,\"d\",\"vec2f\"],[[1,[6,[7,\"d\",\"f32\"],[\"x\"]],\"/\",[6,[7,\"d\",\"f32\"],[[7,\"size\",\"x\"]]]],[1,[6,[7,\"d\",\"f32\"],[\"y\"]],\"/\",[6,[7,\"d\",\"f32\"],[[7,\"size\",\"y\"]]]]]]],[13,\"colorSampled\",[6,[7,\"std\",\"textureSample\"],[[7,[7,\"sharedBindGroupLayout\",\"$\"],\"texture\"],[7,[7,\"sharedBindGroupLayout\",\"$\"],\"sampler\"],\"uv\"]]],[6,[7,\"std\",\"textureStore\"],[\"colorMaskStorageTexture\",[6,[7,\"d\",\"vec2u\"],[\"x\",\"y\"]],\"colorSampled\"]]]],\"externalNames\":[\"precomputeColorMaskBindGroupLayout\",\"std\",\"d\",\"sharedBindGroupLayout\"]}","externals"],"sourceRoot":"../../../../src","sources":["shaders/computeShaders/precomputeColorMask.ts"],"mappings":";;AAAA,OAAOA,IAAI,MAAM,SAAS;AAC1B,OAAO,KAAKC,CAAC,MAAM,cAAc;AACjC,OAAO,KAAKC,GAAG,MAAM,aAAa;AAClC,SACEC,kCAAkC,EAClCC,qBAAqB,QAChB,0BAAuB;AAE9B,OAAO,MAAMC,mBAAmB,IAAAC,UAAA,CAAAC,oBAAA,KAAAC,CAAA,IAAAA,CAAA,GAAGR,IAAI,CAAC,WAAW,CAAC,CAACS,SAAS,CAAC;EAC7DC,EAAE,EAAE;IAAEC,GAAG,EAAEV,CAAC,CAACW,OAAO,CAACC;EAAmB,CAAC;EACzCC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACzB,CAAC,CAAC,EAAAC,CAAA,KAAAT,UAAA,CAAAU,gBAAA,SAAAC,OAAA,IAAAC,GAAA,CAAAH,CAAA,CAAAI,CAAA,GAAEC,KAAK,IAAK;EACZ,MAAMC,CAAC,GAAGD,KAAK,CAACT,GAAG,CAACU,CAAC;EACrB,MAAMC,CAAC,GAAGF,KAAK,CAACT,GAAG,CAACW,CAAC;EACrB,MAAMC,uBAAuB,GAC3BpB,kCAAkC,CAACY,CAAC,CAACS,gBAAgB;EACvD,MAAMC,IAAI,GAAGvB,GAAG,CAACwB,iBAAiB,CAACH,uBAAuB,CAAC;EAE3D,IAAIF,CAAC,IAAII,IAAI,CAACJ,CAAC,IAAIC,CAAC,IAAIG,IAAI,CAACH,CAAC,EAAE;EAChC,MAAMK,EAAE,GAAG1B,CAAC,CAAC2B,KAAK,CAAC3B,CAAC,CAAC4B,GAAG,CAACR,CAAC,CAAC,GAAGpB,CAAC,CAAC4B,GAAG,CAACJ,IAAI,CAACJ,CAAC,CAAC,EAAEpB,CAAC,CAAC4B,GAAG,CAACP,CAAC,CAAC,GAAGrB,CAAC,CAAC4B,GAAG,CAACJ,IAAI,CAACH,CAAC,CAAC,CAAC;EAEtE,MAAMQ,YAAY,GAAG5B,GAAG,CAAC6B,aAAa,CACpC3B,qBAAqB,CAACW,CAAC,CAACiB,OAAO,EAC/B5B,qBAAqB,CAACW,CAAC,CAACkB,OAAO,EAC/BN,EACF,CAAC;EAEDzB,GAAG,CAACgC,YAAY,CAACX,uBAAuB,EAAEtB,CAAC,CAACkC,KAAK,CAACd,CAAC,EAAEC,CAAC,CAAC,EAAEQ,YAAY,CAAC;AACxE,CAAC;EAAAM,CAAA;EAAAC,IAAA;EAAAC,GAAA,EAAAC,62BAAA;EAAA,IAAAC,UAAA;IAAA;MAAArC,kCAAA;MAAAD,GAAA;MAAAD,CAAA;MAAAG;IAAA;EAAA;AAAA,MAAAW,CAAA,CAAAI,CAAA,8BAAC","ignoreList":[]}
|
|
@@ -2,26 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
import tgpu from 'typegpu';
|
|
4
4
|
import * as d from 'typegpu/data';
|
|
5
|
-
import
|
|
6
|
-
import { textureBindGroupLayout } from "../bindGroupLayouts.js";
|
|
5
|
+
import { getPixelColorFromNonReversedVector } from "../tgpuUtils.js";
|
|
7
6
|
export const baseTextureFragment = (globalThis.__TYPEGPU_AUTONAME__ ?? (a => a))(tgpu['~unstable'].fragmentFn({
|
|
8
7
|
in: {
|
|
9
8
|
uv: d.vec2f
|
|
10
9
|
},
|
|
11
10
|
out: d.vec4f
|
|
12
11
|
})(($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = input => {
|
|
13
|
-
|
|
14
|
-
let color = std.textureSample(textureBindGroupLayout.$.texture, textureBindGroupLayout.$.sampler, texcoord);
|
|
15
|
-
return color;
|
|
12
|
+
return getPixelColorFromNonReversedVector(input.uv);
|
|
16
13
|
}, {
|
|
17
14
|
v: 1,
|
|
18
15
|
name: void 0,
|
|
19
|
-
ast: {"params":[{"type":"i","name":"input"}],"body":[0,[[
|
|
16
|
+
ast: {"params":[{"type":"i","name":"input"}],"body":[0,[[10,[6,"getPixelColorFromNonReversedVector",[[7,"input","uv"]]]]]],"externalNames":["getPixelColorFromNonReversedVector"]},
|
|
20
17
|
get externals() {
|
|
21
18
|
return {
|
|
22
|
-
|
|
23
|
-
std,
|
|
24
|
-
textureBindGroupLayout
|
|
19
|
+
getPixelColorFromNonReversedVector
|
|
25
20
|
};
|
|
26
21
|
}
|
|
27
22
|
}) && $.f)({})), "baseTextureFragment");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["tgpu","d","
|
|
1
|
+
{"version":3,"names":["tgpu","d","getPixelColorFromNonReversedVector","baseTextureFragment","globalThis","__TYPEGPU_AUTONAME__","a","fragmentFn","in","uv","vec2f","out","vec4f","$","__TYPEGPU_META__","WeakMap","set","f","input","v","name","ast","{\"params\":[{\"type\":\"i\",\"name\":\"input\"}],\"body\":[0,[[10,[6,\"getPixelColorFromNonReversedVector\",[[7,\"input\",\"uv\"]]]]]],\"externalNames\":[\"getPixelColorFromNonReversedVector\"]}","externals"],"sourceRoot":"../../../../src","sources":["shaders/fragmentShaders/baseTextureFragment.ts"],"mappings":";;AAAA,OAAOA,IAAI,MAAM,SAAS;AAC1B,OAAO,KAAKC,CAAC,MAAM,cAAc;AACjC,SAASC,kCAAkC,QAAQ,iBAAc;AAEjE,OAAO,MAAMC,mBAAmB,IAAAC,UAAA,CAAAC,oBAAA,KAAAC,CAAA,IAAAA,CAAA,GAAGN,IAAI,CAAC,WAAW,CAAC,CAACO,UAAU,CAAC;EAC9DC,EAAE,EAAE;IAAEC,EAAE,EAAER,CAAC,CAACS;EAAM,CAAC;EACnBC,GAAG,EAAEV,CAAC,CAACW;AACT,CAAC,CAAC,EAAAC,CAAA,KAAAT,UAAA,CAAAU,gBAAA,SAAAC,OAAA,IAAAC,GAAA,CAAAH,CAAA,CAAAI,CAAA,GAAEC,KAAK,IAAK;EACZ,OAAOhB,kCAAkC,CAACgB,KAAK,CAACT,EAAE,CAAC;AACrD,CAAC;EAAAU,CAAA;EAAAC,IAAA;EAAAC,GAAA,EAAAC,6KAAA;EAAA,IAAAC,UAAA;IAAA;MAAArB;IAAA;EAAA;AAAA,MAAAW,CAAA,CAAAI,CAAA,8BAAC","ignoreList":[]}
|
|
@@ -3,65 +3,51 @@
|
|
|
3
3
|
import tgpu from 'typegpu';
|
|
4
4
|
import * as d from 'typegpu/data';
|
|
5
5
|
import * as std from 'typegpu/std';
|
|
6
|
-
import {
|
|
7
|
-
|
|
6
|
+
import { COLOR_MASK_MAX_COUNT, colorMaskBindGroupLayout
|
|
7
|
+
|
|
8
|
+
// sharedBindGroupLayout,
|
|
9
|
+
// precomputeColorMaskOutputBindGroupLayout,
|
|
10
|
+
} from "../bindGroupLayouts.js";
|
|
11
|
+
import { getPixelColorFromNonReversedVector } from "../tgpuUtils.js";
|
|
12
|
+
import { RGBToHSL } from "../colorConversions.js";
|
|
8
13
|
const colorMaskFragment = (globalThis.__TYPEGPU_AUTONAME__ ?? (a => a))(tgpu['~unstable'].fragmentFn({
|
|
9
14
|
in: {
|
|
10
15
|
uv: d.vec2f
|
|
11
16
|
},
|
|
12
17
|
out: d.vec4f
|
|
13
18
|
})(($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = input => {
|
|
14
|
-
|
|
15
|
-
let color = std.textureSample(textureBindGroupLayout.$.texture, textureBindGroupLayout.$.sampler, texcoord);
|
|
19
|
+
let color = getPixelColorFromNonReversedVector(input.uv);
|
|
16
20
|
const masks = colorMaskBindGroupLayout.$.colorMasks.masks;
|
|
17
21
|
const usedMaskCount = colorMaskBindGroupLayout.$.colorMasks.usedMaskCount;
|
|
18
22
|
const reverseHighlight = colorMaskBindGroupLayout.$.colorMasks.reverseHighlight;
|
|
19
23
|
let colorMaskDebug = d.u32(0);
|
|
20
24
|
let cumulativeMaskCheck = d.u32(0);
|
|
21
|
-
const
|
|
25
|
+
const colorHSL = RGBToHSL(color.xyz);
|
|
22
26
|
|
|
23
27
|
//TODO: optimize this more
|
|
24
|
-
for (let i = 0; i <
|
|
28
|
+
for (let i = 0; i < COLOR_MASK_MAX_COUNT; i++) {
|
|
25
29
|
if (usedMaskCount <= i) break;
|
|
26
30
|
const mask = masks[i];
|
|
27
31
|
const maskedColor = mask.baseColor;
|
|
28
32
|
const rgbToleranceRange = mask.rgbToleranceRange;
|
|
29
|
-
const useHSV = mask.useHSV;
|
|
30
|
-
const hueToleranceRange = mask.hueToleranceRange;
|
|
31
|
-
const hueUpper = hueToleranceRange.upper;
|
|
32
|
-
const hueLower = hueToleranceRange.lower;
|
|
33
|
-
const brightnessTolerance = mask.brightnessTolerance;
|
|
34
|
-
const saturationTolerance = mask.saturationTolerance;
|
|
35
|
-
const lowSaturationThreshold = mask.lowSaturationThreshold;
|
|
36
|
-
const lowBrightnessThreshold = mask.lowBrightnessThreshold;
|
|
37
33
|
const maskedColorLower = std.sub(maskedColor, rgbToleranceRange.lower);
|
|
38
34
|
const maskedColorUpper = std.add(maskedColor, rgbToleranceRange.upper);
|
|
39
35
|
const upperCheck = std.all(std.le(color.xyz, maskedColorUpper));
|
|
40
36
|
const lowerCheck = std.all(std.ge(color.xyz, maskedColorLower));
|
|
41
37
|
const rgbCheck = upperCheck && lowerCheck;
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
hueDiff =
|
|
45
|
-
|
|
46
|
-
const
|
|
47
|
-
const upperHueCheck = hueDiff <= hueUpper;
|
|
48
|
-
let hueCheck = lowerHueCheck && upperHueCheck;
|
|
49
|
-
const saturationDiff = std.abs(std.sub(colorHSV.y, maskedHSV.y));
|
|
50
|
-
const saturationCheck = saturationDiff <= saturationTolerance;
|
|
51
|
-
const brightnessDiff = std.abs(std.sub(colorHSV.z, maskedHSV.z));
|
|
52
|
-
const brightnessCheck = brightnessDiff <= brightnessTolerance;
|
|
53
|
-
const pixelIsGray = colorHSV.y < lowSaturationThreshold;
|
|
54
|
-
const targetIsGray = maskedHSV.y < lowSaturationThreshold;
|
|
55
|
-
const pixelIsBlack = colorHSV.z < lowBrightnessThreshold;
|
|
56
|
-
const targetIsBlack = maskedHSV.z < lowBrightnessThreshold;
|
|
38
|
+
const saturationAndLightness = colorHSL.yz;
|
|
39
|
+
const hueStart = mask.hueStart;
|
|
40
|
+
const hueDiff = colorHSL.x - hueStart;
|
|
41
|
+
const distance = std.mod(std.add(hueDiff, 360), 360);
|
|
42
|
+
const hueCheck = std.step(distance, mask.hueRange);
|
|
57
43
|
|
|
58
|
-
//
|
|
59
|
-
//
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
const
|
|
63
|
-
const maskCheck = std.select(rgbCheck,
|
|
64
|
-
cumulativeMaskCheck = cumulativeMaskCheck +
|
|
44
|
+
// step(min, val) -> returns 1.0, if val >= min
|
|
45
|
+
// step(val, max) -> returns 1.0, if max >= val
|
|
46
|
+
const checkVec = std.mul(std.step(mask.minLimits, saturationAndLightness), std.step(saturationAndLightness, mask.maxLimits));
|
|
47
|
+
const saturationAndLightnessMask = std.mul(checkVec.x, checkVec.y);
|
|
48
|
+
const hslCheck = std.mul(hueCheck, saturationAndLightnessMask);
|
|
49
|
+
const maskCheck = std.select(d.u32(rgbCheck), hslCheck, mask.useHSV === d.u32(1));
|
|
50
|
+
cumulativeMaskCheck = cumulativeMaskCheck + maskCheck;
|
|
65
51
|
colorMaskDebug = colorMaskDebug + mask.debugMode;
|
|
66
52
|
}
|
|
67
53
|
const maskingLogic = std.select(cumulativeMaskCheck > 0, cumulativeMaskCheck === 0, reverseHighlight === 1);
|
|
@@ -72,14 +58,15 @@ const colorMaskFragment = (globalThis.__TYPEGPU_AUTONAME__ ?? (a => a))(tgpu['~u
|
|
|
72
58
|
}, {
|
|
73
59
|
v: 1,
|
|
74
60
|
name: void 0,
|
|
75
|
-
ast: {"params":[{"type":"i","name":"input"}],"body":[0,[[
|
|
61
|
+
ast: {"params":[{"type":"i","name":"input"}],"body":[0,[[12,"color",[6,"getPixelColorFromNonReversedVector",[[7,"input","uv"]]]],[13,"masks",[7,[7,[7,"colorMaskBindGroupLayout","$"],"colorMasks"],"masks"]],[13,"usedMaskCount",[7,[7,[7,"colorMaskBindGroupLayout","$"],"colorMasks"],"usedMaskCount"]],[13,"reverseHighlight",[7,[7,[7,"colorMaskBindGroupLayout","$"],"colorMasks"],"reverseHighlight"]],[12,"colorMaskDebug",[6,[7,"d","u32"],[[5,"0"]]]],[12,"cumulativeMaskCheck",[6,[7,"d","u32"],[[5,"0"]]]],[13,"colorHSL",[6,"RGBToHSL",[[7,"color","xyz"]]]],[14,[12,"i",[5,"0"]],[1,"i","<","COLOR_MASK_MAX_COUNT"],[102,"++","i"],[0,[[11,[1,"usedMaskCount","<=","i"],[17]],[13,"mask",[8,"masks","i"]],[13,"maskedColor",[7,"mask","baseColor"]],[13,"rgbToleranceRange",[7,"mask","rgbToleranceRange"]],[13,"maskedColorLower",[6,[7,"std","sub"],["maskedColor",[7,"rgbToleranceRange","lower"]]]],[13,"maskedColorUpper",[6,[7,"std","add"],["maskedColor",[7,"rgbToleranceRange","upper"]]]],[13,"upperCheck",[6,[7,"std","all"],[[6,[7,"std","le"],[[7,"color","xyz"],"maskedColorUpper"]]]]],[13,"lowerCheck",[6,[7,"std","all"],[[6,[7,"std","ge"],[[7,"color","xyz"],"maskedColorLower"]]]]],[13,"rgbCheck",[3,"upperCheck","&&","lowerCheck"]],[13,"saturationAndLightness",[7,"colorHSL","yz"]],[13,"hueStart",[7,"mask","hueStart"]],[13,"hueDiff",[1,[7,"colorHSL","x"],"-","hueStart"]],[13,"distance",[6,[7,"std","mod"],[[6,[7,"std","add"],["hueDiff",[5,"360"]]],[5,"360"]]]],[13,"hueCheck",[6,[7,"std","step"],["distance",[7,"mask","hueRange"]]]],[13,"checkVec",[6,[7,"std","mul"],[[6,[7,"std","step"],[[7,"mask","minLimits"],"saturationAndLightness"]],[6,[7,"std","step"],["saturationAndLightness",[7,"mask","maxLimits"]]]]]],[13,"saturationAndLightnessMask",[6,[7,"std","mul"],[[7,"checkVec","x"],[7,"checkVec","y"]]]],[13,"hslCheck",[6,[7,"std","mul"],["hueCheck","saturationAndLightnessMask"]]],[13,"maskCheck",[6,[7,"std","select"],[[6,[7,"d","u32"],["rgbCheck"]],"hslCheck",[1,[7,"mask","useHSV"],"==",[6,[7,"d","u32"],[[5,"1"]]]]]]],[2,"cumulativeMaskCheck","=",[1,"cumulativeMaskCheck","+","maskCheck"]],[2,"colorMaskDebug","=",[1,"colorMaskDebug","+",[7,"mask","debugMode"]]]]]],[13,"maskingLogic",[6,[7,"std","select"],[[1,"cumulativeMaskCheck",">",[5,"0"]],[1,"cumulativeMaskCheck","==",[5,"0"]],[1,"reverseHighlight","==",[5,"1"]]]]],[2,"color","=",[6,[7,"std","select"],["color",[6,[7,"d","vec4f"],[[7,"color","xyz"],[5,"0"]]],"maskingLogic"]]],[2,"color","=",[6,[7,"std","select"],["color",[6,[7,"d","vec4f"],[[5,"1"],[5,"0"],[5,"0"],[5,"0"]]],[3,"maskingLogic","&&",[1,"colorMaskDebug",">",[5,"0"]]]]]],[10,"color"]]],"externalNames":["getPixelColorFromNonReversedVector","colorMaskBindGroupLayout","d","RGBToHSL","COLOR_MASK_MAX_COUNT","std"]},
|
|
76
62
|
get externals() {
|
|
77
63
|
return {
|
|
78
|
-
|
|
79
|
-
std,
|
|
80
|
-
textureBindGroupLayout,
|
|
64
|
+
getPixelColorFromNonReversedVector,
|
|
81
65
|
colorMaskBindGroupLayout,
|
|
82
|
-
|
|
66
|
+
d,
|
|
67
|
+
RGBToHSL,
|
|
68
|
+
COLOR_MASK_MAX_COUNT,
|
|
69
|
+
std
|
|
83
70
|
};
|
|
84
71
|
}
|
|
85
72
|
}) && $.f)({})), "colorMaskFragment");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["tgpu","d","std","textureBindGroupLayout","colorMaskBindGroupLayout","rgbToHSV","colorMaskFragment","globalThis","__TYPEGPU_AUTONAME__","a","fragmentFn","in","uv","vec2f","out","vec4f","$","__TYPEGPU_META__","WeakMap","set","f","input","texcoord","x","y","color","textureSample","texture","sampler","masks","colorMasks","usedMaskCount","reverseHighlight","colorMaskDebug","u32","cumulativeMaskCheck","colorHSV","xyz","i","mask","maskedColor","baseColor","rgbToleranceRange","useHSV","hueToleranceRange","hueUpper","upper","hueLower","lower","brightnessTolerance","saturationTolerance","lowSaturationThreshold","lowBrightnessThreshold","maskedColorLower","sub","maskedColorUpper","add","upperCheck","all","le","lowerCheck","ge","rgbCheck","maskedHSV","hueDiff","select","f32","lowerHueCheck","upperHueCheck","hueCheck","saturationDiff","abs","saturationCheck","brightnessDiff","z","brightnessCheck","pixelIsGray","targetIsGray","pixelIsBlack","targetIsBlack","hueIsUnstable","bool","hsvCheck","maskCheck","debugMode","maskingLogic","v","name","ast","{\"params\":[{\"type\":\"i\",\"name\":\"input\"}],\"body\":[0,[[13,\"texcoord\",[6,[7,\"d\",\"vec2f\"],[[7,[7,\"input\",\"uv\"],\"x\"],[1,[5,\"1\"],\"-\",[7,[7,\"input\",\"uv\"],\"y\"]]]]],[12,\"color\",[6,[7,\"std\",\"textureSample\"],[[7,[7,\"textureBindGroupLayout\",\"$\"],\"texture\"],[7,[7,\"textureBindGroupLayout\",\"$\"],\"sampler\"],\"texcoord\"]]],[13,\"masks\",[7,[7,[7,\"colorMaskBindGroupLayout\",\"$\"],\"colorMasks\"],\"masks\"]],[13,\"usedMaskCount\",[7,[7,[7,\"colorMaskBindGroupLayout\",\"$\"],\"colorMasks\"],\"usedMaskCount\"]],[13,\"reverseHighlight\",[7,[7,[7,\"colorMaskBindGroupLayout\",\"$\"],\"colorMasks\"],\"reverseHighlight\"]],[12,\"colorMaskDebug\",[6,[7,\"d\",\"u32\"],[[5,\"0\"]]]],[12,\"cumulativeMaskCheck\",[6,[7,\"d\",\"u32\"],[[5,\"0\"]]]],[13,\"colorHSV\",[6,\"rgbToHSV\",[[7,\"color\",\"xyz\"]]]],[14,[12,\"i\",[5,\"0\"]],[1,\"i\",\"<\",[5,\"16\"]],[102,\"++\",\"i\"],[0,[[11,[1,\"usedMaskCount\",\"<=\",\"i\"],[17]],[13,\"mask\",[8,\"masks\",\"i\"]],[13,\"maskedColor\",[7,\"mask\",\"baseColor\"]],[13,\"rgbToleranceRange\",[7,\"mask\",\"rgbToleranceRange\"]],[13,\"useHSV\",[7,\"mask\",\"useHSV\"]],[13,\"hueToleranceRange\",[7,\"mask\",\"hueToleranceRange\"]],[13,\"hueUpper\",[7,\"hueToleranceRange\",\"upper\"]],[13,\"hueLower\",[7,\"hueToleranceRange\",\"lower\"]],[13,\"brightnessTolerance\",[7,\"mask\",\"brightnessTolerance\"]],[13,\"saturationTolerance\",[7,\"mask\",\"saturationTolerance\"]],[13,\"lowSaturationThreshold\",[7,\"mask\",\"lowSaturationThreshold\"]],[13,\"lowBrightnessThreshold\",[7,\"mask\",\"lowBrightnessThreshold\"]],[13,\"maskedColorLower\",[6,[7,\"std\",\"sub\"],[\"maskedColor\",[7,\"rgbToleranceRange\",\"lower\"]]]],[13,\"maskedColorUpper\",[6,[7,\"std\",\"add\"],[\"maskedColor\",[7,\"rgbToleranceRange\",\"upper\"]]]],[13,\"upperCheck\",[6,[7,\"std\",\"all\"],[[6,[7,\"std\",\"le\"],[[7,\"color\",\"xyz\"],\"maskedColorUpper\"]]]]],[13,\"lowerCheck\",[6,[7,\"std\",\"all\"],[[6,[7,\"std\",\"ge\"],[[7,\"color\",\"xyz\"],\"maskedColorLower\"]]]]],[13,\"rgbCheck\",[3,\"upperCheck\",\"&&\",\"lowerCheck\"]],[13,\"maskedHSV\",[6,\"rgbToHSV\",[\"maskedColor\"]]],[12,\"hueDiff\",[6,[7,\"std\",\"sub\"],[[7,\"colorHSV\",\"x\"],[7,\"maskedHSV\",\"x\"]]]],[2,\"hueDiff\",\"=\",[6,[7,\"std\",\"select\"],[\"hueDiff\",[6,[7,\"std\",\"sub\"],[\"hueDiff\",[5,\"1\"]]],[1,\"hueDiff\",\">\",[6,[7,\"d\",\"f32\"],[[5,\"0.5\"]]]]]]],[2,\"hueDiff\",\"=\",[6,[7,\"std\",\"select\"],[\"hueDiff\",[6,[7,\"std\",\"add\"],[\"hueDiff\",[5,\"1\"]]],[1,\"hueDiff\",\"<\",[6,[7,\"d\",\"f32\"],[[4,\"-\",[5,\"0.5\"]]]]]]]],[13,\"lowerHueCheck\",[1,\"hueDiff\",\">=\",[4,\"-\",\"hueLower\"]]],[13,\"upperHueCheck\",[1,\"hueDiff\",\"<=\",\"hueUpper\"]],[12,\"hueCheck\",[3,\"lowerHueCheck\",\"&&\",\"upperHueCheck\"]],[13,\"saturationDiff\",[6,[7,\"std\",\"abs\"],[[6,[7,\"std\",\"sub\"],[[7,\"colorHSV\",\"y\"],[7,\"maskedHSV\",\"y\"]]]]]],[13,\"saturationCheck\",[1,\"saturationDiff\",\"<=\",\"saturationTolerance\"]],[13,\"brightnessDiff\",[6,[7,\"std\",\"abs\"],[[6,[7,\"std\",\"sub\"],[[7,\"colorHSV\",\"z\"],[7,\"maskedHSV\",\"z\"]]]]]],[13,\"brightnessCheck\",[1,\"brightnessDiff\",\"<=\",\"brightnessTolerance\"]],[13,\"pixelIsGray\",[1,[7,\"colorHSV\",\"y\"],\"<\",\"lowSaturationThreshold\"]],[13,\"targetIsGray\",[1,[7,\"maskedHSV\",\"y\"],\"<\",\"lowSaturationThreshold\"]],[13,\"pixelIsBlack\",[1,[7,\"colorHSV\",\"z\"],\"<\",\"lowBrightnessThreshold\"]],[13,\"targetIsBlack\",[1,[7,\"maskedHSV\",\"z\"],\"<\",\"lowBrightnessThreshold\"]],[13,\"hueIsUnstable\",[3,[3,[3,\"pixelIsGray\",\"||\",\"targetIsGray\"],\"||\",\"pixelIsBlack\"],\"||\",\"targetIsBlack\"]],[2,\"hueCheck\",\"=\",[6,[7,\"std\",\"select\"],[\"hueCheck\",[6,[7,\"d\",\"bool\"],[true]],\"hueIsUnstable\"]]],[13,\"hsvCheck\",[3,[3,\"hueCheck\",\"&&\",\"saturationCheck\"],\"&&\",\"brightnessCheck\"]],[13,\"maskCheck\",[6,[7,\"std\",\"select\"],[\"rgbCheck\",\"hsvCheck\",[1,\"useHSV\",\"==\",[6,[7,\"d\",\"u32\"],[[5,\"1\"]]]]]]],[2,\"cumulativeMaskCheck\",\"=\",[1,\"cumulativeMaskCheck\",\"+\",[6,[7,\"d\",\"u32\"],[\"maskCheck\"]]]],[2,\"colorMaskDebug\",\"=\",[1,\"colorMaskDebug\",\"+\",[7,\"mask\",\"debugMode\"]]]]]],[13,\"maskingLogic\",[6,[7,\"std\",\"select\"],[[1,\"cumulativeMaskCheck\",\">\",[5,\"0\"]],[1,\"cumulativeMaskCheck\",\"==\",[5,\"0\"]],[1,\"reverseHighlight\",\"==\",[5,\"1\"]]]]],[2,\"color\",\"=\",[6,[7,\"std\",\"select\"],[\"color\",[6,[7,\"d\",\"vec4f\"],[[7,\"color\",\"xyz\"],[5,\"0\"]]],\"maskingLogic\"]]],[2,\"color\",\"=\",[6,[7,\"std\",\"select\"],[\"color\",[6,[7,\"d\",\"vec4f\"],[[5,\"1\"],[5,\"0\"],[5,\"0\"],[5,\"0\"]]],[3,\"maskingLogic\",\"&&\",[1,\"colorMaskDebug\",\">\",[5,\"0\"]]]]]],[10,\"color\"]]],\"externalNames\":[\"d\",\"std\",\"textureBindGroupLayout\",\"colorMaskBindGroupLayout\",\"rgbToHSV\"]}","externals"],"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;AAC5B,SAASC,QAAQ,QAAQ,iBAAc;AAGvC,MAAMC,iBAAiB,IAAAC,UAAA,CAAAC,oBAAA,KAAAC,CAAA,IAAAA,CAAA,GAAGT,IAAI,CAAC,WAAW,CAAC,CAACU,UAAU,CAAC;EACrDC,EAAE,EAAE;IAAEC,EAAE,EAAEX,CAAC,CAACY;EAAM,CAAC;EACnBC,GAAG,EAAEb,CAAC,CAACc;AACT,CAAC,CAAC,EAAAC,CAAA,KAAAT,UAAA,CAAAU,gBAAA,SAAAC,OAAA,IAAAC,GAAA,CAAAH,CAAA,CAAAI,CAAA,GAAEC,KAAK,IAAK;EACZ,MAAMC,QAAQ,GAAGrB,CAAC,CAACY,KAAK,CAACQ,KAAK,CAACT,EAAE,CAACW,CAAC,EAAE,GAAG,GAAGF,KAAK,CAACT,EAAE,CAACY,CAAC,CAAC;EAEtD,IAAIC,KAAK,GAAGvB,GAAG,CAACwB,aAAa,CAC3BvB,sBAAsB,CAACa,CAAC,CAACW,OAAO,EAChCxB,sBAAsB,CAACa,CAAC,CAACY,OAAO,EAChCN,QACF,CAAC;EACD,MAAMO,KAAK,GAAGzB,wBAAwB,CAACY,CAAC,CAACc,UAAU,CAChDD,KAAmC;EACtC,MAAME,aAAa,GAAG3B,wBAAwB,CAACY,CAAC,CAACc,UAAU,CAACC,aAAa;EACzE,MAAMC,gBAAgB,GACpB5B,wBAAwB,CAACY,CAAC,CAACc,UAAU,CAACE,gBAAgB;EAExD,IAAIC,cAAc,GAAGhC,CAAC,CAACiC,GAAG,CAAC,CAAC,CAAC;EAC7B,IAAIC,mBAAmB,GAAGlC,CAAC,CAACiC,GAAG,CAAC,CAAC,CAAC;EAClC,MAAME,QAAQ,GAAG/B,QAAQ,CAACoB,KAAK,CAACY,GAAG,CAAC;;EAEpC;EACA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAE;IAC3B,IAAIP,aAAa,IAAIO,CAAC,EAAE;IAExB,MAAMC,IAAI,GAAGV,KAAK,CAACS,CAAC,CAAC;IACrB,MAAME,WAAW,GAAGD,IAAI,CAACE,SAAS;IAClC,MAAMC,iBAAiB,GAAGH,IAAI,CAACG,iBAAiB;IAChD,MAAMC,MAAM,GAAGJ,IAAI,CAACI,MAAM;IAE1B,MAAMC,iBAAiB,GAAGL,IAAI,CAACK,iBAAiB;IAChD,MAAMC,QAAQ,GAAGD,iBAAiB,CAACE,KAAK;IACxC,MAAMC,QAAQ,GAAGH,iBAAiB,CAACI,KAAK;IAExC,MAAMC,mBAAmB,GAAGV,IAAI,CAACU,mBAAmB;IACpD,MAAMC,mBAAmB,GAAGX,IAAI,CAACW,mBAAmB;IACpD,MAAMC,sBAAsB,GAAGZ,IAAI,CAACY,sBAAsB;IAC1D,MAAMC,sBAAsB,GAAGb,IAAI,CAACa,sBAAsB;IAE1D,MAAMC,gBAAgB,GAAGnD,GAAG,CAACoD,GAAG,CAACd,WAAW,EAAEE,iBAAiB,CAACM,KAAK,CAAC;IACtE,MAAMO,gBAAgB,GAAGrD,GAAG,CAACsD,GAAG,CAAChB,WAAW,EAAEE,iBAAiB,CAACI,KAAK,CAAC;IACtE,MAAMW,UAAU,GAAGvD,GAAG,CAACwD,GAAG,CAACxD,GAAG,CAACyD,EAAE,CAAClC,KAAK,CAACY,GAAG,EAAEkB,gBAAgB,CAAC,CAAC;IAC/D,MAAMK,UAAU,GAAG1D,GAAG,CAACwD,GAAG,CAACxD,GAAG,CAAC2D,EAAE,CAACpC,KAAK,CAACY,GAAG,EAAEgB,gBAAgB,CAAC,CAAC;IAC/D,MAAMS,QAAQ,GAAGL,UAAU,IAAIG,UAAU;IAEzC,MAAMG,SAAS,GAAG1D,QAAQ,CAACmC,WAAW,CAAC;IAEvC,IAAIwB,OAAO,GAAG9D,GAAG,CAACoD,GAAG,CAAClB,QAAQ,CAACb,CAAC,EAAEwC,SAAS,CAACxC,CAAC,CAAC;IAC9CyC,OAAO,GAAG9D,GAAG,CAAC+D,MAAM,CAACD,OAAO,EAAE9D,GAAG,CAACoD,GAAG,CAACU,OAAO,EAAE,GAAG,CAAC,EAAEA,OAAO,GAAG/D,CAAC,CAACiE,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1EF,OAAO,GAAG9D,GAAG,CAAC+D,MAAM,CAACD,OAAO,EAAE9D,GAAG,CAACsD,GAAG,CAACQ,OAAO,EAAE,GAAG,CAAC,EAAEA,OAAO,GAAG/D,CAAC,CAACiE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3E,MAAMC,aAAa,GAAGH,OAAO,IAAI,CAACjB,QAAQ;IAC1C,MAAMqB,aAAa,GAAGJ,OAAO,IAAInB,QAAQ;IACzC,IAAIwB,QAAQ,GAAGF,aAAa,IAAIC,aAAa;IAE7C,MAAME,cAAc,GAAGpE,GAAG,CAACqE,GAAG,CAACrE,GAAG,CAACoD,GAAG,CAAClB,QAAQ,CAACZ,CAAC,EAAEuC,SAAS,CAACvC,CAAC,CAAC,CAAC;IAChE,MAAMgD,eAAe,GAAGF,cAAc,IAAIpB,mBAAmB;IAE7D,MAAMuB,cAAc,GAAGvE,GAAG,CAACqE,GAAG,CAACrE,GAAG,CAACoD,GAAG,CAAClB,QAAQ,CAACsC,CAAC,EAAEX,SAAS,CAACW,CAAC,CAAC,CAAC;IAChE,MAAMC,eAAe,GAAGF,cAAc,IAAIxB,mBAAmB;IAE7D,MAAM2B,WAAW,GAAGxC,QAAQ,CAACZ,CAAC,GAAG2B,sBAAsB;IACvD,MAAM0B,YAAY,GAAGd,SAAS,CAACvC,CAAC,GAAG2B,sBAAsB;IAEzD,MAAM2B,YAAY,GAAG1C,QAAQ,CAACsC,CAAC,GAAGtB,sBAAsB;IACxD,MAAM2B,aAAa,GAAGhB,SAAS,CAACW,CAAC,GAAGtB,sBAAsB;;IAE1D;IACA;IACA,MAAM4B,aAAa,GACjBJ,WAAW,IAAIC,YAAY,IAAIC,YAAY,IAAIC,aAAa;IAE9DV,QAAQ,GAAGnE,GAAG,CAAC+D,MAAM,CAACI,QAAQ,EAAEpE,CAAC,CAACgF,IAAI,CAAC,IAAI,CAAC,EAAED,aAAa,CAAC;IAE5D,MAAME,QAAQ,GAAGb,QAAQ,IAAIG,eAAe,IAAIG,eAAe;IAC/D,MAAMQ,SAAS,GAAGjF,GAAG,CAAC+D,MAAM,CAACH,QAAQ,EAAEoB,QAAQ,EAAEvC,MAAM,KAAK1C,CAAC,CAACiC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrEC,mBAAmB,GAAGA,mBAAmB,GAAGlC,CAAC,CAACiC,GAAG,CAACiD,SAAS,CAAC;IAC5DlD,cAAc,GAAGA,cAAc,GAAGM,IAAI,CAAC6C,SAAS;EAClD;EAEA,MAAMC,YAAY,GAAGnF,GAAG,CAAC+D,MAAM,CAC7B9B,mBAAmB,GAAG,CAAC,EACvBA,mBAAmB,KAAK,CAAC,EACzBH,gBAAgB,KAAK,CACvB,CAAC;EACDP,KAAK,GAAGvB,GAAG,CAAC+D,MAAM,CAACxC,KAAK,EAAExB,CAAC,CAACc,KAAK,CAACU,KAAK,CAACY,GAAG,EAAE,GAAG,CAAC,EAAEgD,YAAY,CAAC;EAChE;EACA5D,KAAK,GAAGvB,GAAG,CAAC+D,MAAM,CAChBxC,KAAK,EACLxB,CAAC,CAACc,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC3BsE,YAAY,IAAIpD,cAAc,GAAG,CACnC,CAAC;EACD,OAAOR,KAAK;AACd,CAAC;EAAA6D,CAAA;EAAAC,IAAA;EAAAC,GAAA,EAAAC,ojIAAA;EAAA,IAAAC,UAAA;IAAA;MAAAzF,CAAA;MAAAC,GAAA;MAAAC,sBAAA;MAAAC,wBAAA;MAAAC;IAAA;EAAA;AAAA,MAAAW,CAAA,CAAAI,CAAA,4BAAC;AAEF,eAAed,iBAAiB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["tgpu","d","std","COLOR_MASK_MAX_COUNT","colorMaskBindGroupLayout","getPixelColorFromNonReversedVector","RGBToHSL","colorMaskFragment","globalThis","__TYPEGPU_AUTONAME__","a","fragmentFn","in","uv","vec2f","out","vec4f","$","__TYPEGPU_META__","WeakMap","set","f","input","color","masks","colorMasks","usedMaskCount","reverseHighlight","colorMaskDebug","u32","cumulativeMaskCheck","colorHSL","xyz","i","mask","maskedColor","baseColor","rgbToleranceRange","maskedColorLower","sub","lower","maskedColorUpper","add","upper","upperCheck","all","le","lowerCheck","ge","rgbCheck","saturationAndLightness","yz","hueStart","hueDiff","x","distance","mod","hueCheck","step","hueRange","checkVec","mul","minLimits","maxLimits","saturationAndLightnessMask","y","hslCheck","maskCheck","select","useHSV","debugMode","maskingLogic","v","name","ast","{\"params\":[{\"type\":\"i\",\"name\":\"input\"}],\"body\":[0,[[12,\"color\",[6,\"getPixelColorFromNonReversedVector\",[[7,\"input\",\"uv\"]]]],[13,\"masks\",[7,[7,[7,\"colorMaskBindGroupLayout\",\"$\"],\"colorMasks\"],\"masks\"]],[13,\"usedMaskCount\",[7,[7,[7,\"colorMaskBindGroupLayout\",\"$\"],\"colorMasks\"],\"usedMaskCount\"]],[13,\"reverseHighlight\",[7,[7,[7,\"colorMaskBindGroupLayout\",\"$\"],\"colorMasks\"],\"reverseHighlight\"]],[12,\"colorMaskDebug\",[6,[7,\"d\",\"u32\"],[[5,\"0\"]]]],[12,\"cumulativeMaskCheck\",[6,[7,\"d\",\"u32\"],[[5,\"0\"]]]],[13,\"colorHSL\",[6,\"RGBToHSL\",[[7,\"color\",\"xyz\"]]]],[14,[12,\"i\",[5,\"0\"]],[1,\"i\",\"<\",\"COLOR_MASK_MAX_COUNT\"],[102,\"++\",\"i\"],[0,[[11,[1,\"usedMaskCount\",\"<=\",\"i\"],[17]],[13,\"mask\",[8,\"masks\",\"i\"]],[13,\"maskedColor\",[7,\"mask\",\"baseColor\"]],[13,\"rgbToleranceRange\",[7,\"mask\",\"rgbToleranceRange\"]],[13,\"maskedColorLower\",[6,[7,\"std\",\"sub\"],[\"maskedColor\",[7,\"rgbToleranceRange\",\"lower\"]]]],[13,\"maskedColorUpper\",[6,[7,\"std\",\"add\"],[\"maskedColor\",[7,\"rgbToleranceRange\",\"upper\"]]]],[13,\"upperCheck\",[6,[7,\"std\",\"all\"],[[6,[7,\"std\",\"le\"],[[7,\"color\",\"xyz\"],\"maskedColorUpper\"]]]]],[13,\"lowerCheck\",[6,[7,\"std\",\"all\"],[[6,[7,\"std\",\"ge\"],[[7,\"color\",\"xyz\"],\"maskedColorLower\"]]]]],[13,\"rgbCheck\",[3,\"upperCheck\",\"&&\",\"lowerCheck\"]],[13,\"saturationAndLightness\",[7,\"colorHSL\",\"yz\"]],[13,\"hueStart\",[7,\"mask\",\"hueStart\"]],[13,\"hueDiff\",[1,[7,\"colorHSL\",\"x\"],\"-\",\"hueStart\"]],[13,\"distance\",[6,[7,\"std\",\"mod\"],[[6,[7,\"std\",\"add\"],[\"hueDiff\",[5,\"360\"]]],[5,\"360\"]]]],[13,\"hueCheck\",[6,[7,\"std\",\"step\"],[\"distance\",[7,\"mask\",\"hueRange\"]]]],[13,\"checkVec\",[6,[7,\"std\",\"mul\"],[[6,[7,\"std\",\"step\"],[[7,\"mask\",\"minLimits\"],\"saturationAndLightness\"]],[6,[7,\"std\",\"step\"],[\"saturationAndLightness\",[7,\"mask\",\"maxLimits\"]]]]]],[13,\"saturationAndLightnessMask\",[6,[7,\"std\",\"mul\"],[[7,\"checkVec\",\"x\"],[7,\"checkVec\",\"y\"]]]],[13,\"hslCheck\",[6,[7,\"std\",\"mul\"],[\"hueCheck\",\"saturationAndLightnessMask\"]]],[13,\"maskCheck\",[6,[7,\"std\",\"select\"],[[6,[7,\"d\",\"u32\"],[\"rgbCheck\"]],\"hslCheck\",[1,[7,\"mask\",\"useHSV\"],\"==\",[6,[7,\"d\",\"u32\"],[[5,\"1\"]]]]]]],[2,\"cumulativeMaskCheck\",\"=\",[1,\"cumulativeMaskCheck\",\"+\",\"maskCheck\"]],[2,\"colorMaskDebug\",\"=\",[1,\"colorMaskDebug\",\"+\",[7,\"mask\",\"debugMode\"]]]]]],[13,\"maskingLogic\",[6,[7,\"std\",\"select\"],[[1,\"cumulativeMaskCheck\",\">\",[5,\"0\"]],[1,\"cumulativeMaskCheck\",\"==\",[5,\"0\"]],[1,\"reverseHighlight\",\"==\",[5,\"1\"]]]]],[2,\"color\",\"=\",[6,[7,\"std\",\"select\"],[\"color\",[6,[7,\"d\",\"vec4f\"],[[7,\"color\",\"xyz\"],[5,\"0\"]]],\"maskingLogic\"]]],[2,\"color\",\"=\",[6,[7,\"std\",\"select\"],[\"color\",[6,[7,\"d\",\"vec4f\"],[[5,\"1\"],[5,\"0\"],[5,\"0\"],[5,\"0\"]]],[3,\"maskingLogic\",\"&&\",[1,\"colorMaskDebug\",\">\",[5,\"0\"]]]]]],[10,\"color\"]]],\"externalNames\":[\"getPixelColorFromNonReversedVector\",\"colorMaskBindGroupLayout\",\"d\",\"RGBToHSL\",\"COLOR_MASK_MAX_COUNT\",\"std\"]}","externals"],"sourceRoot":"../../../../src","sources":["shaders/fragmentShaders/colorMaskFragment.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,84 @@
|
|
|
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 { glareFlareBindGroupLayout, sharedBindGroupLayout } from "../bindGroupLayouts.js";
|
|
7
|
+
import { getPixelColorFromVector } from "../tgpuUtils.js";
|
|
8
|
+
import { HSLToRGB, RGBToHSL } from "../colorConversions.js";
|
|
9
|
+
export const glareFlareFragment = (globalThis.__TYPEGPU_AUTONAME__ ?? (a => a))(tgpu['~unstable'].fragmentFn({
|
|
10
|
+
in: {
|
|
11
|
+
uv: d.vec2f
|
|
12
|
+
},
|
|
13
|
+
out: d.vec4f
|
|
14
|
+
})(($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = input => {
|
|
15
|
+
const uv = d.vec2f(input.uv.x, 1.0 - input.uv.y);
|
|
16
|
+
const centeredCoords = std.sub(std.mul(uv, 2.0), 1.0);
|
|
17
|
+
let color = getPixelColorFromVector(uv);
|
|
18
|
+
const rot = sharedBindGroupLayout.$.rot;
|
|
19
|
+
const center = std.add(d.vec2f(0.0), d.vec2f(rot.x, rot.y)); // do not change
|
|
20
|
+
let dist = std.distance(center, centeredCoords);
|
|
21
|
+
|
|
22
|
+
// Normalize UV coordinates to be between -1 and 1
|
|
23
|
+
let uv_norm = std.sub(std.mul(input.uv, 2.0), 1.0);
|
|
24
|
+
|
|
25
|
+
// Calculate distance from center and ensure it does not exceed 1
|
|
26
|
+
let angle = std.atan2(std.add(rot.y, uv_norm.y), std.sub(rot.x, uv_norm.x));
|
|
27
|
+
dist = std.clamp(dist, 0.0, 1.0);
|
|
28
|
+
// Parameters for flare components
|
|
29
|
+
let flare_intensity = glareFlareBindGroupLayout.$.glareFlare.flareIntensity;
|
|
30
|
+
let spot_intensity = glareFlareBindGroupLayout.$.glareFlare.flareIntensity;
|
|
31
|
+
let ring_intensity = glareFlareBindGroupLayout.$.glareFlare.ringIntensity;
|
|
32
|
+
let ray_intensity = glareFlareBindGroupLayout.$.glareFlare.rayIntensity;
|
|
33
|
+
let falloff = glareFlareBindGroupLayout.$.glareFlare.falloff;
|
|
34
|
+
let ray_count = glareFlareBindGroupLayout.$.glareFlare.rayCount;
|
|
35
|
+
|
|
36
|
+
// Central bright spot with distance-based falloff
|
|
37
|
+
let spot = spot_intensity / (dist * falloff + 0.1);
|
|
38
|
+
|
|
39
|
+
// Rings calculation, also respecting the texture boundary
|
|
40
|
+
let ring1 = std.sin(dist * 10.0) * ring_intensity / (dist * falloff + 0.5);
|
|
41
|
+
let ring2 = std.sin(dist * 20.0) * ring_intensity / (dist * falloff + 0.3);
|
|
42
|
+
const noise = std.abs(std.sin(rot.x)) + std.abs(std.cos(rot.y));
|
|
43
|
+
// Ray calculation: create a series of sharp radial spikes
|
|
44
|
+
let ray_angle = angle * ray_count + noise;
|
|
45
|
+
|
|
46
|
+
// Enhanced variability in ray length and size
|
|
47
|
+
let ray_length_factor = 0.25 + 0.95 * std.abs(std.sin(angle * 3.0 * noise)) * noise;
|
|
48
|
+
let ray_size_factor = 0.05 + 1.15 * std.abs(std.cos(angle * 13.0 * noise)) + noise;
|
|
49
|
+
|
|
50
|
+
// Apply variability to rays
|
|
51
|
+
let ray = std.pow(std.abs(std.sin(ray_angle)), 15.0 * ray_size_factor) * ray_intensity * (1.0 - dist * ray_length_factor) * noise;
|
|
52
|
+
|
|
53
|
+
// Combine all flare components
|
|
54
|
+
let flare = spot + ring1 + ring2 + ray;
|
|
55
|
+
|
|
56
|
+
// Calculate fade factor to black based on distance to the edge
|
|
57
|
+
let edge_fade = 1.0 - dist;
|
|
58
|
+
|
|
59
|
+
// Apply edge fade
|
|
60
|
+
const flareFaded = flare * edge_fade;
|
|
61
|
+
const flareFinal = std.clamp(flareFaded * flare_intensity, 0.0, 1.0);
|
|
62
|
+
const hslColor = RGBToHSL(color.xyz);
|
|
63
|
+
const lightness = std.clamp(hslColor.z + flareFinal, 0.0, 1.0);
|
|
64
|
+
const combined = HSLToRGB(d.vec3f(hslColor.xy, lightness));
|
|
65
|
+
// Final color with flare intensity, clamped to prevent oversaturation
|
|
66
|
+
// color = d.vec4f(std.mix(color.xyz, combined, glow), color.w);
|
|
67
|
+
return d.vec4f(combined, color.w);
|
|
68
|
+
}, {
|
|
69
|
+
v: 1,
|
|
70
|
+
name: void 0,
|
|
71
|
+
ast: {"params":[{"type":"i","name":"input"}],"body":[0,[[13,"uv",[6,[7,"d","vec2f"],[[7,[7,"input","uv"],"x"],[1,[5,"1"],"-",[7,[7,"input","uv"],"y"]]]]],[13,"centeredCoords",[6,[7,"std","sub"],[[6,[7,"std","mul"],["uv",[5,"2"]]],[5,"1"]]]],[12,"color",[6,"getPixelColorFromVector",["uv"]]],[13,"rot",[7,[7,"sharedBindGroupLayout","$"],"rot"]],[13,"center",[6,[7,"std","add"],[[6,[7,"d","vec2f"],[[5,"0"]]],[6,[7,"d","vec2f"],[[7,"rot","x"],[7,"rot","y"]]]]]],[12,"dist",[6,[7,"std","distance"],["center","centeredCoords"]]],[12,"uv_norm",[6,[7,"std","sub"],[[6,[7,"std","mul"],[[7,"input","uv"],[5,"2"]]],[5,"1"]]]],[12,"angle",[6,[7,"std","atan2"],[[6,[7,"std","add"],[[7,"rot","y"],[7,"uv_norm","y"]]],[6,[7,"std","sub"],[[7,"rot","x"],[7,"uv_norm","x"]]]]]],[2,"dist","=",[6,[7,"std","clamp"],["dist",[5,"0"],[5,"1"]]]],[12,"flare_intensity",[7,[7,[7,"glareFlareBindGroupLayout","$"],"glareFlare"],"flareIntensity"]],[12,"spot_intensity",[7,[7,[7,"glareFlareBindGroupLayout","$"],"glareFlare"],"flareIntensity"]],[12,"ring_intensity",[7,[7,[7,"glareFlareBindGroupLayout","$"],"glareFlare"],"ringIntensity"]],[12,"ray_intensity",[7,[7,[7,"glareFlareBindGroupLayout","$"],"glareFlare"],"rayIntensity"]],[12,"falloff",[7,[7,[7,"glareFlareBindGroupLayout","$"],"glareFlare"],"falloff"]],[12,"ray_count",[7,[7,[7,"glareFlareBindGroupLayout","$"],"glareFlare"],"rayCount"]],[12,"spot",[1,"spot_intensity","/",[1,[1,"dist","*","falloff"],"+",[5,"0.1"]]]],[12,"ring1",[1,[1,[6,[7,"std","sin"],[[1,"dist","*",[5,"10"]]]],"*","ring_intensity"],"/",[1,[1,"dist","*","falloff"],"+",[5,"0.5"]]]],[12,"ring2",[1,[1,[6,[7,"std","sin"],[[1,"dist","*",[5,"20"]]]],"*","ring_intensity"],"/",[1,[1,"dist","*","falloff"],"+",[5,"0.3"]]]],[13,"noise",[1,[6,[7,"std","abs"],[[6,[7,"std","sin"],[[7,"rot","x"]]]]],"+",[6,[7,"std","abs"],[[6,[7,"std","cos"],[[7,"rot","y"]]]]]]],[12,"ray_angle",[1,[1,"angle","*","ray_count"],"+","noise"]],[12,"ray_length_factor",[1,[5,"0.25"],"+",[1,[1,[5,"0.95"],"*",[6,[7,"std","abs"],[[6,[7,"std","sin"],[[1,[1,"angle","*",[5,"3"]],"*","noise"]]]]]],"*","noise"]]],[12,"ray_size_factor",[1,[1,[5,"0.05"],"+",[1,[5,"1.15"],"*",[6,[7,"std","abs"],[[6,[7,"std","cos"],[[1,[1,"angle","*",[5,"13"]],"*","noise"]]]]]]],"+","noise"]],[12,"ray",[1,[1,[1,[6,[7,"std","pow"],[[6,[7,"std","abs"],[[6,[7,"std","sin"],["ray_angle"]]]],[1,[5,"15"],"*","ray_size_factor"]]],"*","ray_intensity"],"*",[1,[5,"1"],"-",[1,"dist","*","ray_length_factor"]]],"*","noise"]],[12,"flare",[1,[1,[1,"spot","+","ring1"],"+","ring2"],"+","ray"]],[12,"edge_fade",[1,[5,"1"],"-","dist"]],[13,"flareFaded",[1,"flare","*","edge_fade"]],[13,"flareFinal",[6,[7,"std","clamp"],[[1,"flareFaded","*","flare_intensity"],[5,"0"],[5,"1"]]]],[13,"hslColor",[6,"RGBToHSL",[[7,"color","xyz"]]]],[13,"lightness",[6,[7,"std","clamp"],[[1,[7,"hslColor","z"],"+","flareFinal"],[5,"0"],[5,"1"]]]],[13,"combined",[6,"HSLToRGB",[[6,[7,"d","vec3f"],[[7,"hslColor","xy"],"lightness"]]]]],[10,[6,[7,"d","vec4f"],["combined",[7,"color","w"]]]]]],"externalNames":["d","std","getPixelColorFromVector","sharedBindGroupLayout","glareFlareBindGroupLayout","RGBToHSL","HSLToRGB"]},
|
|
72
|
+
get externals() {
|
|
73
|
+
return {
|
|
74
|
+
d,
|
|
75
|
+
std,
|
|
76
|
+
getPixelColorFromVector,
|
|
77
|
+
sharedBindGroupLayout,
|
|
78
|
+
glareFlareBindGroupLayout,
|
|
79
|
+
RGBToHSL,
|
|
80
|
+
HSLToRGB
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}) && $.f)({})), "glareFlareFragment");
|
|
84
|
+
//# sourceMappingURL=glareFlareFragment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["tgpu","d","std","glareFlareBindGroupLayout","sharedBindGroupLayout","getPixelColorFromVector","HSLToRGB","RGBToHSL","glareFlareFragment","globalThis","__TYPEGPU_AUTONAME__","a","fragmentFn","in","uv","vec2f","out","vec4f","$","__TYPEGPU_META__","WeakMap","set","f","input","x","y","centeredCoords","sub","mul","color","rot","center","add","dist","distance","uv_norm","angle","atan2","clamp","flare_intensity","glareFlare","flareIntensity","spot_intensity","ring_intensity","ringIntensity","ray_intensity","rayIntensity","falloff","ray_count","rayCount","spot","ring1","sin","ring2","noise","abs","cos","ray_angle","ray_length_factor","ray_size_factor","ray","pow","flare","edge_fade","flareFaded","flareFinal","hslColor","xyz","lightness","z","combined","vec3f","xy","w","v","name","ast","{\"params\":[{\"type\":\"i\",\"name\":\"input\"}],\"body\":[0,[[13,\"uv\",[6,[7,\"d\",\"vec2f\"],[[7,[7,\"input\",\"uv\"],\"x\"],[1,[5,\"1\"],\"-\",[7,[7,\"input\",\"uv\"],\"y\"]]]]],[13,\"centeredCoords\",[6,[7,\"std\",\"sub\"],[[6,[7,\"std\",\"mul\"],[\"uv\",[5,\"2\"]]],[5,\"1\"]]]],[12,\"color\",[6,\"getPixelColorFromVector\",[\"uv\"]]],[13,\"rot\",[7,[7,\"sharedBindGroupLayout\",\"$\"],\"rot\"]],[13,\"center\",[6,[7,\"std\",\"add\"],[[6,[7,\"d\",\"vec2f\"],[[5,\"0\"]]],[6,[7,\"d\",\"vec2f\"],[[7,\"rot\",\"x\"],[7,\"rot\",\"y\"]]]]]],[12,\"dist\",[6,[7,\"std\",\"distance\"],[\"center\",\"centeredCoords\"]]],[12,\"uv_norm\",[6,[7,\"std\",\"sub\"],[[6,[7,\"std\",\"mul\"],[[7,\"input\",\"uv\"],[5,\"2\"]]],[5,\"1\"]]]],[12,\"angle\",[6,[7,\"std\",\"atan2\"],[[6,[7,\"std\",\"add\"],[[7,\"rot\",\"y\"],[7,\"uv_norm\",\"y\"]]],[6,[7,\"std\",\"sub\"],[[7,\"rot\",\"x\"],[7,\"uv_norm\",\"x\"]]]]]],[2,\"dist\",\"=\",[6,[7,\"std\",\"clamp\"],[\"dist\",[5,\"0\"],[5,\"1\"]]]],[12,\"flare_intensity\",[7,[7,[7,\"glareFlareBindGroupLayout\",\"$\"],\"glareFlare\"],\"flareIntensity\"]],[12,\"spot_intensity\",[7,[7,[7,\"glareFlareBindGroupLayout\",\"$\"],\"glareFlare\"],\"flareIntensity\"]],[12,\"ring_intensity\",[7,[7,[7,\"glareFlareBindGroupLayout\",\"$\"],\"glareFlare\"],\"ringIntensity\"]],[12,\"ray_intensity\",[7,[7,[7,\"glareFlareBindGroupLayout\",\"$\"],\"glareFlare\"],\"rayIntensity\"]],[12,\"falloff\",[7,[7,[7,\"glareFlareBindGroupLayout\",\"$\"],\"glareFlare\"],\"falloff\"]],[12,\"ray_count\",[7,[7,[7,\"glareFlareBindGroupLayout\",\"$\"],\"glareFlare\"],\"rayCount\"]],[12,\"spot\",[1,\"spot_intensity\",\"/\",[1,[1,\"dist\",\"*\",\"falloff\"],\"+\",[5,\"0.1\"]]]],[12,\"ring1\",[1,[1,[6,[7,\"std\",\"sin\"],[[1,\"dist\",\"*\",[5,\"10\"]]]],\"*\",\"ring_intensity\"],\"/\",[1,[1,\"dist\",\"*\",\"falloff\"],\"+\",[5,\"0.5\"]]]],[12,\"ring2\",[1,[1,[6,[7,\"std\",\"sin\"],[[1,\"dist\",\"*\",[5,\"20\"]]]],\"*\",\"ring_intensity\"],\"/\",[1,[1,\"dist\",\"*\",\"falloff\"],\"+\",[5,\"0.3\"]]]],[13,\"noise\",[1,[6,[7,\"std\",\"abs\"],[[6,[7,\"std\",\"sin\"],[[7,\"rot\",\"x\"]]]]],\"+\",[6,[7,\"std\",\"abs\"],[[6,[7,\"std\",\"cos\"],[[7,\"rot\",\"y\"]]]]]]],[12,\"ray_angle\",[1,[1,\"angle\",\"*\",\"ray_count\"],\"+\",\"noise\"]],[12,\"ray_length_factor\",[1,[5,\"0.25\"],\"+\",[1,[1,[5,\"0.95\"],\"*\",[6,[7,\"std\",\"abs\"],[[6,[7,\"std\",\"sin\"],[[1,[1,\"angle\",\"*\",[5,\"3\"]],\"*\",\"noise\"]]]]]],\"*\",\"noise\"]]],[12,\"ray_size_factor\",[1,[1,[5,\"0.05\"],\"+\",[1,[5,\"1.15\"],\"*\",[6,[7,\"std\",\"abs\"],[[6,[7,\"std\",\"cos\"],[[1,[1,\"angle\",\"*\",[5,\"13\"]],\"*\",\"noise\"]]]]]]],\"+\",\"noise\"]],[12,\"ray\",[1,[1,[1,[6,[7,\"std\",\"pow\"],[[6,[7,\"std\",\"abs\"],[[6,[7,\"std\",\"sin\"],[\"ray_angle\"]]]],[1,[5,\"15\"],\"*\",\"ray_size_factor\"]]],\"*\",\"ray_intensity\"],\"*\",[1,[5,\"1\"],\"-\",[1,\"dist\",\"*\",\"ray_length_factor\"]]],\"*\",\"noise\"]],[12,\"flare\",[1,[1,[1,\"spot\",\"+\",\"ring1\"],\"+\",\"ring2\"],\"+\",\"ray\"]],[12,\"edge_fade\",[1,[5,\"1\"],\"-\",\"dist\"]],[13,\"flareFaded\",[1,\"flare\",\"*\",\"edge_fade\"]],[13,\"flareFinal\",[6,[7,\"std\",\"clamp\"],[[1,\"flareFaded\",\"*\",\"flare_intensity\"],[5,\"0\"],[5,\"1\"]]]],[13,\"hslColor\",[6,\"RGBToHSL\",[[7,\"color\",\"xyz\"]]]],[13,\"lightness\",[6,[7,\"std\",\"clamp\"],[[1,[7,\"hslColor\",\"z\"],\"+\",\"flareFinal\"],[5,\"0\"],[5,\"1\"]]]],[13,\"combined\",[6,\"HSLToRGB\",[[6,[7,\"d\",\"vec3f\"],[[7,\"hslColor\",\"xy\"],\"lightness\"]]]]],[10,[6,[7,\"d\",\"vec4f\"],[\"combined\",[7,\"color\",\"w\"]]]]]],\"externalNames\":[\"d\",\"std\",\"getPixelColorFromVector\",\"sharedBindGroupLayout\",\"glareFlareBindGroupLayout\",\"RGBToHSL\",\"HSLToRGB\"]}","externals"],"sourceRoot":"../../../../src","sources":["shaders/fragmentShaders/glareFlareFragment.ts"],"mappings":"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","ignoreList":[]}
|