@forgeax/engine-shader 0.1.23 → 0.1.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +13 -4
  2. package/dist/ShaderRegistry.d.ts.map +1 -1
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.mjs +28 -52
  6. package/dist/index.mjs.map +1 -1
  7. package/dist/material-schemas.d.ts +31 -0
  8. package/dist/material-schemas.d.ts.map +1 -1
  9. package/package.json +4 -4
  10. package/src/ShaderRegistry.ts +0 -17
  11. package/src/__tests__/default-standard-pbr-alpha.unit.test.ts +9 -3
  12. package/src/__tests__/default-standard-pbr-transmission.unit.test.ts +48 -166
  13. package/src/__tests__/deferred-lighting-ssao.test.ts +3 -3
  14. package/src/__tests__/ibl-irradiance.unit.test.ts +9 -0
  15. package/src/__tests__/lighting-directional.unit.test.ts +36 -0
  16. package/src/__tests__/lighting-punctual.unit.test.ts +12 -4
  17. package/src/__tests__/material-builtins.unit.test.ts +21 -3
  18. package/src/__tests__/material-contract.unit.test.ts +131 -17
  19. package/src/__tests__/physical-clearcoat.unit.test.ts +65 -0
  20. package/src/__tests__/probe-lighting-composition.unit.test.ts +3 -2
  21. package/src/__tests__/shader-manifest-transmission.unit.test.ts +8 -10
  22. package/src/__tests__/shader.unit.test.ts +52 -87
  23. package/src/__tests__/spot-cookie-composition.unit.test.ts +2 -1
  24. package/src/__tests__/standard-webgl2-varying-budget.unit.test.ts +17 -0
  25. package/src/__tests__/surface-v1-negative.unit.test.ts +37 -0
  26. package/src/__tests__/surface-v1.unit.test.ts +83 -0
  27. package/src/__tests__/transmission-thickness-scale.unit.test.ts +2 -6
  28. package/src/__tests__/vertex-color-variant.unit.test.ts +16 -5
  29. package/src/default-standard-pbr-skin.wgsl +678 -192
  30. package/src/default-standard-pbr.wgsl +563 -279
  31. package/src/default_standard_surface.wgsl +88 -0
  32. package/src/hdrp-cluster-forward.wgsl +225 -0
  33. package/src/ibl-irradiance.wgsl +43 -8
  34. package/src/ibl-prefilter.wgsl +13 -3
  35. package/src/ibl-shared.wgsl +9 -2
  36. package/src/index.ts +6 -0
  37. package/src/lighting-directional.wgsl +3 -1
  38. package/src/lighting-spot-modifiers.wgsl +8 -1
  39. package/src/lighting-spot-projector.wgsl +31 -0
  40. package/src/material/artifact-types.ts +2 -2
  41. package/src/material/physical/anisotropy.wgsl +26 -0
  42. package/src/material/physical/clearcoat.wgsl +24 -0
  43. package/src/material/physical/iridescence.wgsl +23 -0
  44. package/src/material/physical/sheen.wgsl +17 -0
  45. package/src/material-schemas.ts +65 -30
  46. package/src/register-default-standard-pbr-skin.ts +2 -2
  47. package/src/standard-cluster.wgsl +1 -36
  48. package/src/surface_v1.wgsl +26 -0
package/README.md CHANGED
@@ -159,10 +159,19 @@ state supplies render inspection and recovery evidence.
159
159
  ## Built-in PBR contract
160
160
 
161
161
  The built-in PBR shader has named coordinate records for base color, metallic
162
- roughness, normal, specular tint, emissive, and occlusion. Each record carries
163
- offset, scale, rotation, coordinate set, and physical extent metadata. The
164
- render package projects the records into the UBO; the shader selects the
165
- declared vertex coordinate input per slot.
162
+ roughness, normal, specular weight/color, emissive, occlusion, transmission,
163
+ and the declared physical texture slots. Each record carries offset, scale,
164
+ rotation, coordinate set, and physical extent metadata. The render package
165
+ projects the records into the UBO; the shader selects the declared vertex
166
+ coordinate input per slot. `specular`/`specularColor` replace the removed
167
+ The former specular-tint vocabulary was removed in one cut; no compatibility alias is supported.
168
+
169
+ Physical layer declarations are lowered from the Standard root contract. The
170
+ compiler appends only authored physical resources after the engine-owned IBL
171
+ and transmission region, so a base-only root has no physical binding or sample
172
+ and retains its Deferred pass. The five glTF extensions use the same schema and
173
+ the same Forward physical evaluator; runtime never compiles or patches this
174
+ layout.
166
175
 
