@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.
- package/dist/customShaderGlMeshMaterialRenderer.d.ts.map +1 -1
- package/dist/customShaderGlMeshMaterialRenderer.js +7 -10
- package/dist/customShaderGlMeshMaterialRenderer.js.map +1 -1
- package/dist/depthGlMeshMaterialRenderer.d.ts.map +1 -1
- package/dist/depthGlMeshMaterialRenderer.js +5 -3
- package/dist/depthGlMeshMaterialRenderer.js.map +1 -1
- package/dist/drawGlScene3D.d.ts.map +1 -1
- package/dist/drawGlScene3D.js +24 -12
- package/dist/drawGlScene3D.js.map +1 -1
- package/dist/explainGlScene3DCoverage.d.ts +2 -2
- package/dist/explainGlScene3DCoverage.d.ts.map +1 -1
- package/dist/explainGlScene3DCoverage.js +61 -28
- package/dist/explainGlScene3DCoverage.js.map +1 -1
- package/dist/glClassicPrelude.d.ts.map +1 -1
- package/dist/glClassicPrelude.js +15 -4
- package/dist/glClassicPrelude.js.map +1 -1
- package/dist/glDebugPrelude.d.ts.map +1 -1
- package/dist/glDebugPrelude.js +50 -12
- package/dist/glDebugPrelude.js.map +1 -1
- package/dist/glEnvironmentIblBake.d.ts.map +1 -1
- package/dist/glEnvironmentIblBake.js +13 -0
- package/dist/glEnvironmentIblBake.js.map +1 -1
- package/dist/glEnvironmentSkybox.d.ts.map +1 -1
- package/dist/glEnvironmentSkybox.js +9 -2
- package/dist/glEnvironmentSkybox.js.map +1 -1
- package/dist/glMatcapPrelude.d.ts.map +1 -1
- package/dist/glMatcapPrelude.js +23 -6
- package/dist/glMatcapPrelude.js.map +1 -1
- package/dist/glMeshMaterialRegistry.d.ts.map +1 -1
- package/dist/glMeshMaterialRegistry.js +15 -11
- package/dist/glMeshMaterialRegistry.js.map +1 -1
- package/dist/glMeshProgram.d.ts +4 -2
- package/dist/glMeshProgram.d.ts.map +1 -1
- package/dist/glMeshProgram.js +94 -17
- package/dist/glMeshProgram.js.map +1 -1
- package/dist/glMeshUpload.d.ts +2 -1
- package/dist/glMeshUpload.d.ts.map +1 -1
- package/dist/glMeshUpload.js +79 -79
- package/dist/glMeshUpload.js.map +1 -1
- package/dist/glParticleEmitter3D.d.ts.map +1 -1
- package/dist/glParticleEmitter3D.js +8 -7
- package/dist/glParticleEmitter3D.js.map +1 -1
- package/dist/glPbrExtensionRegistry.d.ts.map +1 -1
- package/dist/glPbrExtensionRegistry.js +20 -13
- package/dist/glPbrExtensionRegistry.js.map +1 -1
- package/dist/glPbrPrelude.js +12 -2
- package/dist/glPbrPrelude.js.map +1 -1
- package/dist/glPbrProgramCache.d.ts.map +1 -1
- package/dist/glPbrProgramCache.js +4 -3
- package/dist/glPbrProgramCache.js.map +1 -1
- package/dist/glScene3DRuntime.d.ts +1 -0
- package/dist/glScene3DRuntime.d.ts.map +1 -1
- package/dist/glScene3DRuntime.js +22 -10
- package/dist/glScene3DRuntime.js.map +1 -1
- package/dist/glScene3DTestHelper.d.ts.map +1 -1
- package/dist/glScene3DTestHelper.js +129 -8
- package/dist/glScene3DTestHelper.js.map +1 -1
- package/dist/glShadedModifierSnippet.d.ts.map +1 -1
- package/dist/glShadedModifierSnippet.js +12 -17
- package/dist/glShadedModifierSnippet.js.map +1 -1
- package/dist/glShadedPrelude.d.ts +4 -2
- package/dist/glShadedPrelude.d.ts.map +1 -1
- package/dist/glShadedPrelude.js +44 -16
- package/dist/glShadedPrelude.js.map +1 -1
- package/dist/glShadowMap.js +1 -0
- package/dist/glShadowMap.js.map +1 -1
- package/dist/glToonPrelude.d.ts.map +1 -1
- package/dist/glToonPrelude.js +2 -1
- package/dist/glToonPrelude.js.map +1 -1
- package/dist/glUnlitPrelude.d.ts.map +1 -1
- package/dist/glUnlitPrelude.js +1 -0
- package/dist/glUnlitPrelude.js.map +1 -1
- package/dist/glWireframePrelude.d.ts +2 -2
- package/dist/glWireframePrelude.d.ts.map +1 -1
- package/dist/glWireframePrelude.js +17 -9
- package/dist/glWireframePrelude.js.map +1 -1
- package/dist/glWireframeUpload.d.ts +1 -1
- package/dist/glWireframeUpload.d.ts.map +1 -1
- package/dist/glWireframeUpload.js +12 -8
- package/dist/glWireframeUpload.js.map +1 -1
- package/dist/shadedGlMeshMaterialRenderer.d.ts.map +1 -1
- package/dist/shadedGlMeshMaterialRenderer.js +7 -9
- package/dist/shadedGlMeshMaterialRenderer.js.map +1 -1
- package/dist/wireframeGlMeshMaterialRenderer.d.ts.map +1 -1
- package/dist/wireframeGlMeshMaterialRenderer.js +3 -2
- package/dist/wireframeGlMeshMaterialRenderer.js.map +1 -1
- package/package.json +17 -16
- package/src/customShaderGlMeshMaterialRenderer.test.ts +22 -0
- package/src/depthGlMeshMaterialRenderer.test.ts +6 -3
- package/src/drawGlScene3D.test.ts +48 -5
- package/src/explainGlScene3DCoverage.test.ts +44 -10
- package/src/glClassicPrelude.test.ts +11 -0
- package/src/glDebugPrelude.test.ts +58 -5
- package/src/glEnvironmentSkybox.test.ts +34 -0
- package/src/glMatcapPrelude.test.ts +28 -4
- package/src/glMeshMaterialRegistry.test.ts +21 -0
- package/src/glMeshProgram.test.ts +69 -0
- package/src/glMeshUpload.test.ts +19 -1
- package/src/glParticleEmitter3D.test.ts +23 -0
- package/src/glPbrExtensionRegistry.test.ts +21 -5
- package/src/glPbrPrelude.test.ts +31 -0
- package/src/glPbrProgramCache.test.ts +27 -1
- package/src/glScene3DRuntime.test.ts +46 -5
- package/src/glScene3DTestHelper.test.ts +39 -0
- package/src/glShadedModifierSnippet.test.ts +25 -8
- package/src/glShadedPrelude.test.ts +46 -2
- package/src/glShadowMap.test.ts +1 -0
- package/src/glWireframePrelude.test.ts +24 -0
- package/src/glWireframeUpload.test.ts +24 -1
- package/src/registerGlStandardPbrMaterial.test.ts +1 -1
- package/src/shadedGlMeshMaterialRenderer.test.ts +1 -1
- package/src/wireframeGlMeshMaterialRenderer.test.ts +17 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customShaderGlMeshMaterialRenderer.d.ts","sourceRoot":"","sources":["../src/customShaderGlMeshMaterialRenderer.ts"],"names":[],"mappings":"
|
|
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 {
|
|
2
|
-
import {
|
|
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
|
-
|
|
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
|
-
|
|
64
|
-
|
|
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":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;
|
|
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;
|
|
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;
|
|
9
|
-
// indexed draw. The
|
|
10
|
-
// grayscale LINEAR
|
|
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,
|
|
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;
|
|
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"}
|
package/dist/drawGlScene3D.js
CHANGED
|
@@ -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,
|
|
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
|
-
//
|
|
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
|
|
77
|
-
// (worldMatrix.m[12], worldMatrix.m[13], worldMatrix.m[14]). We
|
|
78
|
-
// clip = VP * worldOrigin
|
|
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
|
-
//
|
|
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 =
|
|
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
|
|
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
|
|
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.
|
|
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,
|
|
2
|
-
export declare function explainGlScene3DCoverage(out: SceneCoverageEntry[], state: GlRenderState, usage: Readonly<Scene3DKindUsage
|
|
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":"
|
|
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 {
|
|
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.
|
|
9
|
-
//
|
|
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 =
|
|
40
|
-
const hasStandard = materials.
|
|
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.
|
|
44
|
-
out?.push({
|
|
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).
|
|
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
|
|
62
|
-
out?.push({
|
|
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(
|
|
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
|
|
73
|
-
const snippets =
|
|
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
|
|
77
|
-
out?.push({
|
|
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(
|
|
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;
|
|
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,
|
|
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"}
|
package/dist/glClassicPrelude.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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,
|
|
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 =
|
|
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
|
-
|
|
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":"AAAA,OAAO,EAAE,
|
|
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;
|
|
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"}
|