@flighthq/scene3d-gl 0.3.0 → 0.3.1-next.1041.35b950c

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 (112) hide show
  1. package/dist/customShaderGlMeshMaterialRenderer.d.ts.map +1 -1
  2. package/dist/customShaderGlMeshMaterialRenderer.js +7 -10
  3. package/dist/customShaderGlMeshMaterialRenderer.js.map +1 -1
  4. package/dist/depthGlMeshMaterialRenderer.d.ts.map +1 -1
  5. package/dist/depthGlMeshMaterialRenderer.js +5 -3
  6. package/dist/depthGlMeshMaterialRenderer.js.map +1 -1
  7. package/dist/drawGlScene3D.d.ts.map +1 -1
  8. package/dist/drawGlScene3D.js +24 -12
  9. package/dist/drawGlScene3D.js.map +1 -1
  10. package/dist/explainGlScene3DCoverage.d.ts +2 -2
  11. package/dist/explainGlScene3DCoverage.d.ts.map +1 -1
  12. package/dist/explainGlScene3DCoverage.js +61 -28
  13. package/dist/explainGlScene3DCoverage.js.map +1 -1
  14. package/dist/glClassicPrelude.d.ts.map +1 -1
  15. package/dist/glClassicPrelude.js +15 -4
  16. package/dist/glClassicPrelude.js.map +1 -1
  17. package/dist/glDebugPrelude.d.ts.map +1 -1
  18. package/dist/glDebugPrelude.js +50 -12
  19. package/dist/glDebugPrelude.js.map +1 -1
  20. package/dist/glEnvironmentIblBake.d.ts.map +1 -1
  21. package/dist/glEnvironmentIblBake.js +13 -0
  22. package/dist/glEnvironmentIblBake.js.map +1 -1
  23. package/dist/glEnvironmentSkybox.d.ts.map +1 -1
  24. package/dist/glEnvironmentSkybox.js +9 -2
  25. package/dist/glEnvironmentSkybox.js.map +1 -1
  26. package/dist/glMatcapPrelude.d.ts.map +1 -1
  27. package/dist/glMatcapPrelude.js +23 -6
  28. package/dist/glMatcapPrelude.js.map +1 -1
  29. package/dist/glMeshMaterialRegistry.d.ts.map +1 -1
  30. package/dist/glMeshMaterialRegistry.js +15 -11
  31. package/dist/glMeshMaterialRegistry.js.map +1 -1
  32. package/dist/glMeshProgram.d.ts +4 -2
  33. package/dist/glMeshProgram.d.ts.map +1 -1
  34. package/dist/glMeshProgram.js +94 -17
  35. package/dist/glMeshProgram.js.map +1 -1
  36. package/dist/glMeshUpload.d.ts +2 -1
  37. package/dist/glMeshUpload.d.ts.map +1 -1
  38. package/dist/glMeshUpload.js +79 -79
  39. package/dist/glMeshUpload.js.map +1 -1
  40. package/dist/glParticleEmitter3D.d.ts.map +1 -1
  41. package/dist/glParticleEmitter3D.js +8 -7
  42. package/dist/glParticleEmitter3D.js.map +1 -1
  43. package/dist/glPbrExtensionRegistry.d.ts.map +1 -1
  44. package/dist/glPbrExtensionRegistry.js +20 -13
  45. package/dist/glPbrExtensionRegistry.js.map +1 -1
  46. package/dist/glPbrPrelude.js +12 -2
  47. package/dist/glPbrPrelude.js.map +1 -1
  48. package/dist/glPbrProgramCache.d.ts.map +1 -1
  49. package/dist/glPbrProgramCache.js +4 -3
  50. package/dist/glPbrProgramCache.js.map +1 -1
  51. package/dist/glScene3DRuntime.d.ts +1 -0
  52. package/dist/glScene3DRuntime.d.ts.map +1 -1
  53. package/dist/glScene3DRuntime.js +22 -10
  54. package/dist/glScene3DRuntime.js.map +1 -1
  55. package/dist/glScene3DTestHelper.d.ts.map +1 -1
  56. package/dist/glScene3DTestHelper.js +129 -8
  57. package/dist/glScene3DTestHelper.js.map +1 -1
  58. package/dist/glShadedModifierSnippet.d.ts.map +1 -1
  59. package/dist/glShadedModifierSnippet.js +12 -17
  60. package/dist/glShadedModifierSnippet.js.map +1 -1
  61. package/dist/glShadedPrelude.d.ts +4 -2
  62. package/dist/glShadedPrelude.d.ts.map +1 -1
  63. package/dist/glShadedPrelude.js +44 -16
  64. package/dist/glShadedPrelude.js.map +1 -1
  65. package/dist/glShadowMap.js +1 -0
  66. package/dist/glShadowMap.js.map +1 -1
  67. package/dist/glToonPrelude.d.ts.map +1 -1
  68. package/dist/glToonPrelude.js +2 -1
  69. package/dist/glToonPrelude.js.map +1 -1
  70. package/dist/glUnlitPrelude.d.ts.map +1 -1
  71. package/dist/glUnlitPrelude.js +1 -0
  72. package/dist/glUnlitPrelude.js.map +1 -1
  73. package/dist/glWireframePrelude.d.ts +2 -2
  74. package/dist/glWireframePrelude.d.ts.map +1 -1
  75. package/dist/glWireframePrelude.js +17 -9
  76. package/dist/glWireframePrelude.js.map +1 -1
  77. package/dist/glWireframeUpload.d.ts +1 -1
  78. package/dist/glWireframeUpload.d.ts.map +1 -1
  79. package/dist/glWireframeUpload.js +12 -8
  80. package/dist/glWireframeUpload.js.map +1 -1
  81. package/dist/shadedGlMeshMaterialRenderer.d.ts.map +1 -1
  82. package/dist/shadedGlMeshMaterialRenderer.js +7 -9
  83. package/dist/shadedGlMeshMaterialRenderer.js.map +1 -1
  84. package/dist/wireframeGlMeshMaterialRenderer.d.ts.map +1 -1
  85. package/dist/wireframeGlMeshMaterialRenderer.js +3 -2
  86. package/dist/wireframeGlMeshMaterialRenderer.js.map +1 -1
  87. package/package.json +17 -16
  88. package/src/customShaderGlMeshMaterialRenderer.test.ts +22 -0
  89. package/src/depthGlMeshMaterialRenderer.test.ts +6 -3
  90. package/src/drawGlScene3D.test.ts +48 -5
  91. package/src/explainGlScene3DCoverage.test.ts +44 -10
  92. package/src/glClassicPrelude.test.ts +11 -0
  93. package/src/glDebugPrelude.test.ts +58 -5
  94. package/src/glEnvironmentSkybox.test.ts +34 -0
  95. package/src/glMatcapPrelude.test.ts +28 -4
  96. package/src/glMeshMaterialRegistry.test.ts +21 -0
  97. package/src/glMeshProgram.test.ts +69 -0
  98. package/src/glMeshUpload.test.ts +19 -1
  99. package/src/glParticleEmitter3D.test.ts +23 -0
  100. package/src/glPbrExtensionRegistry.test.ts +21 -5
  101. package/src/glPbrPrelude.test.ts +31 -0
  102. package/src/glPbrProgramCache.test.ts +27 -1
  103. package/src/glScene3DRuntime.test.ts +46 -5
  104. package/src/glScene3DTestHelper.test.ts +39 -0
  105. package/src/glShadedModifierSnippet.test.ts +25 -8
  106. package/src/glShadedPrelude.test.ts +46 -2
  107. package/src/glShadowMap.test.ts +1 -0
  108. package/src/glWireframePrelude.test.ts +24 -0
  109. package/src/glWireframeUpload.test.ts +24 -1
  110. package/src/registerGlStandardPbrMaterial.test.ts +1 -1
  111. package/src/shadedGlMeshMaterialRenderer.test.ts +1 -1
  112. package/src/wireframeGlMeshMaterialRenderer.test.ts +17 -0
