@forgeax/engine-shader 0.1.24 → 0.1.26
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/README.md +97 -0
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +35 -7
- package/dist/index.mjs.map +1 -1
- package/dist/material/artifact-registry.d.ts +1 -0
- package/dist/material/artifact-registry.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/__tests__/builtin-texture-sampling-contract.test.ts +10 -1
- package/src/__tests__/deferred-lighting-ssao.test.ts +4 -1
- package/src/__tests__/material-builtins.unit.test.ts +6 -6
- package/src/__tests__/standard-pbr-webgl2-interface.unit.test.ts +33 -0
- package/src/__tests__/standard-physical-layer.unit.test.ts +16 -0
- package/src/__tests__/standard-surface-pass-evaluation.integration.test.ts +38 -0
- package/src/__tests__/surface-lighting-provenance.integration.test.ts +59 -0
- package/src/__tests__/surface-pass-templates.integration.test.ts +28 -0
- package/src/default-standard-pbr-skin.wgsl +40 -14
- package/src/default-standard-pbr.wgsl +14 -14
- package/src/default_standard_surface.wgsl +5 -5
- package/src/index.ts +36 -4
- package/src/material/artifact-registry.ts +20 -1
- package/src/material/standard-physical-layer.wgsl +12 -0
- package/src/opaque_surface.wgsl +9 -0
- package/src/shadow_caster.wgsl +80 -6
- package/src/unlit.wgsl +12 -0
package/README.md
CHANGED
|
@@ -22,6 +22,82 @@ second manifest or registry.
|
|
|
22
22
|
> Runtime 只查找已发布的 content-addressed artifact;恢复沿 producer、cook
|
|
23
23
|
> 与 catalog 的 owner 边界进行,不在 app 侧复制 shader artifact。
|
|
24
24
|
|
|
25
|
+
## Standard Surface contract
|
|
26
|
+
|
|
27
|
+
Standard material 的作者只需要通过 `#import` 使用
|
|
28
|
+
[`surface_v1.wgsl`](./src/surface_v1.wgsl),并实现唯一的
|
|
29
|
+
`evaluate_surface(SurfaceInput) -> SurfaceData`。`SurfaceData` 是 Standard
|
|
30
|
+
BRDF 的输入,不是最终颜色;Engine-owned Standard pass family 负责顶点、光照、
|
|
31
|
+
阴影、Forward/Deferred、G-buffer、雾和输出。内建默认值位于
|
|
32
|
+
[`default_standard_surface.wgsl`](./src/default_standard_surface.wgsl)。
|
|
33
|
+
|
|
34
|
+
### Minimal authoring shape
|
|
35
|
+
|
|
36
|
+
`SurfaceData` is deliberately base-only. Its frozen field order is:
|
|
37
|
+
|
|
38
|
+
| Order | Field | Meaning |
|
|
39
|
+
|:--:|:--|:--|
|
|
40
|
+
| 1 | `baseColor: vec3<f32>` | Base reflectance color |
|
|
41
|
+
| 2 | `normalWS: vec3<f32>` | World-space shading normal |
|
|
42
|
+
| 3 | `metallic: f32` | Metallic factor |
|
|
43
|
+
| 4 | `roughness: f32` | Roughness factor |
|
|
44
|
+
| 5 | `emissive: vec3<f32>` | Emissive contribution |
|
|
45
|
+
| 6 | `occlusion: f32` | Ambient occlusion factor |
|
|
46
|
+
| 7 | `opacity: f32` | Surface opacity |
|
|
47
|
+
| 8 | `alphaClipThreshold: f32` | Alpha-test threshold |
|
|
48
|
+
|
|
49
|
+
```wgsl
|
|
50
|
+
#import forgeax_material::surface_v1::{SurfaceInput, SurfaceData}
|
|
51
|
+
|
|
52
|
+
fn evaluate_surface(input: SurfaceInput) -> SurfaceData {
|
|
53
|
+
return SurfaceData(
|
|
54
|
+
vec3<f32>(0.45, 0.18, 0.06), input.geometricNormalWS, 0.8, 0.42,
|
|
55
|
+
vec3<f32>(0.0), 1.0, 1.0, 0.5,
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The matching TypeScript entry is also import-first: the caller names the
|
|
61
|
+
compiled Surface module and supplies only its parameters and values. The
|
|
62
|
+
Engine still owns stage entry points, bindings, BRDF composition, and pass
|
|
63
|
+
projection.
|
|
64
|
+
|
|
65
|
+
```ts
|
|
66
|
+
import { Materials } from '@forgeax/engine-render';
|
|
67
|
+
|
|
68
|
+
const rustedIron = Materials.standard({
|
|
69
|
+
surfaceModule: 'game_3d::rusted_iron_surface',
|
|
70
|
+
parameters: [
|
|
71
|
+
{ name: 'ironColor', type: 'color' },
|
|
72
|
+
{ name: 'rustDark', type: 'color' },
|
|
73
|
+
{ name: 'rustBright', type: 'color' },
|
|
74
|
+
{ name: 'noiseScale', type: 'f32', default: 1.85 },
|
|
75
|
+
],
|
|
76
|
+
values: {
|
|
77
|
+
ironColor: [0.4, 0.45, 0.47, 1],
|
|
78
|
+
rustDark: [0.42, 0.085, 0.018, 1],
|
|
79
|
+
rustBright: [0.95, 0.34, 0.055, 1],
|
|
80
|
+
noiseScale: 1.85,
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
For the complete source-to-runtime example, see the
|
|
86
|
+
[`game-3d` rusted-iron fixture](../../templates/game-3d/README.md#import-first-surface-material-example).
|
|
87
|
+
|
|
88
|
+
> [!CAUTION]
|
|
89
|
+
> Surface is a base-facts function only. Do not add `clearcoat`,
|
|
90
|
+
> `clearcoatRoughness`, other physical-layer fields, stage entries, resource
|
|
91
|
+
> bindings, Engine entry points, or vertex-position mutation. Physical layers
|
|
92
|
+
> and pass admission remain Engine-owned.
|
|
93
|
+
|
|
94
|
+
渐进导航:`Materials.standard()` → `moduleSlots.surface` → build-time
|
|
95
|
+
`#import` composition / reflection → Pack cook → runtime GUID readiness。
|
|
96
|
+
Surface source 不声明 stage entry、`@group/@binding` 或 vertex mutation;参数
|
|
97
|
+
资源由同一 `MaterialAsset.parameters` contract 派生。编译或 cook 失败时读取
|
|
98
|
+
`code`、`detail`、`hint`,修复 authored source 或 producer 后重新 cook,不在
|
|
99
|
+
runtime 读取 raw WGSL 或创建 app-local artifact。
|
|
100
|
+
|
|
25
101
|
> [!IMPORTANT]
|
|
26
102
|
> A custom material starts as WGSL source plus one `MaterialAsset` contract. The build manifest publishes the composed module and the material cook publishes the resolved record, artifact bytes, references, and receipt. Runtime resolves those facts from the catalog; application code does not install or duplicate shader artifacts. The recovery route is always source or cook repair.
|
|
27
103
|
|
|
@@ -101,10 +177,19 @@ code-specific `detail` and `hint`:
|
|
|
101
177
|
| `shader-module-not-found` | The published module is absent | Add it to the build source catalog and rebuild |
|
|
102
178
|
| `material-specialization-not-cooked` | No runtime artifact exists for the selection | Run the cook path and publish its record |
|
|
103
179
|
| `material-specialization-stale-generation` | A dependency changed after cooking | Wait for dependencies to settle and re-cook |
|
|
180
|
+
| `material-surface-slot-missing` | Standard pass has no `surface` module slot | Add the slot to the authored pass and re-cook |
|
|
181
|
+
| `material-surface-abi-mismatch` | Surface export does not match `surface_v1` | Repair `evaluate_surface` signature and re-cook |
|
|
182
|
+
| `material-surface-forbidden-interface` | Surface declares a stage, resource, or vertex mutation | Remove the forbidden interface and re-cook |
|
|
183
|
+
| `material-physical-contract-invalid` | A root physical layer is incomplete or unsupported | Repair the root parameter fragment before composing or cooking |
|
|
104
184
|
|
|
105
185
|
Never hide one of these errors by creating an app-local artifact or changing a
|
|
106
186
|
demo's material shape.
|
|
107
187
|
|
|
188
|
+
For the canonical error detail and executable recovery fields, use
|
|
189
|
+
[`material/errors.ts`](../types/src/material/errors.ts). The producer recovery
|
|
190
|
+
path is `inspect -> repair authored source -> cold-cook -> verify publication`;
|
|
191
|
+
runtime does not reinterpret a Surface error.
|
|
192
|
+
|
|
108
193
|
## Temporal-v1 accessor
|
|
109
194
|
|
|
110
195
|
`forgeax_scene_temporal` is the single WGSL accessor ABI for the
|
|
@@ -178,3 +263,15 @@ layout.
|
|
|
178
263
|
- [`@forgeax/engine-types` MaterialAsset](../types/README.md#materialasset-route)
|
|
179
264
|
- [`@forgeax/engine-pack` cook contract](../pack/README.md#materialasset-cook-contract)
|
|
180
265
|
- [`MaterialAsset migration`](https://github.com/ForgeaXGame/forgeax-engine-harness/blob/main/docs/material-asset-migration.md)
|
|
266
|
+
|
|
267
|
+
## Surface authoring checklist
|
|
268
|
+
|
|
269
|
+
- [x] Import `forgeax_material::surface_v1` and return the eight-field `SurfaceData`.
|
|
270
|
+
- [x] Read generated material parameters through `forgeax_material::parameters`.
|
|
271
|
+
- [x] Keep vertex, light, BRDF, pass, binding, and output ownership in Engine modules.
|
|
272
|
+
- [x] Let the root parameter contract determine physical layers and pass admission.
|
|
273
|
+
- [ ] Add an engine entry point or resource binding to a Surface module.
|
|
274
|
+
|
|
275
|
+
The final unchecked item is intentionally forbidden. If an effect needs its own
|
|
276
|
+
entry points or render targets, declare an explicit full-custom material and
|
|
277
|
+
publish its pass/lane provenance instead of disguising it as a Standard Surface.
|
package/dist/index.d.ts
CHANGED
|
@@ -16,13 +16,21 @@ export declare const BUILTIN_MATERIAL_MODULES: {
|
|
|
16
16
|
readonly unlit: "forgeax_material::unlit";
|
|
17
17
|
readonly sprite: "forgeax_material::sprite";
|
|
18
18
|
};
|
|
19
|
+
/**
|
|
20
|
+
* The engine-owned Standard Surface selected by a built-in Standard material.
|
|
21
|
+
* Keep this explicit in the authored pass so the build-time cooker sees the
|
|
22
|
+
* same slot contract as Materials.standard().
|
|
23
|
+
*/
|
|
24
|
+
export declare const DEFAULT_STANDARD_SURFACE_MODULE: "forgeax_material::default_standard_surface";
|
|
19
25
|
/** Stable build-time module id for the temporal-v1 accessor owner. */
|
|
20
26
|
export declare const SCENE_DATA_TEMPORAL_V1_SHADER_MODULE: "forgeax_scene_temporal";
|
|
21
27
|
/**
|
|
22
28
|
* Material modules whose shader source and parameter contract are owned by
|
|
23
29
|
* the Engine. They live in the runtime ShaderRegistry, so a Pack containing
|
|
24
30
|
* one of these materials carries authored values only and does not require a
|
|
25
|
-
* project material-cook artifact.
|
|
31
|
+
* project material-cook artifact. A Standard pass with a project Surface slot
|
|
32
|
+
* is deliberately excluded: its root composition is project-owned and must
|
|
33
|
+
* arrive with a cooked material publication.
|
|
26
34
|
*/
|
|
27
35
|
export declare const ENGINE_MATERIAL_MODULES: readonly ["forgeax::default-standard-pbr", "forgeax::pbr-skin", "forgeax::default-standard-pbr-skin", "forgeax::default-unlit", "forgeax::default-shadow-caster", "forgeax::sprite", "forgeax::sprite-lit", "forgeax::msdf-text", "forgeax_material::standard", "forgeax_material::unlit", "forgeax_material::sprite", "forgeax_material::sprite-lit"];
|
|
28
36
|
/** Names of the zero-binding Standard reflection-probe shader helpers. */
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAsBA,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAoC,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAsBA,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAoC,MAAM,uBAAuB,CAAC;AAI7F,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EACL,GAAG,EACH,iBAAiB,EACjB,sBAAsB,EACtB,EAAE,EACF,KAAK,MAAM,EACX,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,WAAW,EACX,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,wBAAwB,EACxB,KAAK,uBAAuB,GAC7B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,gCAAgC,EAChC,wBAAwB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,GAC/B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,8BAA8B,EAC9B,2BAA2B,EAC3B,iCAAiC,EACjC,0BAA0B,EAC1B,0BAA0B,EAC1B,iCAAiC,EACjC,6BAA6B,EAC7B,kCAAkC,EAClC,oCAAoC,EACpC,gCAAgC,EAChC,8BAA8B,EAC9B,KAAK,4BAA4B,EACjC,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,wBAAwB,EACxB,KAAK,aAAa,GACnB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AACzF,eAAO,MAAM,2BAA2B,EAAG,6BAAsC,CAAC;AAClF,OAAO,EACL,4BAA4B,EAC5B,KAAK,mBAAmB,EACxB,KAAK,6BAA6B,EAClC,cAAc,EACd,cAAc,IAAI,aAAa,EAC/B,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,IAAI,mBAAmB,EAChD,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,IAAI,oBAAoB,GACnD,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,KAAK,2BAA2B,EAChC,KAAK,6BAA6B,GACnC,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,wBAAwB;;;;CAI3B,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,EAC1C,4CAAqD,CAAC;AAExD,sEAAsE;AACtE,eAAO,MAAM,oCAAoC,EAAG,wBAAiC,CAAC;AAEtF;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,wVAa1B,CAAC;AAEX,0EAA0E;AAC1E,eAAO,MAAM,+BAA+B,2DAGjC,CAAC;AAEZ,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,GAAG,OAAO,CAWjF;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,wBAAwB,CAAC;AA0BxE,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,mBAAmB,GAAG,aAAa,CAoBnF;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,yBAAyB,UAAO,CAAC;AAE9C,OAAO,EAAE,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { STANDARD_MATERIAL_PARAM_SCHEMA, STANDARD_PHYSICAL_PARAMETER_NAMES, ok, err, ParamSchemaProjectionOwner, findUndeclaredSampledTextures } from '@forgeax/engine-types';
|
|
1
|
+
import { STANDARD_MATERIAL_PARAM_SCHEMA, STANDARD_PHYSICAL_PARAMETER_NAMES, ok, err, ParamSchemaProjectionOwner, findUndeclaredSampledTextures, standardSurfaceParameters } from '@forgeax/engine-types';
|
|
2
2
|
export { MATERIAL_PARAM_TYPES, STANDARD_PHYSICAL_TEXTURE_FIELDS, standardPhysicalTextureFields } from '@forgeax/engine-types';
|
|
3
3
|
import { ok as ok$1, err as err$1 } from '@forgeax/engine-rhi';
|
|
4
4
|
export { err, ok } from '@forgeax/engine-rhi';
|
|
5
5
|
|
|
6
|
-
// src/
|
|
6
|
+
// src/index.ts
|
|
7
7
|
|
|
8
8
|
// src/material/artifact-types.ts
|
|
9
9
|
var STANDARD_PBR_TEXTURES = [
|
|
@@ -33106,18 +33106,35 @@ function hashLtcTable(table) {
|
|
|
33106
33106
|
function equalBytes(left, right) {
|
|
33107
33107
|
return left.length === right.length && left.every((value, index) => value === right[index]);
|
|
33108
33108
|
}
|
|
33109
|
+
function equalParamSchema(left, right) {
|
|
33110
|
+
return JSON.stringify(left.metadata?.paramSchema) === JSON.stringify(right.metadata?.paramSchema);
|
|
33111
|
+
}
|
|
33109
33112
|
var MaterialArtifactRegistry = class {
|
|
33110
33113
|
#artifacts = /* @__PURE__ */ new Map();
|
|
33111
33114
|
register(artifact) {
|
|
33112
33115
|
const previous = this.#artifacts.get(artifact.key);
|
|
33113
33116
|
if (previous !== void 0) {
|
|
33114
|
-
if (equalBytes(previous.bytes, artifact.bytes))
|
|
33117
|
+
if (equalBytes(previous.bytes, artifact.bytes)) {
|
|
33118
|
+
if (equalParamSchema(previous, artifact)) return ok(previous);
|
|
33119
|
+
return err({
|
|
33120
|
+
code: "material-artifact-conflict",
|
|
33121
|
+
expected: "one immutable parameter schema per specialization key",
|
|
33122
|
+
hint: "re-cook the conflicting specialization with one canonical parameter schema",
|
|
33123
|
+
detail: {
|
|
33124
|
+
key: artifact.key,
|
|
33125
|
+
dimension: "param-schema",
|
|
33126
|
+
...previous.digest ? { existingDigest: previous.digest } : {},
|
|
33127
|
+
...artifact.digest ? { incomingDigest: artifact.digest } : {}
|
|
33128
|
+
}
|
|
33129
|
+
});
|
|
33130
|
+
}
|
|
33115
33131
|
return err({
|
|
33116
33132
|
code: "material-artifact-conflict",
|
|
33117
33133
|
expected: "one immutable artifact byte sequence per specialization key",
|
|
33118
33134
|
hint: "re-cook the conflicting specialization and publish one artifact digest",
|
|
33119
33135
|
detail: {
|
|
33120
33136
|
key: artifact.key,
|
|
33137
|
+
dimension: "bytes",
|
|
33121
33138
|
...previous.digest ? { existingDigest: previous.digest } : {},
|
|
33122
33139
|
...artifact.digest ? { incomingDigest: artifact.digest } : {}
|
|
33123
33140
|
}
|
|
@@ -33585,6 +33602,7 @@ var BUILTIN_MATERIAL_MODULES = {
|
|
|
33585
33602
|
unlit: "forgeax_material::unlit",
|
|
33586
33603
|
sprite: "forgeax_material::sprite"
|
|
33587
33604
|
};
|
|
33605
|
+
var DEFAULT_STANDARD_SURFACE_MODULE = "forgeax_material::default_standard_surface";
|
|
33588
33606
|
var SCENE_DATA_TEMPORAL_V1_SHADER_MODULE = "forgeax_scene_temporal";
|
|
33589
33607
|
var ENGINE_MATERIAL_MODULES = [
|
|
33590
33608
|
"forgeax::default-standard-pbr",
|
|
@@ -33609,7 +33627,9 @@ function isEngineMaterialModule(module) {
|
|
|
33609
33627
|
}
|
|
33610
33628
|
function isEngineMaterial(material) {
|
|
33611
33629
|
const passes = material.passes ?? [];
|
|
33612
|
-
return passes.length > 0 && passes.every(
|
|
33630
|
+
return passes.length > 0 && passes.every(
|
|
33631
|
+
(pass) => isEngineMaterialModule(pass.program.module) && (pass.program.moduleSlots?.surface === void 0 || pass.program.moduleSlots.surface === DEFAULT_STANDARD_SURFACE_MODULE)
|
|
33632
|
+
);
|
|
33613
33633
|
}
|
|
33614
33634
|
var BUILTIN_PARAMETERS = {
|
|
33615
33635
|
standard: [
|
|
@@ -33634,13 +33654,21 @@ var BUILTIN_VALUES = {
|
|
|
33634
33654
|
function createBuiltinMaterialAsset(kind) {
|
|
33635
33655
|
return {
|
|
33636
33656
|
kind: "material",
|
|
33637
|
-
passes: [
|
|
33638
|
-
|
|
33657
|
+
passes: [
|
|
33658
|
+
{
|
|
33659
|
+
name: "forward",
|
|
33660
|
+
program: {
|
|
33661
|
+
module: BUILTIN_MATERIAL_MODULES[kind],
|
|
33662
|
+
...kind === "standard" ? { moduleSlots: { surface: DEFAULT_STANDARD_SURFACE_MODULE } } : {}
|
|
33663
|
+
}
|
|
33664
|
+
}
|
|
33665
|
+
],
|
|
33666
|
+
parameters: kind === "standard" ? standardSurfaceParameters(BUILTIN_PARAMETERS[kind]) : BUILTIN_PARAMETERS[kind],
|
|
33639
33667
|
values: BUILTIN_VALUES[kind]
|
|
33640
33668
|
};
|
|
33641
33669
|
}
|
|
33642
33670
|
var TONEMAP_LUMINANCE_EPSILON = 1e-5;
|
|
33643
33671
|
|
|
33644
|
-
export { BUILTIN_MATERIAL_MODULES, DEFAULT_MSDF_TEXT_PARAM_SCHEMA, DEFAULT_SPRITE_PARAM_SCHEMA, DEFAULT_STANDARD_PBR_PARAM_SCHEMA, DEFAULT_UNLIT_PARAM_SCHEMA, ENGINE_MATERIAL_MODULES, FORGEAX_RESERVED_PATH_PREFIX, LTC_SOURCE_PROVENANCE, LTC_TABLES, LTC_TABLE_HASHES, LTC_TABLE_HEIGHT, LTC_TABLE_INPUT_HASHES, LTC_TABLE_WIDTH, MaterialArtifactRegistry, RECT_AREA_LTC_SHADER_MODULE, REFLECTION_PROBE_SHADER_HELPERS, SCENE_DATA_TEMPORAL_V1_SHADER_MODULE, STANDARD_BASE_PARAM_SCHEMA, STANDARD_PBR_ALPHA_CUTOFF_DEFAULT, STANDARD_PBR_ARTIFACT_RECEIPT, STANDARD_PBR_SKIN_ARTIFACT_RECEIPT, STANDARD_PHYSICAL_LAYER_PARAM_SCHEMA, STANDARD_PIPELINE_PARAM_SCHEMA, ShaderRegistry as ShaderCatalog, ShaderError, ShaderRegistry, TONEMAP_LUMINANCE_EPSILON, TONEMAP_SHADER_MODE, createBuiltinMaterialAsset, createStandardPbrArtifactReceipt, findVariantByKey, generateLtcTables, hashLtcTable, isEngineMaterial, isEngineMaterialModule, isMaterialShaderArtifact, manifestMalformed, materialShaderNotFound, registerDefaultSpriteLit, registerDefaultStandardPbrSkin, shaderNotFound };
|
|
33672
|
+
export { BUILTIN_MATERIAL_MODULES, DEFAULT_MSDF_TEXT_PARAM_SCHEMA, DEFAULT_SPRITE_PARAM_SCHEMA, DEFAULT_STANDARD_PBR_PARAM_SCHEMA, DEFAULT_STANDARD_SURFACE_MODULE, DEFAULT_UNLIT_PARAM_SCHEMA, ENGINE_MATERIAL_MODULES, FORGEAX_RESERVED_PATH_PREFIX, LTC_SOURCE_PROVENANCE, LTC_TABLES, LTC_TABLE_HASHES, LTC_TABLE_HEIGHT, LTC_TABLE_INPUT_HASHES, LTC_TABLE_WIDTH, MaterialArtifactRegistry, RECT_AREA_LTC_SHADER_MODULE, REFLECTION_PROBE_SHADER_HELPERS, SCENE_DATA_TEMPORAL_V1_SHADER_MODULE, STANDARD_BASE_PARAM_SCHEMA, STANDARD_PBR_ALPHA_CUTOFF_DEFAULT, STANDARD_PBR_ARTIFACT_RECEIPT, STANDARD_PBR_SKIN_ARTIFACT_RECEIPT, STANDARD_PHYSICAL_LAYER_PARAM_SCHEMA, STANDARD_PIPELINE_PARAM_SCHEMA, ShaderRegistry as ShaderCatalog, ShaderError, ShaderRegistry, TONEMAP_LUMINANCE_EPSILON, TONEMAP_SHADER_MODE, createBuiltinMaterialAsset, createStandardPbrArtifactReceipt, findVariantByKey, generateLtcTables, hashLtcTable, isEngineMaterial, isEngineMaterialModule, isMaterialShaderArtifact, manifestMalformed, materialShaderNotFound, registerDefaultSpriteLit, registerDefaultStandardPbrSkin, shaderNotFound };
|
|
33645
33673
|
//# sourceMappingURL=index.mjs.map
|
|
33646
33674
|
//# sourceMappingURL=index.mjs.map
|