167
176
  ## References
168
177
 
@@ -1 +1 @@
1
- {"version":3,"file":"ShaderRegistry.d.ts","sourceRoot":"","sources":["../src/ShaderRegistry.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,KAAK,EACV,8BAA8B,EAC9B,aAAa,EACb,gBAAgB,EAChB,+BAA+B,EAChC,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,MAAM,IAAI,YAAY,EAE5B,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAI9D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,CAAC,IAAI,EAAE;QACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACrC,GAAG,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;CACpC;AAID;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,EAAG,WAAoB,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACnD;AAED,+EAA+E;AAC/E,MAAM,WAAW,6BAA8B,SAAQ,mBAAmB;IACxE,QAAQ,CAAC,qBAAqB,EAAE,8BAA8B,CAAC;CAChE;AAID,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC;;;;;;;;;OASG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C;AAkCD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,cAAc;;gBAcb,IAAI,EAAE,qBAAqB;IAKvC;;;;;;;;;;;;;;;OAeG;IACG,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IA0L9D;;;;;;;;;;OAUG;IACH,OAAO,IAAI,gBAAgB,CAAC,aAAa,CAAC;IAI1C;;;;;;;;;;;;;OAaG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,YAAY,EAAE,QAAQ,GAAG,WAAW,CAAC;IA2C/D;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAsC7E;;;;;;;;;;;;;OAaG;IACH,oBAAoB,CAClB,UAAU,EAAE,MAAM,GACjB,YAAY,CAAC,6BAA6B,EAAE,WAAW,CAAC;IAc3D;;;;OAIG;IACH,yBAAyB,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAIrD,uEAAuE;IACvE,0BAA0B,IAAI,+BAA+B;IAI7D;;;;;;;;;;;OAWG;IACH,6BAA6B,IAAI,gBAAgB,CAAC,2BAA2B,CAAC;CAG/E"}
1
+ {"version":3,"file":"ShaderRegistry.d.ts","sourceRoot":"","sources":["../src/ShaderRegistry.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,KAAK,EACV,8BAA8B,EAC9B,aAAa,EACb,gBAAgB,EAChB,+BAA+B,EAChC,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,MAAM,IAAI,YAAY,EAE5B,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAI9D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,CAAC,IAAI,EAAE;QACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACrC,GAAG,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;CACpC;AAID;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,EAAG,WAAoB,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACnD;AAED,+EAA+E;AAC/E,MAAM,WAAW,6BAA8B,SAAQ,mBAAmB;IACxE,QAAQ,CAAC,qBAAqB,EAAE,8BAA8B,CAAC;CAChE;AAID,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC;;;;;;;;;OASG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C;AAkCD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,cAAc;;gBAcb,IAAI,EAAE,qBAAqB;IAKvC;;;;;;;;;;;;;;;OAeG;IACG,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAyK9D;;;;;;;;;;OAUG;IACH,OAAO,IAAI,gBAAgB,CAAC,aAAa,CAAC;IAI1C;;;;;;;;;;;;;OAaG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,YAAY,EAAE,QAAQ,GAAG,WAAW,CAAC;IA2C/D;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAsC7E;;;;;;;;;;;;;OAaG;IACH,oBAAoB,CAClB,UAAU,EAAE,MAAM,GACjB,YAAY,CAAC,6BAA6B,EAAE,WAAW,CAAC;IAc3D;;;;OAIG;IACH,yBAAyB,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAIrD,uEAAuE;IACvE,0BAA0B,IAAI,+BAA+B;IAI7D;;;;;;;;;;;OAWG;IACH,6BAA6B,IAAI,gBAAgB,CAAC,2BAA2B,CAAC;CAG/E"}
package/dist/index.d.ts CHANGED
@@ -5,7 +5,7 @@ export { err, manifestMalformed, materialShaderNotFound, ok, type Result, type R
5
5
  export { generateLtcTables, hashLtcTable, LTC_SOURCE_PROVENANCE, LTC_TABLE_HASHES, LTC_TABLE_HEIGHT, LTC_TABLE_INPUT_HASHES, LTC_TABLE_WIDTH, LTC_TABLES, } from './ltc/tables.js';
6
6
  export { type MaterialArtifactConflictError, type MaterialArtifactInspection, MaterialArtifactRegistry, type MaterialRuntimeArtifact, } from './material/artifact-registry.js';
7
7
  export { createStandardPbrArtifactReceipt, isMaterialShaderArtifact, type MaterialShaderArtifact, type MaterialShaderArtifactReceipt, type MaterialShaderResourceSlot, type MaterialShaderVertexInput, } from './material/artifact-types.js';
8
- export { DEFAULT_MSDF_TEXT_PARAM_SCHEMA, DEFAULT_SPRITE_PARAM_SCHEMA, DEFAULT_STANDARD_PBR_PARAM_SCHEMA, DEFAULT_UNLIT_PARAM_SCHEMA, STANDARD_PBR_ALPHA_CUTOFF_DEFAULT, STANDARD_PBR_ARTIFACT_RECEIPT, STANDARD_PBR_SKIN_ARTIFACT_RECEIPT, } from './material-schemas.js';
8
+ export { DEFAULT_MSDF_TEXT_PARAM_SCHEMA, DEFAULT_SPRITE_PARAM_SCHEMA, DEFAULT_STANDARD_PBR_PARAM_SCHEMA, DEFAULT_UNLIT_PARAM_SCHEMA, STANDARD_BASE_PARAM_SCHEMA, STANDARD_PBR_ALPHA_CUTOFF_DEFAULT, STANDARD_PBR_ARTIFACT_RECEIPT, STANDARD_PBR_SKIN_ARTIFACT_RECEIPT, STANDARD_PHYSICAL_LAYER_PARAM_SCHEMA, STANDARD_PHYSICAL_TEXTURE_FIELDS, STANDARD_PIPELINE_PARAM_SCHEMA, type StandardPhysicalTextureField, standardPhysicalTextureFields, } from './material-schemas.js';
9
9
  export { registerDefaultSpriteLit, type SpriteLitCaps, } from './register-default-sprite-lit.js';
10
10
  export { registerDefaultStandardPbrSkin } from './register-default-standard-pbr-skin.js';
11
11
  export declare const RECT_AREA_LTC_SHADER_MODULE: "forgeax::lighting-rect-area";
@@ -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;AAG7F,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,iCAAiC,EACjC,6BAA6B,EAC7B,kCAAkC,GACnC,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,sEAAsE;AACtE,eAAO,MAAM,oCAAoC,EAAG,wBAAiC,CAAC;AAEtF;;;;;GAKG;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,CAGjF;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,wBAAwB,CAAC;AA0BxE,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,mBAAmB,GAAG,aAAa,CAOnF;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,yBAAyB,UAAO,CAAC;AAE9C,OAAO,EAAE,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,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;AAG7F,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,sEAAsE;AACtE,eAAO,MAAM,oCAAoC,EAAG,wBAAiC,CAAC;AAEtF;;;;;GAKG;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,CAGjF;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,wBAAwB,CAAC;AA0BxE,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,mBAAmB,GAAG,aAAa,CAOnF;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,14 +1,16 @@
1
- import { ok, err, ParamSchemaProjectionOwner, findUndeclaredSampledTextures } from '@forgeax/engine-types';
2
- export { MATERIAL_PARAM_TYPES } from '@forgeax/engine-types';
1
+ import { STANDARD_MATERIAL_PARAM_SCHEMA, STANDARD_PHYSICAL_PARAMETER_NAMES, ok, err, ParamSchemaProjectionOwner, findUndeclaredSampledTextures } from '@forgeax/engine-types';
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/material-schemas.ts
7
+
6
8
  // src/material/artifact-types.ts
7
9
  var STANDARD_PBR_TEXTURES = [
8
10
  "baseColorTexture",
9
11
  "metallicRoughnessTexture",
10
12
  "normalTexture",
11
- "specularTintTexture",
13
+ "specularColorTexture",
12
14
  "emissiveTexture",
13
15
  "occlusionTexture",
14
16
  "transmissionTexture",
@@ -28,7 +30,7 @@ var STANDARD_PBR_NUMERIC_FIELDS = [
28
30
  "alphaCutoff",
29
31
  "clearcoat",
30
32
  "clearcoatRoughness",
31
- "specularTint",
33
+ "specularColor",
32
34
  "normalScale",
33
35
  "transmission",
34
36
  "ior",
@@ -91,39 +93,27 @@ function isMaterialShaderArtifact(value) {
91
93
  const artifact = value;
92
94
  return typeof artifact.material === "string" && typeof artifact.pass === "string" && typeof artifact.wgsl === "string" && typeof artifact.layoutIdentity === "string" && Array.isArray(artifact.bindings) && Array.isArray(artifact.deps) && Array.isArray(artifact.vertexInputs);
93
95
  }
94
-
95
- // src/material-schemas.ts
96
96
  var STANDARD_PBR_ALPHA_CUTOFF_DEFAULT = 0;
97
- var DEFAULT_STANDARD_PBR_PARAM_SCHEMA = [
98
- { name: "baseColor", type: "color", default: [1, 1, 1, 1] },
99
- { name: "metallic", type: "f32", default: 0 },
100
- { name: "roughness", type: "f32", default: 0.5 },
101
- { name: "metallicChannel", type: "f32", default: 2 },
102
- { name: "roughnessChannel", type: "f32", default: 1 },
103
- { name: "aoChannel", type: "f32", default: 0 },
104
- { name: "extraChannel", type: "f32", default: 0 },
105
- { name: "emissive", type: "vec3", colorSpace: "srgb", default: [0, 0, 0] },
106
- { name: "emissiveIntensity", type: "f32", default: 0 },
107
- { name: "occlusionStrength", type: "f32", default: 1 },
108
- { name: "alphaCutoff", type: "f32", default: STANDARD_PBR_ALPHA_CUTOFF_DEFAULT },
109
- { name: "clearcoat", type: "f32", default: 0 },
110
- { name: "clearcoatRoughness", type: "f32", default: 0.5 },
111
- { name: "specularTint", type: "vec3", colorSpace: "srgb", default: [1, 1, 1] },
112
- { name: "normalScale", type: "f32", default: 1 },
113
- { name: "transmission", type: "f32", default: 0 },
114
- { name: "ior", type: "f32", default: 1.5 },
115
- { name: "thickness", type: "f32", default: 0 },
116
- { name: "attenuationColor", type: "vec3", colorSpace: "linear", default: [1, 1, 1] },
117
- { name: "attenuationDistance", type: "f32" },
118
- { name: "baseColorTexture", type: "texture2d" },
119
- { name: "metallicRoughnessTexture", type: "texture2d" },
120
- { name: "normalTexture", type: "texture2d" },
121
- { name: "specularTintTexture", type: "texture2d" },
122
- { name: "emissiveTexture", type: "texture2d" },
123
- { name: "occlusionTexture", type: "texture2d" },
124
- { name: "transmissionTexture", type: "texture2d" },
125
- { name: "thicknessTexture", type: "texture2d" }
126
- ];
97
+ var DEFAULT_STANDARD_PBR_PARAM_SCHEMA = STANDARD_MATERIAL_PARAM_SCHEMA;
98
+ var STANDARD_PHYSICAL_LAYER_PARAM_SCHEMA = DEFAULT_STANDARD_PBR_PARAM_SCHEMA.filter(
99
+ (entry) => STANDARD_PHYSICAL_PARAMETER_NAMES.has(entry.name)
100
+ );
101
+ var STANDARD_BASE_PARAM_SCHEMA = DEFAULT_STANDARD_PBR_PARAM_SCHEMA.filter(
102
+ (entry) => !STANDARD_PHYSICAL_PARAMETER_NAMES.has(entry.name) && ![
103
+ "transmission",
104
+ "thickness",
105
+ "attenuationColor",
106
+ "attenuationDistance",
107
+ "transmissionTexture",
108
+ "thicknessTexture"
109
+ ].includes(entry.name)
110
+ );
111
+ var STANDARD_PIPELINE_PARAM_SCHEMA = DEFAULT_STANDARD_PBR_PARAM_SCHEMA.filter(
112
+ // The canonical Standard UBO keeps every numeric root coordinate,
113
+ // including the physical-layer tail. Physical map pairs are engine-owned
114
+ // resources and are injected after the stable user region.
115
+ (entry) => !(STANDARD_PHYSICAL_PARAMETER_NAMES.has(entry.name) && entry.type.startsWith("texture"))
116
+ );
127
117
  var STANDARD_PBR_ARTIFACT_RECEIPT = createStandardPbrArtifactReceipt();
128
118
  var STANDARD_PBR_SKIN_ARTIFACT_RECEIPT = createStandardPbrArtifactReceipt(true);
129
119
  var DEFAULT_UNLIT_PARAM_SCHEMA = [
@@ -33166,7 +33156,7 @@ var RESERVED_ID2 = "forgeax::pbr-skin";
33166
33156
  function registerDefaultStandardPbrSkin(registry, composedWgsl, caps) {
33167
33157
  registry.installMaterialArtifact(RESERVED_ID2, {
33168
33158
  source: composedWgsl,
33169
- paramSchema: DEFAULT_STANDARD_PBR_PARAM_SCHEMA
33159
+ paramSchema: STANDARD_PIPELINE_PARAM_SCHEMA
33170
33160
  });
33171
33161
  }
33172
33162
  var FORGEAX_RESERVED_PATH_PREFIX = "forgeax::";
@@ -33343,20 +33333,6 @@ var ShaderRegistry = class {
33343
33333
  }
33344
33334
  variantKeys.add(variant.definesKey);
33345
33335
  }
33346
- if (ms.identifier === "forgeax::default-standard-pbr") {
33347
- const transmissionStates = new Set(
33348
- ms.variants.filter((variant) => "TRANSMISSION_AVAILABLE" in variant.defines).map((variant) => variant.defines.TRANSMISSION_AVAILABLE)
33349
- );
33350
- if (!transmissionStates.has(false) || !transmissionStates.has(true)) {
33351
- return err$1(
33352
- manifestMalformed({
33353
- message: "ShaderRegistry: Standard material shader is missing a transmission variant state",
33354
- hint: "forgeax::default-standard-pbr must declare TRANSMISSION_AVAILABLE=false and true",
33355
- reason: `declared transmission states: ${JSON.stringify([...transmissionStates])}`
33356
- })
33357
- );
33358
- }
33359
- }
33360
33336
  validatedMaterialShaderEntries.push(ms);
33361
33337
  }
33362
33338
  }
@@ -33665,6 +33641,6 @@ function createBuiltinMaterialAsset(kind) {
33665
33641
  }
33666
33642
  var TONEMAP_LUMINANCE_EPSILON = 1e-5;
33667
33643
 
33668
- 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_PBR_ALPHA_CUTOFF_DEFAULT, STANDARD_PBR_ARTIFACT_RECEIPT, STANDARD_PBR_SKIN_ARTIFACT_RECEIPT, ShaderRegistry as ShaderCatalog, ShaderError, ShaderRegistry, TONEMAP_LUMINANCE_EPSILON, TONEMAP_SHADER_MODE, createBuiltinMaterialAsset, createStandardPbrArtifactReceipt, findVariantByKey, generateLtcTables, hashLtcTable, isEngineMaterial, isEngineMaterialModule, isMaterialShaderArtifact, manifestMalformed, materialShaderNotFound, registerDefaultSpriteLit, registerDefaultStandardPbrSkin, shaderNotFound };
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 };
33669
33645
  //# sourceMappingURL=index.mjs.map
33670
33646
  //# sourceMappingURL=index.mjs.map