@flighthq/materials 0.3.0-next.906.07cea63 → 0.3.1-next.209.43ef1bc
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/dist/anisotropyPbrExtension.d.ts +4 -0
- package/dist/anisotropyPbrExtension.d.ts.map +1 -0
- package/dist/anisotropyPbrExtension.js +19 -0
- package/dist/anisotropyPbrExtension.js.map +1 -0
- package/dist/clearcoatPbrExtension.d.ts +4 -0
- package/dist/clearcoatPbrExtension.d.ts.map +1 -0
- package/dist/clearcoatPbrExtension.js +28 -0
- package/dist/clearcoatPbrExtension.js.map +1 -0
- package/dist/contract.d.ts +9 -1
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +9 -1
- package/dist/contract.js.map +1 -1
- package/dist/extendedPbrMaterial.d.ts +3 -0
- package/dist/extendedPbrMaterial.d.ts.map +1 -0
- package/dist/extendedPbrMaterial.js +12 -0
- package/dist/extendedPbrMaterial.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/iridescencePbrExtension.d.ts +4 -0
- package/dist/iridescencePbrExtension.d.ts.map +1 -0
- package/dist/iridescencePbrExtension.js +27 -0
- package/dist/iridescencePbrExtension.js.map +1 -0
- package/dist/materialPresets.d.ts +2 -2
- package/dist/materialPresets.d.ts.map +1 -1
- package/dist/materialPresets.js +22 -10
- package/dist/materialPresets.js.map +1 -1
- package/dist/pbrExtension.d.ts +3 -0
- package/dist/pbrExtension.d.ts.map +1 -0
- package/dist/pbrExtension.js +5 -0
- package/dist/pbrExtension.js.map +1 -0
- package/dist/sheenPbrExtension.d.ts +4 -0
- package/dist/sheenPbrExtension.d.ts.map +1 -0
- package/dist/sheenPbrExtension.js +21 -0
- package/dist/sheenPbrExtension.js.map +1 -0
- package/dist/specularPbrExtension.d.ts +4 -0
- package/dist/specularPbrExtension.d.ts.map +1 -0
- package/dist/specularPbrExtension.js +21 -0
- package/dist/specularPbrExtension.js.map +1 -0
- package/dist/surfaceMaterial.d.ts.map +1 -1
- package/dist/surfaceMaterial.js +1 -3
- package/dist/surfaceMaterial.js.map +1 -1
- package/dist/transmissionVolumePbrExtension.d.ts +4 -0
- package/dist/transmissionVolumePbrExtension.d.ts.map +1 -0
- package/dist/transmissionVolumePbrExtension.js +30 -0
- package/dist/transmissionVolumePbrExtension.js.map +1 -0
- package/dist/wrappedDiffusePbrExtension.d.ts +4 -0
- package/dist/wrappedDiffusePbrExtension.d.ts.map +1 -0
- package/dist/wrappedDiffusePbrExtension.js +24 -0
- package/dist/wrappedDiffusePbrExtension.js.map +1 -0
- package/package.json +6 -4
- package/src/anisotropyPbrExtension.test.ts +23 -0
- package/src/clearcoatPbrExtension.test.ts +24 -0
- package/src/extendedPbrMaterial.test.ts +32 -0
- package/src/iridescencePbrExtension.test.ts +30 -0
- package/src/materialPresets.test.ts +27 -11
- package/src/pbrExtension.test.ts +10 -0
- package/src/sheenPbrExtension.test.ts +23 -0
- package/src/specularPbrExtension.test.ts +23 -0
- package/src/surfaceMaterial.test.ts +0 -1
- package/src/transmissionVolumePbrExtension.test.ts +31 -0
- package/src/wrappedDiffusePbrExtension.test.ts +27 -0
- package/dist/pbrExtensionMaterials.d.ts +0 -9
- package/dist/pbrExtensionMaterials.d.ts.map +0 -1
- package/dist/pbrExtensionMaterials.js +0 -93
- package/dist/pbrExtensionMaterials.js.map +0 -1
- package/src/pbrExtensionMaterials.test.ts +0 -123
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AnisotropyPbrExtension } from '@flighthq/types/contract';
|
|
2
|
+
export declare function createAnisotropyPbrExtension(opts?: Readonly<Partial<AnisotropyPbrExtension>>): AnisotropyPbrExtension;
|
|
3
|
+
export declare function isValidAnisotropyPbrExtension(value: Readonly<AnisotropyPbrExtension>): boolean;
|
|
4
|
+
//# sourceMappingURL=anisotropyPbrExtension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anisotropyPbrExtension.d.ts","sourceRoot":"","sources":["../src/anisotropyPbrExtension.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAMvE,wBAAgB,4BAA4B,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,GAAG,sBAAsB,CAQrH;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAM9F"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createEntity } from '@flighthq/entity/contract';
|
|
2
|
+
import { AnisotropyPbrExtensionKind } from '@flighthq/types/contract';
|
|
3
|
+
import { isValidMaterialWeight } from './materialValidation';
|
|
4
|
+
import { isValidPbrUvSet } from './pbrExtension';
|
|
5
|
+
export function createAnisotropyPbrExtension(opts) {
|
|
6
|
+
return createEntity({
|
|
7
|
+
anisotropyMap: opts?.anisotropyMap ?? null,
|
|
8
|
+
anisotropyMapUvSet: opts?.anisotropyMapUvSet ?? 0,
|
|
9
|
+
anisotropyRotation: opts?.anisotropyRotation ?? 0,
|
|
10
|
+
anisotropyStrength: opts?.anisotropyStrength ?? 0,
|
|
11
|
+
kind: AnisotropyPbrExtensionKind,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
export function isValidAnisotropyPbrExtension(value) {
|
|
15
|
+
return (isValidMaterialWeight(value.anisotropyStrength) &&
|
|
16
|
+
Number.isFinite(value.anisotropyRotation) &&
|
|
17
|
+
isValidPbrUvSet(value.anisotropyMapUvSet));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=anisotropyPbrExtension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anisotropyPbrExtension.js","sourceRoot":"","sources":["../src/anisotropyPbrExtension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,UAAU,4BAA4B,CAAC,IAAgD;IAC3F,OAAO,YAAY,CAAC;QAClB,aAAa,EAAE,IAAI,EAAE,aAAa,IAAI,IAAI;QAC1C,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,IAAI,CAAC;QACjD,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,IAAI,CAAC;QACjD,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,IAAI,CAAC;QACjD,IAAI,EAAE,0BAA0B;KACjC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAuC;IACnF,OAAO,CACL,qBAAqB,CAAC,KAAK,CAAC,kBAAkB,CAAC;QAC/C,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC;QACzC,eAAe,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAC1C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ClearcoatPbrExtension } from '@flighthq/types/contract';
|
|
2
|
+
export declare function createClearcoatPbrExtension(opts?: Readonly<Partial<ClearcoatPbrExtension>>): ClearcoatPbrExtension;
|
|
3
|
+
export declare function isValidClearcoatPbrExtension(value: Readonly<ClearcoatPbrExtension>): boolean;
|
|
4
|
+
//# sourceMappingURL=clearcoatPbrExtension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clearcoatPbrExtension.d.ts","sourceRoot":"","sources":["../src/clearcoatPbrExtension.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAMtE,wBAAgB,2BAA2B,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,CAalH;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,OAAO,CAU5F"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { createEntity } from '@flighthq/entity/contract';
|
|
2
|
+
import { ClearcoatPbrExtensionKind } from '@flighthq/types/contract';
|
|
3
|
+
import { isValidMaterialWeight } from './materialValidation';
|
|
4
|
+
import { isValidPbrUvSet } from './pbrExtension';
|
|
5
|
+
export function createClearcoatPbrExtension(opts) {
|
|
6
|
+
return createEntity({
|
|
7
|
+
clearcoat: opts?.clearcoat ?? 0,
|
|
8
|
+
clearcoatMap: opts?.clearcoatMap ?? null,
|
|
9
|
+
clearcoatMapUvSet: opts?.clearcoatMapUvSet ?? 0,
|
|
10
|
+
clearcoatNormalMap: opts?.clearcoatNormalMap ?? null,
|
|
11
|
+
clearcoatNormalMapUvSet: opts?.clearcoatNormalMapUvSet ?? 0,
|
|
12
|
+
clearcoatNormalScale: opts?.clearcoatNormalScale ?? 1,
|
|
13
|
+
clearcoatRoughness: opts?.clearcoatRoughness ?? 0,
|
|
14
|
+
clearcoatRoughnessMap: opts?.clearcoatRoughnessMap ?? null,
|
|
15
|
+
clearcoatRoughnessMapUvSet: opts?.clearcoatRoughnessMapUvSet ?? 0,
|
|
16
|
+
kind: ClearcoatPbrExtensionKind,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
export function isValidClearcoatPbrExtension(value) {
|
|
20
|
+
return (isValidMaterialWeight(value.clearcoat) &&
|
|
21
|
+
isValidMaterialWeight(value.clearcoatRoughness) &&
|
|
22
|
+
Number.isFinite(value.clearcoatNormalScale) &&
|
|
23
|
+
value.clearcoatNormalScale >= 0 &&
|
|
24
|
+
isValidPbrUvSet(value.clearcoatMapUvSet) &&
|
|
25
|
+
isValidPbrUvSet(value.clearcoatNormalMapUvSet) &&
|
|
26
|
+
isValidPbrUvSet(value.clearcoatRoughnessMapUvSet));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=clearcoatPbrExtension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clearcoatPbrExtension.js","sourceRoot":"","sources":["../src/clearcoatPbrExtension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,UAAU,2BAA2B,CAAC,IAA+C;IACzF,OAAO,YAAY,CAAC;QAClB,SAAS,EAAE,IAAI,EAAE,SAAS,IAAI,CAAC;QAC/B,YAAY,EAAE,IAAI,EAAE,YAAY,IAAI,IAAI;QACxC,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,IAAI,CAAC;QAC/C,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,IAAI,IAAI;QACpD,uBAAuB,EAAE,IAAI,EAAE,uBAAuB,IAAI,CAAC;QAC3D,oBAAoB,EAAE,IAAI,EAAE,oBAAoB,IAAI,CAAC;QACrD,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,IAAI,CAAC;QACjD,qBAAqB,EAAE,IAAI,EAAE,qBAAqB,IAAI,IAAI;QAC1D,0BAA0B,EAAE,IAAI,EAAE,0BAA0B,IAAI,CAAC;QACjE,IAAI,EAAE,yBAAyB;KAChC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAAsC;IACjF,OAAO,CACL,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC;QACtC,qBAAqB,CAAC,KAAK,CAAC,kBAAkB,CAAC;QAC/C,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CAAC;QAC3C,KAAK,CAAC,oBAAoB,IAAI,CAAC;QAC/B,eAAe,CAAC,KAAK,CAAC,iBAAiB,CAAC;QACxC,eAAe,CAAC,KAAK,CAAC,uBAAuB,CAAC;QAC9C,eAAe,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAClD,CAAC;AACJ,CAAC"}
|
package/dist/contract.d.ts
CHANGED
|
@@ -1,13 +1,21 @@
|
|
|
1
|
+
export * from './anisotropyPbrExtension';
|
|
1
2
|
export * from './classicMaterials';
|
|
3
|
+
export * from './clearcoatPbrExtension';
|
|
2
4
|
export * from './colorScaleBias';
|
|
3
5
|
export * from './customShaderMaterial';
|
|
6
|
+
export * from './extendedPbrMaterial';
|
|
7
|
+
export * from './iridescencePbrExtension';
|
|
4
8
|
export * from './material';
|
|
5
9
|
export * from './materialPresets';
|
|
6
10
|
export * from './materialValidation';
|
|
7
|
-
export * from './
|
|
11
|
+
export * from './pbrExtension';
|
|
8
12
|
export * from './pbrMaterials';
|
|
9
13
|
export * from './phongToPbr';
|
|
14
|
+
export * from './sheenPbrExtension';
|
|
15
|
+
export * from './specularPbrExtension';
|
|
10
16
|
export * from './surfaceMaterial';
|
|
11
17
|
export * from './standardMaterial';
|
|
18
|
+
export * from './transmissionVolumePbrExtension';
|
|
12
19
|
export * from './unlitMaterials';
|
|
20
|
+
export * from './wrappedDiffusePbrExtension';
|
|
13
21
|
//# sourceMappingURL=contract.d.ts.map
|
package/dist/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC"}
|
package/dist/contract.js
CHANGED
|
@@ -1,13 +1,21 @@
|
|
|
1
|
+
export * from './anisotropyPbrExtension';
|
|
1
2
|
export * from './classicMaterials';
|
|
3
|
+
export * from './clearcoatPbrExtension';
|
|
2
4
|
export * from './colorScaleBias';
|
|
3
5
|
export * from './customShaderMaterial';
|
|
6
|
+
export * from './extendedPbrMaterial';
|
|
7
|
+
export * from './iridescencePbrExtension';
|
|
4
8
|
export * from './material';
|
|
5
9
|
export * from './materialPresets';
|
|
6
10
|
export * from './materialValidation';
|
|
7
|
-
export * from './
|
|
11
|
+
export * from './pbrExtension';
|
|
8
12
|
export * from './pbrMaterials';
|
|
9
13
|
export * from './phongToPbr';
|
|
14
|
+
export * from './sheenPbrExtension';
|
|
15
|
+
export * from './specularPbrExtension';
|
|
10
16
|
export * from './surfaceMaterial';
|
|
11
17
|
export * from './standardMaterial';
|
|
18
|
+
export * from './transmissionVolumePbrExtension';
|
|
12
19
|
export * from './unlitMaterials';
|
|
20
|
+
export * from './wrappedDiffusePbrExtension';
|
|
13
21
|
//# sourceMappingURL=contract.js.map
|
package/dist/contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extendedPbrMaterial.d.ts","sourceRoot":"","sources":["../src/extendedPbrMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAQpE,wBAAgB,yBAAyB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,GAAG,mBAAmB,CAK5G"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ExtendedPbrMaterialKind } from '@flighthq/types/contract';
|
|
2
|
+
import { createStandardPbrMaterialProperties } from './pbrMaterials';
|
|
3
|
+
import { createSurfaceMaterial } from './surfaceMaterial';
|
|
4
|
+
// Builds the composable PBR material lane. The ordered extension list is retained by reference so its
|
|
5
|
+
// identity and ordering remain an explicit batching/program-selection fact.
|
|
6
|
+
export function createExtendedPbrMaterial(opts) {
|
|
7
|
+
const material = createSurfaceMaterial(ExtendedPbrMaterialKind, opts);
|
|
8
|
+
material.extensions = opts?.extensions ?? [];
|
|
9
|
+
material.standard = opts?.standard ?? createStandardPbrMaterialProperties();
|
|
10
|
+
return material;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=extendedPbrMaterial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extendedPbrMaterial.js","sourceRoot":"","sources":["../src/extendedPbrMaterial.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EAAE,mCAAmC,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,sGAAsG;AACtG,4EAA4E;AAC5E,MAAM,UAAU,yBAAyB,CAAC,IAA6C;IACrF,MAAM,QAAQ,GAAG,qBAAqB,CAAC,uBAAuB,EAAE,IAAI,CAAwB,CAAC;IAC7F,QAAQ,CAAC,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,EAAE,CAAC;IAC7C,QAAQ,CAAC,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,mCAAmC,EAAE,CAAC;IAC5E,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { clampStandardPbrMaterialProperties, cloneColorScaleBias, cloneMaterial, concatColorScaleBias, convertPhongToStandardPbrMaterial, convertSpecularGlossinessToStandardPbr, copyColorScaleBias, copyColorScaleBiasToArrays, copyMaterial, createAluminumStandardPbrMaterial,
|
|
1
|
+
export { clampStandardPbrMaterialProperties, cloneColorScaleBias, cloneMaterial, concatColorScaleBias, convertPhongToStandardPbrMaterial, convertSpecularGlossinessToStandardPbr, copyColorScaleBias, copyColorScaleBiasToArrays, copyMaterial, createAluminumStandardPbrMaterial, createAnisotropyPbrExtension, createBlinnPhongMaterial, createCarbonStandardPbrMaterial, createClearcoatPbrExtension, createColorScaleBias, createCustomShaderMaterial, createDepthMaterial, createEmissiveMaterial, createExtendedPbrMaterial, createGlassExtendedPbrMaterial, createGoldStandardPbrMaterial, createIridescencePbrExtension, createIronStandardPbrMaterial, createLambertMaterial, createMarbleStandardPbrMaterial, createMatcapMaterial, createMaterial, createNormalMaterial, createPhongMaterial, createPlasticStandardPbrMaterial, createRubberStandardPbrMaterial, createSheenPbrExtension, createSilverStandardPbrMaterial, createSkinStandardPbrMaterial, createSpecularPbrExtension, createSpecularGlossinessPbrMaterial, createStandardMaterial, createStandardPbrMaterial, createStandardPbrMaterialProperties, createSurfaceMaterial, createToonMaterial, createTransmissionVolumePbrExtension, createUnlitMaterial, createVertexColorMaterial, createWireframeMaterial, createWoodStandardPbrMaterial, createWrappedDiffusePbrExtension, equalsColorScaleBias, equalsColorScaleBiasBiases, equalsColorScaleBiasScales, equalsMaterial, getColorScaleBiasBiasRgb, getColorScaleBiasBiasRgba, getMaterialOfKind, getPbrMetallicFromPhongSpecular, getPbrRoughnessFromPhongShininess, getPhongToPbrLightExposure, getSurfaceMaterialAlphaMode, invertColorScaleBias, isIdentityColorScaleBias, isSurfaceMaterialBlended, isSurfaceMaterialMasked, isSurfaceMaterialOpaque, isValidAnisotropyPbrExtension, isValidClearcoatPbrExtension, isValidIridescencePbrExtension, isValidMaterialClearcoat, isValidMaterialIor, isValidMaterialIridescenceThickness, isValidMaterialWeight, isValidPbrUvSet, isValidSheenPbrExtension, isValidSpecularPbrExtension, isValidTransmissionVolumePbrExtension, isValidWrappedDiffusePbrExtension, setColorScaleBias, setColorScaleBiasBiasRgb, setColorScaleBiasBiasRgba, setColorScaleBiasIdentity, } from './contract';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAClC,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,iCAAiC,EACjC,sCAAsC,EACtC,kBAAkB,EAClB,0BAA0B,EAC1B,YAAY,EACZ,iCAAiC,EACjC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAClC,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,iCAAiC,EACjC,sCAAsC,EACtC,kBAAkB,EAClB,0BAA0B,EAC1B,YAAY,EACZ,iCAAiC,EACjC,4BAA4B,EAC5B,wBAAwB,EACxB,+BAA+B,EAC/B,2BAA2B,EAC3B,oBAAoB,EACpB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,qBAAqB,EACrB,+BAA+B,EAC/B,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,gCAAgC,EAChC,+BAA+B,EAC/B,uBAAuB,EACvB,+BAA+B,EAC/B,6BAA6B,EAC7B,0BAA0B,EAC1B,mCAAmC,EACnC,sBAAsB,EACtB,yBAAyB,EACzB,mCAAmC,EACnC,qBAAqB,EACrB,kBAAkB,EAClB,oCAAoC,EACpC,mBAAmB,EACnB,yBAAyB,EACzB,uBAAuB,EACvB,6BAA6B,EAC7B,gCAAgC,EAChC,oBAAoB,EACpB,0BAA0B,EAC1B,0BAA0B,EAC1B,cAAc,EACd,wBAAwB,EACxB,yBAAyB,EACzB,iBAAiB,EACjB,+BAA+B,EAC/B,iCAAiC,EACjC,0BAA0B,EAC1B,2BAA2B,EAC3B,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,6BAA6B,EAC7B,4BAA4B,EAC5B,8BAA8B,EAC9B,wBAAwB,EACxB,kBAAkB,EAClB,mCAAmC,EACnC,qBAAqB,EACrB,eAAe,EACf,wBAAwB,EACxB,2BAA2B,EAC3B,qCAAqC,EACrC,iCAAiC,EACjC,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { clampStandardPbrMaterialProperties, cloneColorScaleBias, cloneMaterial, concatColorScaleBias, convertPhongToStandardPbrMaterial, convertSpecularGlossinessToStandardPbr, copyColorScaleBias, copyColorScaleBiasToArrays, copyMaterial, createAluminumStandardPbrMaterial,
|
|
1
|
+
export { clampStandardPbrMaterialProperties, cloneColorScaleBias, cloneMaterial, concatColorScaleBias, convertPhongToStandardPbrMaterial, convertSpecularGlossinessToStandardPbr, copyColorScaleBias, copyColorScaleBiasToArrays, copyMaterial, createAluminumStandardPbrMaterial, createAnisotropyPbrExtension, createBlinnPhongMaterial, createCarbonStandardPbrMaterial, createClearcoatPbrExtension, createColorScaleBias, createCustomShaderMaterial, createDepthMaterial, createEmissiveMaterial, createExtendedPbrMaterial, createGlassExtendedPbrMaterial, createGoldStandardPbrMaterial, createIridescencePbrExtension, createIronStandardPbrMaterial, createLambertMaterial, createMarbleStandardPbrMaterial, createMatcapMaterial, createMaterial, createNormalMaterial, createPhongMaterial, createPlasticStandardPbrMaterial, createRubberStandardPbrMaterial, createSheenPbrExtension, createSilverStandardPbrMaterial, createSkinStandardPbrMaterial, createSpecularPbrExtension, createSpecularGlossinessPbrMaterial, createStandardMaterial, createStandardPbrMaterial, createStandardPbrMaterialProperties, createSurfaceMaterial, createToonMaterial, createTransmissionVolumePbrExtension, createUnlitMaterial, createVertexColorMaterial, createWireframeMaterial, createWoodStandardPbrMaterial, createWrappedDiffusePbrExtension, equalsColorScaleBias, equalsColorScaleBiasBiases, equalsColorScaleBiasScales, equalsMaterial, getColorScaleBiasBiasRgb, getColorScaleBiasBiasRgba, getMaterialOfKind, getPbrMetallicFromPhongSpecular, getPbrRoughnessFromPhongShininess, getPhongToPbrLightExposure, getSurfaceMaterialAlphaMode, invertColorScaleBias, isIdentityColorScaleBias, isSurfaceMaterialBlended, isSurfaceMaterialMasked, isSurfaceMaterialOpaque, isValidAnisotropyPbrExtension, isValidClearcoatPbrExtension, isValidIridescencePbrExtension, isValidMaterialClearcoat, isValidMaterialIor, isValidMaterialIridescenceThickness, isValidMaterialWeight, isValidPbrUvSet, isValidSheenPbrExtension, isValidSpecularPbrExtension, isValidTransmissionVolumePbrExtension, isValidWrappedDiffusePbrExtension, setColorScaleBias, setColorScaleBiasBiasRgb, setColorScaleBiasBiasRgba, setColorScaleBiasIdentity, } from './contract';
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAClC,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,iCAAiC,EACjC,sCAAsC,EACtC,kBAAkB,EAClB,0BAA0B,EAC1B,YAAY,EACZ,iCAAiC,EACjC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAClC,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,iCAAiC,EACjC,sCAAsC,EACtC,kBAAkB,EAClB,0BAA0B,EAC1B,YAAY,EACZ,iCAAiC,EACjC,4BAA4B,EAC5B,wBAAwB,EACxB,+BAA+B,EAC/B,2BAA2B,EAC3B,oBAAoB,EACpB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,qBAAqB,EACrB,+BAA+B,EAC/B,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,gCAAgC,EAChC,+BAA+B,EAC/B,uBAAuB,EACvB,+BAA+B,EAC/B,6BAA6B,EAC7B,0BAA0B,EAC1B,mCAAmC,EACnC,sBAAsB,EACtB,yBAAyB,EACzB,mCAAmC,EACnC,qBAAqB,EACrB,kBAAkB,EAClB,oCAAoC,EACpC,mBAAmB,EACnB,yBAAyB,EACzB,uBAAuB,EACvB,6BAA6B,EAC7B,gCAAgC,EAChC,oBAAoB,EACpB,0BAA0B,EAC1B,0BAA0B,EAC1B,cAAc,EACd,wBAAwB,EACxB,yBAAyB,EACzB,iBAAiB,EACjB,+BAA+B,EAC/B,iCAAiC,EACjC,0BAA0B,EAC1B,2BAA2B,EAC3B,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,6BAA6B,EAC7B,4BAA4B,EAC5B,8BAA8B,EAC9B,wBAAwB,EACxB,kBAAkB,EAClB,mCAAmC,EACnC,qBAAqB,EACrB,eAAe,EACf,wBAAwB,EACxB,2BAA2B,EAC3B,qCAAqC,EACrC,iCAAiC,EACjC,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IridescencePbrExtension } from '@flighthq/types/contract';
|
|
2
|
+
export declare function createIridescencePbrExtension(opts?: Readonly<Partial<IridescencePbrExtension>>): IridescencePbrExtension;
|
|
3
|
+
export declare function isValidIridescencePbrExtension(value: Readonly<IridescencePbrExtension>): boolean;
|
|
4
|
+
//# sourceMappingURL=iridescencePbrExtension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iridescencePbrExtension.d.ts","sourceRoot":"","sources":["../src/iridescencePbrExtension.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAMxE,wBAAgB,6BAA6B,CAC3C,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,GAChD,uBAAuB,CAYzB;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,QAAQ,CAAC,uBAAuB,CAAC,GAAG,OAAO,CAUhG"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { createEntity } from '@flighthq/entity/contract';
|
|
2
|
+
import { IridescencePbrExtensionKind } from '@flighthq/types/contract';
|
|
3
|
+
import { isValidMaterialIor, isValidMaterialIridescenceThickness, isValidMaterialWeight } from './materialValidation';
|
|
4
|
+
import { isValidPbrUvSet } from './pbrExtension';
|
|
5
|
+
export function createIridescencePbrExtension(opts) {
|
|
6
|
+
return createEntity({
|
|
7
|
+
iridescence: opts?.iridescence ?? 0,
|
|
8
|
+
iridescenceIor: opts?.iridescenceIor ?? 1.3,
|
|
9
|
+
iridescenceMap: opts?.iridescenceMap ?? null,
|
|
10
|
+
iridescenceMapUvSet: opts?.iridescenceMapUvSet ?? 0,
|
|
11
|
+
iridescenceThicknessMap: opts?.iridescenceThicknessMap ?? null,
|
|
12
|
+
iridescenceThicknessMapUvSet: opts?.iridescenceThicknessMapUvSet ?? 0,
|
|
13
|
+
iridescenceThicknessMax: opts?.iridescenceThicknessMax ?? 400,
|
|
14
|
+
iridescenceThicknessMin: opts?.iridescenceThicknessMin ?? 100,
|
|
15
|
+
kind: IridescencePbrExtensionKind,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export function isValidIridescencePbrExtension(value) {
|
|
19
|
+
return (isValidMaterialWeight(value.iridescence) &&
|
|
20
|
+
isValidMaterialIor(value.iridescenceIor) &&
|
|
21
|
+
isValidMaterialIridescenceThickness(value.iridescenceThicknessMin) &&
|
|
22
|
+
isValidMaterialIridescenceThickness(value.iridescenceThicknessMax) &&
|
|
23
|
+
value.iridescenceThicknessMin <= value.iridescenceThicknessMax &&
|
|
24
|
+
isValidPbrUvSet(value.iridescenceMapUvSet) &&
|
|
25
|
+
isValidPbrUvSet(value.iridescenceThicknessMapUvSet));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=iridescencePbrExtension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iridescencePbrExtension.js","sourceRoot":"","sources":["../src/iridescencePbrExtension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAEvE,OAAO,EAAE,kBAAkB,EAAE,mCAAmC,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACtH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,UAAU,6BAA6B,CAC3C,IAAiD;IAEjD,OAAO,YAAY,CAAC;QAClB,WAAW,EAAE,IAAI,EAAE,WAAW,IAAI,CAAC;QACnC,cAAc,EAAE,IAAI,EAAE,cAAc,IAAI,GAAG;QAC3C,cAAc,EAAE,IAAI,EAAE,cAAc,IAAI,IAAI;QAC5C,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,IAAI,CAAC;QACnD,uBAAuB,EAAE,IAAI,EAAE,uBAAuB,IAAI,IAAI;QAC9D,4BAA4B,EAAE,IAAI,EAAE,4BAA4B,IAAI,CAAC;QACrE,uBAAuB,EAAE,IAAI,EAAE,uBAAuB,IAAI,GAAG;QAC7D,uBAAuB,EAAE,IAAI,EAAE,uBAAuB,IAAI,GAAG;QAC7D,IAAI,EAAE,2BAA2B;KAClC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,KAAwC;IACrF,OAAO,CACL,qBAAqB,CAAC,KAAK,CAAC,WAAW,CAAC;QACxC,kBAAkB,CAAC,KAAK,CAAC,cAAc,CAAC;QACxC,mCAAmC,CAAC,KAAK,CAAC,uBAAuB,CAAC;QAClE,mCAAmC,CAAC,KAAK,CAAC,uBAAuB,CAAC;QAClE,KAAK,CAAC,uBAAuB,IAAI,KAAK,CAAC,uBAAuB;QAC9D,eAAe,CAAC,KAAK,CAAC,mBAAmB,CAAC;QAC1C,eAAe,CAAC,KAAK,CAAC,4BAA4B,CAAC,CACpD,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ExtendedPbrMaterial, GlassExtendedPbrMaterialOptions, StandardPbrMaterial } from '@flighthq/types/contract';
|
|
2
2
|
export declare function createAluminumStandardPbrMaterial(opts?: Readonly<Partial<StandardPbrMaterial>>): StandardPbrMaterial;
|
|
3
3
|
export declare function createCarbonStandardPbrMaterial(opts?: Readonly<Partial<StandardPbrMaterial>>): StandardPbrMaterial;
|
|
4
|
-
export declare function
|
|
4
|
+
export declare function createGlassExtendedPbrMaterial(opts?: Readonly<GlassExtendedPbrMaterialOptions>): ExtendedPbrMaterial;
|
|
5
5
|
export declare function createGoldStandardPbrMaterial(opts?: Readonly<Partial<StandardPbrMaterial>>): StandardPbrMaterial;
|
|
6
6
|
export declare function createIronStandardPbrMaterial(opts?: Readonly<Partial<StandardPbrMaterial>>): StandardPbrMaterial;
|
|
7
7
|
export declare function createMarbleStandardPbrMaterial(opts?: Readonly<Partial<StandardPbrMaterial>>): StandardPbrMaterial;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"materialPresets.d.ts","sourceRoot":"","sources":["../src/materialPresets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"materialPresets.d.ts","sourceRoot":"","sources":["../src/materialPresets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,+BAA+B,EAC/B,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAelC,wBAAgB,iCAAiC,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,GAAG,mBAAmB,CAOpH;AAID,wBAAgB,+BAA+B,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,GAAG,mBAAmB,CAOlH;AAID,wBAAgB,8BAA8B,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,+BAA+B,CAAC,GAAG,mBAAmB,CAiBpH;AAID,wBAAgB,6BAA6B,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,GAAG,mBAAmB,CAOhH;AAID,wBAAgB,6BAA6B,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,GAAG,mBAAmB,CAOhH;AAID,wBAAgB,+BAA+B,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,GAAG,mBAAmB,CAOlH;AAID,wBAAgB,gCAAgC,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,GAAG,mBAAmB,CAOnH;AAID,wBAAgB,+BAA+B,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,GAAG,mBAAmB,CAOlH;AAID,wBAAgB,+BAA+B,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,GAAG,mBAAmB,CAOlH;AAID,wBAAgB,6BAA6B,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,GAAG,mBAAmB,CAOhH;AAID,wBAAgB,6BAA6B,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,GAAG,mBAAmB,CAOhH"}
|
package/dist/materialPresets.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createStandardPbrMaterial } from './pbrMaterials';
|
|
1
|
+
import { createExtendedPbrMaterial } from './extendedPbrMaterial';
|
|
2
|
+
import { createStandardPbrMaterial, createStandardPbrMaterialProperties } from './pbrMaterials';
|
|
3
|
+
import { createTransmissionVolumePbrExtension } from './transmissionVolumePbrExtension';
|
|
3
4
|
// Named presets for common real-world materials using glTF metallic-roughness PBR values.
|
|
4
|
-
// These are thin
|
|
5
|
-
// with canonical default parameters. Each function is individually tree-shakable.
|
|
5
|
+
// These are thin assemblies of standard property blocks, surface materials, and extension
|
|
6
|
+
// descriptors with canonical default parameters. Each function is individually tree-shakable.
|
|
6
7
|
//
|
|
7
8
|
// IOR and specular-tint values follow the glTF PBR extensions specification and standard
|
|
8
9
|
// material-science references (BRDF Explorer, Substance Painter's material presets, etc.).
|
|
@@ -26,13 +27,24 @@ export function createCarbonStandardPbrMaterial(opts) {
|
|
|
26
27
|
...opts,
|
|
27
28
|
});
|
|
28
29
|
}
|
|
29
|
-
// Clear glass preset
|
|
30
|
-
// Metallic: 0 · roughness: 0
|
|
31
|
-
export function
|
|
32
|
-
return
|
|
33
|
-
ior: 1.5,
|
|
34
|
-
transmission: 1,
|
|
30
|
+
// Clear glass preset composed from a standard metallic-roughness property block and a transmission
|
|
31
|
+
// volume descriptor. Metallic: 0 · roughness: 0 · IOR: 1.5 · transmission: 1 · baseColor: white.
|
|
32
|
+
export function createGlassExtendedPbrMaterial(opts) {
|
|
33
|
+
return createExtendedPbrMaterial({
|
|
35
34
|
...opts,
|
|
35
|
+
extensions: [
|
|
36
|
+
createTransmissionVolumePbrExtension({
|
|
37
|
+
ior: 1.5,
|
|
38
|
+
transmission: 1,
|
|
39
|
+
...opts?.transmissionVolume,
|
|
40
|
+
}),
|
|
41
|
+
],
|
|
42
|
+
standard: createStandardPbrMaterialProperties({
|
|
43
|
+
baseColor: 0xffffffff,
|
|
44
|
+
metallic: 0,
|
|
45
|
+
roughness: 0,
|
|
46
|
+
...opts?.standard,
|
|
47
|
+
}),
|
|
36
48
|
});
|
|
37
49
|
}
|
|
38
50
|
// Gold: fully metallic, moderate roughness, warm saturated base color.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"materialPresets.js","sourceRoot":"","sources":["../src/materialPresets.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"materialPresets.js","sourceRoot":"","sources":["../src/materialPresets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pbrExtension.d.ts","sourceRoot":"","sources":["../src/pbrExtension.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGzD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,QAAQ,CAEhE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pbrExtension.js","sourceRoot":"","sources":["../src/pbrExtension.ts"],"names":[],"mappings":"AAEA,yFAAyF;AACzF,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { SheenPbrExtension } from '@flighthq/types/contract';
|
|
2
|
+
export declare function createSheenPbrExtension(opts?: Readonly<Partial<SheenPbrExtension>>): SheenPbrExtension;
|
|
3
|
+
export declare function isValidSheenPbrExtension(value: Readonly<SheenPbrExtension>): boolean;
|
|
4
|
+
//# sourceMappingURL=sheenPbrExtension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheenPbrExtension.d.ts","sourceRoot":"","sources":["../src/sheenPbrExtension.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAMlE,wBAAgB,uBAAuB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,iBAAiB,CAUtG;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAMpF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createEntity } from '@flighthq/entity/contract';
|
|
2
|
+
import { SheenPbrExtensionKind } from '@flighthq/types/contract';
|
|
3
|
+
import { isValidMaterialWeight } from './materialValidation';
|
|
4
|
+
import { isValidPbrUvSet } from './pbrExtension';
|
|
5
|
+
export function createSheenPbrExtension(opts) {
|
|
6
|
+
return createEntity({
|
|
7
|
+
kind: SheenPbrExtensionKind,
|
|
8
|
+
sheenColor: opts?.sheenColor ?? 0x000000ff,
|
|
9
|
+
sheenColorMap: opts?.sheenColorMap ?? null,
|
|
10
|
+
sheenColorMapUvSet: opts?.sheenColorMapUvSet ?? 0,
|
|
11
|
+
sheenRoughness: opts?.sheenRoughness ?? 0,
|
|
12
|
+
sheenRoughnessMap: opts?.sheenRoughnessMap ?? null,
|
|
13
|
+
sheenRoughnessMapUvSet: opts?.sheenRoughnessMapUvSet ?? 0,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
export function isValidSheenPbrExtension(value) {
|
|
17
|
+
return (isValidMaterialWeight(value.sheenRoughness) &&
|
|
18
|
+
isValidPbrUvSet(value.sheenColorMapUvSet) &&
|
|
19
|
+
isValidPbrUvSet(value.sheenRoughnessMapUvSet));
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=sheenPbrExtension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheenPbrExtension.js","sourceRoot":"","sources":["../src/sheenPbrExtension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,UAAU,uBAAuB,CAAC,IAA2C;IACjF,OAAO,YAAY,CAAC;QAClB,IAAI,EAAE,qBAAqB;QAC3B,UAAU,EAAE,IAAI,EAAE,UAAU,IAAI,UAAU;QAC1C,aAAa,EAAE,IAAI,EAAE,aAAa,IAAI,IAAI;QAC1C,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,IAAI,CAAC;QACjD,cAAc,EAAE,IAAI,EAAE,cAAc,IAAI,CAAC;QACzC,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,IAAI,IAAI;QAClD,sBAAsB,EAAE,IAAI,EAAE,sBAAsB,IAAI,CAAC;KAC1D,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAkC;IACzE,OAAO,CACL,qBAAqB,CAAC,KAAK,CAAC,cAAc,CAAC;QAC3C,eAAe,CAAC,KAAK,CAAC,kBAAkB,CAAC;QACzC,eAAe,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAC9C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { SpecularPbrExtension } from '@flighthq/types/contract';
|
|
2
|
+
export declare function createSpecularPbrExtension(opts?: Readonly<Partial<SpecularPbrExtension>>): SpecularPbrExtension;
|
|
3
|
+
export declare function isValidSpecularPbrExtension(value: Readonly<SpecularPbrExtension>): boolean;
|
|
4
|
+
//# sourceMappingURL=specularPbrExtension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specularPbrExtension.d.ts","sourceRoot":"","sources":["../src/specularPbrExtension.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAMrE,wBAAgB,0BAA0B,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,GAAG,oBAAoB,CAU/G;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAM1F"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createEntity } from '@flighthq/entity/contract';
|
|
2
|
+
import { SpecularPbrExtensionKind } from '@flighthq/types/contract';
|
|
3
|
+
import { isValidMaterialWeight } from './materialValidation';
|
|
4
|
+
import { isValidPbrUvSet } from './pbrExtension';
|
|
5
|
+
export function createSpecularPbrExtension(opts) {
|
|
6
|
+
return createEntity({
|
|
7
|
+
kind: SpecularPbrExtensionKind,
|
|
8
|
+
specular: opts?.specular ?? 1,
|
|
9
|
+
specularColor: opts?.specularColor ?? 0xffffffff,
|
|
10
|
+
specularColorMap: opts?.specularColorMap ?? null,
|
|
11
|
+
specularColorMapUvSet: opts?.specularColorMapUvSet ?? 0,
|
|
12
|
+
specularMap: opts?.specularMap ?? null,
|
|
13
|
+
specularMapUvSet: opts?.specularMapUvSet ?? 0,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
export function isValidSpecularPbrExtension(value) {
|
|
17
|
+
return (isValidMaterialWeight(value.specular) &&
|
|
18
|
+
isValidPbrUvSet(value.specularColorMapUvSet) &&
|
|
19
|
+
isValidPbrUvSet(value.specularMapUvSet));
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=specularPbrExtension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specularPbrExtension.js","sourceRoot":"","sources":["../src/specularPbrExtension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,UAAU,0BAA0B,CAAC,IAA8C;IACvF,OAAO,YAAY,CAAC;QAClB,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,CAAC;QAC7B,aAAa,EAAE,IAAI,EAAE,aAAa,IAAI,UAAU;QAChD,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,IAAI,IAAI;QAChD,qBAAqB,EAAE,IAAI,EAAE,qBAAqB,IAAI,CAAC;QACvD,WAAW,EAAE,IAAI,EAAE,WAAW,IAAI,IAAI;QACtC,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,IAAI,CAAC;KAC9C,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAqC;IAC/E,OAAO,CACL,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC;QACrC,eAAe,CAAC,KAAK,CAAC,qBAAqB,CAAC;QAC5C,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC,CACxC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surfaceMaterial.d.ts","sourceRoot":"","sources":["../src/surfaceMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"surfaceMaterial.d.ts","sourceRoot":"","sources":["../src/surfaceMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAWjH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAAG,eAAe,CAO1G;AAKD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,iBAAiB,CAEhG;AAID,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,OAAO,CAEnF;AAID,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,OAAO,CAElF;AAID,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,OAAO,CAElF"}
|
package/dist/surfaceMaterial.js
CHANGED
|
@@ -4,13 +4,12 @@ import { createMaterial } from './material';
|
|
|
4
4
|
// `opts` or falling back to its default: opaque, single-sided, straight alpha, Normal blend, a 0.5
|
|
5
5
|
// mask cutoff. Every 3D material constructor starts from this and adds its own maps and scalars;
|
|
6
6
|
// forwarding `opts` here is what lets any constructor set `alphaMode`/`alphaCutoff`/`doubleSided`/
|
|
7
|
-
// `blendMode
|
|
7
|
+
// `blendMode` (e.g. `alphaMode: 'mask'` for an alpha-mapped cutout). The result is a
|
|
8
8
|
// plain entity; callers mutate the returned object to set their own fields before returning it.
|
|
9
9
|
export function createSurfaceMaterial(kind, opts) {
|
|
10
10
|
const material = createMaterial(kind);
|
|
11
11
|
material.alphaCutoff = opts?.alphaCutoff ?? DEFAULT_ALPHA_CUTOFF;
|
|
12
12
|
material.alphaMode = opts?.alphaMode ?? DEFAULT_ALPHA_MODE;
|
|
13
|
-
material.alphaType = opts?.alphaType ?? DEFAULT_ALPHA_TYPE;
|
|
14
13
|
material.blendMode = opts?.blendMode ?? BlendMode.Normal;
|
|
15
14
|
material.doubleSided = opts?.doubleSided ?? DEFAULT_DOUBLE_SIDED;
|
|
16
15
|
return material;
|
|
@@ -38,6 +37,5 @@ export function isSurfaceMaterialOpaque(source) {
|
|
|
38
37
|
}
|
|
39
38
|
const DEFAULT_ALPHA_CUTOFF = 0.5;
|
|
40
39
|
const DEFAULT_ALPHA_MODE = 'opaque';
|
|
41
|
-
const DEFAULT_ALPHA_TYPE = 'straight';
|
|
42
40
|
const DEFAULT_DOUBLE_SIDED = false;
|
|
43
41
|
//# sourceMappingURL=surfaceMaterial.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surfaceMaterial.js","sourceRoot":"","sources":["../src/surfaceMaterial.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"surfaceMaterial.js","sourceRoot":"","sources":["../src/surfaceMaterial.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,kGAAkG;AAClG,mGAAmG;AACnG,iGAAiG;AACjG,mGAAmG;AACnG,qFAAqF;AACrF,gGAAgG;AAChG,MAAM,UAAU,qBAAqB,CAAC,IAAU,EAAE,IAAuC;IACvF,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAoB,CAAC;IACzD,QAAQ,CAAC,WAAW,GAAG,IAAI,EAAE,WAAW,IAAI,oBAAoB,CAAC;IACjE,QAAQ,CAAC,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,kBAAkB,CAAC;IAC3D,QAAQ,CAAC,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC;IACzD,QAAQ,CAAC,WAAW,GAAG,IAAI,EAAE,WAAW,IAAI,oBAAoB,CAAC;IACjE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,0FAA0F;AAC1F,0FAA0F;AAC1F,2EAA2E;AAC3E,MAAM,UAAU,2BAA2B,CAAC,MAAiC;IAC3E,OAAO,MAAM,CAAC,SAAS,CAAC;AAC1B,CAAC;AAED,sFAAsF;AACtF,8CAA8C;AAC9C,MAAM,UAAU,wBAAwB,CAAC,MAAiC;IACxE,OAAO,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC;AACtC,CAAC;AAED,4FAA4F;AAC5F,kEAAkE;AAClE,MAAM,UAAU,uBAAuB,CAAC,MAAiC;IACvE,OAAO,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC;AACrC,CAAC;AAED,uFAAuF;AACvF,mEAAmE;AACnE,MAAM,UAAU,uBAAuB,CAAC,MAAiC;IACvE,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC;AACvC,CAAC;AAED,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,kBAAkB,GAAsB,QAAQ,CAAC;AACvD,MAAM,oBAAoB,GAAG,KAAK,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { TransmissionVolumePbrExtension } from '@flighthq/types/contract';
|
|
2
|
+
export declare function createTransmissionVolumePbrExtension(opts?: Readonly<Partial<TransmissionVolumePbrExtension>>): TransmissionVolumePbrExtension;
|
|
3
|
+
export declare function isValidTransmissionVolumePbrExtension(value: Readonly<TransmissionVolumePbrExtension>): boolean;
|
|
4
|
+
//# sourceMappingURL=transmissionVolumePbrExtension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transmissionVolumePbrExtension.d.ts","sourceRoot":"","sources":["../src/transmissionVolumePbrExtension.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAM/E,wBAAgB,oCAAoC,CAClD,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,GACvD,8BAA8B,CAahC;AAED,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,QAAQ,CAAC,8BAA8B,CAAC,GAAG,OAAO,CAa9G"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { createEntity } from '@flighthq/entity/contract';
|
|
2
|
+
import { TransmissionVolumePbrExtensionKind } from '@flighthq/types/contract';
|
|
3
|
+
import { isValidMaterialIor, isValidMaterialWeight } from './materialValidation';
|
|
4
|
+
import { isValidPbrUvSet } from './pbrExtension';
|
|
5
|
+
export function createTransmissionVolumePbrExtension(opts) {
|
|
6
|
+
return createEntity({
|
|
7
|
+
attenuationColor: opts?.attenuationColor ?? 0xffffffff,
|
|
8
|
+
attenuationDistance: opts?.attenuationDistance ?? Infinity,
|
|
9
|
+
ior: opts?.ior ?? 1.5,
|
|
10
|
+
kind: TransmissionVolumePbrExtensionKind,
|
|
11
|
+
thickness: opts?.thickness ?? 0,
|
|
12
|
+
thicknessMap: opts?.thicknessMap ?? null,
|
|
13
|
+
thicknessMapUvSet: opts?.thicknessMapUvSet ?? 0,
|
|
14
|
+
transmission: opts?.transmission ?? 0,
|
|
15
|
+
transmissionMap: opts?.transmissionMap ?? null,
|
|
16
|
+
transmissionMapUvSet: opts?.transmissionMapUvSet ?? 0,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
export function isValidTransmissionVolumePbrExtension(value) {
|
|
20
|
+
const validAttenuationDistance = value.attenuationDistance === Infinity ||
|
|
21
|
+
(Number.isFinite(value.attenuationDistance) && value.attenuationDistance > 0);
|
|
22
|
+
return (isValidMaterialWeight(value.transmission) &&
|
|
23
|
+
isValidMaterialIor(value.ior) &&
|
|
24
|
+
Number.isFinite(value.thickness) &&
|
|
25
|
+
value.thickness >= 0 &&
|
|
26
|
+
validAttenuationDistance &&
|
|
27
|
+
isValidPbrUvSet(value.thicknessMapUvSet) &&
|
|
28
|
+
isValidPbrUvSet(value.transmissionMapUvSet));
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=transmissionVolumePbrExtension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transmissionVolumePbrExtension.js","sourceRoot":"","sources":["../src/transmissionVolumePbrExtension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,kCAAkC,EAAE,MAAM,0BAA0B,CAAC;AAE9E,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,UAAU,oCAAoC,CAClD,IAAwD;IAExD,OAAO,YAAY,CAAC;QAClB,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,IAAI,UAAU;QACtD,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,IAAI,QAAQ;QAC1D,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG;QACrB,IAAI,EAAE,kCAAkC;QACxC,SAAS,EAAE,IAAI,EAAE,SAAS,IAAI,CAAC;QAC/B,YAAY,EAAE,IAAI,EAAE,YAAY,IAAI,IAAI;QACxC,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,IAAI,CAAC;QAC/C,YAAY,EAAE,IAAI,EAAE,YAAY,IAAI,CAAC;QACrC,eAAe,EAAE,IAAI,EAAE,eAAe,IAAI,IAAI;QAC9C,oBAAoB,EAAE,IAAI,EAAE,oBAAoB,IAAI,CAAC;KACtD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qCAAqC,CAAC,KAA+C;IACnG,MAAM,wBAAwB,GAC5B,KAAK,CAAC,mBAAmB,KAAK,QAAQ;QACtC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;IAChF,OAAO,CACL,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC;QACzC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7B,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;QAChC,KAAK,CAAC,SAAS,IAAI,CAAC;QACpB,wBAAwB;QACxB,eAAe,CAAC,KAAK,CAAC,iBAAiB,CAAC;QACxC,eAAe,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAC5C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { WrappedDiffusePbrExtension } from '@flighthq/types/contract';
|
|
2
|
+
export declare function createWrappedDiffusePbrExtension(opts?: Readonly<Partial<WrappedDiffusePbrExtension>>): WrappedDiffusePbrExtension;
|
|
3
|
+
export declare function isValidWrappedDiffusePbrExtension(value: Readonly<WrappedDiffusePbrExtension>): boolean;
|
|
4
|
+
//# sourceMappingURL=wrappedDiffusePbrExtension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrappedDiffusePbrExtension.d.ts","sourceRoot":"","sources":["../src/wrappedDiffusePbrExtension.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAM3E,wBAAgB,gCAAgC,CAC9C,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,GACnD,0BAA0B,CAW5B;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,QAAQ,CAAC,0BAA0B,CAAC,GAAG,OAAO,CAQtG"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { createEntity } from '@flighthq/entity/contract';
|
|
2
|
+
import { WrappedDiffusePbrExtensionKind } from '@flighthq/types/contract';
|
|
3
|
+
import { isValidMaterialWeight } from './materialValidation';
|
|
4
|
+
import { isValidPbrUvSet } from './pbrExtension';
|
|
5
|
+
export function createWrappedDiffusePbrExtension(opts) {
|
|
6
|
+
return createEntity({
|
|
7
|
+
kind: WrappedDiffusePbrExtensionKind,
|
|
8
|
+
thickness: opts?.thickness ?? 0,
|
|
9
|
+
thicknessMap: opts?.thicknessMap ?? null,
|
|
10
|
+
thicknessMapUvSet: opts?.thicknessMapUvSet ?? 0,
|
|
11
|
+
wrappedDiffuseColor: opts?.wrappedDiffuseColor ?? 0xffffffff,
|
|
12
|
+
wrappedDiffuseMap: opts?.wrappedDiffuseMap ?? null,
|
|
13
|
+
wrappedDiffuseMapUvSet: opts?.wrappedDiffuseMapUvSet ?? 0,
|
|
14
|
+
wrappedDiffuseStrength: opts?.wrappedDiffuseStrength ?? 0,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
export function isValidWrappedDiffusePbrExtension(value) {
|
|
18
|
+
return (isValidMaterialWeight(value.wrappedDiffuseStrength) &&
|
|
19
|
+
Number.isFinite(value.thickness) &&
|
|
20
|
+
value.thickness >= 0 &&
|
|
21
|
+
isValidPbrUvSet(value.thicknessMapUvSet) &&
|
|
22
|
+
isValidPbrUvSet(value.wrappedDiffuseMapUvSet));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=wrappedDiffusePbrExtension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrappedDiffusePbrExtension.js","sourceRoot":"","sources":["../src/wrappedDiffusePbrExtension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAE1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,UAAU,gCAAgC,CAC9C,IAAoD;IAEpD,OAAO,YAAY,CAAC;QAClB,IAAI,EAAE,8BAA8B;QACpC,SAAS,EAAE,IAAI,EAAE,SAAS,IAAI,CAAC;QAC/B,YAAY,EAAE,IAAI,EAAE,YAAY,IAAI,IAAI;QACxC,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,IAAI,CAAC;QAC/C,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,IAAI,UAAU;QAC5D,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,IAAI,IAAI;QAClD,sBAAsB,EAAE,IAAI,EAAE,sBAAsB,IAAI,CAAC;QACzD,sBAAsB,EAAE,IAAI,EAAE,sBAAsB,IAAI,CAAC;KAC1D,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,KAA2C;IAC3F,OAAO,CACL,qBAAqB,CAAC,KAAK,CAAC,sBAAsB,CAAC;QACnD,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;QAChC,KAAK,CAAC,SAAS,IAAI,CAAC;QACpB,eAAe,CAAC,KAAK,CAAC,iBAAiB,CAAC;QACxC,eAAe,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAC9C,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/materials",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1-next.209.43ef1bc",
|
|
4
|
+
"author": "Joshua Granick and other contributors",
|
|
5
|
+
"license": "MIT",
|
|
4
6
|
"repository": {
|
|
5
7
|
"type": "git",
|
|
6
8
|
"url": "https://github.com/flighthq/flight.git",
|
|
@@ -36,9 +38,9 @@
|
|
|
36
38
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
37
39
|
},
|
|
38
40
|
"dependencies": {
|
|
39
|
-
"@flighthq/color": "0.3.
|
|
40
|
-
"@flighthq/entity": "0.3.
|
|
41
|
-
"@flighthq/types": "0.3.
|
|
41
|
+
"@flighthq/color": "0.3.1-next.209.43ef1bc",
|
|
42
|
+
"@flighthq/entity": "0.3.1-next.209.43ef1bc",
|
|
43
|
+
"@flighthq/types": "0.3.1-next.209.43ef1bc"
|
|
42
44
|
},
|
|
43
45
|
"devDependencies": {
|
|
44
46
|
"typescript": "^5.3.0"
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { EntityRuntimeKey } from '@flighthq/types/contract';
|
|
2
|
+
|
|
3
|
+
import { createAnisotropyPbrExtension, isValidAnisotropyPbrExtension } from './anisotropyPbrExtension';
|
|
4
|
+
|
|
5
|
+
describe('createAnisotropyPbrExtension', () => {
|
|
6
|
+
it('creates an Entity with canonical defaults and per-map UV selection', () => {
|
|
7
|
+
const value = createAnisotropyPbrExtension({ anisotropyMapUvSet: 1 });
|
|
8
|
+
expect(EntityRuntimeKey in value).toBe(true);
|
|
9
|
+
expect(value.anisotropyStrength).toBe(0);
|
|
10
|
+
expect(value.anisotropyMapUvSet).toBe(1);
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
describe('isValidAnisotropyPbrExtension', () => {
|
|
15
|
+
it('rejects invalid strength, rotation, and UV selection', () => {
|
|
16
|
+
expect(isValidAnisotropyPbrExtension(createAnisotropyPbrExtension())).toBe(true);
|
|
17
|
+
expect(isValidAnisotropyPbrExtension(createAnisotropyPbrExtension({ anisotropyStrength: 2 }))).toBe(false);
|
|
18
|
+
expect(isValidAnisotropyPbrExtension(createAnisotropyPbrExtension({ anisotropyRotation: Infinity }))).toBe(false);
|
|
19
|
+
const invalidUv = createAnisotropyPbrExtension();
|
|
20
|
+
Reflect.set(invalidUv, 'anisotropyMapUvSet', 2);
|
|
21
|
+
expect(isValidAnisotropyPbrExtension(invalidUv)).toBe(false);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { EntityRuntimeKey } from '@flighthq/types/contract';
|
|
2
|
+
|
|
3
|
+
import { createClearcoatPbrExtension, isValidClearcoatPbrExtension } from './clearcoatPbrExtension';
|
|
4
|
+
|
|
5
|
+
describe('createClearcoatPbrExtension', () => {
|
|
6
|
+
it('creates an Entity with an explicit normal scale and independent UV sets', () => {
|
|
7
|
+
const value = createClearcoatPbrExtension({ clearcoatNormalMapUvSet: 1 });
|
|
8
|
+
expect(EntityRuntimeKey in value).toBe(true);
|
|
9
|
+
expect(value.clearcoatNormalScale).toBe(1);
|
|
10
|
+
expect(value.clearcoatMapUvSet).toBe(0);
|
|
11
|
+
expect(value.clearcoatNormalMapUvSet).toBe(1);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
describe('isValidClearcoatPbrExtension', () => {
|
|
16
|
+
it('rejects invalid weights, normal scale, and map UV sets', () => {
|
|
17
|
+
expect(isValidClearcoatPbrExtension(createClearcoatPbrExtension())).toBe(true);
|
|
18
|
+
expect(isValidClearcoatPbrExtension(createClearcoatPbrExtension({ clearcoat: 2 }))).toBe(false);
|
|
19
|
+
expect(isValidClearcoatPbrExtension(createClearcoatPbrExtension({ clearcoatNormalScale: -1 }))).toBe(false);
|
|
20
|
+
const invalidUv = createClearcoatPbrExtension();
|
|
21
|
+
Reflect.set(invalidUv, 'clearcoatRoughnessMapUvSet', 3);
|
|
22
|
+
expect(isValidClearcoatPbrExtension(invalidUv)).toBe(false);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { createEntity } from '@flighthq/entity/contract';
|
|
2
|
+
import { ExtendedPbrMaterialKind } from '@flighthq/types/contract';
|
|
3
|
+
|
|
4
|
+
import { createClearcoatPbrExtension } from './clearcoatPbrExtension';
|
|
5
|
+
import { createExtendedPbrMaterial } from './extendedPbrMaterial';
|
|
6
|
+
import { createStandardPbrMaterialProperties } from './pbrMaterials';
|
|
7
|
+
|
|
8
|
+
describe('createExtendedPbrMaterial', () => {
|
|
9
|
+
it('composes a standard property block with an ordered extension list', () => {
|
|
10
|
+
const standard = createStandardPbrMaterialProperties({ roughness: 0.25 });
|
|
11
|
+
const extensions = [createClearcoatPbrExtension(), createEntity({ kind: 'VendorPbrExtension' })];
|
|
12
|
+
|
|
13
|
+
const material = createExtendedPbrMaterial({ extensions, standard });
|
|
14
|
+
|
|
15
|
+
expect(material.kind).toBe(ExtendedPbrMaterialKind);
|
|
16
|
+
expect(material.standard).toBe(standard);
|
|
17
|
+
expect(material.extensions).toBe(extensions);
|
|
18
|
+
expect(material.extensions.map((extension) => extension.kind)).toEqual([
|
|
19
|
+
'ClearcoatPbrExtension',
|
|
20
|
+
'VendorPbrExtension',
|
|
21
|
+
]);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it('defaults to a lean standard block and an empty per-material list', () => {
|
|
25
|
+
const a = createExtendedPbrMaterial();
|
|
26
|
+
const b = createExtendedPbrMaterial();
|
|
27
|
+
|
|
28
|
+
expect(a.standard.roughness).toBe(1);
|
|
29
|
+
expect(a.extensions).toEqual([]);
|
|
30
|
+
expect(a.extensions).not.toBe(b.extensions);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { EntityRuntimeKey } from '@flighthq/types/contract';
|
|
2
|
+
|
|
3
|
+
import { createIridescencePbrExtension, isValidIridescencePbrExtension } from './iridescencePbrExtension';
|
|
4
|
+
|
|
5
|
+
describe('createIridescencePbrExtension', () => {
|
|
6
|
+
it('creates an Entity with glTF thickness defaults and independent UV sets', () => {
|
|
7
|
+
const value = createIridescencePbrExtension({ iridescenceThicknessMapUvSet: 1 });
|
|
8
|
+
expect(EntityRuntimeKey in value).toBe(true);
|
|
9
|
+
expect(value.iridescenceIor).toBe(1.3);
|
|
10
|
+
expect(value.iridescenceThicknessMin).toBe(100);
|
|
11
|
+
expect(value.iridescenceThicknessMax).toBe(400);
|
|
12
|
+
expect(value.iridescenceThicknessMapUvSet).toBe(1);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
describe('isValidIridescencePbrExtension', () => {
|
|
17
|
+
it('rejects invalid strength, IOR, thickness ordering, and UV selection', () => {
|
|
18
|
+
expect(isValidIridescencePbrExtension(createIridescencePbrExtension())).toBe(true);
|
|
19
|
+
expect(isValidIridescencePbrExtension(createIridescencePbrExtension({ iridescence: -1 }))).toBe(false);
|
|
20
|
+
expect(isValidIridescencePbrExtension(createIridescencePbrExtension({ iridescenceIor: 0.5 }))).toBe(false);
|
|
21
|
+
expect(
|
|
22
|
+
isValidIridescencePbrExtension(
|
|
23
|
+
createIridescencePbrExtension({ iridescenceThicknessMax: 100, iridescenceThicknessMin: 200 }),
|
|
24
|
+
),
|
|
25
|
+
).toBe(false);
|
|
26
|
+
const invalidUv = createIridescencePbrExtension();
|
|
27
|
+
Reflect.set(invalidUv, 'iridescenceMapUvSet', 2);
|
|
28
|
+
expect(isValidIridescencePbrExtension(invalidUv)).toBe(false);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
ExtendedPbrMaterialKind,
|
|
3
|
+
StandardPbrMaterialKind,
|
|
4
|
+
TransmissionVolumePbrExtensionKind,
|
|
5
|
+
} from '@flighthq/types/contract';
|
|
2
6
|
|
|
3
7
|
import {
|
|
4
8
|
createAluminumStandardPbrMaterial,
|
|
5
9
|
createCarbonStandardPbrMaterial,
|
|
6
|
-
|
|
10
|
+
createGlassExtendedPbrMaterial,
|
|
7
11
|
createGoldStandardPbrMaterial,
|
|
8
12
|
createIronStandardPbrMaterial,
|
|
9
13
|
createMarbleStandardPbrMaterial,
|
|
@@ -36,16 +40,28 @@ describe('createCarbonStandardPbrMaterial', () => {
|
|
|
36
40
|
});
|
|
37
41
|
});
|
|
38
42
|
|
|
39
|
-
describe('
|
|
40
|
-
it('
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
expect(
|
|
44
|
-
expect(
|
|
43
|
+
describe('createGlassExtendedPbrMaterial', () => {
|
|
44
|
+
it('composes clear glass without nesting a standard material entity', () => {
|
|
45
|
+
const material = createGlassExtendedPbrMaterial();
|
|
46
|
+
const extension = material.extensions[0];
|
|
47
|
+
expect(material.kind).toBe(ExtendedPbrMaterialKind);
|
|
48
|
+
expect(material.standard.baseColor).toBe(0xffffffff);
|
|
49
|
+
expect(material.standard.metallic).toBe(0);
|
|
50
|
+
expect(material.standard.roughness).toBe(0);
|
|
51
|
+
expect('kind' in material.standard).toBe(false);
|
|
52
|
+
expect(extension?.kind).toBe(TransmissionVolumePbrExtensionKind);
|
|
45
53
|
});
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
54
|
+
|
|
55
|
+
it('applies surface, standard, and transmission-volume overrides independently', () => {
|
|
56
|
+
const material = createGlassExtendedPbrMaterial({
|
|
57
|
+
alphaMode: 'blend',
|
|
58
|
+
standard: { roughness: 0.2 },
|
|
59
|
+
transmissionVolume: { ior: 1.7 },
|
|
60
|
+
});
|
|
61
|
+
const extension = material.extensions[0];
|
|
62
|
+
expect(material.alphaMode).toBe('blend');
|
|
63
|
+
expect(material.standard.roughness).toBe(0.2);
|
|
64
|
+
expect(extension).toMatchObject({ ior: 1.7, transmission: 1 });
|
|
49
65
|
});
|
|
50
66
|
});
|
|
51
67
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { isValidPbrUvSet } from './pbrExtension';
|
|
2
|
+
|
|
3
|
+
describe('isValidPbrUvSet', () => {
|
|
4
|
+
it('accepts the two canonical mesh UV channels only', () => {
|
|
5
|
+
expect(isValidPbrUvSet(0)).toBe(true);
|
|
6
|
+
expect(isValidPbrUvSet(1)).toBe(true);
|
|
7
|
+
expect(isValidPbrUvSet(2)).toBe(false);
|
|
8
|
+
expect(isValidPbrUvSet(NaN)).toBe(false);
|
|
9
|
+
});
|
|
10
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { EntityRuntimeKey } from '@flighthq/types/contract';
|
|
2
|
+
|
|
3
|
+
import { createSheenPbrExtension, isValidSheenPbrExtension } from './sheenPbrExtension';
|
|
4
|
+
|
|
5
|
+
describe('createSheenPbrExtension', () => {
|
|
6
|
+
it('creates an Entity with independent color and roughness UV sets', () => {
|
|
7
|
+
const value = createSheenPbrExtension({ sheenColorMapUvSet: 1 });
|
|
8
|
+
expect(EntityRuntimeKey in value).toBe(true);
|
|
9
|
+
expect(value.sheenColor).toBe(0x000000ff);
|
|
10
|
+
expect(value.sheenColorMapUvSet).toBe(1);
|
|
11
|
+
expect(value.sheenRoughnessMapUvSet).toBe(0);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
describe('isValidSheenPbrExtension', () => {
|
|
16
|
+
it('rejects invalid roughness and UV selection', () => {
|
|
17
|
+
expect(isValidSheenPbrExtension(createSheenPbrExtension({ sheenRoughness: 1 }))).toBe(true);
|
|
18
|
+
expect(isValidSheenPbrExtension(createSheenPbrExtension({ sheenRoughness: NaN }))).toBe(false);
|
|
19
|
+
const invalidUv = createSheenPbrExtension();
|
|
20
|
+
Reflect.set(invalidUv, 'sheenRoughnessMapUvSet', -1);
|
|
21
|
+
expect(isValidSheenPbrExtension(invalidUv)).toBe(false);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { EntityRuntimeKey } from '@flighthq/types/contract';
|
|
2
|
+
|
|
3
|
+
import { createSpecularPbrExtension, isValidSpecularPbrExtension } from './specularPbrExtension';
|
|
4
|
+
|
|
5
|
+
describe('createSpecularPbrExtension', () => {
|
|
6
|
+
it('creates an Entity with independent strength and color UV sets', () => {
|
|
7
|
+
const value = createSpecularPbrExtension({ specularColorMapUvSet: 1 });
|
|
8
|
+
expect(EntityRuntimeKey in value).toBe(true);
|
|
9
|
+
expect(value.specular).toBe(1);
|
|
10
|
+
expect(value.specularMapUvSet).toBe(0);
|
|
11
|
+
expect(value.specularColorMapUvSet).toBe(1);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
describe('isValidSpecularPbrExtension', () => {
|
|
16
|
+
it('rejects invalid strength and UV selection', () => {
|
|
17
|
+
expect(isValidSpecularPbrExtension(createSpecularPbrExtension())).toBe(true);
|
|
18
|
+
expect(isValidSpecularPbrExtension(createSpecularPbrExtension({ specular: -1 }))).toBe(false);
|
|
19
|
+
const invalidUv = createSpecularPbrExtension();
|
|
20
|
+
Reflect.set(invalidUv, 'specularMapUvSet', 2);
|
|
21
|
+
expect(isValidSpecularPbrExtension(invalidUv)).toBe(false);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
@@ -19,7 +19,6 @@ describe('createSurfaceMaterial', () => {
|
|
|
19
19
|
const material = createSurfaceMaterial(TestSurfaceMaterialKind);
|
|
20
20
|
expect(material.alphaMode).toBe('opaque');
|
|
21
21
|
expect(material.alphaCutoff).toBe(0.5);
|
|
22
|
-
expect(material.alphaType).toBe('straight');
|
|
23
22
|
expect(material.blendMode).toBe(BlendMode.Normal);
|
|
24
23
|
expect(material.doubleSided).toBe(false);
|
|
25
24
|
});
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { EntityRuntimeKey } from '@flighthq/types/contract';
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
createTransmissionVolumePbrExtension,
|
|
5
|
+
isValidTransmissionVolumePbrExtension,
|
|
6
|
+
} from './transmissionVolumePbrExtension';
|
|
7
|
+
|
|
8
|
+
describe('createTransmissionVolumePbrExtension', () => {
|
|
9
|
+
it('creates an Entity with glTF defaults and independent UV sets', () => {
|
|
10
|
+
const value = createTransmissionVolumePbrExtension({ transmissionMapUvSet: 1 });
|
|
11
|
+
expect(EntityRuntimeKey in value).toBe(true);
|
|
12
|
+
expect(value.attenuationDistance).toBe(Infinity);
|
|
13
|
+
expect(value.ior).toBe(1.5);
|
|
14
|
+
expect(value.transmissionMapUvSet).toBe(1);
|
|
15
|
+
expect(value.thicknessMapUvSet).toBe(0);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
describe('isValidTransmissionVolumePbrExtension', () => {
|
|
20
|
+
it('accepts infinite attenuation and rejects invalid transport relationships or UV sets', () => {
|
|
21
|
+
expect(isValidTransmissionVolumePbrExtension(createTransmissionVolumePbrExtension())).toBe(true);
|
|
22
|
+
expect(
|
|
23
|
+
isValidTransmissionVolumePbrExtension(createTransmissionVolumePbrExtension({ attenuationDistance: 0 })),
|
|
24
|
+
).toBe(false);
|
|
25
|
+
expect(isValidTransmissionVolumePbrExtension(createTransmissionVolumePbrExtension({ ior: 0.5 }))).toBe(false);
|
|
26
|
+
expect(isValidTransmissionVolumePbrExtension(createTransmissionVolumePbrExtension({ thickness: -1 }))).toBe(false);
|
|
27
|
+
const invalidUv = createTransmissionVolumePbrExtension();
|
|
28
|
+
Reflect.set(invalidUv, 'thicknessMapUvSet', 2);
|
|
29
|
+
expect(isValidTransmissionVolumePbrExtension(invalidUv)).toBe(false);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { EntityRuntimeKey, WrappedDiffusePbrExtensionKind } from '@flighthq/types/contract';
|
|
2
|
+
|
|
3
|
+
import { createWrappedDiffusePbrExtension, isValidWrappedDiffusePbrExtension } from './wrappedDiffusePbrExtension';
|
|
4
|
+
|
|
5
|
+
describe('createWrappedDiffusePbrExtension', () => {
|
|
6
|
+
it('names the approximation honestly and creates an Entity with independent UV sets', () => {
|
|
7
|
+
const value = createWrappedDiffusePbrExtension({ thicknessMapUvSet: 1 });
|
|
8
|
+
expect(EntityRuntimeKey in value).toBe(true);
|
|
9
|
+
expect(value.kind).toBe(WrappedDiffusePbrExtensionKind);
|
|
10
|
+
expect(value.wrappedDiffuseStrength).toBe(0);
|
|
11
|
+
expect(value.thicknessMapUvSet).toBe(1);
|
|
12
|
+
expect(value.wrappedDiffuseMapUvSet).toBe(0);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
describe('isValidWrappedDiffusePbrExtension', () => {
|
|
17
|
+
it('rejects invalid strength, thickness, and UV selection', () => {
|
|
18
|
+
expect(isValidWrappedDiffusePbrExtension(createWrappedDiffusePbrExtension())).toBe(true);
|
|
19
|
+
expect(isValidWrappedDiffusePbrExtension(createWrappedDiffusePbrExtension({ wrappedDiffuseStrength: 2 }))).toBe(
|
|
20
|
+
false,
|
|
21
|
+
);
|
|
22
|
+
expect(isValidWrappedDiffusePbrExtension(createWrappedDiffusePbrExtension({ thickness: Infinity }))).toBe(false);
|
|
23
|
+
const invalidUv = createWrappedDiffusePbrExtension();
|
|
24
|
+
Reflect.set(invalidUv, 'wrappedDiffuseMapUvSet', 2);
|
|
25
|
+
expect(isValidWrappedDiffusePbrExtension(invalidUv)).toBe(false);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { AnisotropyPbrMaterial, ClearcoatPbrMaterial, IridescencePbrMaterial, SheenPbrMaterial, SpecularPbrMaterial, SubsurfacePbrMaterial, TransmissionVolumePbrMaterial } from '@flighthq/types/contract';
|
|
2
|
-
export declare function createAnisotropyPbrMaterial(opts?: Readonly<Partial<AnisotropyPbrMaterial>>): AnisotropyPbrMaterial;
|
|
3
|
-
export declare function createClearcoatPbrMaterial(opts?: Readonly<Partial<ClearcoatPbrMaterial>>): ClearcoatPbrMaterial;
|
|
4
|
-
export declare function createIridescencePbrMaterial(opts?: Readonly<Partial<IridescencePbrMaterial>>): IridescencePbrMaterial;
|
|
5
|
-
export declare function createSheenPbrMaterial(opts?: Readonly<Partial<SheenPbrMaterial>>): SheenPbrMaterial;
|
|
6
|
-
export declare function createSpecularPbrMaterial(opts?: Readonly<Partial<SpecularPbrMaterial>>): SpecularPbrMaterial;
|
|
7
|
-
export declare function createSubsurfacePbrMaterial(opts?: Readonly<Partial<SubsurfacePbrMaterial>>): SubsurfacePbrMaterial;
|
|
8
|
-
export declare function createTransmissionVolumePbrMaterial(opts?: Readonly<Partial<TransmissionVolumePbrMaterial>>): TransmissionVolumePbrMaterial;
|
|
9
|
-
//# sourceMappingURL=pbrExtensionMaterials.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pbrExtensionMaterials.d.ts","sourceRoot":"","sources":["../src/pbrExtensionMaterials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,6BAA6B,EAC9B,MAAM,0BAA0B,CAAC;AAiBlC,wBAAgB,2BAA2B,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,CAOlH;AAKD,wBAAgB,0BAA0B,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,GAAG,oBAAoB,CAS/G;AAKD,wBAAgB,4BAA4B,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,GAAG,sBAAsB,CAUrH;AAID,wBAAgB,sBAAsB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,gBAAgB,CAQnG;AAID,wBAAgB,yBAAyB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,GAAG,mBAAmB,CAQ5G;AAKD,wBAAgB,2BAA2B,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,CASlH;AAMD,wBAAgB,mCAAmC,CACjD,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,GACtD,6BAA6B,CAW/B"}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { AnisotropyPbrMaterialKind, ClearcoatPbrMaterialKind, IridescencePbrMaterialKind, SheenPbrMaterialKind, SpecularPbrMaterialKind, SubsurfacePbrMaterialKind, TransmissionVolumePbrMaterialKind, } from '@flighthq/types/contract';
|
|
2
|
-
import { createStandardPbrMaterialProperties } from './pbrMaterials';
|
|
3
|
-
import { createSurfaceMaterial } from './surfaceMaterial';
|
|
4
|
-
// KHR_materials_anisotropy: a directionally-stretched specular lobe. `anisotropyStrength`
|
|
5
|
-
// defaults to 0 (isotropic), `anisotropyRotation` to 0, the map to null. Composes a default
|
|
6
|
-
// `standard` block.
|
|
7
|
-
export function createAnisotropyPbrMaterial(opts) {
|
|
8
|
-
const material = createSurfaceMaterial(AnisotropyPbrMaterialKind, opts);
|
|
9
|
-
material.anisotropyMap = opts?.anisotropyMap ?? null;
|
|
10
|
-
material.anisotropyRotation = opts?.anisotropyRotation ?? 0;
|
|
11
|
-
material.anisotropyStrength = opts?.anisotropyStrength ?? 0;
|
|
12
|
-
material.standard = opts?.standard ?? createStandardPbrMaterialProperties();
|
|
13
|
-
return material;
|
|
14
|
-
}
|
|
15
|
-
// KHR_materials_clearcoat: a second specular lobe over the base PBR layer. `clearcoat` defaults
|
|
16
|
-
// to 0 (disabled), `clearcoatRoughness` to 0, all maps to null. Composes a default `standard`
|
|
17
|
-
// block.
|
|
18
|
-
export function createClearcoatPbrMaterial(opts) {
|
|
19
|
-
const material = createSurfaceMaterial(ClearcoatPbrMaterialKind, opts);
|
|
20
|
-
material.clearcoat = opts?.clearcoat ?? 0;
|
|
21
|
-
material.clearcoatMap = opts?.clearcoatMap ?? null;
|
|
22
|
-
material.clearcoatNormalMap = opts?.clearcoatNormalMap ?? null;
|
|
23
|
-
material.clearcoatRoughness = opts?.clearcoatRoughness ?? 0;
|
|
24
|
-
material.clearcoatRoughnessMap = opts?.clearcoatRoughnessMap ?? null;
|
|
25
|
-
material.standard = opts?.standard ?? createStandardPbrMaterialProperties();
|
|
26
|
-
return material;
|
|
27
|
-
}
|
|
28
|
-
// KHR_materials_iridescence: thin-film interference. `iridescence` defaults to 0 (disabled),
|
|
29
|
-
// `iridescenceIor` to 1.3, the thickness range to glTF's 100–400 nm, all maps to null.
|
|
30
|
-
// Composes a default `standard` block.
|
|
31
|
-
export function createIridescencePbrMaterial(opts) {
|
|
32
|
-
const material = createSurfaceMaterial(IridescencePbrMaterialKind, opts);
|
|
33
|
-
material.iridescence = opts?.iridescence ?? 0;
|
|
34
|
-
material.iridescenceIor = opts?.iridescenceIor ?? 1.3;
|
|
35
|
-
material.iridescenceMap = opts?.iridescenceMap ?? null;
|
|
36
|
-
material.iridescenceThicknessMap = opts?.iridescenceThicknessMap ?? null;
|
|
37
|
-
material.iridescenceThicknessMax = opts?.iridescenceThicknessMax ?? 400;
|
|
38
|
-
material.iridescenceThicknessMin = opts?.iridescenceThicknessMin ?? 100;
|
|
39
|
-
material.standard = opts?.standard ?? createStandardPbrMaterialProperties();
|
|
40
|
-
return material;
|
|
41
|
-
}
|
|
42
|
-
// KHR_materials_sheen: a retroreflective cloth/fabric lobe. `sheenColor` defaults to opaque
|
|
43
|
-
// black (disabled), `sheenRoughness` to 0, maps to null. Composes a default `standard` block.
|
|
44
|
-
export function createSheenPbrMaterial(opts) {
|
|
45
|
-
const material = createSurfaceMaterial(SheenPbrMaterialKind, opts);
|
|
46
|
-
material.sheenColor = opts?.sheenColor ?? 0x000000ff;
|
|
47
|
-
material.sheenColorMap = opts?.sheenColorMap ?? null;
|
|
48
|
-
material.sheenRoughness = opts?.sheenRoughness ?? 0;
|
|
49
|
-
material.sheenRoughnessMap = opts?.sheenRoughnessMap ?? null;
|
|
50
|
-
material.standard = opts?.standard ?? createStandardPbrMaterialProperties();
|
|
51
|
-
return material;
|
|
52
|
-
}
|
|
53
|
-
// KHR_materials_specular: independent dielectric specular strength and tint. `specular` defaults
|
|
54
|
-
// to 1 (full), `specularColor` to white, maps to null. Composes a default `standard` block.
|
|
55
|
-
export function createSpecularPbrMaterial(opts) {
|
|
56
|
-
const material = createSurfaceMaterial(SpecularPbrMaterialKind, opts);
|
|
57
|
-
material.specular = opts?.specular ?? 1;
|
|
58
|
-
material.specularColor = opts?.specularColor ?? 0xffffffff;
|
|
59
|
-
material.specularColorMap = opts?.specularColorMap ?? null;
|
|
60
|
-
material.specularMap = opts?.specularMap ?? null;
|
|
61
|
-
material.standard = opts?.standard ?? createStandardPbrMaterialProperties();
|
|
62
|
-
return material;
|
|
63
|
-
}
|
|
64
|
-
// Flight subsurface-scattering extension (wrapped-diffuse approximation). `subsurface` defaults
|
|
65
|
-
// to 0 (disabled), `subsurfaceColor` to white, `thickness` to 0, maps to null. Composes a
|
|
66
|
-
// default `standard` block.
|
|
67
|
-
export function createSubsurfacePbrMaterial(opts) {
|
|
68
|
-
const material = createSurfaceMaterial(SubsurfacePbrMaterialKind, opts);
|
|
69
|
-
material.standard = opts?.standard ?? createStandardPbrMaterialProperties();
|
|
70
|
-
material.subsurface = opts?.subsurface ?? 0;
|
|
71
|
-
material.subsurfaceColor = opts?.subsurfaceColor ?? 0xffffffff;
|
|
72
|
-
material.subsurfaceMap = opts?.subsurfaceMap ?? null;
|
|
73
|
-
material.thickness = opts?.thickness ?? 0;
|
|
74
|
-
material.thicknessMap = opts?.thicknessMap ?? null;
|
|
75
|
-
return material;
|
|
76
|
-
}
|
|
77
|
-
// KHR_materials_transmission + KHR_materials_volume: refractive, see-through surfaces.
|
|
78
|
-
// `transmission` defaults to 0 (opaque), `thickness` to 0, `attenuationColor` to white,
|
|
79
|
-
// `attenuationDistance` to Infinity (no absorption), `ior` to glTF's 1.5, maps to null.
|
|
80
|
-
// Composes a default `standard` block.
|
|
81
|
-
export function createTransmissionVolumePbrMaterial(opts) {
|
|
82
|
-
const material = createSurfaceMaterial(TransmissionVolumePbrMaterialKind, opts);
|
|
83
|
-
material.attenuationColor = opts?.attenuationColor ?? 0xffffffff;
|
|
84
|
-
material.attenuationDistance = opts?.attenuationDistance ?? Infinity;
|
|
85
|
-
material.ior = opts?.ior ?? 1.5;
|
|
86
|
-
material.standard = opts?.standard ?? createStandardPbrMaterialProperties();
|
|
87
|
-
material.thickness = opts?.thickness ?? 0;
|
|
88
|
-
material.thicknessMap = opts?.thicknessMap ?? null;
|
|
89
|
-
material.transmission = opts?.transmission ?? 0;
|
|
90
|
-
material.transmissionMap = opts?.transmissionMap ?? null;
|
|
91
|
-
return material;
|
|
92
|
-
}
|
|
93
|
-
//# sourceMappingURL=pbrExtensionMaterials.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pbrExtensionMaterials.js","sourceRoot":"","sources":["../src/pbrExtensionMaterials.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AnisotropyPbrMaterialKind,
|
|
3
|
-
ClearcoatPbrMaterialKind,
|
|
4
|
-
IridescencePbrMaterialKind,
|
|
5
|
-
SheenPbrMaterialKind,
|
|
6
|
-
SpecularPbrMaterialKind,
|
|
7
|
-
SubsurfacePbrMaterialKind,
|
|
8
|
-
TransmissionVolumePbrMaterialKind,
|
|
9
|
-
} from '@flighthq/types/contract';
|
|
10
|
-
|
|
11
|
-
import {
|
|
12
|
-
createAnisotropyPbrMaterial,
|
|
13
|
-
createClearcoatPbrMaterial,
|
|
14
|
-
createIridescencePbrMaterial,
|
|
15
|
-
createSheenPbrMaterial,
|
|
16
|
-
createSpecularPbrMaterial,
|
|
17
|
-
createSubsurfacePbrMaterial,
|
|
18
|
-
createTransmissionVolumePbrMaterial,
|
|
19
|
-
} from './pbrExtensionMaterials';
|
|
20
|
-
import { createStandardPbrMaterialProperties } from './pbrMaterials';
|
|
21
|
-
|
|
22
|
-
describe('createAnisotropyPbrMaterial', () => {
|
|
23
|
-
it('creates an isotropic anisotropy material with a default standard block', () => {
|
|
24
|
-
const material = createAnisotropyPbrMaterial();
|
|
25
|
-
expect(material.kind).toBe(AnisotropyPbrMaterialKind);
|
|
26
|
-
expect(material.anisotropyStrength).toBe(0);
|
|
27
|
-
expect(material.anisotropyRotation).toBe(0);
|
|
28
|
-
expect(material.standard.baseColor).toBe(0xffffffff);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
it('composes a provided standard block', () => {
|
|
32
|
-
const standard = createStandardPbrMaterialProperties({ metallic: 1 });
|
|
33
|
-
expect(createAnisotropyPbrMaterial({ standard }).standard).toBe(standard);
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
describe('createClearcoatPbrMaterial', () => {
|
|
38
|
-
it('creates a disabled clearcoat material with a default standard block', () => {
|
|
39
|
-
const material = createClearcoatPbrMaterial();
|
|
40
|
-
expect(material.kind).toBe(ClearcoatPbrMaterialKind);
|
|
41
|
-
expect(material.clearcoat).toBe(0);
|
|
42
|
-
expect(material.clearcoatRoughness).toBe(0);
|
|
43
|
-
expect(material.standard.roughness).toBe(1);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
it('applies overrides', () => {
|
|
47
|
-
expect(createClearcoatPbrMaterial({ clearcoat: 1 }).clearcoat).toBe(1);
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
describe('createIridescencePbrMaterial', () => {
|
|
52
|
-
it('creates a disabled iridescence material with glTF thickness defaults', () => {
|
|
53
|
-
const material = createIridescencePbrMaterial();
|
|
54
|
-
expect(material.kind).toBe(IridescencePbrMaterialKind);
|
|
55
|
-
expect(material.iridescence).toBe(0);
|
|
56
|
-
expect(material.iridescenceIor).toBe(1.3);
|
|
57
|
-
expect(material.iridescenceThicknessMin).toBe(100);
|
|
58
|
-
expect(material.iridescenceThicknessMax).toBe(400);
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
it('applies overrides', () => {
|
|
62
|
-
expect(createIridescencePbrMaterial({ iridescence: 1 }).iridescence).toBe(1);
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
describe('createSheenPbrMaterial', () => {
|
|
67
|
-
it('creates a disabled sheen material with a default standard block', () => {
|
|
68
|
-
const material = createSheenPbrMaterial();
|
|
69
|
-
expect(material.kind).toBe(SheenPbrMaterialKind);
|
|
70
|
-
expect(material.sheenColor).toBe(0x000000ff);
|
|
71
|
-
expect(material.sheenRoughness).toBe(0);
|
|
72
|
-
expect(material.standard.baseColor).toBe(0xffffffff);
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
it('applies overrides', () => {
|
|
76
|
-
expect(createSheenPbrMaterial({ sheenColor: 0xffffffff }).sheenColor).toBe(0xffffffff);
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
describe('createSpecularPbrMaterial', () => {
|
|
81
|
-
it('creates a full-specular white-tint material with a default standard block', () => {
|
|
82
|
-
const material = createSpecularPbrMaterial();
|
|
83
|
-
expect(material.kind).toBe(SpecularPbrMaterialKind);
|
|
84
|
-
expect(material.specular).toBe(1);
|
|
85
|
-
expect(material.specularColor).toBe(0xffffffff);
|
|
86
|
-
expect(material.standard.metallic).toBe(0);
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
it('applies overrides', () => {
|
|
90
|
-
expect(createSpecularPbrMaterial({ specular: 0.5 }).specular).toBe(0.5);
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
describe('createSubsurfacePbrMaterial', () => {
|
|
95
|
-
it('creates a disabled subsurface material with a default standard block', () => {
|
|
96
|
-
const material = createSubsurfacePbrMaterial();
|
|
97
|
-
expect(material.kind).toBe(SubsurfacePbrMaterialKind);
|
|
98
|
-
expect(material.subsurface).toBe(0);
|
|
99
|
-
expect(material.subsurfaceColor).toBe(0xffffffff);
|
|
100
|
-
expect(material.thickness).toBe(0);
|
|
101
|
-
expect(material.standard.roughness).toBe(1);
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
it('applies overrides', () => {
|
|
105
|
-
expect(createSubsurfacePbrMaterial({ subsurface: 1 }).subsurface).toBe(1);
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
describe('createTransmissionVolumePbrMaterial', () => {
|
|
110
|
-
it('creates an opaque transmission material with glTF ior and no absorption', () => {
|
|
111
|
-
const material = createTransmissionVolumePbrMaterial();
|
|
112
|
-
expect(material.kind).toBe(TransmissionVolumePbrMaterialKind);
|
|
113
|
-
expect(material.transmission).toBe(0);
|
|
114
|
-
expect(material.ior).toBe(1.5);
|
|
115
|
-
expect(material.attenuationColor).toBe(0xffffffff);
|
|
116
|
-
expect(material.attenuationDistance).toBe(Infinity);
|
|
117
|
-
expect(material.standard.baseColor).toBe(0xffffffff);
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
it('applies overrides', () => {
|
|
121
|
-
expect(createTransmissionVolumePbrMaterial({ transmission: 1 }).transmission).toBe(1);
|
|
122
|
-
});
|
|
123
|
-
});
|