@flighthq/materials 0.1.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 (60) hide show
  1. package/dist/classicMaterials.d.ts +5 -0
  2. package/dist/classicMaterials.d.ts.map +1 -0
  3. package/dist/classicMaterials.js +39 -0
  4. package/dist/classicMaterials.js.map +1 -0
  5. package/dist/color.d.ts +23 -0
  6. package/dist/color.d.ts.map +1 -0
  7. package/dist/color.js +291 -0
  8. package/dist/color.js.map +1 -0
  9. package/dist/colorTransform.d.ts +18 -0
  10. package/dist/colorTransform.d.ts.map +1 -0
  11. package/dist/colorTransform.js +119 -0
  12. package/dist/colorTransform.js.map +1 -0
  13. package/dist/colorTransformMaterial.d.ts +4 -0
  14. package/dist/colorTransformMaterial.d.ts.map +1 -0
  15. package/dist/colorTransformMaterial.js +18 -0
  16. package/dist/colorTransformMaterial.js.map +1 -0
  17. package/dist/index.d.ts +12 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +12 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/material.d.ts +6 -0
  22. package/dist/material.d.ts.map +1 -0
  23. package/dist/material.js +73 -0
  24. package/dist/material.js.map +1 -0
  25. package/dist/materialPresets.d.ts +13 -0
  26. package/dist/materialPresets.d.ts.map +1 -0
  27. package/dist/materialPresets.js +118 -0
  28. package/dist/materialPresets.js.map +1 -0
  29. package/dist/materialValidation.d.ts +7 -0
  30. package/dist/materialValidation.d.ts.map +1 -0
  31. package/dist/materialValidation.js +52 -0
  32. package/dist/materialValidation.js.map +1 -0
  33. package/dist/pbrExtensionMaterials.d.ts +9 -0
  34. package/dist/pbrExtensionMaterials.d.ts.map +1 -0
  35. package/dist/pbrExtensionMaterials.js +93 -0
  36. package/dist/pbrExtensionMaterials.js.map +1 -0
  37. package/dist/pbrMaterials.d.ts +6 -0
  38. package/dist/pbrMaterials.d.ts.map +1 -0
  39. package/dist/pbrMaterials.js +134 -0
  40. package/dist/pbrMaterials.js.map +1 -0
  41. package/dist/surfaceMaterial.d.ts +7 -0
  42. package/dist/surfaceMaterial.d.ts.map +1 -0
  43. package/dist/surfaceMaterial.js +41 -0
  44. package/dist/surfaceMaterial.js.map +1 -0
  45. package/dist/unlitMaterials.d.ts +10 -0
  46. package/dist/unlitMaterials.d.ts.map +1 -0
  47. package/dist/unlitMaterials.js +66 -0
  48. package/dist/unlitMaterials.js.map +1 -0
  49. package/package.json +38 -0
  50. package/src/classicMaterials.test.ts +48 -0
  51. package/src/color.test.ts +383 -0
  52. package/src/colorTransform.test.ts +384 -0
  53. package/src/colorTransformMaterial.test.ts +26 -0
  54. package/src/material.test.ts +110 -0
  55. package/src/materialPresets.test.ts +125 -0
  56. package/src/materialValidation.test.ts +130 -0
  57. package/src/pbrExtensionMaterials.test.ts +123 -0
  58. package/src/pbrMaterials.test.ts +91 -0
  59. package/src/surfaceMaterial.test.ts +69 -0
  60. package/src/unlitMaterials.test.ts +127 -0
