react-native-shine 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/lib/module/components/Content.js +35 -32
  2. package/lib/module/components/Content.js.map +1 -1
  3. package/lib/module/components/ShineGroup.js +0 -2
  4. package/lib/module/components/ShineGroup.js.map +1 -1
  5. package/lib/module/config/debugMode.js +4 -0
  6. package/lib/module/config/debugMode.js.map +1 -0
  7. package/lib/module/enums/colorPresets.js +71 -0
  8. package/lib/module/enums/colorPresets.js.map +1 -0
  9. package/lib/module/index.js +1 -0
  10. package/lib/module/index.js.map +1 -1
  11. package/lib/module/shaders/bindGroupLayouts.js +10 -1
  12. package/lib/module/shaders/bindGroupLayouts.js.map +1 -1
  13. package/lib/module/shaders/fragmentShaders/colorMaskFragment.js +37 -6
  14. package/lib/module/shaders/fragmentShaders/colorMaskFragment.js.map +1 -1
  15. package/lib/module/shaders/resourceManagement/bitmaps.js +4 -3
  16. package/lib/module/shaders/resourceManagement/bitmaps.js.map +1 -1
  17. package/lib/module/shaders/resourceManagement/bufferManager.js +6 -1
  18. package/lib/module/shaders/resourceManagement/bufferManager.js.map +1 -1
  19. package/lib/module/shaders/tgpuUtils.js +27 -19
  20. package/lib/module/shaders/tgpuUtils.js.map +1 -1
  21. package/lib/module/shaders/utils.js +1 -1
  22. package/lib/module/types/typeUtils.js +36 -4
  23. package/lib/module/types/typeUtils.js.map +1 -1
  24. package/lib/module/utils/size.js +2 -2
  25. package/lib/module/utils/vector.js +26 -19
  26. package/lib/module/utils/vector.js.map +1 -1
  27. package/lib/typescript/src/components/Content.d.ts +4 -2
  28. package/lib/typescript/src/components/Content.d.ts.map +1 -1
  29. package/lib/typescript/src/components/ShineGroup.d.ts +1 -1
  30. package/lib/typescript/src/components/ShineGroup.d.ts.map +1 -1
  31. package/lib/typescript/src/config/debugMode.d.ts +2 -0
  32. package/lib/typescript/src/config/debugMode.d.ts.map +1 -0
  33. package/lib/typescript/src/enums/colorPresets.d.ts +33 -0
  34. package/lib/typescript/src/enums/colorPresets.d.ts.map +1 -0
  35. package/lib/typescript/src/index.d.ts +1 -0
  36. package/lib/typescript/src/index.d.ts.map +1 -1
  37. package/lib/typescript/src/shaders/bindGroupLayouts.d.ts +27 -0
  38. package/lib/typescript/src/shaders/bindGroupLayouts.d.ts.map +1 -1
  39. package/lib/typescript/src/shaders/bindGroupUtils.d.ts +18 -0
  40. package/lib/typescript/src/shaders/bindGroupUtils.d.ts.map +1 -1
  41. package/lib/typescript/src/shaders/fragmentShaders/colorMaskFragment.d.ts.map +1 -1
  42. package/lib/typescript/src/shaders/resourceManagement/bitmaps.d.ts.map +1 -1
  43. package/lib/typescript/src/shaders/resourceManagement/bufferManager.d.ts.map +1 -1
  44. package/lib/typescript/src/shaders/tgpuUtils.d.ts +1 -0
  45. package/lib/typescript/src/shaders/tgpuUtils.d.ts.map +1 -1
  46. package/lib/typescript/src/types/typeUtils.d.ts +9 -0
  47. package/lib/typescript/src/types/typeUtils.d.ts.map +1 -1
  48. package/lib/typescript/src/types/types.d.ts +9 -0
  49. package/lib/typescript/src/types/types.d.ts.map +1 -1
  50. package/lib/typescript/src/utils/vector.d.ts +1 -0
  51. package/lib/typescript/src/utils/vector.d.ts.map +1 -1
  52. package/package.json +6 -6
  53. package/src/components/Content.tsx +32 -11
  54. package/src/components/ShineGroup.tsx +0 -2
  55. package/src/config/debugMode.ts +1 -0
  56. package/src/enums/colorPresets.ts +41 -0
  57. package/src/index.tsx +1 -0
  58. package/src/shaders/bindGroupLayouts.ts +9 -0
  59. package/src/shaders/fragmentShaders/colorMaskFragment.ts +46 -4
  60. package/src/shaders/resourceManagement/bitmaps.ts +4 -3
  61. package/src/shaders/resourceManagement/bufferManager.ts +10 -1
  62. package/src/shaders/tgpuUtils.ts +38 -21
  63. package/src/types/typeUtils.ts +33 -2
  64. package/src/types/types.ts +6 -0
  65. package/src/utils/vector.ts +4 -0
@@ -1,3 +1,4 @@
1
+ import { type ViewStyle } from 'react-native';
1
2
  import { type SharedValue } from 'react-native-reanimated';
2
3
  import type { TextureProps, TgpuRoot, TgpuTexture } from 'typegpu';
3
4
  import type { ColorMask, DeepPartiallyOptional, GlareOptions, ReverseHoloDetectionChannelFlags } from '../types/types';
@@ -7,18 +8,19 @@ export interface SharedProps {
7
8
  height: number;
8
9
  glareOptions?: Partial<GlareOptions>;
9
10
  colorMaskOptions?: DeepPartiallyOptional<ColorMask, 'baseColor'>;
10
- useTouchControl?: boolean;
11
11
  touchPosition?: SharedValue<V2d>;
12
12
  addReverseHolo?: boolean;
13
13
  reverseHoloDetectionChannelOptions?: Partial<ReverseHoloDetectionChannelFlags>;
14
14
  addHolo?: boolean;
15
15
  translateViewIn3d?: boolean;
16
+ style?: ViewStyle;
17
+ containerStyle?: ViewStyle;
16
18
  }
17
19
  interface ContentProps extends SharedProps {
18
20
  root: TgpuRoot;
19
21
  imageTexture: TgpuTexture<TextureProps>;
20
22
  maskTexture?: TgpuTexture<TextureProps>;
21
23
  }
22
- export default function Content({ addHolo, addReverseHolo, reverseHoloDetectionChannelOptions, colorMaskOptions, glareOptions, height, imageTexture, maskTexture, root, touchPosition, useTouchControl, width, translateViewIn3d, }: ContentProps): import("react/jsx-runtime").JSX.Element;
24
+ export default function Content({ addHolo, addReverseHolo, reverseHoloDetectionChannelOptions, colorMaskOptions, glareOptions, height, imageTexture, maskTexture, root, touchPosition, width, translateViewIn3d, style, containerStyle, }: ContentProps): import("react/jsx-runtime").JSX.Element;
23
25
  export {};
