@flighthq/scene3d-gl 0.2.1-next.840.857425c
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/anisotropyPbrGlMeshMaterialRenderer.d.ts +4 -0
- package/dist/anisotropyPbrGlMeshMaterialRenderer.d.ts.map +1 -0
- package/dist/anisotropyPbrGlMeshMaterialRenderer.js +45 -0
- package/dist/anisotropyPbrGlMeshMaterialRenderer.js.map +1 -0
- package/dist/blinnPhongGlMeshMaterialRenderer.d.ts +4 -0
- package/dist/blinnPhongGlMeshMaterialRenderer.d.ts.map +1 -0
- package/dist/blinnPhongGlMeshMaterialRenderer.js +102 -0
- package/dist/blinnPhongGlMeshMaterialRenderer.js.map +1 -0
- package/dist/clearcoatPbrGlMeshMaterialRenderer.d.ts +4 -0
- package/dist/clearcoatPbrGlMeshMaterialRenderer.d.ts.map +1 -0
- package/dist/clearcoatPbrGlMeshMaterialRenderer.js +45 -0
- package/dist/clearcoatPbrGlMeshMaterialRenderer.js.map +1 -0
- package/dist/customShaderGlMeshMaterialRenderer.d.ts +6 -0
- package/dist/customShaderGlMeshMaterialRenderer.d.ts.map +1 -0
- package/dist/customShaderGlMeshMaterialRenderer.js +136 -0
- package/dist/customShaderGlMeshMaterialRenderer.js.map +1 -0
- package/dist/depthGlMeshMaterialRenderer.d.ts +4 -0
- package/dist/depthGlMeshMaterialRenderer.d.ts.map +1 -0
- package/dist/depthGlMeshMaterialRenderer.js +36 -0
- package/dist/depthGlMeshMaterialRenderer.js.map +1 -0
- package/dist/drawGlScene3D.d.ts +3 -0
- package/dist/drawGlScene3D.d.ts.map +1 -0
- package/dist/drawGlScene3D.js +251 -0
- package/dist/drawGlScene3D.js.map +1 -0
- package/dist/emissiveGlMeshMaterialRenderer.d.ts +4 -0
- package/dist/emissiveGlMeshMaterialRenderer.d.ts.map +1 -0
- package/dist/emissiveGlMeshMaterialRenderer.js +49 -0
- package/dist/emissiveGlMeshMaterialRenderer.js.map +1 -0
- package/dist/enableGlScene3DColorSpaceGuards.d.ts +4 -0
- package/dist/enableGlScene3DColorSpaceGuards.d.ts.map +1 -0
- package/dist/enableGlScene3DColorSpaceGuards.js +22 -0
- package/dist/enableGlScene3DColorSpaceGuards.js.map +1 -0
- package/dist/enableGlScene3DCustomShaderGuards.d.ts +4 -0
- package/dist/enableGlScene3DCustomShaderGuards.d.ts.map +1 -0
- package/dist/enableGlScene3DCustomShaderGuards.js +71 -0
- package/dist/enableGlScene3DCustomShaderGuards.js.map +1 -0
- package/dist/enableGlScene3DDeformGuards.d.ts +4 -0
- package/dist/enableGlScene3DDeformGuards.d.ts.map +1 -0
- package/dist/enableGlScene3DDeformGuards.js +42 -0
- package/dist/enableGlScene3DDeformGuards.js.map +1 -0
- package/dist/enableGlScene3DForwardLightSelectionGuards.d.ts +4 -0
- package/dist/enableGlScene3DForwardLightSelectionGuards.d.ts.map +1 -0
- package/dist/enableGlScene3DForwardLightSelectionGuards.js +21 -0
- package/dist/enableGlScene3DForwardLightSelectionGuards.js.map +1 -0
- package/dist/explainGlScene3DForwardLightSelection.d.ts +3 -0
- package/dist/explainGlScene3DForwardLightSelection.d.ts.map +1 -0
- package/dist/explainGlScene3DForwardLightSelection.js +19 -0
- package/dist/explainGlScene3DForwardLightSelection.js.map +1 -0
- package/dist/glClassicPrelude.d.ts +9 -0
- package/dist/glClassicPrelude.d.ts.map +1 -0
- package/dist/glClassicPrelude.js +288 -0
- package/dist/glClassicPrelude.js.map +1 -0
- package/dist/glDebugPrelude.d.ts +9 -0
- package/dist/glDebugPrelude.d.ts.map +1 -0
- package/dist/glDebugPrelude.js +143 -0
- package/dist/glDebugPrelude.js.map +1 -0
- package/dist/glEnvironmentCube.d.ts +5 -0
- package/dist/glEnvironmentCube.d.ts.map +1 -0
- package/dist/glEnvironmentCube.js +65 -0
- package/dist/glEnvironmentCube.js.map +1 -0
- package/dist/glEnvironmentIblBake.d.ts +4 -0
- package/dist/glEnvironmentIblBake.d.ts.map +1 -0
- package/dist/glEnvironmentIblBake.js +365 -0
- package/dist/glEnvironmentIblBake.js.map +1 -0
- package/dist/glEnvironmentSkybox.d.ts +3 -0
- package/dist/glEnvironmentSkybox.d.ts.map +1 -0
- package/dist/glEnvironmentSkybox.js +95 -0
- package/dist/glEnvironmentSkybox.js.map +1 -0
- package/dist/glLitProgram.d.ts +5 -0
- package/dist/glLitProgram.d.ts.map +1 -0
- package/dist/glLitProgram.js +211 -0
- package/dist/glLitProgram.js.map +1 -0
- package/dist/glMatcapPrelude.d.ts +8 -0
- package/dist/glMatcapPrelude.d.ts.map +1 -0
- package/dist/glMatcapPrelude.js +118 -0
- package/dist/glMatcapPrelude.js.map +1 -0
- package/dist/glMeshMaterialRegistry.d.ts +5 -0
- package/dist/glMeshMaterialRegistry.d.ts.map +1 -0
- package/dist/glMeshMaterialRegistry.js +29 -0
- package/dist/glMeshMaterialRegistry.js.map +1 -0
- package/dist/glMeshProgram.d.ts +14 -0
- package/dist/glMeshProgram.d.ts.map +1 -0
- package/dist/glMeshProgram.js +193 -0
- package/dist/glMeshProgram.js.map +1 -0
- package/dist/glMeshUpload.d.ts +4 -0
- package/dist/glMeshUpload.d.ts.map +1 -0
- package/dist/glMeshUpload.js +190 -0
- package/dist/glMeshUpload.js.map +1 -0
- package/dist/glParticleEmitter3D.d.ts +4 -0
- package/dist/glParticleEmitter3D.d.ts.map +1 -0
- package/dist/glParticleEmitter3D.js +342 -0
- package/dist/glParticleEmitter3D.js.map +1 -0
- package/dist/glPbrPrelude.d.ts +8 -0
- package/dist/glPbrPrelude.d.ts.map +1 -0
- package/dist/glPbrPrelude.js +569 -0
- package/dist/glPbrPrelude.js.map +1 -0
- package/dist/glPbrProgramCache.d.ts +4 -0
- package/dist/glPbrProgramCache.d.ts.map +1 -0
- package/dist/glPbrProgramCache.js +63 -0
- package/dist/glPbrProgramCache.js.map +1 -0
- package/dist/glPbrStandardBlock.d.ts +13 -0
- package/dist/glPbrStandardBlock.d.ts.map +1 -0
- package/dist/glPbrStandardBlock.js +107 -0
- package/dist/glPbrStandardBlock.js.map +1 -0
- package/dist/glScene3DRuntime.d.ts +5 -0
- package/dist/glScene3DRuntime.d.ts.map +1 -0
- package/dist/glScene3DRuntime.js +99 -0
- package/dist/glScene3DRuntime.js.map +1 -0
- package/dist/glScene3DTestHelper.d.ts +20 -0
- package/dist/glScene3DTestHelper.d.ts.map +1 -0
- package/dist/glScene3DTestHelper.js +178 -0
- package/dist/glScene3DTestHelper.js.map +1 -0
- package/dist/glScene3DTime.d.ts +4 -0
- package/dist/glScene3DTime.d.ts.map +1 -0
- package/dist/glScene3DTime.js +18 -0
- package/dist/glScene3DTime.js.map +1 -0
- package/dist/glShadedBuiltInModifiers.d.ts +11 -0
- package/dist/glShadedBuiltInModifiers.d.ts.map +1 -0
- package/dist/glShadedBuiltInModifiers.js +386 -0
- package/dist/glShadedBuiltInModifiers.js.map +1 -0
- package/dist/glShadedModifierSnippet.d.ts +4 -0
- package/dist/glShadedModifierSnippet.d.ts.map +1 -0
- package/dist/glShadedModifierSnippet.js +24 -0
- package/dist/glShadedModifierSnippet.js.map +1 -0
- package/dist/glShadedPrelude.d.ts +5 -0
- package/dist/glShadedPrelude.d.ts.map +1 -0
- package/dist/glShadedPrelude.js +393 -0
- package/dist/glShadedPrelude.js.map +1 -0
- package/dist/glShadowMap.d.ts +3 -0
- package/dist/glShadowMap.d.ts.map +1 -0
- package/dist/glShadowMap.js +150 -0
- package/dist/glShadowMap.js.map +1 -0
- package/dist/glToonPrelude.d.ts +7 -0
- package/dist/glToonPrelude.d.ts.map +1 -0
- package/dist/glToonPrelude.js +172 -0
- package/dist/glToonPrelude.js.map +1 -0
- package/dist/glUnlitPrelude.d.ts +9 -0
- package/dist/glUnlitPrelude.d.ts.map +1 -0
- package/dist/glUnlitPrelude.js +160 -0
- package/dist/glUnlitPrelude.js.map +1 -0
- package/dist/glWireframePrelude.d.ts +6 -0
- package/dist/glWireframePrelude.d.ts.map +1 -0
- package/dist/glWireframePrelude.js +56 -0
- package/dist/glWireframePrelude.js.map +1 -0
- package/dist/glWireframeUpload.d.ts +4 -0
- package/dist/glWireframeUpload.d.ts.map +1 -0
- package/dist/glWireframeUpload.js +85 -0
- package/dist/glWireframeUpload.js.map +1 -0
- package/dist/index.d.ts +56 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +56 -0
- package/dist/index.js.map +1 -0
- package/dist/iridescencePbrGlMeshMaterialRenderer.d.ts +4 -0
- package/dist/iridescencePbrGlMeshMaterialRenderer.d.ts.map +1 -0
- package/dist/iridescencePbrGlMeshMaterialRenderer.js +54 -0
- package/dist/iridescencePbrGlMeshMaterialRenderer.js.map +1 -0
- package/dist/lambertGlMeshMaterialRenderer.d.ts +4 -0
- package/dist/lambertGlMeshMaterialRenderer.d.ts.map +1 -0
- package/dist/lambertGlMeshMaterialRenderer.js +70 -0
- package/dist/lambertGlMeshMaterialRenderer.js.map +1 -0
- package/dist/matcapGlMeshMaterialRenderer.d.ts +4 -0
- package/dist/matcapGlMeshMaterialRenderer.d.ts.map +1 -0
- package/dist/matcapGlMeshMaterialRenderer.js +49 -0
- package/dist/matcapGlMeshMaterialRenderer.js.map +1 -0
- package/dist/normalGlMeshMaterialRenderer.d.ts +4 -0
- package/dist/normalGlMeshMaterialRenderer.d.ts.map +1 -0
- package/dist/normalGlMeshMaterialRenderer.js +39 -0
- package/dist/normalGlMeshMaterialRenderer.js.map +1 -0
- package/dist/phongGlMeshMaterialRenderer.d.ts +4 -0
- package/dist/phongGlMeshMaterialRenderer.d.ts.map +1 -0
- package/dist/phongGlMeshMaterialRenderer.js +90 -0
- package/dist/phongGlMeshMaterialRenderer.js.map +1 -0
- package/dist/prepareGlScene3DForwardLights.d.ts +3 -0
- package/dist/prepareGlScene3DForwardLights.d.ts.map +1 -0
- package/dist/prepareGlScene3DForwardLights.js +117 -0
- package/dist/prepareGlScene3DForwardLights.js.map +1 -0
- package/dist/presentGlScene3D.d.ts +3 -0
- package/dist/presentGlScene3D.d.ts.map +1 -0
- package/dist/presentGlScene3D.js +21 -0
- package/dist/presentGlScene3D.js.map +1 -0
- package/dist/registerStandardPbrGlMaterial.d.ts +3 -0
- package/dist/registerStandardPbrGlMaterial.d.ts.map +1 -0
- package/dist/registerStandardPbrGlMaterial.js +11 -0
- package/dist/registerStandardPbrGlMaterial.js.map +1 -0
- package/dist/shadedGlMeshMaterialRenderer.d.ts +4 -0
- package/dist/shadedGlMeshMaterialRenderer.d.ts.map +1 -0
- package/dist/shadedGlMeshMaterialRenderer.js +135 -0
- package/dist/shadedGlMeshMaterialRenderer.js.map +1 -0
- package/dist/sheenPbrGlMeshMaterialRenderer.d.ts +4 -0
- package/dist/sheenPbrGlMeshMaterialRenderer.d.ts.map +1 -0
- package/dist/sheenPbrGlMeshMaterialRenderer.js +54 -0
- package/dist/sheenPbrGlMeshMaterialRenderer.js.map +1 -0
- package/dist/specularGlossinessPbrGlMeshMaterialRenderer.d.ts +4 -0
- package/dist/specularGlossinessPbrGlMeshMaterialRenderer.d.ts.map +1 -0
- package/dist/specularGlossinessPbrGlMeshMaterialRenderer.js +121 -0
- package/dist/specularGlossinessPbrGlMeshMaterialRenderer.js.map +1 -0
- package/dist/specularPbrGlMeshMaterialRenderer.d.ts +4 -0
- package/dist/specularPbrGlMeshMaterialRenderer.d.ts.map +1 -0
- package/dist/specularPbrGlMeshMaterialRenderer.js +55 -0
- package/dist/specularPbrGlMeshMaterialRenderer.js.map +1 -0
- package/dist/standardPbrGlMeshMaterialRenderer.d.ts +3 -0
- package/dist/standardPbrGlMeshMaterialRenderer.d.ts.map +1 -0
- package/dist/standardPbrGlMeshMaterialRenderer.js +35 -0
- package/dist/standardPbrGlMeshMaterialRenderer.js.map +1 -0
- package/dist/subsurfacePbrGlMeshMaterialRenderer.d.ts +4 -0
- package/dist/subsurfacePbrGlMeshMaterialRenderer.d.ts.map +1 -0
- package/dist/subsurfacePbrGlMeshMaterialRenderer.js +57 -0
- package/dist/subsurfacePbrGlMeshMaterialRenderer.js.map +1 -0
- package/dist/toonGlMeshMaterialRenderer.d.ts +4 -0
- package/dist/toonGlMeshMaterialRenderer.d.ts.map +1 -0
- package/dist/toonGlMeshMaterialRenderer.js +81 -0
- package/dist/toonGlMeshMaterialRenderer.js.map +1 -0
- package/dist/transmissionVolumePbrGlMeshMaterialRenderer.d.ts +4 -0
- package/dist/transmissionVolumePbrGlMeshMaterialRenderer.d.ts.map +1 -0
- package/dist/transmissionVolumePbrGlMeshMaterialRenderer.js +62 -0
- package/dist/transmissionVolumePbrGlMeshMaterialRenderer.js.map +1 -0
- package/dist/unlitGlMeshMaterialRenderer.d.ts +4 -0
- package/dist/unlitGlMeshMaterialRenderer.d.ts.map +1 -0
- package/dist/unlitGlMeshMaterialRenderer.js +61 -0
- package/dist/unlitGlMeshMaterialRenderer.js.map +1 -0
- package/dist/vertexColorGlMeshMaterialRenderer.d.ts +4 -0
- package/dist/vertexColorGlMeshMaterialRenderer.d.ts.map +1 -0
- package/dist/vertexColorGlMeshMaterialRenderer.js +54 -0
- package/dist/vertexColorGlMeshMaterialRenderer.js.map +1 -0
- package/dist/wireframeGlMeshMaterialRenderer.d.ts +4 -0
- package/dist/wireframeGlMeshMaterialRenderer.d.ts.map +1 -0
- package/dist/wireframeGlMeshMaterialRenderer.js +50 -0
- package/dist/wireframeGlMeshMaterialRenderer.js.map +1 -0
- package/package.json +58 -0
- package/src/anisotropyPbrGlMeshMaterialRenderer.test.ts +86 -0
- package/src/blinnPhongGlMeshMaterialRenderer.test.ts +94 -0
- package/src/clearcoatPbrGlMeshMaterialRenderer.test.ts +81 -0
- package/src/customShaderGlMeshMaterialRenderer.test.ts +169 -0
- package/src/depthGlMeshMaterialRenderer.test.ts +69 -0
- package/src/drawGlScene3D.test.ts +304 -0
- package/src/emissiveGlMeshMaterialRenderer.test.ts +60 -0
- package/src/enableGlScene3DColorSpaceGuards.test.ts +63 -0
- package/src/enableGlScene3DCustomShaderGuards.test.ts +85 -0
- package/src/enableGlScene3DDeformGuards.test.ts +98 -0
- package/src/enableGlScene3DForwardLightSelectionGuards.test.ts +84 -0
- package/src/explainGlScene3DForwardLightSelection.test.ts +32 -0
- package/src/glClassicPrelude.test.ts +214 -0
- package/src/glDebugPrelude.test.ts +94 -0
- package/src/glEnvironmentCube.test.ts +71 -0
- package/src/glEnvironmentIblBake.test.ts +31 -0
- package/src/glEnvironmentSkybox.test.ts +24 -0
- package/src/glLitProgram.test.ts +181 -0
- package/src/glMatcapPrelude.test.ts +74 -0
- package/src/glMeshMaterialRegistry.test.ts +52 -0
- package/src/glMeshProgram.test.ts +406 -0
- package/src/glMeshUpload.test.ts +311 -0
- package/src/glParticleEmitter3D.test.ts +280 -0
- package/src/glPbrPrelude.test.ts +178 -0
- package/src/glPbrProgramCache.test.ts +116 -0
- package/src/glPbrStandardBlock.test.ts +85 -0
- package/src/glScene3DRuntime.test.ts +108 -0
- package/src/glScene3DTime.test.ts +31 -0
- package/src/glShadedBuiltInModifiers.test.ts +377 -0
- package/src/glShadedModifierSnippet.test.ts +46 -0
- package/src/glShadedPrelude.test.ts +177 -0
- package/src/glShadowMap.test.ts +219 -0
- package/src/glToonPrelude.test.ts +118 -0
- package/src/glUnlitPrelude.test.ts +156 -0
- package/src/glWireframePrelude.test.ts +46 -0
- package/src/glWireframeUpload.test.ts +50 -0
- package/src/iridescencePbrGlMeshMaterialRenderer.test.ts +86 -0
- package/src/lambertGlMeshMaterialRenderer.test.ts +92 -0
- package/src/matcapGlMeshMaterialRenderer.test.ts +70 -0
- package/src/normalGlMeshMaterialRenderer.test.ts +69 -0
- package/src/phongGlMeshMaterialRenderer.test.ts +94 -0
- package/src/prepareGlScene3DForwardLights.test.ts +106 -0
- package/src/presentGlScene3D.test.ts +98 -0
- package/src/registerStandardPbrGlMaterial.test.ts +14 -0
- package/src/shadedGlMeshMaterialRenderer.test.ts +106 -0
- package/src/sheenPbrGlMeshMaterialRenderer.test.ts +83 -0
- package/src/specularGlossinessPbrGlMeshMaterialRenderer.test.ts +96 -0
- package/src/specularPbrGlMeshMaterialRenderer.test.ts +83 -0
- package/src/standardPbrGlMeshMaterialRenderer.test.ts +88 -0
- package/src/subsurfacePbrGlMeshMaterialRenderer.test.ts +86 -0
- package/src/toonGlMeshMaterialRenderer.test.ts +92 -0
- package/src/transmissionVolumePbrGlMeshMaterialRenderer.test.ts +93 -0
- package/src/unlitGlMeshMaterialRenderer.test.ts +88 -0
- package/src/vertexColorGlMeshMaterialRenderer.test.ts +60 -0
- package/src/wireframeGlMeshMaterialRenderer.test.ts +69 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glPbrStandardBlock.d.ts","sourceRoot":"","sources":["../src/glPbrStandardBlock.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,aAAa,EACb,6BAA6B,EAC7B,eAAe,EACf,OAAO,EACP,cAAc,EACd,YAAY,EACb,MAAM,iBAAiB,CAAC;AAOzB,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAChD,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAC5C,eAAO,MAAM,sCAAsC,IAAI,CAAC;AACxD,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAI3C,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAW/C,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC/B,QAAQ,EAAE,QAAQ,CAAC,6BAA6B,CAAC,GAAG,IAAI,GACvD,IAAI,CAqCN;AAMD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,EACjC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,EACrC,IAAI,EAAE,MAAM,GACX,IAAI,CAMN;AAQD,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,QAAQ,CAAC,6BAA6B,CAAC,GAAG,IAAI,EACxD,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,IAAI,GACxC,cAAc,CAwBhB;AAKD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,OAAO,CAE3E"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { unpackColorToLinear } from '@flighthq/color';
|
|
2
|
+
import { hasImageResourcePixels } from '@flighthq/image';
|
|
3
|
+
import { bindGlImageResourceTexture } from '@flighthq/render-gl';
|
|
4
|
+
import { hasTextureUvTransform } from '@flighthq/texture';
|
|
5
|
+
import { bindGlUvTransform } from './glMeshProgram';
|
|
6
|
+
// The texture-unit assignment for the StandardPbrMaterialProperties block. Units 0–5 are reserved
|
|
7
|
+
// for the standard maps so every PBR program (StandardPbr and every extension) binds them at the
|
|
8
|
+
// same slots; extension renderers bind their own maps at GL_PBR_EXTENSION_TEXTURE_UNIT and above.
|
|
9
|
+
export const GL_PBR_BASE_COLOR_TEXTURE_UNIT = 0;
|
|
10
|
+
export const GL_PBR_NORMAL_TEXTURE_UNIT = 1;
|
|
11
|
+
export const GL_PBR_METALLIC_ROUGHNESS_TEXTURE_UNIT = 2;
|
|
12
|
+
export const GL_PBR_OCCLUSION_TEXTURE_UNIT = 3;
|
|
13
|
+
export const GL_PBR_EMISSIVE_TEXTURE_UNIT = 4;
|
|
14
|
+
export const GL_PBR_ALPHA_TEXTURE_UNIT = 5;
|
|
15
|
+
// The first texture unit free for an extension's own maps (clearcoat, sheen, etc.), past the six
|
|
16
|
+
// standard-block units. Extension renderers number their maps from here.
|
|
17
|
+
export const GL_PBR_EXTENSION_TEXTURE_UNIT = 6;
|
|
18
|
+
// Uploads the full StandardPbrMaterialProperties block to a PBR program: the base-color/metallic/
|
|
19
|
+
// roughness/normal/occlusion/emissive scalars and colors, plus each present map bound at its fixed
|
|
20
|
+
// standard texture unit (0–4). StandardPbr passes the material itself (it IS a properties block);
|
|
21
|
+
// every extension renderer passes `material.standard`. A null block uploads neutral defaults (white
|
|
22
|
+
// base color, dielectric, fully rough) so a missing material renders plausibly. Packed colors are
|
|
23
|
+
// decoded to linear on the CPU here; sampled albedo/emissive textures are sRgb-decoded in GLSL, so
|
|
24
|
+
// nothing is double-decoded. The alpha-cutoff uniform is NOT part of the block — it lives on the
|
|
25
|
+
// SurfaceMaterial trailer, so each renderer uploads it from the material after this call. Call
|
|
26
|
+
// after beginGlMeshDraw has selected the program.
|
|
27
|
+
export function bindGlPbrStandardBlock(state, program, standard) {
|
|
28
|
+
const gl = state.gl;
|
|
29
|
+
if (standard === null) {
|
|
30
|
+
gl.uniform4f(program.locBaseColor, 1, 1, 1, 1);
|
|
31
|
+
gl.uniform1f(program.locMetallic, 0);
|
|
32
|
+
gl.uniform1f(program.locRoughness, 1);
|
|
33
|
+
gl.uniform1f(program.locNormalScale, 1);
|
|
34
|
+
gl.uniform3f(program.locEmissive, 0, 0, 0);
|
|
35
|
+
gl.uniform1f(program.locEmissiveStrength, 1);
|
|
36
|
+
gl.uniform1f(program.locOcclusionStrength, 1);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
unpackColorToLinear(scratchRgba, standard.baseColor);
|
|
40
|
+
gl.uniform4f(program.locBaseColor, scratchRgba[0], scratchRgba[1], scratchRgba[2], scratchRgba[3]);
|
|
41
|
+
gl.uniform1f(program.locMetallic, standard.metallic);
|
|
42
|
+
gl.uniform1f(program.locRoughness, standard.roughness);
|
|
43
|
+
gl.uniform1f(program.locNormalScale, standard.normalScale);
|
|
44
|
+
gl.uniform1f(program.locOcclusionStrength, standard.occlusionStrength);
|
|
45
|
+
unpackColorToLinear(scratchRgba, standard.emissive);
|
|
46
|
+
gl.uniform3f(program.locEmissive, scratchRgba[0], scratchRgba[1], scratchRgba[2]);
|
|
47
|
+
gl.uniform1f(program.locEmissiveStrength, standard.emissiveStrength);
|
|
48
|
+
bindGlPbrStandardTexture(state, standard.baseColorMap, program.locBaseColorMap, GL_PBR_BASE_COLOR_TEXTURE_UNIT);
|
|
49
|
+
bindGlPbrStandardTexture(state, standard.normalMap, program.locNormalMap, GL_PBR_NORMAL_TEXTURE_UNIT);
|
|
50
|
+
bindGlPbrStandardTexture(state, standard.metallicRoughnessMap, program.locMetallicRoughnessMap, GL_PBR_METALLIC_ROUGHNESS_TEXTURE_UNIT);
|
|
51
|
+
bindGlPbrStandardTexture(state, standard.occlusionMap, program.locOcclusionMap, GL_PBR_OCCLUSION_TEXTURE_UNIT);
|
|
52
|
+
bindGlPbrStandardTexture(state, standard.emissiveMap, program.locEmissiveMap, GL_PBR_EMISSIVE_TEXTURE_UNIT);
|
|
53
|
+
bindGlPbrStandardTexture(state, standard.alphaMap, program.locAlphaMap, GL_PBR_ALPHA_TEXTURE_UNIT);
|
|
54
|
+
// The base-color map's uv transform drives the shared v_uv0 that every standard map samples.
|
|
55
|
+
bindGlUvTransform(gl, program, standard.baseColorMap);
|
|
56
|
+
}
|
|
57
|
+
// Binds one texture to a numbered unit and points its sampler uniform there, if the slot has
|
|
58
|
+
// pixels. The shared per-map helper for both the standard block and extension renderers (they pass
|
|
59
|
+
// their own unit ≥ GL_PBR_EXTENSION_TEXTURE_UNIT). No-op when the slot is empty, so the shader's
|
|
60
|
+
// untextured #ifdef branch governs instead.
|
|
61
|
+
export function bindGlPbrStandardTexture(state, texture, location, unit) {
|
|
62
|
+
if (!isGlTextureReady(texture))
|
|
63
|
+
return;
|
|
64
|
+
const gl = state.gl;
|
|
65
|
+
gl.activeTexture(gl.TEXTURE0 + unit);
|
|
66
|
+
bindGlImageResourceTexture(state, texture.image, texture.sampler);
|
|
67
|
+
gl.uniform1i(location, unit);
|
|
68
|
+
}
|
|
69
|
+
// Builds a GlPbrDefineKey with the standard-block map flags from `standard` and the alpha-mask flag
|
|
70
|
+
// from `surface`'s trailer, with every extension lobe disabled. Each extension renderer calls this and
|
|
71
|
+
// then ORs in its own extension flag; the StandardPbr renderer uses it as-is. Keeps the map-present
|
|
72
|
+
// test (isGlTextureReady) in one place so the compiled variant and the bound textures never disagree.
|
|
73
|
+
// Takes the whole surface material (mirrors buildWgpuPbrStandardDefineKey) so it can read `alphaMode`
|
|
74
|
+
// for both the mask flag and the alpha-map gate.
|
|
75
|
+
export function buildGlPbrStandardDefineKey(standard, surface) {
|
|
76
|
+
const baseColorMap = standard?.baseColorMap ?? null;
|
|
77
|
+
const alphaMode = surface?.alphaMode ?? 'opaque';
|
|
78
|
+
return {
|
|
79
|
+
alphaMaskEnabled: alphaMode === 'mask',
|
|
80
|
+
anisotropyEnabled: false,
|
|
81
|
+
clearcoatEnabled: false,
|
|
82
|
+
// An opaque material ignores coverage (SurfaceMaterial contract), so it must not sample the alpha
|
|
83
|
+
// map; only 'mask'/'blend' do. Same isGlTextureReady predicate as the bind path.
|
|
84
|
+
hasAlphaMap: alphaMode !== 'opaque' && isGlTextureReady(standard?.alphaMap ?? null),
|
|
85
|
+
hasBaseColorMap: isGlTextureReady(baseColorMap),
|
|
86
|
+
hasEmissiveMap: isGlTextureReady(standard?.emissiveMap ?? null),
|
|
87
|
+
hasMetallicRoughnessMap: isGlTextureReady(standard?.metallicRoughnessMap ?? null),
|
|
88
|
+
hasNormalMap: isGlTextureReady(standard?.normalMap ?? null),
|
|
89
|
+
hasOcclusionMap: isGlTextureReady(standard?.occlusionMap ?? null),
|
|
90
|
+
// Gated on the same readiness test as hasBaseColorMap so the transforming variant compiles only
|
|
91
|
+
// when the base map is actually bound and carries a non-identity transform.
|
|
92
|
+
hasUvTransform: baseColorMap !== null && isGlTextureReady(baseColorMap) && hasTextureUvTransform(baseColorMap),
|
|
93
|
+
iridescenceEnabled: false,
|
|
94
|
+
sheenEnabled: false,
|
|
95
|
+
specularEnabled: false,
|
|
96
|
+
subsurfaceEnabled: false,
|
|
97
|
+
transmissionEnabled: false,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
// True when a texture slot has bound, uploadable pixels (an image resource with a backing source).
|
|
101
|
+
// The single predicate the define-key builder and the bind path share, so "map present" means the
|
|
102
|
+
// same thing in both places.
|
|
103
|
+
export function isGlTextureReady(texture) {
|
|
104
|
+
return texture !== null && texture.image !== null && hasImageResourcePixels(texture.image);
|
|
105
|
+
}
|
|
106
|
+
const scratchRgba = [0, 0, 0, 0];
|
|
107
|
+
//# sourceMappingURL=glPbrStandardBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glPbrStandardBlock.js","sourceRoot":"","sources":["../src/glPbrStandardBlock.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { GlScene3DRuntime, GlRenderState, GlSkinPaletteTexture } from '@flighthq/types';
|
|
2
|
+
export declare function destroyGlScene3DRuntime(state: GlRenderState): void;
|
|
3
|
+
export declare function ensureGlSkinPalette(state: GlRenderState): GlSkinPaletteTexture;
|
|
4
|
+
export declare function getGlScene3DRuntime(state: GlRenderState): GlScene3DRuntime;
|
|
5
|
+
//# sourceMappingURL=glScene3DRuntime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glScene3DRuntime.d.ts","sourceRoot":"","sources":["../src/glScene3DRuntime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAwB,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAcnH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAwClE;AAKD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,oBAAoB,CAQ9E;AAKD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,gBAAgB,CA8B1E"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { createGlSkinPaletteTexture, destroyGlRenderTarget, destroyGlSkinPaletteTexture } from '@flighthq/render-gl';
|
|
2
|
+
import { EntityRuntimeKey } from '@flighthq/types';
|
|
3
|
+
import { destroyGlEnvironmentIblBakePrograms } from './glEnvironmentIblBake';
|
|
4
|
+
// Frees every state-scoped GPU resource scene-gl created for `state`: all cached mesh-material and PBR
|
|
5
|
+
// programs, the IBL set (irradiance / prefiltered / BRDF textures + the bake framebuffer), the source
|
|
6
|
+
// environment cubemap, the IBL bake shader programs, and the directional shadow map (its depth texture
|
|
7
|
+
// is owned by shadowTarget, so destroying the target frees it — the shadow alias is cleared without a
|
|
8
|
+
// double delete). The runtime object itself is GC-managed and left cleared, safe to repopulate lazily.
|
|
9
|
+
//
|
|
10
|
+
// Per-geometry mesh and wireframe uploads are NOT reached here: their caches are keyed by geometry in
|
|
11
|
+
// WeakMaps that cannot be iterated. Free those with destroyGlMeshUpload / destroyGlWireframeUpload when
|
|
12
|
+
// a geometry is torn down, or let GL context loss reclaim them. A no-op when no scene runtime exists.
|
|
13
|
+
// Deleting an already-deleted GL object is a silent no-op, so this is safe to call more than once.
|
|
14
|
+
export function destroyGlScene3DRuntime(state) {
|
|
15
|
+
const scene = sceneRuntimes.get(state);
|
|
16
|
+
if (scene === undefined)
|
|
17
|
+
return;
|
|
18
|
+
const gl = state.gl;
|
|
19
|
+
for (const program of scene.programCache.values())
|
|
20
|
+
gl.deleteProgram(program.program);
|
|
21
|
+
scene.programCache.clear();
|
|
22
|
+
scene.activeMeshProgram = null;
|
|
23
|
+
if (scene.ibl !== null) {
|
|
24
|
+
gl.deleteTexture(scene.ibl.brdfLut);
|
|
25
|
+
gl.deleteTexture(scene.ibl.irradianceCube);
|
|
26
|
+
gl.deleteTexture(scene.ibl.prefilteredCube);
|
|
27
|
+
scene.ibl = null;
|
|
28
|
+
}
|
|
29
|
+
if (scene.iblBakeFramebuffer !== null) {
|
|
30
|
+
gl.deleteFramebuffer(scene.iblBakeFramebuffer);
|
|
31
|
+
scene.iblBakeFramebuffer = null;
|
|
32
|
+
}
|
|
33
|
+
if (scene.environmentSourceCube !== null) {
|
|
34
|
+
gl.deleteTexture(scene.environmentSourceCube);
|
|
35
|
+
scene.environmentSourceCube = null;
|
|
36
|
+
}
|
|
37
|
+
destroyGlEnvironmentIblBakePrograms(state);
|
|
38
|
+
if (scene.shadowTarget !== null) {
|
|
39
|
+
destroyGlRenderTarget(state, scene.shadowTarget);
|
|
40
|
+
scene.shadowTarget = null;
|
|
41
|
+
}
|
|
42
|
+
scene.shadow = null;
|
|
43
|
+
if (scene.skinPalette !== null) {
|
|
44
|
+
destroyGlSkinPaletteTexture(gl, scene.skinPalette);
|
|
45
|
+
scene.skinPalette = null;
|
|
46
|
+
}
|
|
47
|
+
scene.blendedDrawList.length = 0;
|
|
48
|
+
scene.opaqueDrawList.length = 0;
|
|
49
|
+
scene.blendedPool.length = 0;
|
|
50
|
+
scene.opaquePool.length = 0;
|
|
51
|
+
}
|
|
52
|
+
// Resolves the per-state GPU skin bone-palette data texture, creating it lazily on the first skinned
|
|
53
|
+
// draw. Every skinned mesh shares this one RGBA32F texture — the palette is re-uploaded per draw
|
|
54
|
+
// (uploadGlSkinPaletteTexture grows it to the largest skeleton seen), so no per-mesh texture is retained.
|
|
55
|
+
export function ensureGlSkinPalette(state) {
|
|
56
|
+
const scene = getGlScene3DRuntime(state);
|
|
57
|
+
let palette = scene.skinPalette;
|
|
58
|
+
if (palette === null) {
|
|
59
|
+
palette = createGlSkinPaletteTexture(state.gl);
|
|
60
|
+
scene.skinPalette = palette;
|
|
61
|
+
}
|
|
62
|
+
return palette;
|
|
63
|
+
}
|
|
64
|
+
// Resolves scene-gl's private runtime for a GlRenderState, allocating it (and wiring the header
|
|
65
|
+
// runtime slots to its registry and upload cache) on first use. Mutable by design: the draw path
|
|
66
|
+
// writes the caches every frame.
|
|
67
|
+
export function getGlScene3DRuntime(state) {
|
|
68
|
+
const stateRuntime = state[EntityRuntimeKey];
|
|
69
|
+
let scene = sceneRuntimes.get(state);
|
|
70
|
+
if (scene === undefined) {
|
|
71
|
+
scene = {
|
|
72
|
+
activeMeshProgram: null,
|
|
73
|
+
activeSkinnedRun: false,
|
|
74
|
+
blendedDrawList: [],
|
|
75
|
+
blendedPool: [],
|
|
76
|
+
environmentSourceCube: null,
|
|
77
|
+
ibl: null,
|
|
78
|
+
iblBakeFramebuffer: null,
|
|
79
|
+
materialRegistry: new Map(),
|
|
80
|
+
modifierSnippetRegistry: null,
|
|
81
|
+
opaqueDrawList: [],
|
|
82
|
+
opaquePool: [],
|
|
83
|
+
programCache: new Map(),
|
|
84
|
+
shadow: null,
|
|
85
|
+
shadowTarget: null,
|
|
86
|
+
skinPalette: null,
|
|
87
|
+
time: 0,
|
|
88
|
+
uploadCache: new WeakMap(),
|
|
89
|
+
};
|
|
90
|
+
sceneRuntimes.set(state, scene);
|
|
91
|
+
// Surface the registry + upload cache through the header's opaque runtime slots so other code
|
|
92
|
+
// (and a future destroy path) can find them by name without importing scene-gl internals.
|
|
93
|
+
stateRuntime.sceneMeshMaterialRegistry = scene.materialRegistry;
|
|
94
|
+
stateRuntime.sceneMeshUploadCache = scene.uploadCache;
|
|
95
|
+
}
|
|
96
|
+
return scene;
|
|
97
|
+
}
|
|
98
|
+
const sceneRuntimes = new WeakMap();
|
|
99
|
+
//# sourceMappingURL=glScene3DRuntime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glScene3DRuntime.js","sourceRoot":"","sources":["../src/glScene3DRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAErH,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,mCAAmC,EAAE,MAAM,wBAAwB,CAAC;AAC7E,uGAAuG;AACvG,sGAAsG;AACtG,uGAAuG;AACvG,sGAAsG;AACtG,uGAAuG;AACvG,EAAE;AACF,sGAAsG;AACtG,wGAAwG;AACxG,sGAAsG;AACtG,mGAAmG;AACnG,MAAM,UAAU,uBAAuB,CAAC,KAAoB;IAC1D,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO;IAChC,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IAEpB,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE;QAAE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrF,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC3B,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAE/B,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;QACvB,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC3C,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC5C,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,CAAC,kBAAkB,KAAK,IAAI,EAAE,CAAC;QACtC,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC/C,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAClC,CAAC;IACD,IAAI,KAAK,CAAC,qBAAqB,KAAK,IAAI,EAAE,CAAC;QACzC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC9C,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC;IACrC,CAAC;IACD,mCAAmC,CAAC,KAAK,CAAC,CAAC;IAE3C,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;QAChC,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QACjD,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;IAC5B,CAAC;IACD,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;IAEpB,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QAC/B,2BAA2B,CAAC,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QACnD,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;IACjC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7B,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,qGAAqG;AACrG,iGAAiG;AACjG,0GAA0G;AAC1G,MAAM,UAAU,mBAAmB,CAAC,KAAoB;IACtD,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC;IAChC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,GAAG,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/C,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;IAC9B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gGAAgG;AAChG,iGAAiG;AACjG,iCAAiC;AACjC,MAAM,UAAU,mBAAmB,CAAC,KAAoB;IACtD,MAAM,YAAY,GAAG,KAAK,CAAC,gBAAgB,CAAyB,CAAC;IACrE,IAAI,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,KAAK,GAAG;YACN,iBAAiB,EAAE,IAAI;YACvB,gBAAgB,EAAE,KAAK;YACvB,eAAe,EAAE,EAAE;YACnB,WAAW,EAAE,EAAE;YACf,qBAAqB,EAAE,IAAI;YAC3B,GAAG,EAAE,IAAI;YACT,kBAAkB,EAAE,IAAI;YACxB,gBAAgB,EAAE,IAAI,GAAG,EAAE;YAC3B,uBAAuB,EAAE,IAAI;YAC7B,cAAc,EAAE,EAAE;YAClB,UAAU,EAAE,EAAE;YACd,YAAY,EAAE,IAAI,GAAG,EAAE;YACvB,MAAM,EAAE,IAAI;YACZ,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE,IAAI;YACjB,IAAI,EAAE,CAAC;YACP,WAAW,EAAE,IAAI,OAAO,EAAE;SAC3B,CAAC;QACF,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAChC,8FAA8F;QAC9F,0FAA0F;QAC1F,YAAY,CAAC,yBAAyB,GAAG,KAAK,CAAC,gBAAgB,CAAC;QAChE,YAAY,CAAC,oBAAoB,GAAG,KAAK,CAAC,WAAiD,CAAC;IAC9F,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,aAAa,GAAG,IAAI,OAAO,EAAmC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { GlRenderState } from '@flighthq/types';
|
|
2
|
+
export interface FakeGl2 extends WebGL2RenderingContext {
|
|
3
|
+
calls: {
|
|
4
|
+
name: string;
|
|
5
|
+
args: unknown[];
|
|
6
|
+
}[];
|
|
7
|
+
}
|
|
8
|
+
export declare function makeFakeGl2(options?: {
|
|
9
|
+
activeUniforms?: readonly {
|
|
10
|
+
name: string;
|
|
11
|
+
type: number;
|
|
12
|
+
}[];
|
|
13
|
+
compileOk?: boolean;
|
|
14
|
+
linkOk?: boolean;
|
|
15
|
+
}): FakeGl2;
|
|
16
|
+
export declare function makeGlScene3DState(gl?: FakeGl2): {
|
|
17
|
+
state: GlRenderState;
|
|
18
|
+
gl: FakeGl2;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=glScene3DTestHelper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glScene3DTestHelper.d.ts","sourceRoot":"","sources":["../src/glScene3DTestHelper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,iBAAiB,CAAC;AAS3E,MAAM,WAAW,OAAQ,SAAQ,sBAAsB;IACrD,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,EAAE,CAAA;KAAE,EAAE,CAAC;CAC5C;AAID,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE;IACpC,cAAc,CAAC,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAkJV;AAKD,wBAAgB,kBAAkB,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,OAAO,CAAA;CAAE,CA6BtF"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { createRenderState } from '@flighthq/render';
|
|
2
|
+
import { createGlRenderStateRuntime } from '@flighthq/render-gl';
|
|
3
|
+
import { EntityRuntimeKey } from '@flighthq/types';
|
|
4
|
+
// Builds a fresh fake WebGL2 context. compileOk/linkOk control the COMPILE_STATUS/LINK_STATUS the
|
|
5
|
+
// stub reports, so a test can assert the program-cache throws on a shader failure.
|
|
6
|
+
export function makeFakeGl2(options) {
|
|
7
|
+
const compileOk = options?.compileOk ?? true;
|
|
8
|
+
const linkOk = options?.linkOk ?? true;
|
|
9
|
+
const activeUniforms = options?.activeUniforms ?? [];
|
|
10
|
+
const calls = [];
|
|
11
|
+
const record = (name, result) => (...args) => {
|
|
12
|
+
calls.push({ name, args });
|
|
13
|
+
return result;
|
|
14
|
+
};
|
|
15
|
+
const gl = {
|
|
16
|
+
calls,
|
|
17
|
+
// GL enum constants the renderer reads.
|
|
18
|
+
ARRAY_BUFFER: 0x8892,
|
|
19
|
+
ELEMENT_ARRAY_BUFFER: 0x8893,
|
|
20
|
+
STATIC_DRAW: 0x88e4,
|
|
21
|
+
FLOAT: 0x1406,
|
|
22
|
+
UNSIGNED_BYTE: 0x1401,
|
|
23
|
+
UNSIGNED_SHORT: 0x1403,
|
|
24
|
+
UNSIGNED_INT: 0x1405,
|
|
25
|
+
LINES: 0x0001,
|
|
26
|
+
LINE_STRIP: 0x0003,
|
|
27
|
+
POINTS: 0x0000,
|
|
28
|
+
TRIANGLES: 0x0004,
|
|
29
|
+
TRIANGLE_STRIP: 0x0005,
|
|
30
|
+
TEXTURE0: 0x84c0,
|
|
31
|
+
TEXTURE1: 0x84c1,
|
|
32
|
+
TEXTURE_2D: 0x0de1,
|
|
33
|
+
VERTEX_SHADER: 0x8b31,
|
|
34
|
+
FRAGMENT_SHADER: 0x8b30,
|
|
35
|
+
COMPILE_STATUS: 0x8b81,
|
|
36
|
+
LINK_STATUS: 0x8b82,
|
|
37
|
+
ACTIVE_UNIFORMS: 0x8b86,
|
|
38
|
+
FLOAT_VEC2: 0x8b50,
|
|
39
|
+
FLOAT_VEC3: 0x8b51,
|
|
40
|
+
FLOAT_VEC4: 0x8b52,
|
|
41
|
+
FLOAT_MAT2: 0x8b5a,
|
|
42
|
+
FLOAT_MAT3: 0x8b5b,
|
|
43
|
+
FLOAT_MAT4: 0x8b5c,
|
|
44
|
+
BLEND: 0x0be2,
|
|
45
|
+
CULL_FACE: 0x0b44,
|
|
46
|
+
BACK: 0x0405,
|
|
47
|
+
DEPTH_TEST: 0x0b71,
|
|
48
|
+
LESS: 0x0201,
|
|
49
|
+
ONE: 1,
|
|
50
|
+
ONE_MINUS_SRC_ALPHA: 0x0303,
|
|
51
|
+
SRC_ALPHA: 0x0302,
|
|
52
|
+
FUNC_ADD: 0x8006,
|
|
53
|
+
FRAMEBUFFER: 0x8d40,
|
|
54
|
+
COLOR_BUFFER_BIT: 0x4000,
|
|
55
|
+
DEPTH_BUFFER_BIT: 0x0100,
|
|
56
|
+
COLOR: 0x1800,
|
|
57
|
+
DEPTH_STENCIL: 0x84f9,
|
|
58
|
+
MAX_VERTEX_UNIFORM_VECTORS: 0x8dfb,
|
|
59
|
+
RGBA32F: 0x8814,
|
|
60
|
+
NEAREST: 0x2600,
|
|
61
|
+
CLAMP_TO_EDGE: 0x812f,
|
|
62
|
+
TEXTURE_MIN_FILTER: 0x2801,
|
|
63
|
+
TEXTURE_MAG_FILTER: 0x2800,
|
|
64
|
+
TEXTURE_WRAP_S: 0x2802,
|
|
65
|
+
TEXTURE_WRAP_T: 0x2803,
|
|
66
|
+
getParameter: (pname) => (pname === 0x8dfb ? 1024 : 0),
|
|
67
|
+
createShader: record('createShader', {}),
|
|
68
|
+
shaderSource: record('shaderSource'),
|
|
69
|
+
compileShader: record('compileShader'),
|
|
70
|
+
getShaderParameter: record('getShaderParameter', compileOk),
|
|
71
|
+
getShaderInfoLog: record('getShaderInfoLog', ''),
|
|
72
|
+
deleteShader: record('deleteShader'),
|
|
73
|
+
createProgram: record('createProgram', {}),
|
|
74
|
+
attachShader: record('attachShader'),
|
|
75
|
+
linkProgram: record('linkProgram'),
|
|
76
|
+
getProgramParameter: (_program, pname) => {
|
|
77
|
+
calls.push({ name: 'getProgramParameter', args: [pname] });
|
|
78
|
+
return pname === 0x8b86 ? activeUniforms.length : linkOk;
|
|
79
|
+
},
|
|
80
|
+
getActiveUniform: (_program, index) => {
|
|
81
|
+
calls.push({ name: 'getActiveUniform', args: [index] });
|
|
82
|
+
const info = activeUniforms[index];
|
|
83
|
+
return info === undefined ? null : { name: info.name, size: 1, type: info.type };
|
|
84
|
+
},
|
|
85
|
+
getProgramInfoLog: record('getProgramInfoLog', ''),
|
|
86
|
+
useProgram: record('useProgram'),
|
|
87
|
+
getUniformLocation: (_program, name) => {
|
|
88
|
+
calls.push({ name: 'getUniformLocation', args: [name] });
|
|
89
|
+
return { name };
|
|
90
|
+
},
|
|
91
|
+
createBuffer: record('createBuffer', {}),
|
|
92
|
+
bindBuffer: record('bindBuffer'),
|
|
93
|
+
bufferData: record('bufferData'),
|
|
94
|
+
createVertexArray: record('createVertexArray', {}),
|
|
95
|
+
bindVertexArray: record('bindVertexArray'),
|
|
96
|
+
deleteBuffer: record('deleteBuffer'),
|
|
97
|
+
deleteFramebuffer: record('deleteFramebuffer'),
|
|
98
|
+
deleteProgram: record('deleteProgram'),
|
|
99
|
+
deleteRenderbuffer: record('deleteRenderbuffer'),
|
|
100
|
+
deleteTexture: record('deleteTexture'),
|
|
101
|
+
deleteVertexArray: record('deleteVertexArray'),
|
|
102
|
+
enableVertexAttribArray: record('enableVertexAttribArray'),
|
|
103
|
+
getAttribLocation: record('getAttribLocation', 0),
|
|
104
|
+
vertexAttribPointer: record('vertexAttribPointer'),
|
|
105
|
+
vertexAttribIPointer: record('vertexAttribIPointer'),
|
|
106
|
+
vertexAttrib4f: record('vertexAttrib4f'),
|
|
107
|
+
vertexAttribDivisor: record('vertexAttribDivisor'),
|
|
108
|
+
bufferSubData: record('bufferSubData'),
|
|
109
|
+
bindFramebuffer: record('bindFramebuffer'),
|
|
110
|
+
blendEquation: record('blendEquation'),
|
|
111
|
+
blendFunc: record('blendFunc'),
|
|
112
|
+
clear: record('clear'),
|
|
113
|
+
clearColor: record('clearColor'),
|
|
114
|
+
clearDepth: record('clearDepth'),
|
|
115
|
+
clearBufferfv: record('clearBufferfv'),
|
|
116
|
+
clearBufferfi: record('clearBufferfi'),
|
|
117
|
+
cullFace: record('cullFace'),
|
|
118
|
+
depthFunc: record('depthFunc'),
|
|
119
|
+
depthMask: record('depthMask'),
|
|
120
|
+
flush: record('flush'),
|
|
121
|
+
viewport: record('viewport'),
|
|
122
|
+
disable: record('disable'),
|
|
123
|
+
enable: record('enable'),
|
|
124
|
+
drawElements: record('drawElements'),
|
|
125
|
+
drawElementsInstanced: record('drawElementsInstanced'),
|
|
126
|
+
drawArrays: record('drawArrays'),
|
|
127
|
+
activeTexture: record('activeTexture'),
|
|
128
|
+
bindTexture: record('bindTexture'),
|
|
129
|
+
createTexture: record('createTexture', {}),
|
|
130
|
+
texParameteri: record('texParameteri'),
|
|
131
|
+
texImage2D: record('texImage2D'),
|
|
132
|
+
texSubImage2D: record('texSubImage2D'),
|
|
133
|
+
pixelStorei: record('pixelStorei'),
|
|
134
|
+
uniform1i: record('uniform1i'),
|
|
135
|
+
uniform1f: record('uniform1f'),
|
|
136
|
+
uniform1fv: record('uniform1fv'),
|
|
137
|
+
uniform2f: record('uniform2f'),
|
|
138
|
+
uniform2fv: record('uniform2fv'),
|
|
139
|
+
uniform3f: record('uniform3f'),
|
|
140
|
+
uniform3fv: record('uniform3fv'),
|
|
141
|
+
uniform4f: record('uniform4f'),
|
|
142
|
+
uniform4fv: record('uniform4fv'),
|
|
143
|
+
uniformMatrix3fv: record('uniformMatrix3fv'),
|
|
144
|
+
uniformMatrix4fv: record('uniformMatrix4fv'),
|
|
145
|
+
};
|
|
146
|
+
return gl;
|
|
147
|
+
}
|
|
148
|
+
// A GlRenderState backed by the fake WebGL2 context, with the render-gl runtime attached (so
|
|
149
|
+
// bindGlTexture's textureCache exists). scene-gl's own per-state runtime is created lazily on first
|
|
150
|
+
// getGlScene3DRuntime, exactly as in production.
|
|
151
|
+
export function makeGlScene3DState(gl) {
|
|
152
|
+
const context = gl ?? makeFakeGl2();
|
|
153
|
+
const canvas = { width: 256, height: 256 };
|
|
154
|
+
const state = createRenderState({
|
|
155
|
+
allowSmoothing: true,
|
|
156
|
+
backgroundColorRgba: [0, 0, 0, 0],
|
|
157
|
+
});
|
|
158
|
+
Object.assign(state, { canvas, gl: context, applyBlendMode: null });
|
|
159
|
+
const runtime = createGlRenderStateRuntime();
|
|
160
|
+
Object.assign(runtime, {
|
|
161
|
+
currentBlendMode: null,
|
|
162
|
+
currentFramebuffer: null,
|
|
163
|
+
currentProgram: null,
|
|
164
|
+
currentTexture: null,
|
|
165
|
+
renderTargetViewport: null,
|
|
166
|
+
textureCache: new WeakMap(),
|
|
167
|
+
imageResourceTextureCache: new WeakMap(),
|
|
168
|
+
// Fullscreen-pass scratch, so tests can drive present/resolve passes (drawGlFullscreenPass) that
|
|
169
|
+
// read the quad buffers and the default-shader slot alongside the mesh path.
|
|
170
|
+
quadVertexBuffer: {},
|
|
171
|
+
quadIndexBuffer: {},
|
|
172
|
+
quadVertexData: new Float32Array(16),
|
|
173
|
+
defaultBitmapShader: { locations: {}, program: {}, bind: () => { } },
|
|
174
|
+
});
|
|
175
|
+
state[EntityRuntimeKey] = runtime;
|
|
176
|
+
return { state, gl: context };
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=glScene3DTestHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glScene3DTestHelper.js","sourceRoot":"","sources":["../src/glScene3DTestHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glScene3DTime.d.ts","sourceRoot":"","sources":["../src/glScene3DTime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAarD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAE7D;AAID,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAEhF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { getGlScene3DRuntime } from './glScene3DRuntime';
|
|
2
|
+
// The per-frame `time` uniform seam owned by the shading GL assembly. The bind-once-per-material
|
|
3
|
+
// model has no per-frame channel, so animated modifiers (a scrolling AnimatedNormalModifier) read a
|
|
4
|
+
// scene-scoped time value the app advances each frame. The ShadedMaterial renderer uploads it into
|
|
5
|
+
// each ShadedMaterial program's `u_time`; a program with no time-dependent modifier simply ignores
|
|
6
|
+
// the (harmless) uniform. Time is in seconds; only the fractional/relative progression matters for
|
|
7
|
+
// scrolling, so the app may pass elapsed seconds directly.
|
|
8
|
+
// Returns the current per-frame time (seconds) stored on this state's scene runtime. Defaults to 0
|
|
9
|
+
// until setGlScene3DTime runs, so a caller that never advances time gets a static (unscrolled) result.
|
|
10
|
+
export function getGlScene3DTime(state) {
|
|
11
|
+
return getGlScene3DRuntime(state).time;
|
|
12
|
+
}
|
|
13
|
+
// Sets the per-frame time (seconds) the ShadedMaterial renderer uploads to `u_time` each draw. Call
|
|
14
|
+
// once per frame before drawScene3D so every animated modifier this frame samples the same time.
|
|
15
|
+
export function setGlScene3DTime(state, timeSeconds) {
|
|
16
|
+
getGlScene3DRuntime(state).time = timeSeconds;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=glScene3DTime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glScene3DTime.js","sourceRoot":"","sources":["../src/glScene3DTime.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,iGAAiG;AACjG,oGAAoG;AACpG,mGAAmG;AACnG,mGAAmG;AACnG,mGAAmG;AACnG,2DAA2D;AAE3D,mGAAmG;AACnG,uGAAuG;AACvG,MAAM,UAAU,gBAAgB,CAAC,KAAoB;IACnD,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC;AAED,oGAAoG;AACpG,iGAAiG;AACjG,MAAM,UAAU,gBAAgB,CAAC,KAAoB,EAAE,WAAmB;IACxE,mBAAmB,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,WAAW,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { GlRenderState, GlModifierSnippet } from '@flighthq/types';
|
|
2
|
+
export declare const animatedNormalGlModifierSnippet: GlModifierSnippet;
|
|
3
|
+
export declare const emissiveGlModifierSnippet: GlModifierSnippet;
|
|
4
|
+
export declare const rimGlModifierSnippet: GlModifierSnippet;
|
|
5
|
+
export declare const dissolveGlModifierSnippet: GlModifierSnippet;
|
|
6
|
+
export declare const envReflectGlModifierSnippet: GlModifierSnippet;
|
|
7
|
+
export declare const fogGlModifierSnippet: GlModifierSnippet;
|
|
8
|
+
export declare const toonGlModifierSnippet: GlModifierSnippet;
|
|
9
|
+
export declare const vertexDisplaceGlModifierSnippet: GlModifierSnippet;
|
|
10
|
+
export declare function registerBuiltInGlModifierSnippets(state: GlRenderState): void;
|
|
11
|
+
//# sourceMappingURL=glShadedBuiltInModifiers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glShadedBuiltInModifiers.d.ts","sourceRoot":"","sources":["../src/glShadedBuiltInModifiers.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAOV,aAAa,EAOb,iBAAiB,EAClB,MAAM,iBAAiB,CAAC;AAiBzB,eAAO,MAAM,+BAA+B,EAAE,iBA+C7C,CAAC;AAKF,eAAO,MAAM,yBAAyB,EAAE,iBAiDvC,CAAC;AAIF,eAAO,MAAM,oBAAoB,EAAE,iBAmClC,CAAC;AAIF,eAAO,MAAM,yBAAyB,EAAE,iBA+CvC,CAAC;AAOF,eAAO,MAAM,2BAA2B,EAAE,iBAyCzC,CAAC;AAIF,eAAO,MAAM,oBAAoB,EAAE,iBAiDlC,CAAC;AAIF,eAAO,MAAM,qBAAqB,EAAE,iBA4BnC,CAAC;AAKF,eAAO,MAAM,+BAA+B,EAAE,iBAgD7C,CAAC;AAMF,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAS5E"}
|