@@ -0,0 +1,5 @@
1
+ import type { BlinnPhongMaterial, LambertMaterial, PhongMaterial } from '@flighthq/types';
2
+ export declare function createBlinnPhongMaterial(opts?: Readonly<Partial<BlinnPhongMaterial>>): BlinnPhongMaterial;
3
+ export declare function createLambertMaterial(opts?: Readonly<Partial<LambertMaterial>>): LambertMaterial;
4
+ export declare function createPhongMaterial(opts?: Readonly<Partial<PhongMaterial>>): PhongMaterial;
5
+ //# sourceMappingURL=classicMaterials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classicMaterials.d.ts","sourceRoot":"","sources":["../src/classicMaterials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAO1F,wBAAgB,wBAAwB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,kBAAkB,CAUzG;AAID,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,GAAG,eAAe,CAOhG;AAID,wBAAgB,mBAAmB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,aAAa,CAU1F"}
@@ -0,0 +1,39 @@
1
+ import { BlinnPhongMaterialKind, LambertMaterialKind, PhongMaterialKind } from '@flighthq/types';
2
+ import { createSurfaceMaterial } from './surfaceMaterial';
3
+ // Classic Blinn-Phong material: diffuse plus a half-vector specular lobe. `diffuse`/`specular`
4
+ // default to white, `shininess` to 32, `normalScale` to 1, all maps to null.
5
+ export function createBlinnPhongMaterial(opts) {
6
+ const material = createSurfaceMaterial(BlinnPhongMaterialKind);
7
+ material.diffuse = opts?.diffuse ?? 0xffffffff;
8
+ material.diffuseMap = opts?.diffuseMap ?? null;
9
+ material.normalMap = opts?.normalMap ?? null;
10
+ material.normalScale = opts?.normalScale ?? 1;
11
+ material.shininess = opts?.shininess ?? 32;
12
+ material.specular = opts?.specular ?? 0xffffffff;
13
+ material.specularMap = opts?.specularMap ?? null;
14
+ return material;
15
+ }
16
+ // Classic diffuse-only Lambertian material. `diffuse` defaults to white, `emissive` to opaque
17
+ // black (no self-illumination), both maps to null.
18
+ export function createLambertMaterial(opts) {
19
+ const material = createSurfaceMaterial(LambertMaterialKind);
20
+ material.diffuse = opts?.diffuse ?? 0xffffffff;
21
+ material.diffuseMap = opts?.diffuseMap ?? null;
22
+ material.emissive = opts?.emissive ?? 0x000000ff;
23
+ material.emissiveMap = opts?.emissiveMap ?? null;
24
+ return material;
25
+ }
26
+ // Classic Phong material: diffuse plus a reflection-vector specular lobe. `diffuse`/`specular`
27
+ // default to white, `shininess` to 32, `normalScale` to 1, all maps to null.
28
+ export function createPhongMaterial(opts) {
29
+ const material = createSurfaceMaterial(PhongMaterialKind);
30
+ material.diffuse = opts?.diffuse ?? 0xffffffff;
31
+ material.diffuseMap = opts?.diffuseMap ?? null;
32
+ material.normalMap = opts?.normalMap ?? null;
33
+ material.normalScale = opts?.normalScale ?? 1;
34
+ material.shininess = opts?.shininess ?? 32;
35
+ material.specular = opts?.specular ?? 0xffffffff;
36
+ material.specularMap = opts?.specularMap ?? null;
37
+ return material;
38
+ }
39
+ //# sourceMappingURL=classicMaterials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classicMaterials.js","sourceRoot":"","sources":["../src/classicMaterials.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,+FAA+F;AAC/F,6EAA6E;AAC7E,MAAM,UAAU,wBAAwB,CAAC,IAA4C;IACnF,MAAM,QAAQ,GAAG,qBAAqB,CAAC,sBAAsB,CAAuB,CAAC;IACrF,QAAQ,CAAC,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,UAAU,CAAC;IAC/C,QAAQ,CAAC,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,IAAI,CAAC;IAC/C,QAAQ,CAAC,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC;IAC7C,QAAQ,CAAC,WAAW,GAAG,IAAI,EAAE,WAAW,IAAI,CAAC,CAAC;IAC9C,QAAQ,CAAC,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;IAC3C,QAAQ,CAAC,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,UAAU,CAAC;IACjD,QAAQ,CAAC,WAAW,GAAG,IAAI,EAAE,WAAW,IAAI,IAAI,CAAC;IACjD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8FAA8F;AAC9F,mDAAmD;AACnD,MAAM,UAAU,qBAAqB,CAAC,IAAyC;IAC7E,MAAM,QAAQ,GAAG,qBAAqB,CAAC,mBAAmB,CAAoB,CAAC;IAC/E,QAAQ,CAAC,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,UAAU,CAAC;IAC/C,QAAQ,CAAC,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,IAAI,CAAC;IAC/C,QAAQ,CAAC,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,UAAU,CAAC;IACjD,QAAQ,CAAC,WAAW,GAAG,IAAI,EAAE,WAAW,IAAI,IAAI,CAAC;IACjD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,+FAA+F;AAC/F,6EAA6E;AAC7E,MAAM,UAAU,mBAAmB,CAAC,IAAuC;IACzE,MAAM,QAAQ,GAAG,qBAAqB,CAAC,iBAAiB,CAAkB,CAAC;IAC3E,QAAQ,CAAC,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,UAAU,CAAC;IAC/C,QAAQ,CAAC,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,IAAI,CAAC;IAC/C,QAAQ,CAAC,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC;IAC7C,QAAQ,CAAC,WAAW,GAAG,IAAI,EAAE,WAAW,IAAI,CAAC,CAAC;IAC9C,QAAQ,CAAC,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;IAC3C,QAAQ,CAAC,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,UAAU,CAAC;IACjD,QAAQ,CAAC,WAAW,GAAG,IAAI,EAAE,WAAW,IAAI,IAAI,CAAC;IACjD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,23 @@
1
+ export type LinearColor = [number, number, number, number];
2
+ export type HslColor = [number, number, number];
3
+ export type HsvColor = [number, number, number];
4
+ export declare function computeRgbHexString(color: number): string;
5
+ export declare function createHslColor(): HslColor;
6
+ export declare function createHsvColor(): HsvColor;
7
+ export declare function createLinearColor(): LinearColor;
8
+ export declare function getColorContrastRatio(a: number, b: number): number;
9
+ export declare function getColorLuminance(color: number): number;
10
+ export declare function hslToRgb(out: [number, number, number, number], h: number, s: number, l: number): void;
11
+ export declare function hsvToRgb(out: [number, number, number, number], h: number, s: number, v: number): void;
12
+ export declare function lerpColor(start: number, end: number, t: number): number;
13
+ export declare function lerpLinearColor(out: LinearColor, start: Readonly<LinearColor>, end: Readonly<LinearColor>, t: number): LinearColor;
14
+ export declare function linearChannelToSrgb(value: number): number;
15
+ export declare function packColor(r: number, g: number, b: number, a: number): number;
16
+ export declare function packLinearToColor(color: Readonly<LinearColor>): number;
17
+ export declare function premultiplyColorAlpha(color: number): number;
18
+ export declare function rgbToHsl(out: HslColor, color: number): HslColor;
19
+ export declare function rgbToHsv(out: HsvColor, color: number): HsvColor;
20
+ export declare function unpackColorRgba(out: [number, number, number, number], color: number): void;
21
+ export declare function unpackColorToLinear(out: LinearColor, color: number): LinearColor;
22
+ export declare function unpremultiplyColorAlpha(color: number): number;
23
+ //# sourceMappingURL=color.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../src/color.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAI3D,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAIhD,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAKhD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzD;AAGD,wBAAgB,cAAc,IAAI,QAAQ,CAEzC;AAGD,wBAAgB,cAAc,IAAI,QAAQ,CAEzC;AAGD,wBAAgB,iBAAiB,IAAI,WAAW,CAE/C;AAKD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAMlE;AAKD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKvD;AAMD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAcrG;AAID,wBAAgB,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CA6CrG;AAMD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAevE;AAID,wBAAgB,eAAe,CAC7B,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC5B,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC1B,CAAC,EAAE,MAAM,GACR,WAAW,CAeb;AAID,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzD;AAKD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAM5E;AAKD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,MAAM,CAMtE;AAMD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM3D;AAMD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CA2B/D;AAKD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAuB/D;AAID,wBAAgB,eAAe,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAK1F;AAQD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAMhF;AAKD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO7D"}
package/dist/color.js ADDED
@@ -0,0 +1,291 @@
1
+ // Takes a 24-bit RGB color (`0xRRGGBB`, e.g. a TextFormat color) and returns a
2
+ // CSS `#RRGGBB` string. Any high-byte bits are masked off, so a 32-bit RGBA
3
+ // value would keep `GGBBAA` — pass RGB, not RGBA.
4
+ export function computeRgbHexString(color) {
5
+ return `#${(color & 0xffffff).toString(16).padStart(6, '0')}`;
6
+ }
7
+ // Allocates a fresh zeroed `HslColor` for use as an `rgbToHsl` out parameter.
8
+ export function createHslColor() {
9
+ return [0, 0, 0];
10
+ }
11
+ // Allocates a fresh zeroed `HsvColor` for use as an `rgbToHsv` out parameter.
12
+ export function createHsvColor() {
13
+ return [0, 0, 0];
14
+ }
15
+ // Allocates a fresh zeroed `LinearColor` for use as an `unpackColorToLinear` out parameter.
16
+ export function createLinearColor() {
17
+ return [0, 0, 0, 0];
18
+ }
19
+ // WCAG 2.x contrast ratio between two packed sRGB `0xRRGGBBAA` colors (alpha ignored).
20
+ // Returns the ratio in [1, 21]; 1 = no contrast, 21 = black on white. The formula is
21
+ // (L1 + 0.05) / (L2 + 0.05) where L1 ≥ L2 are the relative luminances.
22
+ export function getColorContrastRatio(a, b) {
23
+ const la = getColorLuminance(a);
24
+ const lb = getColorLuminance(b);
25
+ const lighter = Math.max(la, lb);
26
+ const darker = Math.min(la, lb);
27
+ return (lighter + 0.05) / (darker + 0.05);
28
+ }
29
+ // Rec. 709 relative luminance of a packed sRGB `0xRRGGBBAA` color (alpha ignored).
30
+ // Gamma-decodes RGB to linear, then applies the Rec. 709 luminance weights. Returns a
31
+ // value in [0, 1] where 0 is black and 1 is white.
32
+ export function getColorLuminance(color) {
33
+ const r = srgbChannelToLinear(((color >>> 24) & 0xff) / 0xff);
34
+ const g = srgbChannelToLinear(((color >>> 16) & 0xff) / 0xff);
35
+ const b = srgbChannelToLinear(((color >>> 8) & 0xff) / 0xff);
36
+ return 0.2126 * r + 0.7152 * g + 0.0722 * b;
37
+ }
38
+ // Converts a packed sRGB `0xRRGGBBAA` color to HSL. Writes `out[0]` = hue [0, 360),
39
+ // `out[1]` = saturation [0, 1], `out[2]` = lightness [0, 1]. Alpha is ignored.
40
+ // The conversion operates in sRGB (non-linear) space, matching artist-facing color pickers.
41
+ // Returns `out`.
42
+ export function hslToRgb(out, h, s, l) {
43
+ // h in [0, 360), s and l in [0, 1]. Writes sRGB [0,1] R/G/B to out[0..2]; leaves out[3].
44
+ if (s === 0) {
45
+ out[0] = l;
46
+ out[1] = l;
47
+ out[2] = l;
48
+ return;
49
+ }
50
+ const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
51
+ const p = 2 * l - q;
52
+ const hn = h / 360;
53
+ out[0] = hueToRgbChannel(p, q, hn + 1 / 3);
54
+ out[1] = hueToRgbChannel(p, q, hn);
55
+ out[2] = hueToRgbChannel(p, q, hn - 1 / 3);
56
+ }
57
+ // Converts HSV to RGB floats. Writes sRGB [0,1] to out[0..2] (h in [0, 360), s/v in [0, 1]).
58
+ // Alpha in out[3] is not modified.
59
+ export function hsvToRgb(out, h, s, v) {
60
+ if (s === 0) {
61
+ out[0] = v;
62
+ out[1] = v;
63
+ out[2] = v;
64
+ return;
65
+ }
66
+ const hn = ((h % 360) + 360) % 360;
67
+ const i = Math.floor(hn / 60) % 6;
68
+ const f = hn / 60 - Math.floor(hn / 60);
69
+ const p = v * (1 - s);
70
+ const q = v * (1 - f * s);
71
+ const t = v * (1 - (1 - f) * s);
72
+ switch (i) {
73
+ case 0:
74
+ out[0] = v;
75
+ out[1] = t;
76
+ out[2] = p;
77
+ break;
78
+ case 1:
79
+ out[0] = q;
80
+ out[1] = v;
81
+ out[2] = p;
82
+ break;
83
+ case 2:
84
+ out[0] = p;
85
+ out[1] = v;
86
+ out[2] = t;
87
+ break;
88
+ case 3:
89
+ out[0] = p;
90
+ out[1] = q;
91
+ out[2] = v;
92
+ break;
93
+ case 4:
94
+ out[0] = t;
95
+ out[1] = p;
96
+ out[2] = v;
97
+ break;
98
+ default:
99
+ out[0] = v;
100
+ out[1] = p;
101
+ out[2] = q;
102
+ break;
103
+ }
104
+ }
105
+ // Linearly interpolates between two packed sRGB colors `start` and `end` by `t` in [0, 1].
106
+ // Interpolation is performed in linear space for perceptual correctness (gamma-correct mix),
107
+ // then repacked to sRGB. Alpha is interpolated linearly (alpha is already linear coverage).
108
+ // `t` is clamped to [0, 1].
109
+ export function lerpColor(start, end, t) {
110
+ const tc = Math.min(1, Math.max(0, t));
111
+ const sr = srgbChannelToLinear(((start >>> 24) & 0xff) / 0xff);
112
+ const sg = srgbChannelToLinear(((start >>> 16) & 0xff) / 0xff);
113
+ const sb = srgbChannelToLinear(((start >>> 8) & 0xff) / 0xff);
114
+ const sa = (start & 0xff) / 0xff;
115
+ const er = srgbChannelToLinear(((end >>> 24) & 0xff) / 0xff);
116
+ const eg = srgbChannelToLinear(((end >>> 16) & 0xff) / 0xff);
117
+ const eb = srgbChannelToLinear(((end >>> 8) & 0xff) / 0xff);
118
+ const ea = (end & 0xff) / 0xff;
119
+ const r = sr + (er - sr) * tc;
120
+ const g = sg + (eg - sg) * tc;
121
+ const b = sb + (eb - sb) * tc;
122
+ const a = sa + (ea - sa) * tc;
123
+ return packLinearToColor([r, g, b, a]);
124
+ }
125
+ // Linearly interpolates between two LinearColors in linear space and writes the result to
126
+ // `out`. `t` is clamped to [0, 1]. Alias-safe: reads all input values before writing `out`.
127
+ export function lerpLinearColor(out, start, end, t) {
128
+ const tc = Math.min(1, Math.max(0, t));
129
+ const r0 = start[0];
130
+ const g0 = start[1];
131
+ const b0 = start[2];
132
+ const a0 = start[3];
133
+ const r1 = end[0];
134
+ const g1 = end[1];
135
+ const b1 = end[2];
136
+ const a1 = end[3];
137
+ out[0] = r0 + (r1 - r0) * tc;
138
+ out[1] = g0 + (g1 - g0) * tc;
139
+ out[2] = b0 + (b1 - b0) * tc;
140
+ out[3] = a0 + (a1 - a0) * tc;
141
+ return out;
142
+ }
143
+ // The IEC 61966-2-1 linear-to-sRGB inverse OETF for a single channel in [0, 1].
144
+ // Exported for callers that need per-channel conversion; the packed form is `packLinearToColor`.
145
+ export function linearChannelToSrgb(value) {
146
+ return value <= 0.0031308 ? value * 12.92 : 1.055 * value ** (1 / 2.4) - 0.055;
147
+ }
148
+ // Packs four sRGB-space components (each in [0, 1]) to a `0xRRGGBBAA` integer.
149
+ // Does NOT gamma-encode — use `packLinearToColor` when starting from linear floats.
150
+ // Components are clamped to [0, 1] and rounded to 8-bit precision.
151
+ export function packColor(r, g, b, a) {
152
+ const ri = Math.round(Math.min(1, Math.max(0, r)) * 0xff);
153
+ const gi = Math.round(Math.min(1, Math.max(0, g)) * 0xff);
154
+ const bi = Math.round(Math.min(1, Math.max(0, b)) * 0xff);
155
+ const ai = Math.round(Math.min(1, Math.max(0, a)) * 0xff);
156
+ return ((ri << 24) | (gi << 16) | (bi << 8) | ai) >>> 0;
157
+ }
158
+ // Packs a linear-space RGBA float color to a `0xRRGGBBAA` integer (the inverse of
159
+ // `unpackColorToLinear`). RGB channels are gamma-encoded to sRGB; alpha passes through
160
+ // unchanged (alpha is linear coverage, never gamma-encoded). Channels are clamped to [0, 1].
161
+ export function packLinearToColor(color) {
162
+ const r = Math.round(Math.min(1, Math.max(0, linearChannelToSrgb(color[0]))) * 0xff);
163
+ const g = Math.round(Math.min(1, Math.max(0, linearChannelToSrgb(color[1]))) * 0xff);
164
+ const b = Math.round(Math.min(1, Math.max(0, linearChannelToSrgb(color[2]))) * 0xff);
165
+ const a = Math.round(Math.min(1, Math.max(0, color[3])) * 0xff);
166
+ return ((r << 24) | (g << 16) | (b << 8) | a) >>> 0;
167
+ }
168
+ // Premultiplies the RGB channels of a packed sRGB `0xRRGGBBAA` color by its alpha channel
169
+ // and returns a new packed color. Output RGB = round(RGB × alpha). The alpha channel
170
+ // is preserved unchanged. Fully-transparent (alpha=0) results in black-with-alpha-0.
171
+ // Used when a renderer requires premultiplied-alpha color values.
172
+ export function premultiplyColorAlpha(color) {
173
+ const a = (color & 0xff) / 0xff;
174
+ const r = Math.round(((color >>> 24) & 0xff) * a);
175
+ const g = Math.round(((color >>> 16) & 0xff) * a);
176
+ const b = Math.round(((color >>> 8) & 0xff) * a);
177
+ return ((r << 24) | (g << 16) | (b << 8) | (color & 0xff)) >>> 0;
178
+ }
179
+ // Converts a packed sRGB `0xRRGGBBAA` color to HSL and writes to `out`.
180
+ // `out[0]` = hue in [0, 360), `out[1]` = saturation [0, 1], `out[2]` = lightness [0, 1].
181
+ // Alpha is ignored. The conversion operates in sRGB (non-linear) space, consistent with
182
+ // artist-facing HSL color pickers. Returns `out`.
183
+ export function rgbToHsl(out, color) {
184
+ const r = ((color >>> 24) & 0xff) / 0xff;
185
+ const g = ((color >>> 16) & 0xff) / 0xff;
186
+ const b = ((color >>> 8) & 0xff) / 0xff;
187
+ const max = Math.max(r, g, b);
188
+ const min = Math.min(r, g, b);
189
+ const l = (max + min) / 2;
190
+ if (max === min) {
191
+ out[0] = 0;
192
+ out[1] = 0;
193
+ out[2] = l;
194
+ return out;
195
+ }
196
+ const d = max - min;
197
+ const s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
198
+ let h;
199
+ if (max === r) {
200
+ h = ((g - b) / d + (g < b ? 6 : 0)) / 6;
201
+ }
202
+ else if (max === g) {
203
+ h = ((b - r) / d + 2) / 6;
204
+ }
205
+ else {
206
+ h = ((r - g) / d + 4) / 6;
207
+ }
208
+ out[0] = h * 360;
209
+ out[1] = s;
210
+ out[2] = l;
211
+ return out;
212
+ }
213
+ // Converts a packed sRGB `0xRRGGBBAA` color to HSV and writes to `out`.
214
+ // `out[0]` = hue in [0, 360), `out[1]` = saturation [0, 1], `out[2]` = value [0, 1].
215
+ // Alpha is ignored. The conversion operates in sRGB (non-linear) space. Returns `out`.
216
+ export function rgbToHsv(out, color) {
217
+ const r = ((color >>> 24) & 0xff) / 0xff;
218
+ const g = ((color >>> 16) & 0xff) / 0xff;
219
+ const b = ((color >>> 8) & 0xff) / 0xff;
220
+ const max = Math.max(r, g, b);
221
+ const min = Math.min(r, g, b);
222
+ const d = max - min;
223
+ const v = max;
224
+ const s = max === 0 ? 0 : d / max;
225
+ let h;
226
+ if (d === 0) {
227
+ h = 0;
228
+ }
229
+ else if (max === r) {
230
+ h = ((g - b) / d + (g < b ? 6 : 0)) / 6;
231
+ }
232
+ else if (max === g) {
233
+ h = ((b - r) / d + 2) / 6;
234
+ }
235
+ else {
236
+ h = ((r - g) / d + 4) / 6;
237
+ }
238
+ out[0] = h * 360;
239
+ out[1] = s;
240
+ out[2] = v;
241
+ return out;
242
+ }
243
+ // Converts a packed sRGB-space `0xRRGGBBAA` integer into four components in [0, 1] and
244
+ // writes them to `out`. Does NOT gamma-decode — use `unpackColorToLinear` for linear space.
245
+ export function unpackColorRgba(out, color) {
246
+ out[0] = ((color >>> 24) & 0xff) / 0xff;
247
+ out[1] = ((color >>> 16) & 0xff) / 0xff;
248
+ out[2] = ((color >>> 8) & 0xff) / 0xff;
249
+ out[3] = (color & 0xff) / 0xff;
250
+ }
251
+ // The single sRgb→linear decode seam for the whole SDK (§0.2): packed `0xRRGGBBAA` is
252
+ // sRgb-albedo, so RGB is gamma-decoded to linear while alpha passes through unchanged
253
+ // (alpha is already linear coverage, never gamma-encoded). Writes four floats in [0, 1]
254
+ // into `out` and returns it. A packed 8-bit integer cannot carry HDR — light and emissive
255
+ // radiance is `unpackColorToLinear(out, color) × intensity`, computed by the caller.
256
+ // Backends must not re-decode packed colors; they consume this output.
257
+ export function unpackColorToLinear(out, color) {
258
+ out[0] = srgbChannelToLinear(((color >>> 24) & 0xff) / 0xff);
259
+ out[1] = srgbChannelToLinear(((color >>> 16) & 0xff) / 0xff);
260
+ out[2] = srgbChannelToLinear(((color >>> 8) & 0xff) / 0xff);
261
+ out[3] = (color & 0xff) / 0xff;
262
+ return out;
263
+ }
264
+ // Reverses premultiplied-alpha encoding for a packed sRGB `0xRRGGBBAA` color.
265
+ // Output RGB = round(RGB / alpha), clamped to [0, 255]. Returns the input unchanged
266
+ // when alpha is 0 (division-by-zero guard: fully-transparent stays black-with-alpha-0).
267
+ export function unpremultiplyColorAlpha(color) {
268
+ const a = (color & 0xff) / 0xff;
269
+ if (a === 0)
270
+ return color;
271
+ const r = Math.min(255, Math.round(((color >>> 24) & 0xff) / a));
272
+ const g = Math.min(255, Math.round(((color >>> 16) & 0xff) / a));
273
+ const b = Math.min(255, Math.round(((color >>> 8) & 0xff) / a));
274
+ return ((r << 24) | (g << 16) | (b << 8) | (color & 0xff)) >>> 0;
275
+ }
276
+ // HSL helper: interpolates a single channel from hue position `t`.
277
+ function hueToRgbChannel(p, q, t) {
278
+ const tn = ((t % 1) + 1) % 1;
279
+ if (tn < 1 / 6)
280
+ return p + (q - p) * 6 * tn;
281
+ if (tn < 1 / 2)
282
+ return q;
283
+ if (tn < 2 / 3)
284
+ return p + (q - p) * (2 / 3 - tn) * 6;
285
+ return p;
286
+ }
287
+ // The IEC 61966-2-1 sRgb electro-optical transfer function for a single channel in [0, 1].
288
+ function srgbChannelToLinear(value) {
289
+ return value <= 0.04045 ? value / 12.92 : ((value + 0.055) / 1.055) ** 2.4;
290
+ }
291
+ //# sourceMappingURL=color.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color.js","sourceRoot":"","sources":["../src/color.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { ColorTransform, ColorTransformLike } from '@flighthq/types';
2
+ export declare function cloneColorTransform(source: Readonly<ColorTransformLike>): ColorTransform;
3
+ export declare function concatColorTransform(out: ColorTransformLike, source: Readonly<ColorTransformLike>, other: Readonly<ColorTransformLike>): void;
4
+ export declare function copyColorTransform(out: ColorTransformLike, source: Readonly<ColorTransformLike>): void;
5
+ export declare function copyColorTransformToArrays(outColorMultipliers: number[], outColorOffsets: number[], source: Readonly<ColorTransformLike>): void;
6
+ export declare function createColorTransform(opts?: Readonly<Partial<ColorTransformLike>>): ColorTransform;
7
+ export declare function equalsColorTransform(a: Readonly<ColorTransformLike>, b: Readonly<ColorTransformLike>): boolean;
8
+ export declare function equalsColorTransformMultipliers(a: Readonly<ColorTransformLike>, b: Readonly<ColorTransformLike>, compareAlpha?: boolean): boolean;
9
+ export declare function equalsColorTransformOffsets(a: Readonly<ColorTransformLike>, b: Readonly<ColorTransformLike>, compareAlpha?: boolean): boolean;
10
+ export declare function getColorTransformOffsetRgb(source: Readonly<ColorTransformLike>): number;
11
+ export declare function getColorTransformOffsetRgba(source: Readonly<ColorTransformLike>): number;
12
+ export declare function invertColorTransform(out: ColorTransformLike, source: Readonly<ColorTransformLike>): void;
13
+ export declare function isIdentityColorTransform(source: Readonly<ColorTransformLike>, compareAlphaMultiplier?: boolean): boolean;
14
+ export declare function setColorTransform(out: ColorTransformLike, redMultiplier: number, greenMultiplier: number, blueMultiplier: number, alphaMultiplier: number, redOffset: number, greenOffset: number, blueOffset: number, alphaOffset: number): void;
15
+ export declare function setColorTransformIdentity(out: ColorTransform): void;
16
+ export declare function setColorTransformOffsetRgb(out: ColorTransformLike, value: number): void;
17
+ export declare function setColorTransformOffsetRgba(out: ColorTransformLike, value: number): void;
18
+ //# sourceMappingURL=colorTransform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorTransform.d.ts","sourceRoot":"","sources":["../src/colorTransform.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1E,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,cAAc,CAExF;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,kBAAkB,EACvB,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,KAAK,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAClC,IAAI,CASN;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,kBAAkB,EAAE,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAStG;AAED,wBAAgB,0BAA0B,CACxC,mBAAmB,EAAE,MAAM,EAAE,EAC7B,eAAe,EAAE,MAAM,EAAE,EACzB,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACnC,IAAI,CASN;AAED,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,cAAc,CAWjG;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAE9G;AAED,wBAAgB,+BAA+B,CAC7C,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAC/B,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAC/B,YAAY,GAAE,OAAc,GAC3B,OAAO,CAOT;AAED,wBAAgB,2BAA2B,CACzC,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAC/B,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAC/B,YAAY,GAAE,OAAc,GAC3B,OAAO,CAOT;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAIvF;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAOxF;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,kBAAkB,EAAE,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,IAAI,CASxG;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,sBAAsB,GAAE,OAAc,GACrC,OAAO,CAKT;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,kBAAkB,EACvB,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,IAAI,CASN;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAEnE;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CASvF;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CASxF"}
@@ -0,0 +1,119 @@
1
+ import { createEntity } from '@flighthq/entity';
2
+ export function cloneColorTransform(source) {
3
+ return createColorTransform(source);
4
+ }
5
+ export function concatColorTransform(out, source, other) {
6
+ out.redOffset = source.redMultiplier * other.redOffset + source.redOffset;
7
+ out.greenOffset = source.greenMultiplier * other.greenOffset + source.greenOffset;
8
+ out.blueOffset = source.blueMultiplier * other.blueOffset + source.blueOffset;
9
+ out.alphaOffset = source.alphaMultiplier * other.alphaOffset + source.alphaOffset;
10
+ out.redMultiplier = source.redMultiplier * other.redMultiplier;
11
+ out.greenMultiplier = source.greenMultiplier * other.greenMultiplier;
12
+ out.blueMultiplier = source.blueMultiplier * other.blueMultiplier;
13
+ out.alphaMultiplier = source.alphaMultiplier * other.alphaMultiplier;
14
+ }
15
+ export function copyColorTransform(out, source) {
16
+ out.redMultiplier = source.redMultiplier;
17
+ out.greenMultiplier = source.greenMultiplier;
18
+ out.blueMultiplier = source.blueMultiplier;
19
+ out.alphaMultiplier = source.alphaMultiplier;
20
+ out.redOffset = source.redOffset;
21
+ out.greenOffset = source.greenOffset;
22
+ out.blueOffset = source.blueOffset;
23
+ out.alphaOffset = source.alphaOffset;
24
+ }
25
+ export function copyColorTransformToArrays(outColorMultipliers, outColorOffsets, source) {
26
+ outColorMultipliers[0] = source.redMultiplier;
27
+ outColorMultipliers[1] = source.greenMultiplier;
28
+ outColorMultipliers[2] = source.blueMultiplier;
29
+ outColorMultipliers[3] = source.alphaMultiplier;
30
+ outColorOffsets[0] = source.redOffset;
31
+ outColorOffsets[1] = source.greenOffset;
32
+ outColorOffsets[2] = source.blueOffset;
33
+ outColorOffsets[3] = source.alphaOffset;
34
+ }
35
+ export function createColorTransform(opts) {
36
+ return createEntity({
37
+ redMultiplier: opts?.redMultiplier ?? 1,
38
+ greenMultiplier: opts?.greenMultiplier ?? 1,
39
+ blueMultiplier: opts?.blueMultiplier ?? 1,
40
+ alphaMultiplier: opts?.alphaMultiplier ?? 1,
41
+ redOffset: opts?.redOffset ?? 0,
42
+ greenOffset: opts?.greenOffset ?? 0,
43
+ blueOffset: opts?.blueOffset ?? 0,
44
+ alphaOffset: opts?.alphaOffset ?? 0,
45
+ });
46
+ }
47
+ export function equalsColorTransform(a, b) {
48
+ return equalsColorTransformOffsets(a, b) && equalsColorTransformMultipliers(a, b);
49
+ }
50
+ export function equalsColorTransformMultipliers(a, b, compareAlpha = true) {
51
+ return (a.redMultiplier === b.redMultiplier &&
52
+ a.greenMultiplier === b.greenMultiplier &&
53
+ a.blueMultiplier === b.blueMultiplier &&
54
+ (!compareAlpha || a.alphaMultiplier === b.alphaMultiplier));
55
+ }
56
+ export function equalsColorTransformOffsets(a, b, compareAlpha = true) {
57
+ return (a.redOffset === b.redOffset &&
58
+ a.greenOffset === b.greenOffset &&
59
+ a.blueOffset === b.blueOffset &&
60
+ (!compareAlpha || a.alphaOffset === b.alphaOffset));
61
+ }
62
+ export function getColorTransformOffsetRgb(source) {
63
+ return ((Math.fround(source.redOffset) << 16) | (Math.fround(source.greenOffset) << 8) | Math.fround(source.blueOffset));
64
+ }
65
+ export function getColorTransformOffsetRgba(source) {
66
+ return ((Math.fround(source.redOffset) << 24) |
67
+ (Math.fround(source.greenOffset) << 16) |
68
+ (Math.fround(source.blueOffset) << 8) |
69
+ Math.fround(source.alphaOffset));
70
+ }
71
+ export function invertColorTransform(out, source) {
72
+ out.redMultiplier = source.redMultiplier !== 0 ? 1 / source.redMultiplier : 1;
73
+ out.greenMultiplier = source.greenMultiplier !== 0 ? 1 / source.greenMultiplier : 1;
74
+ out.blueMultiplier = source.blueMultiplier !== 0 ? 1 / source.blueMultiplier : 1;
75
+ out.alphaMultiplier = source.alphaMultiplier !== 0 ? 1 / source.alphaMultiplier : 1;
76
+ out.redOffset = -source.redOffset;
77
+ out.greenOffset = -source.greenOffset;
78
+ out.blueOffset = -source.blueOffset;
79
+ out.alphaOffset = -source.alphaOffset;
80
+ }
81
+ export function isIdentityColorTransform(source, compareAlphaMultiplier = true) {
82
+ return (equalsColorTransformOffsets(source, _identity) &&
83
+ equalsColorTransformMultipliers(source, _identity, compareAlphaMultiplier));
84
+ }
85
+ export function setColorTransform(out, redMultiplier, greenMultiplier, blueMultiplier, alphaMultiplier, redOffset, greenOffset, blueOffset, alphaOffset) {
86
+ out.redMultiplier = redMultiplier;
87
+ out.greenMultiplier = greenMultiplier;
88
+ out.blueMultiplier = blueMultiplier;
89
+ out.alphaMultiplier = alphaMultiplier;
90
+ out.redOffset = redOffset;
91
+ out.greenOffset = greenOffset;
92
+ out.blueOffset = blueOffset;
93
+ out.alphaOffset = alphaOffset;
94
+ }
95
+ export function setColorTransformIdentity(out) {
96
+ setColorTransform(out, 1, 1, 1, 1, 0, 0, 0, 0);
97
+ }
98
+ export function setColorTransformOffsetRgb(out, value) {
99
+ out.redOffset = (value >> 16) & 0xff;
100
+ out.greenOffset = (value >> 8) & 0xff;
101
+ out.blueOffset = value & 0xff;
102
+ out.alphaOffset = 0;
103
+ out.redMultiplier = 0;
104
+ out.greenMultiplier = 0;
105
+ out.blueMultiplier = 0;
106
+ out.alphaMultiplier = 1;
107
+ }
108
+ export function setColorTransformOffsetRgba(out, value) {
109
+ out.redOffset = (value >> 24) & 0xff;
110
+ out.greenOffset = (value >> 16) & 0xff;
111
+ out.blueOffset = (value >> 8) & 0xff;
112
+ out.alphaOffset = value & 0xff;
113
+ out.redMultiplier = 0;
114
+ out.greenMultiplier = 0;
115
+ out.blueMultiplier = 0;
116
+ out.alphaMultiplier = 0;
117
+ }
118
+ const _identity = createColorTransform();
119
+ //# sourceMappingURL=colorTransform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorTransform.js","sourceRoot":"","sources":["../src/colorTransform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ColorTransform, ColorTransformMaterial, UniformColorTransformMaterial } from '@flighthq/types';
2
+ export declare function createColorTransformMaterial(): ColorTransformMaterial;
3
+ export declare function createUniformColorTransformMaterial(colorTransform?: ColorTransform): UniformColorTransformMaterial;
4
+ //# sourceMappingURL=colorTransformMaterial.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorTransformMaterial.d.ts","sourceRoot":"","sources":["../src/colorTransformMaterial.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAQ7G,wBAAgB,4BAA4B,IAAI,sBAAsB,CAErE;AAID,wBAAgB,mCAAmC,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,6BAA6B,CAKlH"}
@@ -0,0 +1,18 @@
1
+ import { createEntity } from '@flighthq/entity';
2
+ import { ColorTransformMaterialKind, UniformColorTransformMaterialKind } from '@flighthq/types';
3
+ import { createColorTransform } from './colorTransform';
4
+ // Per-instance color transform. Carries no value: the backend material renderer reads each
5
+ // node's HasColorTransform trait and packs it as per-instance attribute data, so many
6
+ // independently-tinted nodes stay in one batch.
7
+ export function createColorTransformMaterial() {
8
+ return createEntity({ kind: ColorTransformMaterialKind });
9
+ }
10
+ // Per-batch color transform. The value lives on the material and uploads as a single uniform;
11
+ // a different value means a different material, which breaks the batch on its own.
12
+ export function createUniformColorTransformMaterial(colorTransform) {
13
+ return createEntity({
14
+ kind: UniformColorTransformMaterialKind,
15
+ colorTransform: colorTransform ?? createColorTransform(),
16
+ });
17
+ }
18
+ //# sourceMappingURL=colorTransformMaterial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorTransformMaterial.js","sourceRoot":"","sources":["../src/colorTransformMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,0BAA0B,EAAE,iCAAiC,EAAE,MAAM,iBAAiB,CAAC;AAEhG,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,2FAA2F;AAC3F,sFAAsF;AACtF,gDAAgD;AAChD,MAAM,UAAU,4BAA4B;IAC1C,OAAO,YAAY,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,8FAA8F;AAC9F,mFAAmF;AACnF,MAAM,UAAU,mCAAmC,CAAC,cAA+B;IACjF,OAAO,YAAY,CAAC;QAClB,IAAI,EAAE,iCAAiC;QACvC,cAAc,EAAE,cAAc,IAAI,oBAAoB,EAAE;KACzD,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,12 @@
1
+ export * from './classicMaterials';
2
+ export * from './color';
3
+ export * from './colorTransform';
4
+ export * from './colorTransformMaterial';
5
+ export * from './material';
6
+ export * from './materialPresets';
7
+ export * from './materialValidation';
8
+ export * from './pbrExtensionMaterials';
9
+ export * from './pbrMaterials';
10
+ export * from './surfaceMaterial';
11
+ export * from './unlitMaterials';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,12 @@
1
+ export * from './classicMaterials';
2
+ export * from './color';
3
+ export * from './colorTransform';
4
+ export * from './colorTransformMaterial';
5
+ export * from './material';
6
+ export * from './materialPresets';
7
+ export * from './materialValidation';
8
+ export * from './pbrExtensionMaterials';
9
+ export * from './pbrMaterials';
10
+ export * from './surfaceMaterial';
11
+ export * from './unlitMaterials';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}