24
26
  //# sourceMappingURL=Content.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Content.d.ts","sourceRoot":"","sources":["../../../../src/components/Content.tsx"],"names":[],"mappings":"AAEA,OAAiB,EAEf,KAAK,WAAW,EAKjB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EACV,YAAY,EAEZ,QAAQ,EACR,WAAW,EACZ,MAAM,SAAS,CAAC;AA0BjB,OAAO,KAAK,EAEV,SAAS,EACT,qBAAqB,EACrB,YAAY,EAEZ,gCAAgC,EACjC,MAAM,gBAAgB,CAAC;AAOxB,OAAO,KAAK,EAAE,GAAG,EAAO,MAAM,iBAAiB,CAAC;AAgBhD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACrC,gBAAgB,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACjE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kCAAkC,CAAC,EAAE,OAAO,CAAC,gCAAgC,CAAC,CAAC;IAC/E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,UAAU,YAAa,SAAQ,WAAW;IACxC,IAAI,EAAE,QAAQ,CAAC;IACf,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IACxC,WAAW,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;CACzC;AAUD,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAC9B,OAAO,EACP,cAAc,EACd,kCAAkC,EAClC,gBAAgB,EAChB,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,WAAW,EACX,IAAI,EACJ,aAAa,EACb,eAAe,EACf,KAAK,EACL,iBAAyB,GAC1B,EAAE,YAAY,2CAqTd"}
1
+ {"version":3,"file":"Content.d.ts","sourceRoot":"","sources":["../../../../src/components/Content.tsx"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAChE,OAAiB,EAEf,KAAK,WAAW,EAKjB,MAAM,yBAAyB,CAAC;AAOjC,OAAO,KAAK,EACV,YAAY,EAEZ,QAAQ,EACR,WAAW,EACZ,MAAM,SAAS,CAAC;AA0BjB,OAAO,KAAK,EAEV,SAAS,EACT,qBAAqB,EACrB,YAAY,EAEZ,gCAAgC,EACjC,MAAM,gBAAgB,CAAC;AAOxB,OAAO,KAAK,EAAE,GAAG,EAAO,MAAM,iBAAiB,CAAC;AAgBhD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACrC,gBAAgB,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACjE,aAAa,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kCAAkC,CAAC,EAAE,OAAO,CAAC,gCAAgC,CAAC,CAAC;IAC/E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,cAAc,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,UAAU,YAAa,SAAQ,WAAW;IACxC,IAAI,EAAE,QAAQ,CAAC;IACf,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IACxC,WAAW,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;CACzC;AAUD,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAC9B,OAAO,EACP,cAAc,EACd,kCAAkC,EAClC,gBAAgB,EAChB,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,WAAW,EACX,IAAI,EACJ,aAAa,EACb,KAAK,EACL,iBAAyB,EACzB,KAAK,EACL,cAAc,GACf,EAAE,YAAY,2CAoUd"}
@@ -1,6 +1,6 @@
1
1
  import { type PropsWithChildren } from 'react';
2
2
  import { type ShineProps } from './Shine';
3
3
  type ShineGroupProps = PropsWithChildren<Partial<ShineProps>>;
4
- export declare function ShineGroup({ children, glareOptions, colorMaskOptions, maskURI, touchPosition, useTouchControl, addHolo, addReverseHolo, }: ShineGroupProps): import("react/jsx-runtime").JSX.Element;
4
+ export declare function ShineGroup({ children, glareOptions, colorMaskOptions, maskURI, touchPosition, addHolo, addReverseHolo, }: ShineGroupProps): import("react/jsx-runtime").JSX.Element;
5
5
  export {};
6
6
  //# sourceMappingURL=ShineGroup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ShineGroup.d.ts","sourceRoot":"","sources":["../../../../src/components/ShineGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAA+B,MAAM,OAAO,CAAC;AAW5E,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjD,KAAK,eAAe,GAAG,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AAE9D,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,eAAuB,EACvB,OAAe,EACf,cAAsB,GACvB,EAAE,eAAe,2CAiEjB"}
1
+ {"version":3,"file":"ShineGroup.d.ts","sourceRoot":"","sources":["../../../../src/components/ShineGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAA+B,MAAM,OAAO,CAAC;AAW5E,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjD,KAAK,eAAe,GAAG,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AAE9D,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,OAAe,EACf,cAAsB,GACvB,EAAE,eAAe,2CAgEjB"}
@@ -0,0 +1,2 @@
1
+ export declare const debug = false;
2
+ //# sourceMappingURL=debugMode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debugMode.d.ts","sourceRoot":"","sources":["../../../../src/config/debugMode.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,QAAQ,CAAC"}
@@ -0,0 +1,33 @@
1
+ export declare const ColorPresets: {
2
+ readonly RED: [255, 0, 0];
3
+ readonly GREEN: [0, 255, 0];
4
+ readonly BLUE: [0, 0, 255];
5
+ readonly YELLOW: [255, 255, 0];
6
+ readonly CYAN: [0, 255, 255];
7
+ readonly MAGENTA: [255, 0, 255];
8
+ readonly WHITE: [255, 255, 255];
9
+ readonly BLACK: [0, 0, 0];
10
+ readonly GRAY: [128, 128, 128];
11
+ readonly LIGHT_GRAY: [211, 211, 211];
12
+ readonly DARK_GRAY: [105, 105, 105];
13
+ readonly ORANGE: [255, 165, 0];
14
+ readonly PURPLE: [128, 0, 128];
15
+ readonly BROWN: [165, 42, 42];
16
+ readonly PINK: [255, 192, 203];
17
+ readonly LIME_GREEN: [50, 205, 50];
18
+ readonly FOREST_GREEN: [34, 139, 34];
19
+ readonly OLIVE: [128, 128, 0];
20
+ readonly TEAL: [0, 128, 128];
21
+ readonly NAVY: [0, 0, 128];
22
+ readonly ROYAL_BLUE: [65, 105, 225];
23
+ readonly SKY_BLUE: [135, 206, 235];
24
+ readonly INDIGO: [75, 0, 130];
25
+ readonly VIOLET: [238, 130, 238];
26
+ readonly MAROON: [128, 0, 0];
27
+ readonly GOLD: [255, 215, 0];
28
+ readonly TOMATO: [255, 99, 71];
29
+ readonly SALMON: [250, 128, 114];
30
+ readonly BEIGE: [245, 245, 220];
31
+ readonly POTATO: [222, 184, 135];
32
+ };
33
+ //# sourceMappingURL=colorPresets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorPresets.d.ts","sourceRoot":"","sources":["../../../../src/enums/colorPresets.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCgB,CAAC"}
@@ -6,4 +6,5 @@ export { ShineGroup } from './components/ShineGroup';
6
6
  export type { ShineProps } from './components/Shine';
7
7
  export * from './utils/vector';
8
8
  export type { V2d, V3d } from './types/vector';
9
+ export * from './enums/colorPresets';
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,4BAA4B,EAC7B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,eAAe,EACf,cAAc,GACf,CAAC;AACF,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,cAAc,gBAAgB,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,4BAA4B,EAC7B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,eAAe,EACf,cAAc,GACf,CAAC;AACF,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,cAAc,gBAAgB,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC/C,cAAc,sBAAsB,CAAC"}
@@ -51,6 +51,15 @@ export declare const colorMaskSchema: d.WgslStruct<{
51
51
  upper: d.Vec3f;
52
52
  lower: d.Vec3f;
53
53
  }>;
54
+ hueToleranceRange: d.WgslStruct<{
55
+ upper: d.F32;
56
+ lower: d.F32;
57
+ }>;
58
+ useHSV: d.Decorated<d.U32, [d.Align<16>]>;
59
+ brightnessTolerance: d.F32;
60
+ saturationTolerance: d.F32;
61
+ lowSaturationThreshold: d.F32;
62
+ lowBrightnessThreshold: d.F32;
54
63
  }>;
55
64
  export type ColorMaskSchema = typeof colorMaskSchema;
56
65
  export declare const colorMaskBindGroupLayout: import("typegpu").TgpuBindGroupLayout<{
@@ -61,6 +70,15 @@ export declare const colorMaskBindGroupLayout: import("typegpu").TgpuBindGroupLa
61
70
  upper: d.Vec3f;
62
71
  lower: d.Vec3f;
63
72
  }>;
73
+ hueToleranceRange: d.WgslStruct<{
74
+ upper: d.F32;
75
+ lower: d.F32;
76
+ }>;
77
+ useHSV: d.Decorated<d.U32, [d.Align<16>]>;
78
+ brightnessTolerance: d.F32;
79
+ saturationTolerance: d.F32;
80
+ lowSaturationThreshold: d.F32;
81
+ lowBrightnessThreshold: d.F32;
64
82
  }>;
65
83
  };