@@ -1 +1 @@
1
- {"version":3,"file":"customShaderGlMeshMaterialRenderer.d.ts","sourceRoot":"","sources":["../src/customShaderGlMeshMaterialRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,4BAA4B,EAG5B,sBAAsB,EACtB,aAAa,EAOd,MAAM,0BAA0B,CAAC;AA2BlC,eAAO,MAAM,kCAAkC,EAAE,sBAkChD,CAAC;AAIF,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,MAAM,GAChB,QAAQ,CAAC,4BAA4B,CAAC,GAAG,IAAI,CAE/C;AAoBD,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,QAAQ,CAAC,4BAA4B,CAAC,GAC7C,IAAI,CAON;AAKD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAEzE"}
1
+ {"version":3,"file":"customShaderGlMeshMaterialRenderer.d.ts","sourceRoot":"","sources":["../src/customShaderGlMeshMaterialRenderer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,4BAA4B,EAG5B,sBAAsB,EACtB,aAAa,EAOd,MAAM,0BAA0B,CAAC;AA2BlC,eAAO,MAAM,kCAAkC,EAAE,sBAkChD,CAAC;AAIF,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,MAAM,GAChB,QAAQ,CAAC,4BAA4B,CAAC,GAAG,IAAI,CAG/C;AAoBD,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,QAAQ,CAAC,4BAA4B,CAAC,GAC7C,IAAI,CAON;AAKD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAEzE"}
@@ -1,5 +1,6 @@
1
- import { resolveGlTexture } from '@flighthq/render-gl/contract';
2
- import { CustomShaderMaterialKind } from '@flighthq/types/contract';
1
+ import { withRegistryTableEntry } from '@flighthq/registry/contract';
2
+ import { getGlRenderStateRuntime, resolveGlTexture } from '@flighthq/render-gl/contract';
3
+ import { CustomShaderMaterialKind, RegistryEntryState } from '@flighthq/types/contract';
3
4
  import { registerGlMeshMaterialRenderer } from './glMeshMaterialRegistry';
4
5
  import { beginGlMeshDraw, compileGlProgram, drawGlMeshSubset, ensureGlScene3DProgram, setGlMeshCameraPosition, setGlMeshViewProjection, } from './glMeshProgram';
5
6
  import { getGlScene3DRuntime } from './glScene3DRuntime';
@@ -39,7 +40,8 @@ export const customShaderGlMeshMaterialRenderer = {
39
40
  // Returns the vertex+fragment source pair registered under `shaderKey` for this state, or null
40
41
  // when no source is registered. The sentinel null drives the skip-draw path in bind.
41
42
  export function getGlCustomMaterialShaderSource(state, shaderKey) {
42
- return _customMaterialShaders.get(state)?.get(shaderKey) ?? null;
43
+ const entry = getGlRenderStateRuntime(state).registries.customMaterialShaders.entries.get(shaderKey);
44
+ return entry?.state === RegistryEntryState.Bound ? entry.value : null;
43
45
  }
44
46
  // Registers a vertex + fragment shader source pair under `shaderKey` for this state, so a
45
47
  // CustomShaderMaterial naming that key compiles and runs it. The vertex scene2d receives the
@@ -60,12 +62,8 @@ export function getGlCustomMaterialShaderSource(state, shaderKey) {
60
62
  // by shaderKey, so re-registering a different source under the same key keeps running the
61
63
  // already-compiled program. Register edited source under a new key to force a recompile.
62
64
  export function registerGlCustomMaterialShader(state, shaderKey, source) {
63
- let registry = _customMaterialShaders.get(state);
64
- if (registry === undefined) {
65
- registry = new Map();
66
- _customMaterialShaders.set(state, registry);
67
- }
68
- registry.set(shaderKey, source);
65
+ const runtime = getGlRenderStateRuntime(state);
66
+ runtime.registries.customMaterialShaders = withRegistryTableEntry(runtime.registries.customMaterialShaders, shaderKey, source);
69
67
  }
70
68
  // Registers the built-in CustomShaderMaterial renderer for CustomShaderMaterialKind on this
71
69
  // state. Opt-in (no top-level side effect); call once per GlRenderState before drawScene3D so
@@ -136,5 +134,4 @@ function uploadCustomShaderMaterialTextures(state, program, material) {
136
134
  unit++;
137
135
  }
138
136
  }
139
- const _customMaterialShaders = new WeakMap();
140
137
  //# sourceMappingURL=customShaderGlMeshMaterialRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"customShaderGlMeshMaterialRenderer.js","sourceRoot":"","sources":["../src/customShaderGlMeshMaterialRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"customShaderGlMeshMaterialRenderer.js","sourceRoot":"","sources":["../src/customShaderGlMeshMaterialRenderer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"depthGlMeshMaterialRenderer.d.ts","sourceRoot":"","sources":["../src/depthGlMeshMaterialRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,sBAAsB,EACtB,aAAa,EAKd,MAAM,0BAA0B,CAAC;AAalC,eAAO,MAAM,2BAA2B,EAAE,sBAwBzC,CAAC;AAIF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAElE"}
1
+ {"version":3,"file":"depthGlMeshMaterialRenderer.d.ts","sourceRoot":"","sources":["../src/depthGlMeshMaterialRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,sBAAsB,EACtB,aAAa,EAKd,MAAM,0BAA0B,CAAC;AAclC,eAAO,MAAM,2BAA2B,EAAE,sBAyBzC,CAAC;AAIF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAElE"}
@@ -5,15 +5,17 @@ import { beginGlMeshDraw, drawGlMeshSubset, setGlMeshViewProjection } from './gl
5
5
  import { getGlScene3DRuntime } from './glScene3DRuntime';
6
6
  // The built-in Depth forward renderer (GlMeshMaterialRenderer for DepthMaterialKind). A lighting-
7
7
  // independent debug/utility pass material: bind selects the debug program in depth mode, uploads the
8
- // camera view-projection, and sets the material's [near, far] linearization range; draw issues the
9
- // indexed draw. The fragment scene2d linearizes window-space depth into eye space and writes it as
10
- // grayscale LINEAR color. Lights are ignored. See registerGlDepthMaterial to install it.
8
+ // camera view-projection + view matrices, and sets the material's [near, far] linearization range;
9
+ // draw issues the indexed draw. The vertex stage carries positive view-axis depth so perspective and
10
+ // orthographic cameras produce the same grayscale LINEAR meaning. Lights are ignored. See
11
+ // registerGlDepthMaterial to install it.
11
12
  export const depthGlMeshMaterialRenderer = {
12
13
  bind(state, material, _lights, camera) {
13
14
  const depth = material;
14
15
  const program = ensureGlDebugProgram(state, { hasNormalMap: false, mode: 'depth' });
15
16
  beginGlMeshDraw(state, program, depth !== null && depth.doubleSided);
16
17
  setGlMeshViewProjection(state, program.locViewProjection, camera);
18
+ state.gl.uniformMatrix4fv(program.locView, false, camera.view.m);
17
19
  if (depth === null) {
18
20
  bindGlDebugRange(state, program, 0, 1);
19
21
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"depthGlMeshMaterialRenderer.js","sourceRoot":"","sources":["../src/depthGlMeshMaterialRenderer.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,kGAAkG;AAClG,qGAAqG;AACrG,mGAAmG;AACnG,mGAAmG;AACnG,yFAAyF;AACzF,MAAM,CAAC,MAAM,2BAA2B,GAA2B;IACjE,IAAI,CACF,KAAoB,EACpB,QAAmC,EACnC,OAAoC,EACpC,MAA0B;QAE1B,MAAM,KAAK,GAAG,QAA0C,CAAC;QACzD,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACpF,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;QACrE,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QAElE,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QACD,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC,KAAoB,EAAE,KAAmC,EAAE,QAAgC;QAC9F,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC;QAC7D,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO;QAC7B,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;CACF,CAAC;AAEF,kGAAkG;AAClG,mGAAmG;AACnG,MAAM,UAAU,uBAAuB,CAAC,KAAoB;IAC1D,8BAA8B,CAAC,KAAK,EAAE,iBAAiB,EAAE,2BAA2B,CAAC,CAAC;AACxF,CAAC"}
1
+ {"version":3,"file":"depthGlMeshMaterialRenderer.js","sourceRoot":"","sources":["../src/depthGlMeshMaterialRenderer.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,kGAAkG;AAClG,qGAAqG;AACrG,mGAAmG;AACnG,qGAAqG;AACrG,0FAA0F;AAC1F,yCAAyC;AACzC,MAAM,CAAC,MAAM,2BAA2B,GAA2B;IACjE,IAAI,CACF,KAAoB,EACpB,QAAmC,EACnC,OAAoC,EACpC,MAA0B;QAE1B,MAAM,KAAK,GAAG,QAA0C,CAAC;QACzD,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACpF,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;QACrE,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QAClE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEjE,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QACD,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC,KAAoB,EAAE,KAAmC,EAAE,QAAgC;QAC9F,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC;QAC7D,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO;QAC7B,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;CACF,CAAC;AAEF,kGAAkG;AAClG,mGAAmG;AACnG,MAAM,UAAU,uBAAuB,CAAC,KAAoB;IAC1D,8BAA8B,CAAC,KAAK,EAAE,iBAAiB,EAAE,2BAA2B,CAAC,CAAC;AACxF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"drawGlScene3D.d.ts","sourceRoot":"","sources":["../src/drawGlScene3D.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,QAAQ,EAER,yBAAyB,EAEzB,aAAa,EAMb,iBAAiB,EAEjB,MAAM,EAIP,MAAM,0BAA0B,CAAC;AAwClC,wBAAgB,aAAa,CAC3B,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvB,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACnC,aAAa,CAAC,EAAE,QAAQ,CAAC,yBAAyB,CAAC,GAClD,IAAI,CA0MN"}
1
+ {"version":3,"file":"drawGlScene3D.d.ts","sourceRoot":"","sources":["../src/drawGlScene3D.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,QAAQ,EAER,yBAAyB,EAEzB,aAAa,EAMb,iBAAiB,EAEjB,MAAM,EAIP,MAAM,0BAA0B,CAAC;AAyClC,wBAAgB,aAAa,CAC3B,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvB,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACnC,aAAa,CAAC,EAAE,QAAQ,CAAC,yBAAyB,CAAC,GAClD,IAAI,CAqNN"}
@@ -1,7 +1,7 @@
1
1
  import { createMatrix3, createMatrix4, setMatrix3NormalFromMatrix4 } from '@flighthq/geometry/contract';
2
2
  import { hasMeshGeometrySkin } from '@flighthq/mesh/contract';
3
3
  import { getNodeWorldMatrix4 } from '@flighthq/node/contract';
4
- import { declareGlRenderTargetColorSpace, enableGlBlendModeSupport, getGlRenderStateRuntime, invalidateGlRenderStateCache, } from '@flighthq/render-gl/contract';
4
+ import { declareGlRenderTargetColorSpace, enableGlBlendModeSupport, getGlColorAdjustmentMaterialFeature, invalidateGlRenderStateCache, } from '@flighthq/render-gl/contract';
5
5
  import { prepareScene3DRender } from '@flighthq/render/contract';
6
6
  import { getNode3DRuntime, getNode3DWorldAlpha } from '@flighthq/scene3d/contract';
7
7
  import { BlendMode, StandardMaterialKind, MAX_FORWARD_LIGHTS } from '@flighthq/types/contract';
@@ -28,7 +28,8 @@ function isGpuSkinnedDraw(mesh) {
28
28
  // order. Depth writes are on. No blending.
29
29
  // Pass 2 (blended): every subset whose material alphaMode is 'blend', sorted back-to-front by the
30
30
  // mesh's world-space Z in view space (the mesh origin's projected depth). GL blending is enabled,
31
- // each material's blendMode selects its fixed-function equation, and blending is disabled after.
31
+ // depth writes are disabled across every material rebind, each material's blendMode selects its
32
+ // fixed-function equation, and both states are restored after.
32
33
  //
33
34
  // Subsets sharing the same resolved renderer + material are drawn under a single bind (the seam's
34
35
  // "contiguous run" contract): bind uploads the shared camera + light + material state once, then draw
@@ -45,6 +46,7 @@ export function drawGlScene3D(state, scene, camera, lights, forwardLights) {
45
46
  const lightBlock = list.lights;
46
47
  const viewProjection = list.viewProjection;
47
48
  const runtime = getGlScene3DRuntime(state);
49
+ runtime.activeBlendedRun = false;
48
50
  const hasPreparedForwardLights = forwardLights !== undefined && forwardLights.meshCount === list.meshCount;
49
51
  if (!hasPreparedForwardLights && hasExcessForwardLights(lights))
50
52
  runtime.forwardLightSelectionGuard?.(lights);
@@ -73,16 +75,18 @@ export function drawGlScene3D(state, scene, camera, lights, forwardLights) {
73
75
  deformGuard(mesh);
74
76
  const subsets = mesh.geometry.subsets;
75
77
  const worldMatrix = getNodeWorldMatrix4(mesh);
76
- // Compute the mesh origin's clip-space W (a proxy for view-depth). The world origin is
77
- // (worldMatrix.m[12], worldMatrix.m[13], worldMatrix.m[14]). We only need the W component of
78
- // clip = VP * worldOrigin, which is the dot of VP row-3 with the homogeneous world position:
78
+ // Compute the mesh origin's projected depth. The world origin is
79
+ // (worldMatrix.m[12], worldMatrix.m[13], worldMatrix.m[14]). We need the Z and W components of
80
+ // clip = VP * worldOrigin to project clip-space Z into normalized device coordinates:
79
81
  // w_clip = vp[3]*wx + vp[7]*wy + vp[11]*wz + vp[15]
80
- // Larger W = farther from camera (in standard OpenGL NDC). Read world translation from column 3.
82
+ // z_clip = vp[2]*wx + vp[6]*wy + vp[10]*wz + vp[14]
83
+ // Larger Z/W = farther from camera in OpenGL NDC. Read world translation from column 3.
81
84
  const wx = worldMatrix.m[12];
82
85
  const wy = worldMatrix.m[13];
83
86
  const wz = worldMatrix.m[14];
84
87
  const vp = viewProjection.m;
85
88
  const clipW = vp[3] * wx + vp[7] * wy + vp[11] * wz + vp[15];
89
+ const clipZ = vp[2] * wx + vp[6] * wy + vp[10] * wz + vp[14];
86
90
  // Resolved per-object opacity (parent×self), constant across a mesh's subsets. A fading object
87
91
  // (alpha < 1) must route through the blended pass so it composites over what is behind it.
88
92
  const objectAlpha = getNode3DWorldAlpha(mesh);
@@ -98,9 +102,9 @@ export function drawGlScene3D(state, scene, camera, lights, forwardLights) {
98
102
  const isBlended = isBlendedMaterial(resolvedMaterial) || objectAlpha < 1;
99
103
  const entry = acquireDrawEntry(isBlended ? runtime.blendedPool : runtime.opaquePool);
100
104
  entry.alpha = objectAlpha;
101
- entry.clipW = clipW;
102
105
  entry.colorMatrix = colorMatrix;
103
106
  entry.colorScaleBias = colorScaleBias;
107
+ entry.depth = clipZ / clipW;
104
108
  entry.lightBlock = hasPreparedForwardLights ? forwardLights.meshLightBlocks[m] : lightBlock;
105
109
  entry.mesh = mesh;
106
110
  entry.material = resolvedMaterial;
@@ -122,7 +126,7 @@ export function drawGlScene3D(state, scene, camera, lights, forwardLights) {
122
126
  let boundSkinned = undefined;
123
127
  let boundColorAdjustment = undefined;
124
128
  let boundColorMatrix = undefined;
125
- const colorAdjustmentFeatureEnabled = getGlRenderStateRuntime(state).glColorAdjustmentMaterialFeature != null;
129
+ const colorAdjustmentFeatureEnabled = getGlColorAdjustmentMaterialFeature(state) !== null;
126
130
  for (let i = 0; i < opaqueDrawList.length; i++) {
127
131
  const entry = opaqueDrawList[i];
128
132
  const worldMatrix = entry.worldMatrix;
@@ -153,17 +157,19 @@ export function drawGlScene3D(state, scene, camera, lights, forwardLights) {
153
157
  proxy.colorScaleBias = colorAdjusted ? entry.colorScaleBias : null;
154
158
  proxy.colorMatrix = colorAdjusted ? entry.colorMatrix : null;
155
159
  proxy.jointMatrices = skinned ? entry.mesh.skin.skeleton.jointMatrices : null;
160
+ proxy.normalMatrices = skinned ? entry.mesh.skin.skeleton.normalMatrices : null;
156
161
  proxy.material = entry.material;
157
162
  proxy.normalMatrix = scratchNormalMatrix;
158
163
  proxy.subset = entry.subset;
159
164
  proxy.worldMatrix = worldMatrix;
160
165
  entry.renderer.draw(state, proxy, entry.mesh.geometry);
161
166
  }
162
- // Pass 2: blended subsets sorted back-to-front (descending clipW = farthest drawn first so nearer
167
+ // Pass 2: blended subsets sorted back-to-front (descending projected depth = farthest drawn first so nearer
163
168
  // layers composite correctly). Enable alpha blending for this pass; disable after.
164
169
  if (blendedDrawList.length > 0) {
165
170
  blendedDrawList.sort(compareBlendedEntriesDescending);
166
171
  const gl = state.gl;
172
+ runtime.activeBlendedRun = true;
167
173
  gl.enable(gl.BLEND);
168
174
  boundMaterial = undefined;
169
175
  boundLightBlock = null;
@@ -200,6 +206,7 @@ export function drawGlScene3D(state, scene, camera, lights, forwardLights) {
200
206
  proxy.colorScaleBias = colorAdjusted ? entry.colorScaleBias : null;
201
207
  proxy.colorMatrix = colorAdjusted ? entry.colorMatrix : null;
202
208
  proxy.jointMatrices = skinned ? entry.mesh.skin.skeleton.jointMatrices : null;
209
+ proxy.normalMatrices = skinned ? entry.mesh.skin.skeleton.normalMatrices : null;
203
210
  proxy.material = entry.material;
204
211
  proxy.normalMatrix = scratchNormalMatrix;
205
212
  proxy.subset = entry.subset;
@@ -208,6 +215,10 @@ export function drawGlScene3D(state, scene, camera, lights, forwardLights) {
208
215
  }
209
216
  gl.disable(gl.BLEND);
210
217
  }
218
+ // Restore both the run flag consumed by future material binds and the actual GL state. This is
219
+ // unconditional so an empty/opaque-only scene also repairs a depth mask left by an earlier pass.
220
+ runtime.activeBlendedRun = false;
221
+ state.gl.depthMask(true);
211
222
  // ParticleEmitter3D nodes carry no geometry, so prepareScene3DRender never lists them among the
212
223
  // visible meshes above. Draw them here as a final transparent instanced pass so the common
213
224
  // drawGlScene3D path renders a scene's emitters without the caller also invoking the emitter pass
@@ -251,9 +262,9 @@ function resolveSubsetMaterial(mesh, subsetIndex) {
251
262
  const materials = mesh.materials;
252
263
  return subsetIndex < materials.length ? materials[subsetIndex] : null;
253
264
  }
254
- // Sort comparator for blended entries: descending clipW so farthest (largest W) is drawn first.
265
+ // Sort comparator for blended entries: descending projected depth so the farthest subset is drawn first.
255
266
  function compareBlendedEntriesDescending(a, b) {
256
- return b.clipW - a.clipW;
267
+ return b.depth - a.depth;
257
268
  }
258
269
  // Takes from the per-runtime pool or allocates a fresh entry.
259
270
  function acquireDrawEntry(pool) {
@@ -271,9 +282,9 @@ function recycleDrawEntries(entries, pool) {
271
282
  function createDrawEntry() {
272
283
  return {
273
284
  alpha: 1,
274
- clipW: 0,
275
285
  colorMatrix: null,
276
286
  colorScaleBias: null,
287
+ depth: 0,
277
288
  lightBlock: null,
278
289
  material: DEFAULT_MATERIAL,
279
290
  mesh: null,
@@ -288,6 +299,7 @@ const proxy = {
288
299
  colorMatrix: null,
289
300
  colorScaleBias: null,
290
301
  jointMatrices: null,
302
+ normalMatrices: null,
291
303
  material: { kind: StandardMaterialKind },
292
304
  normalMatrix: createMatrix3(),
293
305
  subset: { indexCount: 0, indexOffset: 0 },
@@ -1 +1 @@
1
- {"version":3,"file":"drawGlScene3D.js","sourceRoot":"","sources":["../src/drawGlScene3D.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drawGlScene3D.js","sourceRoot":"","sources":["../src/drawGlScene3D.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { GlRenderState, SceneCoverageEntry, Scene3DKindUsage } from '@flighthq/types/contract';
2
- export declare function explainGlScene3DCoverage(out: SceneCoverageEntry[], state: GlRenderState, usage: Readonly<Scene3DKindUsage>): void;
1
+ import type { GlRenderState, Scene3DKindUsage, SceneCoverageCatalog, SceneCoverageEntry } from '@flighthq/types/contract';
2
+ export declare function explainGlScene3DCoverage(out: SceneCoverageEntry[], state: GlRenderState, usage: Readonly<Scene3DKindUsage>, catalog: SceneCoverageCatalog): void;
3
3
  export declare function hasGlScene3DCoverage(state: GlRenderState, usage: Readonly<Scene3DKindUsage>): boolean;
4
4
  //# sourceMappingURL=explainGlScene3DCoverage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"explainGlScene3DCoverage.d.ts","sourceRoot":"","sources":["../src/explainGlScene3DCoverage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAkBpG,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,kBAAkB,EAAE,EACzB,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAChC,IAAI,CAGN;AAMD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAErG"}
1
+ {"version":3,"file":"explainGlScene3DCoverage.d.ts","sourceRoot":"","sources":["../src/explainGlScene3DCoverage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,aAAa,EAEb,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAqBlC,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,kBAAkB,EAAE,EACzB,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EACjC,OAAO,EAAE,oBAAoB,GAC5B,IAAI,CAGN;AAMD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAErG"}
@@ -1,13 +1,10 @@
1
1
  import { getGlRenderStateRuntime } from '@flighthq/render-gl/contract';
2
- import { resolveModifier } from '@flighthq/shading/contract';
3
- import { RenderRegistry, SceneCoverage, StandardMaterialKind } from '@flighthq/types/contract';
4
- import { getGlScene3DRuntime } from './glScene3DRuntime';
2
+ import { RegistryEntryState, RenderRegistry, RequirementFacet, SceneCoverage, StandardMaterialKind, } from '@flighthq/types/contract';
5
3
  // Clears `out`, then reports EVERY kind in `usage` with how well this state is wired for it — satisfied
6
4
  // ones included, so one call is a complete manifest rather than only a list of complaints. The answering half
7
5
  // of the scene↔render seam: @flighthq/scene3d says what a document uses, and this — the package that
8
- // owns the GL registries — says which of those it can serve. Neither package knows the other's
9
- // internals, and this cannot go stale against a registrar rename because it reads the registries
10
- // themselves rather than a table of names.
6
+ // owns the GL registries — says which of those it can serve. The verdict reads the live registry;
7
+ // `catalog`, the caller's complete GL inventory, supplies the primary remedy only for a shortfall.
11
8
  //
12
9
  // Proactive, unlike explainRenderRegistryMisses, which reports what already missed during a frame. Ask
13
10
  // this after loading a document and before the first draw, while the answer is still actionable.
@@ -15,72 +12,83 @@ import { getGlScene3DRuntime } from './glScene3DRuntime';
15
12
  // The debug-class tier: it allocates a gap per shortfall and distinguishes a downgrade from a total
16
13
  // absence. For the frame-path question "is this state ready at all", call hasGlScene3DCoverage, which
17
14
  // stops at the first shortfall and allocates nothing.
18
- export function explainGlScene3DCoverage(out, state, usage) {
15
+ export function explainGlScene3DCoverage(out, state, usage, catalog) {
19
16
  out.length = 0;
20
- collectGlScene3DCoverageGaps(out, state, usage, false);
17
+ collectGlScene3DCoverageGaps(out, state, usage, false, catalog);
21
18
  }
22
19
  // Whether this state can draw every kind `usage` names, counting a fallback as a shortfall — the
23
20
  // authored material is not what would appear. Stops at the first shortfall and never allocates, so it
24
21
  // is safe to call per load (or per frame) where explainGlScene3DCoverage would be too heavy. Use the
25
22
  // explain form to find out WHICH kind and how badly.
26
23
  export function hasGlScene3DCoverage(state, usage) {
27
- return !collectGlScene3DCoverageGaps(null, state, usage, true);
24
+ return !collectGlScene3DCoverageGaps(null, state, usage, true, null);
28
25
  }
29
26
  // The single implementation both tiers read, so the boolean can never disagree with the explanation.
30
27
  // `found` counts only real shortfalls, so appending satisfied entries to `out` never flips the predicate.
31
28
  // Appends to `out` when it is non-null; returns whether any shortfall was found. `stopAtFirst` short
32
29
  // circuits for the predicate, which is the only reason the boolean is cheaper than the explanation.
33
- function collectGlScene3DCoverageGaps(out, state, usage, stopAtFirst) {
30
+ function collectGlScene3DCoverageGaps(out, state, usage, stopAtFirst, catalog) {
34
31
  let found = false;
35
32
  // drawScene3D resolves a subset's material by kind, then falls back to whatever is registered for
36
33
  // StandardMaterialKind, then skips the subset. So an unregistered kind may still draw — as the
37
34
  // standard material — which is a downgrade worth naming rather than a silence, and is NOT the same
38
35
  // as nothing being registered at all.
39
- const materials = getGlScene3DRuntime(state).materialRegistry;
40
- const hasStandard = materials.has(StandardMaterialKind);
36
+ const materials = getGlRenderStateRuntime(state).registries.meshMaterialRenderers.entries;
37
+ const hasStandard = materials.get(StandardMaterialKind)?.state === RegistryEntryState.Bound;
41
38
  for (let i = 0; i < usage.materialKinds.length; i++) {
42
39
  const kind = usage.materialKinds[i];
43
- if (materials.has(kind)) {
44
- out?.push({ coverage: SceneCoverage.Satisfied, kind, registry: RenderRegistry.MaterialRenderer });
40
+ if (materials.get(kind)?.state === RegistryEntryState.Bound) {
41
+ out?.push({
42
+ coverage: SceneCoverage.Satisfied,
43
+ facet: RequirementFacet.SceneMaterialKind,
44
+ kind,
45
+ registry: RenderRegistry.MaterialRenderer,
46
+ });
45
47
  continue;
46
48
  }
47
49
  found = true;
48
50
  if (stopAtFirst)
49
51
  return true;
50
- out?.push({
51
- coverage: hasStandard ? SceneCoverage.Fallback : SceneCoverage.Missing,
52
- kind,
53
- registry: RenderRegistry.MaterialRenderer,
54
- });
52
+ out?.push(createShortfallEntry(catalog, hasStandard, RequirementFacet.SceneMaterialKind, kind, RenderRegistry.MaterialRenderer));
55
53
  }
56
54
  // A texture whose source kind has no resolver samples nothing, so the map is simply absent from the
57
55
  // draw — the untextured-model failure this seam exists to surface before it reaches a frame.
58
- const resolvers = getGlRenderStateRuntime(state).glTextureResolverRegistry;
56
+ const resolvers = getGlRenderStateRuntime(state).registries.textureResolvers;
59
57
  for (let i = 0; i < usage.textureSourceKinds.length; i++) {
60
58
  const kind = usage.textureSourceKinds[i];
61
- if (resolvers?.has(kind) === true) {
62
- out?.push({ coverage: SceneCoverage.Satisfied, kind, registry: RenderRegistry.TextureResolver });
59
+ if (resolvers.entries.get(kind)?.state === RegistryEntryState.Bound) {
60
+ out?.push({
61
+ coverage: SceneCoverage.Satisfied,
62
+ facet: RequirementFacet.SceneTextureSourceKind,
63
+ kind,
64
+ registry: RenderRegistry.TextureResolver,
65
+ });
63
66
  continue;
64
67
  }
65
68
  found = true;
66
69
  if (stopAtFirst)
67
70
  return true;
68
- out?.push({ coverage: SceneCoverage.Missing, kind, registry: RenderRegistry.TextureResolver });
71
+ out?.push(createShortfallEntry(catalog, false, RequirementFacet.SceneTextureSourceKind, kind, RenderRegistry.TextureResolver));
69
72
  }
70
73
  // The shaded compiler assembles base + ordered modifiers into ONE program, so an unregistered
71
74
  // snippet does not fail a single lookup — it fails the whole material. A modifier kind is therefore
72
- // always Missing, never a fallback.
73
- const snippets = getGlScene3DRuntime(state).modifierSnippetRegistry;
75
+ // always a total absence, never a fallback.
76
+ const snippets = getGlRenderStateRuntime(state).registries.modifierSnippets.entries;
74
77
  for (let i = 0; i < usage.modifierKinds.length; i++) {
75
78
  const kind = usage.modifierKinds[i];
76
- if (snippets !== null && resolveModifier(snippets, kind) !== null) {
77
- out?.push({ coverage: SceneCoverage.Satisfied, kind, registry: RenderRegistry.ModifierSnippet });
79
+ if (snippets.get(kind)?.state === RegistryEntryState.Bound) {
80
+ out?.push({
81
+ coverage: SceneCoverage.Satisfied,
82
+ facet: RequirementFacet.SceneModifierKind,
83
+ kind,
84
+ registry: RenderRegistry.ModifierSnippet,
85
+ });
78
86
  continue;
79
87
  }
80
88
  found = true;
81
89
  if (stopAtFirst)
82
90
  return true;
83
- out?.push({ coverage: SceneCoverage.Missing, kind, registry: RenderRegistry.ModifierSnippet });
91
+ out?.push(createShortfallEntry(catalog, false, RequirementFacet.SceneModifierKind, kind, RenderRegistry.ModifierSnippet));
84
92
  }
85
93
  // usage.nodeKinds is deliberately NOT checked. The 3D pipeline collects meshes structurally
86
94
  // (`geometry != null` in collectVisibleMeshes) rather than through the node-renderer registry, so no
@@ -89,4 +97,29 @@ function collectGlScene3DCoverageGaps(out, state, usage, stopAtFirst) {
89
97
  // need nothing is this layer's call, not the scene's.
90
98
  return found;
91
99
  }
100
+ function createShortfallEntry(catalog, fallback, facet, kind, registry) {
101
+ const registration = findCatalogRegistration(catalog, kind, registry);
102
+ const base = { facet, kind, registry };
103
+ if (registration === null) {
104
+ return {
105
+ ...base,
106
+ coverage: fallback ? SceneCoverage.FallbackUnavailable : SceneCoverage.Unavailable,
107
+ };
108
+ }
109
+ return {
110
+ ...base,
111
+ coverage: fallback ? SceneCoverage.FallbackRemediable : SceneCoverage.Unregistered,
112
+ module: registration.module,
113
+ registrar: registration.registrar,
114
+ };
115
+ }
116
+ function findCatalogRegistration(catalog, kind, registry) {
117
+ if (catalog === null)
118
+ return null;
119
+ for (const entry of catalog) {
120
+ if (entry.kind === kind && entry.registry === registry)
121
+ return entry.registrations[0] ?? null;
122
+ }
123
+ return null;
124
+ }
92
125
  //# sourceMappingURL=explainGlScene3DCoverage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"explainGlScene3DCoverage.js","sourceRoot":"","sources":["../src/explainGlScene3DCoverage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAE/F,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,wGAAwG;AACxG,8GAA8G;AAC9G,qGAAqG;AACrG,+FAA+F;AAC/F,iGAAiG;AACjG,2CAA2C;AAC3C,EAAE;AACF,uGAAuG;AACvG,iGAAiG;AACjG,EAAE;AACF,oGAAoG;AACpG,sGAAsG;AACtG,sDAAsD;AACtD,MAAM,UAAU,wBAAwB,CACtC,GAAyB,EACzB,KAAoB,EACpB,KAAiC;IAEjC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IACf,4BAA4B,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACzD,CAAC;AAED,iGAAiG;AACjG,sGAAsG;AACtG,qGAAqG;AACrG,qDAAqD;AACrD,MAAM,UAAU,oBAAoB,CAAC,KAAoB,EAAE,KAAiC;IAC1F,OAAO,CAAC,4BAA4B,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACjE,CAAC;AAED,qGAAqG;AACrG,0GAA0G;AAC1G,qGAAqG;AACrG,oGAAoG;AACpG,SAAS,4BAA4B,CACnC,GAAgC,EAChC,KAAoB,EACpB,KAAiC,EACjC,WAAoB;IAEpB,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,kGAAkG;IAClG,+FAA+F;IAC/F,mGAAmG;IACnG,sCAAsC;IACtC,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC;IAC9D,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,GAAG,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAClG,SAAS;QACX,CAAC;QACD,KAAK,GAAG,IAAI,CAAC;QACb,IAAI,WAAW;YAAE,OAAO,IAAI,CAAC;QAC7B,GAAG,EAAE,IAAI,CAAC;YACR,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO;YACtE,IAAI;YACJ,QAAQ,EAAE,cAAc,CAAC,gBAAgB;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,oGAAoG;IACpG,6FAA6F;IAC7F,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC,yBAAyB,CAAC;IAC3E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzD,MAAM,IAAI,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAClC,GAAG,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC;YACjG,SAAS;QACX,CAAC;QACD,KAAK,GAAG,IAAI,CAAC;QACb,IAAI,WAAW;YAAE,OAAO,IAAI,CAAC;QAC7B,GAAG,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,8FAA8F;IAC9F,oGAAoG;IACpG,oCAAoC;IACpC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,uBAAuB,CAAC;IACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,QAAQ,KAAK,IAAI,IAAI,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAClE,GAAG,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC;YACjG,SAAS;QACX,CAAC;QACD,KAAK,GAAG,IAAI,CAAC;QACb,IAAI,WAAW;YAAE,OAAO,IAAI,CAAC;QAC7B,GAAG,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,4FAA4F;IAC5F,qGAAqG;IACrG,kGAAkG;IAClG,qGAAqG;IACrG,sDAAsD;IACtD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"explainGlScene3DCoverage.js","sourceRoot":"","sources":["../src/explainGlScene3DCoverage.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"glClassicPrelude.d.ts","sourceRoot":"","sources":["../src/glClassicPrelude.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,gCAAgC,EAChC,aAAa,EACd,MAAM,0BAA0B,CAAC;AAgBlC,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAOjF;AAKD,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,sBAAsB,EAC1B,GAAG,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACjC,sBAAsB,GAAE,QAAQ,CAAC,gCAAgC,CAAC,GAAG,IAAW,GAC/E,gBAAgB,CAqBlB;AAKD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,gBAAgB,CAYhH;AAKD,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAGD,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACjC,sBAAsB,GAAE,QAAQ,CAAC,gCAAgC,CAAC,GAAG,IAAW,GAC/E,MAAM,CAaR;AAMD,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAKD,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAGxF"}
1
+ {"version":3,"file":"glClassicPrelude.d.ts","sourceRoot":"","sources":["../src/glClassicPrelude.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,gCAAgC,EAChC,aAAa,EACd,MAAM,0BAA0B,CAAC;AAgBlC,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAOjF;AAKD,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,sBAAsB,EAC1B,GAAG,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACjC,sBAAsB,GAAE,QAAQ,CAAC,gCAAgC,CAAC,GAAG,IAAW,GAC/E,gBAAgB,CAsBlB;AAKD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,gBAAgB,CAYhH;AAKD,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAGD,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACjC,sBAAsB,GAAE,QAAQ,CAAC,gCAAgC,CAAC,GAAG,IAAW,GAC/E,MAAM,CAaR;AAMD,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAKD,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAGxF"}
@@ -1,4 +1,4 @@
1
- import { getGlRenderStateRuntime } from '@flighthq/render-gl/contract';
1
+ import { getGlColorAdjustmentMaterialFeature } from '@flighthq/render-gl/contract';
2
2
  import { MAX_FORWARD_LIGHTS } from '@flighthq/types/contract';
3
3
  import { GL_MESH_LIGHT_BLOCK_GLSL, resolveGlLitLocations } from './glLitProgram';
4
4
  import { GL_MESH_FRAGMENT_TAIL, GL_MESH_FRAGMENT_TAIL_UNIFORMS } from './glMeshFragmentTail';
@@ -24,6 +24,7 @@ export function compileGlClassicProgram(gl, key, colorAdjustmentFeature = null)
24
24
  program,
25
25
  locAlphaCutoff: gl.getUniformLocation(program, 'u_alphaCutoff'),
26
26
  locAlphaMap: gl.getUniformLocation(program, 'u_alphaMap'),
27
+ locJointNormalTexture: gl.getUniformLocation(program, 'u_jointNormalTexture'),
27
28
  locJointTexture: gl.getUniformLocation(program, 'u_jointTexture'),
28
29
  locDiffuse: gl.getUniformLocation(program, 'u_diffuse'),
29
30
  locDiffuseMap: gl.getUniformLocation(program, 'u_diffuseMap'),
@@ -49,7 +50,7 @@ export function ensureGlClassicProgram(state, key) {
49
50
  hasColorMatrix: getGlScene3DRuntime(state).activeColorMatrixRun,
50
51
  hasSkin: getGlScene3DRuntime(state).activeSkinnedRun,
51
52
  };
52
- return ensureGlScene3DProgram(state, `classic:${buildGlClassicDefineKey(fullKey)}`, (gl) => compileGlClassicProgram(gl, fullKey, getGlRenderStateRuntime(state).glColorAdjustmentMaterialFeature ?? null));
53
+ return ensureGlScene3DProgram(state, `classic:${buildGlClassicDefineKey(fullKey)}`, (gl) => compileGlClassicProgram(gl, fullKey, getGlColorAdjustmentMaterialFeature(state)));
53
54
  }
54
55
  // The fragment shader body (everything after the "#version 300 es" + defines block). Implements the
55
56
  // classic Lambert diffuse term plus an optional Phong / BlinnPhong specular lobe over one directional
@@ -129,7 +130,7 @@ void main() {
129
130
  #ifdef HAS_SKIN
130
131
  mat4 skin = skinMatrix();
131
132
  vec4 localPosition = skin * vec4(a_position, 1.0);
132
- vec3 localNormal = mat3(skin) * a_normal;
133
+ vec3 localNormal = skinNormalMatrix() * a_normal;
133
134
  vec3 localTangent = mat3(skin) * a_tangent.xyz;
134
135
  #else
135
136
  vec4 localPosition = vec4(a_position, 1.0);
@@ -139,7 +140,17 @@ void main() {
139
140
  vec4 worldPosition = u_model * localPosition;
140
141
  v_worldPosition = worldPosition.xyz;
141
142
  v_normal = u_normalMatrix * localNormal;
142
- v_tangent = vec4(u_normalMatrix * localTangent, a_tangent.w);
143
+ // A tangent is a TRUE SURFACE VECTOR and follows the model matrix, the same one a position
144
+ // follows. Only the normal is a covector needing the inverse-transpose. The two agree under
145
+ // rotation and uniform scale, which is why sharing u_normalMatrix looked correct, and diverge
146
+ // under non-uniform scale, tilting the tangent off the surface it is supposed to lie in.
147
+ // tangent.w is HANDEDNESS, and a model transform that mirrors (negative determinant) reverses it:
148
+ // the bitangent is rebuilt as w * cross(N, T), so without this the whole frame is flipped on every
149
+ // mirrored instance. Guarded rather than sign(), because sign() returns 0 for a singular matrix
150
+ // and a zero w collapses the bitangent entirely — a worse failure than keeping the original hand.
151
+ mat3 modelRotation = mat3(u_model);
152
+ float tangentHandedness = a_tangent.w * (determinant(modelRotation) < 0.0 ? -1.0 : 1.0);
153
+ v_tangent = vec4(modelRotation * localTangent, tangentHandedness);
143
154
  v_uv0 = applyUvTransform(a_uv0);
144
155
  gl_Position = u_viewProjection * worldPosition;
145
156
  }
@@ -1 +1 @@
1
- {"version":3,"file":"glClassicPrelude.js","sourceRoot":"","sources":["../src/glClassicPrelude.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"glClassicPrelude.js","sourceRoot":"","sources":["../src/glClassicPrelude.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"glDebugPrelude.d.ts","sourceRoot":"","sources":["../src/glDebugPrelude.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAOzG,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,EACjC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,EACnC,WAAW,EAAE,MAAM,GAClB,IAAI,CAQN;AAKD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,EACjC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,IAAI,CAIN;AAID,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAE7E;AAID,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,sBAAsB,EAAE,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAYjH;AAID,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAE1G;AAGD,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAEtF;AAGD,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAEpF"}
1
+ {"version":3,"file":"glDebugPrelude.d.ts","sourceRoot":"","sources":["../src/glDebugPrelude.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAQzG,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,EACjC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,EACnC,WAAW,EAAE,MAAM,GAClB,IAAI,CAQN;AAKD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,EACjC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,IAAI,CAIN;AAID,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAE7E;AAID,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,sBAAsB,EAAE,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAejH;AAID,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAQ1G;AAGD,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAEtF;AAGD,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAEpF"}