66
84
  }>;
@@ -118,6 +136,15 @@ export declare const bufferData: {
118
136
  upper: d.Vec3f;
119
137
  lower: d.Vec3f;
120
138
  }>;
139
+ hueToleranceRange: d.WgslStruct<{
140
+ upper: d.F32;
141
+ lower: d.F32;
142
+ }>;
143
+ useHSV: d.Decorated<d.U32, [d.Align<16>]>;
144
+ brightnessTolerance: d.F32;
145
+ saturationTolerance: d.F32;
146
+ lowSaturationThreshold: d.F32;
147
+ lowBrightnessThreshold: d.F32;
121
148
  }>;
122
149
  readonly usage: "uniform";
123
150
  };
@@ -1 +1 @@
1
- {"version":3,"file":"bindGroupLayouts.d.ts","sourceRoot":"","sources":["../../../../src/shaders/bindGroupLayouts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAGlC,eAAO,MAAM,sBAAsB;;;;;;;;;EAIjC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;EAIrC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;EAElC,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;EAOtB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC;AAE7C,eAAO,MAAM,oBAAoB;;;;;;;;;;;EAE/B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;EAM1B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC;AAErD,eAAO,MAAM,wBAAwB;;;;;;;;;;EAEnC,CAAC;AAEH,eAAO,MAAM,sCAAsC;;;;;;;EAOjD,CAAC;AAEH,MAAM,MAAM,sCAAsC,GAChD,OAAO,sCAAsC,CAAC;AAEhD,eAAO,MAAM,+CAA+C;;;;;;;;;;;;;;;;;;;;;EAIxD,CAAC;AAEL,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoBtB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC"}
1
+ {"version":3,"file":"bindGroupLayouts.d.ts","sourceRoot":"","sources":["../../../../src/shaders/bindGroupLayouts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAGlC,eAAO,MAAM,sBAAsB;;;;;;;;;EAIjC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;EAIrC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;EAElC,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;EAOtB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC;AAE7C,eAAO,MAAM,oBAAoB;;;;;;;;;;;EAE/B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;EAe1B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC;AAErD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;EAEnC,CAAC;AAEH,eAAO,MAAM,sCAAsC;;;;;;;EAOjD,CAAC;AAEH,MAAM,MAAM,sCAAsC,GAChD,OAAO,sCAAsC,CAAC;AAEhD,eAAO,MAAM,+CAA+C;;;;;;;;;;;;;;;;;;;;;EAIxD,CAAC;AAEL,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoBtB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC"}
@@ -38,6 +38,15 @@ export declare const createColorMaskBuffer: (root: TgpuRoot, initValues: Partial
38
38
  upper: d.Vec3f;
39
39
  lower: d.Vec3f;
40
40
  }>;
41
+ hueToleranceRange: d.WgslStruct<{
42
+ upper: d.F32;
43
+ lower: d.F32;
44
+ }>;
45
+ useHSV: d.Decorated<d.U32, [d.Align<16>]>;
46
+ brightnessTolerance: d.F32;
47
+ saturationTolerance: d.F32;
48
+ lowSaturationThreshold: d.F32;
49
+ lowBrightnessThreshold: d.F32;
41
50
  }>> & UniformFlag;
42
51
  export declare const createColorMaskBindGroup: (root: TgpuRoot, buffer: TgpuBuffer<ColorMaskSchema> & UniformFlag) => import("typegpu").TgpuBindGroup<{
43
52
  mask: {
@@ -47,6 +56,15 @@ export declare const createColorMaskBindGroup: (root: TgpuRoot, buffer: TgpuBuff
47
56
  upper: d.Vec3f;
48
57
  lower: d.Vec3f;
49
58
  }>;
59
+ hueToleranceRange: d.WgslStruct<{
60
+ upper: d.F32;
61
+ lower: d.F32;
62
+ }>;
63
+ useHSV: d.Decorated<d.U32, [d.Align<16>]>;
64
+ brightnessTolerance: d.F32;
65
+ saturationTolerance: d.F32;
66
+ lowSaturationThreshold: d.F32;
67
+ lowBrightnessThreshold: d.F32;
50
68
  }>;
51
69
  };
52
70
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"bindGroupUtils.d.ts","sourceRoot":"","sources":["../../../../src/shaders/bindGroupUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAIL,KAAK,eAAe,EAEpB,KAAK,WAAW,EAEhB,KAAK,sCAAsC,EAE5C,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AASxB,eAAO,MAAM,oBAAoB,GAAI,MAAM,QAAQ,EAAE;;;;CAAoB,sCAGnD,CAAC;AAEvB,eAAO,MAAM,6BAA6B,GACxC,MAAM,QAAQ,EACd,QAAQ,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;;;;EAIzB,CAAC;AAEL,eAAO,MAAM,wBAAwB,GACnC,MAAM,QAAQ,EACd,aAAa,OAAO,CAAC,YAAY,CAAC;;;;;;;iBAId,CAAC;AAEvB,eAAO,MAAM,oBAAoB,GAC/B,MAAM,QAAQ,EACd,QAAQ,UAAU,CAAC,WAAW,CAAC,GAAG,WAAW;;;;;;;;;;;EAI3C,CAAC;AAEL,eAAO,MAAM,qBAAqB,GAChC,MAAM,QAAQ,EACd,YAAY,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC;;;;;;iBAOjC,CAAC;AAEvB,eAAO,MAAM,wBAAwB,GACnC,MAAM,QAAQ,EACd,QAAQ,UAAU,CAAC,eAAe,CAAC,GAAG,WAAW;;;;;;;;;;EAI/C,CAAC;AAEL,eAAO,MAAM,+CAA+C,GAC1D,MAAM,QAAQ,EACd,wBAAwB,UAAU,CAAC,sCAAsC,CAAC,GACxE,WAAW,EACb,oBAAoB,UAAU,CAAC,WAAW,CAAC,GAAG,WAAW;;;;;;;;;;;;;;;;;;;;;EAKvD,CAAC"}
1
+ {"version":3,"file":"bindGroupUtils.d.ts","sourceRoot":"","sources":["../../../../src/shaders/bindGroupUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAIL,KAAK,eAAe,EAEpB,KAAK,WAAW,EAEhB,KAAK,sCAAsC,EAE5C,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AASxB,eAAO,MAAM,oBAAoB,GAAI,MAAM,QAAQ,EAAE;;;;CAAoB,sCAGnD,CAAC;AAEvB,eAAO,MAAM,6BAA6B,GACxC,MAAM,QAAQ,EACd,QAAQ,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;;;;EAIzB,CAAC;AAEL,eAAO,MAAM,wBAAwB,GACnC,MAAM,QAAQ,EACd,aAAa,OAAO,CAAC,YAAY,CAAC;;;;;;;iBAId,CAAC;AAEvB,eAAO,MAAM,oBAAoB,GAC/B,MAAM,QAAQ,EACd,QAAQ,UAAU,CAAC,WAAW,CAAC,GAAG,WAAW;;;;;;;;;;;EAI3C,CAAC;AAEL,eAAO,MAAM,qBAAqB,GAChC,MAAM,QAAQ,EACd,YAAY,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC;;;;;;;;;;;;;;;iBAOjC,CAAC;AAEvB,eAAO,MAAM,wBAAwB,GACnC,MAAM,QAAQ,EACd,QAAQ,UAAU,CAAC,eAAe,CAAC,GAAG,WAAW;;;;;;;;;;;;;;;;;;;EAI/C,CAAC;AAEL,eAAO,MAAM,+CAA+C,GAC1D,MAAM,QAAQ,EACd,wBAAwB,UAAU,CAAC,sCAAsC,CAAC,GACxE,WAAW,EACb,oBAAoB,UAAU,CAAC,WAAW,CAAC,GAAG,WAAW;;;;;;;;;;;;;;;;;;;;;EAKvD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"colorMaskFragment.d.ts","sourceRoot":"","sources":["../../../../../src/shaders/fragmentShaders/colorMaskFragment.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAOlC,QAAA,MAAM,iBAAiB;;WAwBrB,CAAC;AAEH,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"colorMaskFragment.d.ts","sourceRoot":"","sources":["../../../../../src/shaders/fragmentShaders/colorMaskFragment.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAQlC,QAAA,MAAM,iBAAiB;;WAiErB,CAAC;AAEH,eAAe,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"bitmaps.d.ts","sourceRoot":"","sources":["../../../../../src/shaders/resourceManagement/bitmaps.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,gBAAgB,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,WAAW,CAgBhE,CAAC;AAIF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"bitmaps.d.ts","sourceRoot":"","sources":["../../../../../src/shaders/resourceManagement/bitmaps.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,gBAAgB,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,WAAW,CAgBhE,CAAC;AAIF,eAAe,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"bufferManager.d.ts","sourceRoot":"","sources":["../../../../../src/shaders/resourceManagement/bufferManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE1E,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE/D,KAAK,wBAAwB,CAC3B,MAAM,SAAS;IAAE,MAAM,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAAC,KAAK,EAAE,eAAe,CAAA;CAAE,IAC1E,MAAM,CAAC,OAAO,CAAC,SAAS,SAAS,GACjC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG;IAAE,eAAe,EAAE,IAAI,CAAA;CAAE,GACxD,MAAM,CAAC,OAAO,CAAC,SAAS,SAAS,GAC/B,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG;IAAE,eAAe,EAAE,IAAI,CAAA;CAAE,GACxD,MAAM,CAAC,OAAO,CAAC,SAAS,QAAQ,GAC9B,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG;IAAE,cAAc,EAAE,IAAI,CAAA;CAAE,GACvD,KAAK,CAAC;AAEd,qBAAa,cAAc,CACzB,QAAQ,SAAS,MAAM,CACrB,MAAM,EACN;IAAE,MAAM,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAAC,KAAK,EAAE,eAAe,CAAA;CAAE,CAC9D;IAMW,OAAO,CAAC,OAAO;IAJ3B,OAAO,CAAC,OAAO,CAER;gBAEa,OAAO,EAAE,QAAQ;IAErC,GAAG,CAAC,CAAC,SAAS,MAAM,QAAQ,EAC1B,GAAG,EAAE,CAAC,EACN,MAAM,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAC5C,IAAI;IAIP,GAAG,CAAC,CAAC,SAAS,MAAM,QAAQ,EAC1B,GAAG,EAAE,CAAC,GACL,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;IAIpD,SAAS,CAAC,CAAC,SAAS,MAAM,QAAQ,EAChC,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,CAAC,EACN,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,GAC5C,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAuBxC,IAAI,IAAI,CAAC,MAAM,QAAQ,CAAC,EAAE;IAI1B,GAAG,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO;IAI9C,MAAM,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI;CAO/C"}
1
+ {"version":3,"file":"bufferManager.d.ts","sourceRoot":"","sources":["../../../../../src/shaders/resourceManagement/bufferManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAG1E,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE/D,KAAK,wBAAwB,CAC3B,MAAM,SAAS;IAAE,MAAM,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAAC,KAAK,EAAE,eAAe,CAAA;CAAE,IAC1E,MAAM,CAAC,OAAO,CAAC,SAAS,SAAS,GACjC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG;IAAE,eAAe,EAAE,IAAI,CAAA;CAAE,GACxD,MAAM,CAAC,OAAO,CAAC,SAAS,SAAS,GAC/B,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG;IAAE,eAAe,EAAE,IAAI,CAAA;CAAE,GACxD,MAAM,CAAC,OAAO,CAAC,SAAS,QAAQ,GAC9B,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG;IAAE,cAAc,EAAE,IAAI,CAAA;CAAE,GACvD,KAAK,CAAC;AAEd,qBAAa,cAAc,CACzB,QAAQ,SAAS,MAAM,CACrB,MAAM,EACN;IAAE,MAAM,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAAC,KAAK,EAAE,eAAe,CAAA;CAAE,CAC9D;IAMW,OAAO,CAAC,OAAO;IAJ3B,OAAO,CAAC,OAAO,CAER;gBAEa,OAAO,EAAE,QAAQ;IAErC,GAAG,CAAC,CAAC,SAAS,MAAM,QAAQ,EAC1B,GAAG,EAAE,CAAC,EACN,MAAM,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAC5C,IAAI;IAIP,GAAG,CAAC,CAAC,SAAS,MAAM,QAAQ,EAC1B,GAAG,EAAE,CAAC,GACL,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;IAIpD,SAAS,CAAC,CAAC,SAAS,MAAM,QAAQ,EAChC,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,CAAC,EACN,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,GAC5C,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IA+BxC,IAAI,IAAI,CAAC,MAAM,QAAQ,CAAC,EAAE;IAI1B,GAAG,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO;IAI9C,MAAM,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI;CAO/C"}
@@ -1,6 +1,7 @@
1
1
  import * as d from 'typegpu/data';
2
2
  export declare const hueShift: import("typegpu").TgpuFn<(rgb: d.Vec3f, angle: d.F32) => d.Vec3f>;
3
3
  export declare const rgbToHSV: import("typegpu").TgpuFn<(rgb: d.Vec3f) => d.Vec3f>;
4
+ export declare const hsvToRGB: import("typegpu").TgpuFn<(hsv: d.Vec3f) => d.Vec3f>;
4
5
  export declare const fmod: import("typegpu").TgpuFn<(number: d.F32, md: d.F32) => d.F32>;
5
6
  export declare const glareColorShift: import("typegpu").TgpuFn<(color: d.Vec3f, power: d.F32) => d.Vec3f>;
6
7
  export declare const overlayChannel: import("typegpu").TgpuFn<(base: d.F32, blend: d.F32) => d.F32>;
@@ -1 +1 @@
1
- {"version":3,"file":"tgpuUtils.d.ts","sourceRoot":"","sources":["../../../../src/shaders/tgpuUtils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAElC,eAAO,MAAM,QAAQ,mEA6BnB,CAAC;AAEH,eAAO,MAAM,QAAQ,qDA2BnB,CAAC;AAEH,eAAO,MAAM,IAAI,+DASf,CAAC;AAEH,eAAO,MAAM,eAAe,qEAc1B,CAAC;AAEH,eAAO,MAAM,cAAc,gEAYzB,CAAC;AAEH,eAAO,MAAM,eAAe,sEAS1B,CAAC;AAEH,mBAAmB;AACnB,eAAO,MAAM,OAAO,mDAQlB,CAAC;AAEH,eAAO,MAAM,0BAA0B,+DAcrC,CAAC;AAEH,eAAO,MAAM,UAAU,yEAMrB,CAAC"}
1
+ {"version":3,"file":"tgpuUtils.d.ts","sourceRoot":"","sources":["../../../../src/shaders/tgpuUtils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAElC,eAAO,MAAM,QAAQ,mEA6BnB,CAAC;AAEH,eAAO,MAAM,QAAQ,qDA6BnB,CAAC;AAEH,eAAO,MAAM,QAAQ,qDAanB,CAAC;AAEH,eAAO,MAAM,IAAI,+DASf,CAAC;AAEH,eAAO,MAAM,eAAe,qEAc1B,CAAC;AAEH,eAAO,MAAM,cAAc,gEAYzB,CAAC;AAEH,eAAO,MAAM,eAAe,sEAS1B,CAAC;AAEH,mBAAmB;AACnB,eAAO,MAAM,OAAO,mDAQlB,CAAC;AAEH,eAAO,MAAM,0BAA0B,+DAcrC,CAAC;AAEH,eAAO,MAAM,UAAU,yEAMrB,CAAC"}
@@ -9,6 +9,15 @@ export declare const colorMaskToTyped: (colorMask: ColorMask) => {
9
9
  upper: any;
10
10
  lower: any;
11
11
  };
12
+ useHSV: number;
13
+ hueToleranceRange: {
14
+ lower: number;
15
+ upper: number;
16
+ };
17
+ brightnessTolerance: number;
18
+ saturationTolerance: number;
19
+ lowSaturationThreshold: number;
20
+ lowBrightnessThreshold: number;
12
21
  };
13
22
  export declare const createHoloOptions: (options: Partial<HoloOptions>) => HoloOptions;
14
23
  export declare const createReverseHoloDetectionChannelFlags: (options?: Partial<ReverseHoloDetectionChannelFlags>) => {
@@ -1 +1 @@
1
- {"version":3,"file":"typeUtils.d.ts","sourceRoot":"","sources":["../../../../src/types/typeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAuB,MAAM,cAAc,CAAC;AAExD,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,qBAAqB,EAErB,WAAW,EACX,gCAAgC,EACjC,MAAM,SAAS,CAAC;AAIjB,eAAO,MAAM,kBAAkB,GAC7B,SAAS,OAAO,CAAC,YAAY,CAAC,KAC7B,YAoBF,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvD,KAAK,CAAC,KACL,GACA,CAAC,IAAI,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC,GAQvC,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,WAAW,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,KACvD,SAcF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,WAAW,SAAS;;;;;;CASpD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,SAAS,OAAO,CAAC,WAAW,CAAC,KAC5B,WAQF,CAAC;AAEF,eAAO,MAAM,sCAAsC,GACjD,UAAU,OAAO,CAAC,gCAAgC,CAAC;;;;;;;CA4BpD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,EAAE,QAkB7C,CAAC"}
1
+ {"version":3,"file":"typeUtils.d.ts","sourceRoot":"","sources":["../../../../src/types/typeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAuB,MAAM,cAAc,CAAC;AAExD,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,qBAAqB,EAErB,WAAW,EACX,gCAAgC,EACjC,MAAM,SAAS,CAAC;AAIjB,eAAO,MAAM,kBAAkB,GAC7B,SAAS,OAAO,CAAC,YAAY,CAAC,KAC7B,YAoBF,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvD,KAAK,CAAC,KACL,GACA,CAAC,IAAI,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC,GAQvC,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,WAAW,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,KACvD,SAqCF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,WAAW,SAAS;;;;;;;;;;;;;;;CAkBpD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,SAAS,OAAO,CAAC,WAAW,CAAC,KAC5B,WAQF,CAAC;AAEF,eAAO,MAAM,sCAAsC,GACjD,UAAU,OAAO,CAAC,gCAAgC,CAAC;;;;;;;CA2BpD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,EAAE,QAkB7C,CAAC"}
@@ -14,6 +14,15 @@ export type GlareOptions = {
14
14
  };
15
15
  export type ColorMask = {
16
16
  baseColor: vec3;
17
+ useHSV?: boolean;
18
+ hueToleranceRange: {
19
+ upper: number;
20
+ lower: number;
21
+ };
22
+ brightnessTolerance?: number;
23
+ lowBrightnessThreshold?: number;
24
+ saturationTolerance?: number;
25
+ lowSaturationThreshold?: number;
17
26
  rgbToleranceRange: {
18
27
  upper: vec3;
19
28
  lower: vec3;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACpC,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5C,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACpD,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC;AAE9B,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,IAAI,CAAC;IAChB,iBAAiB,EAAE;QACjB,KAAK,EAAE,IAAI,CAAC;QACZ,KAAK,EAAE,IAAI,CAAC;KACb,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,cAAc,CAAC;CAC9B,CAAC;AAGF,MAAM,MAAM,iBAAiB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI;KACnD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAExB,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,MAAM,GACN,MAAM,GACN,IAAI,GACJ,SAAS,CAAC;AAId,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3E,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAC5E,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE1B,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,UAAU,CACtC,kBAAkB,CAAC,qBAAqB,CAAC,CAC1C,CAAC,CAAC,CAAC,CAAC;AAEL,MAAM,MAAM,sBAAsB,GAAG,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,7 @@ export declare function transformV3d(v3d: V3d, transformer: Transformer): V3d;
25
25
  export declare function clamp(v: number, min?: number, max?: number): number;
26
26
  export declare function clampV3d(v3d: V3d, min: number, max: number): V3d;
27
27
  export declare function degToRad(deg: number): number;
28
+ export declare function createV3d(x: number, y: number, z: number): V3d;
28
29
  export declare const zeroV3d: {
29
30
  x: number;
30
31
  y: number;
@@ -1 +1 @@
1
- {"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../../../src/utils/vector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAG7D,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAMnD;AAED,eAAO,MAAM,WAAW,iBAAW,CAAC;AAEpC,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,CAM1C;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAG7C;AAED,wBAAgB,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAKzD;AAED,wBAAgB,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAG7C;AAED,wBAAgB,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAG7C;AAED,wBAAgB,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,GAAG,GAAG,CAMzE;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAGhE;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAGrC;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,OAAO,CAEnD;AAED,eAAO,MAAM,OAAO;;;CAAiB,CAAC;AAGtC,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAMnD;AAED,eAAO,MAAM,WAAW,iBAAW,CAAC;AAEpC,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAGjD;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAGrC;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,CAM1C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,CAG/C;AAED,wBAAgB,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAG5E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,GAAG,GAAG,CAMpE;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,SAAK,EAAE,GAAG,SAAI,GAAG,MAAM,CAG1D;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAGhE;AAID,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG5C;AAED,eAAO,MAAM,OAAO;;;;CAAuB,CAAC"}
1
+ {"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../../../src/utils/vector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAG7D,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAMnD;AAED,eAAO,MAAM,WAAW,iBAAW,CAAC;AAEpC,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,CAM1C;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAG7C;AAED,wBAAgB,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAKzD;AAED,wBAAgB,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAG7C;AAED,wBAAgB,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAG7C;AAED,wBAAgB,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,GAAG,GAAG,CAMzE;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAGhE;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAGrC;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,OAAO,CAEnD;AAED,eAAO,MAAM,OAAO;;;CAAiB,CAAC;AAGtC,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAMnD;AAED,eAAO,MAAM,WAAW,iBAAW,CAAC;AAEpC,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAGjD;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAGrC;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,CAM1C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,CAG/C;AAED,wBAAgB,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAG5E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,GAAG,GAAG,CAMpE;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,SAAK,EAAE,GAAG,SAAI,GAAG,MAAM,CAG1D;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAGhE;AAID,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG5C;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,GAAG,CAE9D;AAED,eAAO,MAAM,OAAO;;;;CAAuB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-shine",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Fast and efficient way of adding interactive effects that are run entirely on shaders using typeGPU.",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -82,11 +82,11 @@
82
82
  "prettier": "^3.0.3",
83
83
  "react": "19.0.0",
84
84
  "react-dom": "19.0.0",
85
- "react-native": "0.79.5",
85
+ "react-native": "0.81.0",
86
86
  "react-native-builder-bob": "^0.40.13",
87
87
  "react-native-reanimated": "^4.1.3",
88
- "react-native-wgpu": "^0.2.8",
89
- "react-native-worklets": "^0.5.1",
88
+ "react-native-wgpu": "^0.3.1",
89
+ "react-native-worklets": "^0.5.2",
90
90
  "release-it": "^17.10.0",
91
91
  "typegpu": "0.7.1",
92
92
  "typescript": "^5.8.3",
@@ -96,8 +96,8 @@
96
96
  "react": "*",
97
97
  "react-native": "*",
98
98
  "react-native-reanimated": "^4.1.3",
99
- "react-native-wgpu": "^0.2.8",
100
- "react-native-worklets": "^0.5.1",
99
+ "react-native-wgpu": "^0.3.1",
100
+ "react-native-worklets": "^0.5.2",
101
101
  "typegpu": "0.7.1"
102
102
  },
103
103
  "workspaces": [
@@ -1,5 +1,5 @@
1
- import { useEffect, useMemo, useRef } from 'react';
2
- import { PixelRatio, View } from 'react-native';
1
+ import { useEffect, useMemo, useRef, useState } from 'react';
2
+ import { PixelRatio, View, type ViewStyle } from 'react-native';
3
3
  import Animated, {
4
4
  SensorType,
5
5
  type SharedValue,
@@ -8,7 +8,11 @@ import Animated, {
8
8
  useDerivedValue,
9
9
  useSharedValue,
10
10
  } from 'react-native-reanimated';
11
- import { Canvas, useGPUContext } from 'react-native-wgpu';
11
+ import {
12
+ Canvas,
13
+ type CanvasRef,
14
+ type RNCanvasContext,
15
+ } from 'react-native-wgpu';
12
16
  import * as d from 'typegpu/data';
13
17
  import type {
14
18
  TextureProps,
@@ -76,12 +80,13 @@ export interface SharedProps {
76
80
  height: number;
77
81
  glareOptions?: Partial<GlareOptions>;
78
82
  colorMaskOptions?: DeepPartiallyOptional<ColorMask, 'baseColor'>;
79
- useTouchControl?: boolean;
80
83
  touchPosition?: SharedValue<V2d>;
81
84
  addReverseHolo?: boolean;
82
85
  reverseHoloDetectionChannelOptions?: Partial<ReverseHoloDetectionChannelFlags>;
83
86
  addHolo?: boolean;
84
87
  translateViewIn3d?: boolean;
88
+ style?: ViewStyle;
89
+ containerStyle?: ViewStyle;
85
90
  }
86
91
 
87
92
  interface ContentProps extends SharedProps {
@@ -109,12 +114,21 @@ export default function Content({
109
114
  maskTexture,
110
115
  root,
111
116
  touchPosition,
112
- useTouchControl,
113
117
  width,
114
118
  translateViewIn3d = false,
119
+ style,
120
+ containerStyle,
115
121
  }: ContentProps) {
116
122
  const { device } = root;
117
- const { ref, context } = useGPUContext();
123
+ // const { ref, context } = useGPUContext();
124
+ const ref = useRef<CanvasRef>(null);
125
+ const [context, setContext] = useState<RNCanvasContext | null>(null);
126
+ // const context = ref.current!.getContext('webgpu')!;
127
+
128
+ useEffect(() => {
129
+ if (ref) setContext(ref.current?.getContext('webgpu')!);
130
+ }, [ref]);
131
+
118
132
  const presentationFormat = navigator.gpu.getPreferredCanvasFormat();
119
133
  const renderRef = useRef<() => void>(null);
120
134
 
@@ -140,8 +154,6 @@ export default function Content({
140
154
  []
141
155
  );
142
156
 
143
- //TODO: add once again, when the wgpu issues are fixed :3
144
-
145
157
  const animatedStyle = useAnimatedStyle(() => {
146
158
  const rotX = rotation.value.x * 10;
147
159
  const rotY = rotation.value.y * 10;
@@ -154,6 +166,7 @@ export default function Content({
154
166
  ],
155
167
  };
156
168
  });
169
+
157
170
  // Subscribe to orientation changes and reset calibration on change
158
171
  useEffect(
159
172
  () =>
@@ -167,7 +180,7 @@ export default function Content({
167
180
  useDerivedValue(() => {
168
181
  'worklet';
169
182
 
170
- if (useTouchControl) {
183
+ if (touchPosition) {
171
184
  rotation.value = touchPosition
172
185
  ? { x: touchPosition.value.x, y: touchPosition.value.y, z: 0 }
173
186
  : zeroV3d;
@@ -217,6 +230,7 @@ export default function Content({
217
230
  1
218
231
  );
219
232
  });
233
+
220
234
  // Render loop
221
235
  useEffect(() => {
222
236
  if (!context) return;
@@ -274,7 +288,9 @@ export default function Content({
274
288
  root,
275
289
  'colorMask',
276
290
  colorMaskToTyped(
277
- createColorMask(colorMaskOptions ?? { baseColor: [-20, -20, -20] })
291
+ createColorMask(
292
+ colorMaskOptions ?? { baseColor: [-20, -20, -20], useHSV: false }
293
+ )
278
294
  )
279
295
  );
280
296
  const colorMaskBindGroup = createColorMaskBindGroup(root, colorMaskBuffer);
@@ -412,11 +428,16 @@ export default function Content({
412
428
  matrix: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 50, 1],
413
429
  },
414
430
  ],
431
+ ...containerStyle,
415
432
  }}
416
433
  >
417
434
  <Animated.View style={[translateViewIn3d && animatedStyle]}>
418
435
  <View>
419
- <Canvas ref={ref} style={[{ width, height }]} transparent={true} />
436
+ <Canvas
437
+ ref={ref}
438
+ style={[{ width, height }, style]}
439
+ transparent={true}
440
+ />
420
441
  </View>
421
442
  </Animated.View>
422
443
  </View>
@@ -19,7 +19,6 @@ export function ShineGroup({
19
19
  colorMaskOptions,
20
20
  maskURI,
21
21
  touchPosition,
22
- useTouchControl = false,
23
22
  addHolo = false,
24
23
  addReverseHolo = false,
25
24
  }: ShineGroupProps) {
@@ -80,7 +79,6 @@ export function ShineGroup({
80
79
  colorMaskOptions={colorMaskOptions}
81
80
  maskURI={maskURI}
82
81
  touchPosition={touchPosition}
83
- useTouchControl={useTouchControl}
84
82
  addReverseHolo={addReverseHolo}
85
83
  addHolo={addHolo}
86
84
  />
@@ -0,0 +1 @@
1
+ export const debug = false;
@@ -0,0 +1,41 @@
1
+ import type { vec3 } from '../types/types';
2
+
3
+ export const ColorPresets = {
4
+ // --- Primary & Secondary ---
5
+ RED: [255, 0, 0], // #FF0000
6
+ GREEN: [0, 255, 0], // #00FF00
7
+ BLUE: [0, 0, 255], // #0000FF
8
+ YELLOW: [255, 255, 0], // #FFFF00
9
+ CYAN: [0, 255, 255], // #00FFFF
10
+ MAGENTA: [255, 0, 255], // #FF00FF
11
+
12
+ // --- Grayscale ---
13
+ WHITE: [255, 255, 255], // #FFFFFF
14
+ BLACK: [0, 0, 0], // #000000
15
+ GRAY: [128, 128, 128], // #808080
16
+ LIGHT_GRAY: [211, 211, 211], // #D3D3D3
17
+ DARK_GRAY: [105, 105, 105], // #696969
18
+
19
+ // --- Common Colors ---
20
+ ORANGE: [255, 165, 0], // #FFA500
21
+ PURPLE: [128, 0, 128], // #800080
22
+ BROWN: [165, 42, 42], // #A52A2A
23
+ PINK: [255, 192, 203], // #FFC0CB
24
+ LIME_GREEN: [50, 205, 50], // #32CD32
25
+ FOREST_GREEN: [34, 139, 34], // #228B22
26
+ OLIVE: [128, 128, 0], // #808000
27
+ TEAL: [0, 128, 128], // #008080
28
+ NAVY: [0, 0, 128], // #000080
29
+ ROYAL_BLUE: [65, 105, 225], // #4169E1
30
+ SKY_BLUE: [135, 206, 235], // #87CEEB
31
+ INDIGO: [75, 0, 130], // #4B0082
32
+ VIOLET: [238, 130, 238], // #EE82EE
33
+ MAROON: [128, 0, 0], // #800000
34
+
35
+ // --- Hues & Tints ---
36
+ GOLD: [255, 215, 0], // #FFD700
37
+ TOMATO: [255, 99, 71], // #FF6347
38
+ SALMON: [250, 128, 114], // #FA8072
39
+ BEIGE: [245, 245, 220], // #F5F5DC
40
+ POTATO: [222, 184, 135], // #DEB887
41
+ } as const satisfies Record<string, vec3>;
package/src/index.tsx CHANGED
@@ -16,3 +16,4 @@ export { ShineGroup } from './components/ShineGroup';
16
16
  export type { ShineProps } from './components/Shine';
17
17
  export * from './utils/vector';
18
18
  export type { V2d, V3d } from './types/vector';
19
+ export * from './enums/colorPresets';
@@ -39,6 +39,15 @@ export const colorMaskSchema = d.struct({
39
39
  upper: d.vec3f,
40
40
  lower: d.vec3f,
41
41
  }),
42
+ hueToleranceRange: d.struct({
43
+ upper: d.f32,
44
+ lower: d.f32,
45
+ }),
46
+ useHSV: d.align(16, d.u32),
47
+ brightnessTolerance: d.f32,
48
+ saturationTolerance: d.f32,
49
+ lowSaturationThreshold: d.f32,
50
+ lowBrightnessThreshold: d.f32,
42
51
  });
43
52
 
44
53
  export type ColorMaskSchema = typeof colorMaskSchema;
@@ -5,6 +5,7 @@ import {
5
5
  textureBindGroupLayout,
6
6
  colorMaskBindGroupLayout,
7
7
  } from '../bindGroupLayouts';
8
+ import { rgbToHSV } from '../tgpuUtils';
8
9
 
9
10
  const colorMaskFragment = tgpu['~unstable'].fragmentFn({
10
11
  in: { uv: d.vec2f },
@@ -15,6 +16,16 @@ const colorMaskFragment = tgpu['~unstable'].fragmentFn({
15
16
  const mask = colorMaskBindGroupLayout.$.mask;
16
17
  const maskedColor = mask.baseColor;
17
18
  const rgbToleranceRange = mask.rgbToleranceRange;
19
+ const useHSV = mask.useHSV;
20
+
21
+ const hueToleranceRange = mask.hueToleranceRange;
22
+ const hueUpper = hueToleranceRange.upper;
23
+ const hueLower = hueToleranceRange.lower;
24
+
25
+ const brightnessTolerance = mask.brightnessTolerance;
26
+ const saturationTolerance = mask.saturationTolerance;
27
+ const lowSaturationThreshold = mask.lowSaturationThreshold;
28
+ const lowBrightnessThreshold = mask.lowBrightnessThreshold;
18
29
 
19
30
  let color = std.textureSample(
20
31
  textureBindGroupLayout.$.texture,
@@ -26,10 +37,41 @@ const colorMaskFragment = tgpu['~unstable'].fragmentFn({
26
37
  const maskedColorUpper = std.add(maskedColor, rgbToleranceRange.upper);
27
38
  const upperCheck = std.all(std.le(color.xyz, maskedColorUpper));
28
39
  const lowerCheck = std.all(std.ge(color.xyz, maskedColorLower));
29
- if (upperCheck && lowerCheck) {
30
- return d.vec4f(color.xyz, 0.0);
31
- }
32
- return d.vec4f(color.xyz, color.w);
40
+ const rgbCheck = upperCheck && lowerCheck;
41
+
42
+ const maskedHSV = rgbToHSV(maskedColor);
43
+ const colorHSV = rgbToHSV(color.xyz);
44
+
45
+ let hueDiff = std.sub(colorHSV.x, maskedHSV.x);
46
+ hueDiff = std.select(hueDiff, std.sub(hueDiff, 1.0), hueDiff > d.f32(0.5));
47
+ hueDiff = std.select(hueDiff, std.add(hueDiff, 1.0), hueDiff < d.f32(-0.5));
48
+ const lowerHueCheck = hueDiff >= -hueLower;
49
+ const upperHueCheck = hueDiff <= hueUpper;
50
+ let hueCheck = lowerHueCheck && upperHueCheck;
51
+
52
+ const saturationDiff = std.abs(std.sub(colorHSV.y, maskedHSV.y));
53
+ const saturationCheck = saturationDiff <= saturationTolerance;
54
+
55
+ const brightnessDiff = std.abs(std.sub(colorHSV.z, maskedHSV.z));
56
+ const brightnessCheck = brightnessDiff <= brightnessTolerance;
57
+
58
+ const pixelIsGray = colorHSV.y < lowSaturationThreshold;
59
+ const targetIsGray = maskedHSV.y < lowSaturationThreshold;
60
+
61
+ const pixelIsBlack = colorHSV.z < lowBrightnessThreshold;
62
+ const targetIsBlack = maskedHSV.z < lowBrightnessThreshold;
63
+
64
+ //hue is unstable when either color is gray or black (low saturation or low brightness)
65
+ const hueIsUnstable =
66
+ pixelIsGray || targetIsGray || pixelIsBlack || targetIsBlack;
67
+
68
+ hueCheck = std.select(hueCheck, d.bool(true), hueIsUnstable);
69
+
70
+ const hsvCheck = hueCheck && saturationCheck && brightnessCheck;
71
+ const maskCheck = std.select(rgbCheck, hsvCheck, useHSV === d.u32(1));
72
+
73
+ color = std.select(color, d.vec4f(color.xyz, 0.0), maskCheck);
74
+ return color;
33
75
  });
34
76
 
35
77
  export default colorMaskFragment;