@babylonjs/core 7.35.2 → 7.37.0
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/Collisions/gpuPicker.js.map +1 -1
- package/Engines/Extensions/engine.multiRender.d.ts +11 -0
- package/Engines/Extensions/engine.multiRender.js +71 -32
- package/Engines/Extensions/engine.multiRender.js.map +1 -1
- package/Engines/Extensions/engine.rawTexture.d.ts +8 -8
- package/Engines/Extensions/engine.rawTexture.js.map +1 -1
- package/Engines/Extensions/engine.renderTarget.js +1 -13
- package/Engines/Extensions/engine.renderTarget.js.map +1 -1
- package/Engines/Extensions/engine.renderTargetCube.js.map +1 -1
- package/Engines/WebGL/webGLRenderTargetWrapper.d.ts +2 -0
- package/Engines/WebGL/webGLRenderTargetWrapper.js +37 -7
- package/Engines/WebGL/webGLRenderTargetWrapper.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.d.ts +11 -0
- package/Engines/WebGPU/Extensions/engine.multiRender.js +30 -11
- package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.rawTexture.d.ts +9 -9
- package/Engines/WebGPU/Extensions/engine.rawTexture.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.renderTarget.js +2 -5
- package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.renderTargetCube.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js +3 -2
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
- package/Engines/WebGPU/webgpuConstants.d.ts +6 -0
- package/Engines/WebGPU/webgpuConstants.js +6 -0
- package/Engines/WebGPU/webgpuConstants.js.map +1 -1
- package/Engines/WebGPU/webgpuHardwareTexture.d.ts +3 -1
- package/Engines/WebGPU/webgpuHardwareTexture.js +5 -4
- package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.js +18 -0
- package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureManager.js +8 -2
- package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
- package/Engines/abstractEngine.d.ts +12 -1
- package/Engines/abstractEngine.js +4 -4
- package/Engines/abstractEngine.js.map +1 -1
- package/Engines/constants.d.ts +17 -1
- package/Engines/constants.js +17 -1
- package/Engines/constants.js.map +1 -1
- package/Engines/engine.d.ts +31 -1
- package/Engines/engine.js +17 -1
- package/Engines/engine.js.map +1 -1
- package/Engines/engineCapabilities.d.ts +2 -0
- package/Engines/engineCapabilities.js.map +1 -1
- package/Engines/nativeEngine.js +1 -0
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/nullEngine.d.ts +2 -2
- package/Engines/nullEngine.js +3 -2
- package/Engines/nullEngine.js.map +1 -1
- package/Engines/renderTargetWrapper.d.ts +33 -1
- package/Engines/renderTargetWrapper.js +64 -4
- package/Engines/renderTargetWrapper.js.map +1 -1
- package/Engines/thinEngine.d.ts +13 -1
- package/Engines/thinEngine.functions.d.ts +4 -0
- package/Engines/thinEngine.functions.js +17 -0
- package/Engines/thinEngine.functions.js.map +1 -1
- package/Engines/thinEngine.js +151 -32
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/thinWebGPUEngine.d.ts +2 -0
- package/Engines/thinWebGPUEngine.js +7 -0
- package/Engines/thinWebGPUEngine.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +12 -3
- package/Engines/webgpuEngine.js +40 -9
- package/Engines/webgpuEngine.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/clearBlock.d.ts +8 -0
- package/FrameGraph/Node/Blocks/Textures/clearBlock.js +22 -1
- package/FrameGraph/Node/Blocks/Textures/clearBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/inputBlock.d.ts +4 -9
- package/FrameGraph/Node/Blocks/inputBlock.js +15 -25
- package/FrameGraph/Node/Blocks/inputBlock.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraphBlockConnectionPoint.js +10 -2
- package/FrameGraph/Node/nodeRenderGraphBlockConnectionPoint.js.map +1 -1
- package/FrameGraph/Passes/renderPass.d.ts +10 -10
- package/FrameGraph/Passes/renderPass.js +10 -10
- package/FrameGraph/Passes/renderPass.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/bloomTask.d.ts +10 -5
- package/FrameGraph/Tasks/PostProcesses/bloomTask.js +29 -14
- package/FrameGraph/Tasks/PostProcesses/bloomTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.js +4 -0
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.d.ts +11 -6
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js +30 -13
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.js +4 -6
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/cullObjectsTask.d.ts +1 -1
- package/FrameGraph/Tasks/Rendering/cullObjectsTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +3 -3
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +33 -32
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +4 -2
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js +8 -12
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js +13 -18
- package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Texture/clearTextureTask.d.ts +15 -2
- package/FrameGraph/Tasks/Texture/clearTextureTask.js +17 -4
- package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -1
- package/FrameGraph/Tasks/Texture/copyToTextureTask.js +2 -2
- package/FrameGraph/Tasks/Texture/copyToTextureTask.js.map +1 -1
- package/FrameGraph/Tasks/Texture/generateMipMapsTask.js +3 -3
- package/FrameGraph/Tasks/Texture/generateMipMapsTask.js.map +1 -1
- package/FrameGraph/frameGraph.d.ts +11 -74
- package/FrameGraph/frameGraph.js +12 -126
- package/FrameGraph/frameGraph.js.map +1 -1
- package/FrameGraph/frameGraphRenderContext.d.ts +17 -8
- package/FrameGraph/frameGraphRenderContext.js +55 -43
- package/FrameGraph/frameGraphRenderContext.js.map +1 -1
- package/FrameGraph/frameGraphRenderTarget.d.ts +16 -0
- package/FrameGraph/frameGraphRenderTarget.js +67 -0
- package/FrameGraph/frameGraphRenderTarget.js.map +1 -0
- package/FrameGraph/frameGraphTask.d.ts +4 -3
- package/FrameGraph/frameGraphTask.js +41 -8
- package/FrameGraph/frameGraphTask.js.map +1 -1
- package/FrameGraph/frameGraphTextureManager.d.ts +130 -22
- package/FrameGraph/frameGraphTextureManager.js +312 -130
- package/FrameGraph/frameGraphTextureManager.js.map +1 -1
- package/FrameGraph/frameGraphTypes.d.ts +28 -13
- package/FrameGraph/frameGraphTypes.js.map +1 -1
- package/FrameGraph/index.d.ts +1 -0
- package/FrameGraph/index.js +1 -0
- package/FrameGraph/index.js.map +1 -1
- package/Helpers/environmentHelper.js.map +1 -1
- package/Layers/effectLayer.d.ts +1 -1
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/glowLayer.d.ts +1 -1
- package/Layers/glowLayer.js.map +1 -1
- package/Layers/highlightLayer.d.ts +1 -1
- package/Layers/highlightLayer.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Materials/Node/Blocks/conditionalBlock.d.ts +2 -0
- package/Materials/Node/Blocks/conditionalBlock.js +13 -0
- package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBlockConnectionPoint.js +12 -4
- package/Materials/Node/nodeMaterialBlockConnectionPoint.js.map +1 -1
- package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
- package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
- package/Materials/Textures/baseTexture.js.map +1 -1
- package/Materials/Textures/colorGradingTexture.js.map +1 -1
- package/Materials/Textures/internalTexture.d.ts +20 -0
- package/Materials/Textures/internalTexture.js +48 -0
- package/Materials/Textures/internalTexture.js.map +1 -1
- package/Materials/Textures/mirrorTexture.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.d.ts +5 -0
- package/Materials/Textures/multiRenderTarget.js.map +1 -1
- package/Materials/Textures/rawCubeTexture.d.ts +2 -2
- package/Materials/Textures/rawCubeTexture.js +2 -2
- package/Materials/Textures/rawCubeTexture.js.map +1 -1
- package/Materials/Textures/rawTexture.js.map +1 -1
- package/Materials/Textures/rawTexture2DArray.d.ts +1 -1
- package/Materials/Textures/rawTexture2DArray.js +1 -1
- package/Materials/Textures/rawTexture2DArray.js.map +1 -1
- package/Materials/Textures/rawTexture3D.d.ts +1 -1
- package/Materials/Textures/rawTexture3D.js +1 -1
- package/Materials/Textures/rawTexture3D.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.js.map +1 -1
- package/Materials/Textures/textureCreationOptions.d.ts +6 -6
- package/Materials/Textures/textureCreationOptions.js.map +1 -1
- package/Materials/drawWrapper.d.ts +6 -1
- package/Materials/drawWrapper.js +18 -2
- package/Materials/drawWrapper.js.map +1 -1
- package/Materials/effect.d.ts +6 -1
- package/Materials/effect.functions.d.ts +5 -0
- package/Materials/effect.functions.js +19 -0
- package/Materials/effect.functions.js.map +1 -1
- package/Materials/effect.js +22 -20
- package/Materials/effect.js.map +1 -1
- package/Materials/effect.webgl.functions.js +12 -4
- package/Materials/effect.webgl.functions.js.map +1 -1
- package/Maths/math.color.d.ts +16 -0
- package/Maths/math.color.js +16 -0
- package/Maths/math.color.js.map +1 -1
- package/Maths/math.vector.d.ts +32 -0
- package/Maths/math.vector.js +32 -0
- package/Maths/math.vector.js.map +1 -1
- package/Meshes/Compression/dracoCompression.d.ts +3 -1
- package/Meshes/Compression/dracoCompression.js +5 -2
- package/Meshes/Compression/dracoCompression.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +2 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +1 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
- package/Meshes/Node/Blocks/Matrices/rotationXBlock.d.ts +0 -1
- package/Meshes/Node/Blocks/Matrices/rotationXBlock.js +1 -9
- package/Meshes/Node/Blocks/Matrices/rotationXBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Matrices/rotationYBlock.d.ts +0 -1
- package/Meshes/Node/Blocks/Matrices/rotationYBlock.js +1 -9
- package/Meshes/Node/Blocks/Matrices/rotationYBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Matrices/rotationZBlock.d.ts +0 -1
- package/Meshes/Node/Blocks/Matrices/rotationZBlock.js +1 -9
- package/Meshes/Node/Blocks/Matrices/rotationZBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Set/latticeBlock.js +3 -1
- package/Meshes/Node/Blocks/Set/latticeBlock.js.map +1 -1
- package/Meshes/Node/Blocks/conditionBlock.d.ts +2 -0
- package/Meshes/Node/Blocks/conditionBlock.js +15 -0
- package/Meshes/Node/Blocks/conditionBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometryClampBlock.d.ts +4 -4
- package/Meshes/Node/Blocks/geometryClampBlock.js +16 -25
- package/Meshes/Node/Blocks/geometryClampBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometryLerpBlock.js +2 -2
- package/Meshes/Node/Blocks/geometryLerpBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometryNLerpBlock.js +2 -2
- package/Meshes/Node/Blocks/geometryNLerpBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometryReplaceColorBlock.js +2 -2
- package/Meshes/Node/Blocks/geometryReplaceColorBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometryRotate2dBlock.js +2 -2
- package/Meshes/Node/Blocks/geometryRotate2dBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometrySmoothStepBlock.js +3 -3
- package/Meshes/Node/Blocks/geometrySmoothStepBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometryStepBlock.js +2 -2
- package/Meshes/Node/Blocks/geometryStepBlock.js.map +1 -1
- package/Meshes/Node/nodeGeometry.js +1 -1
- package/Meshes/Node/nodeGeometry.js.map +1 -1
- package/Meshes/Node/nodeGeometryBlock.d.ts +3 -1
- package/Meshes/Node/nodeGeometryBlock.js +2 -1
- package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
- package/Meshes/Node/nodeGeometryBlockConnectionPoint.js +10 -2
- package/Meshes/Node/nodeGeometryBlockConnectionPoint.js.map +1 -1
- package/Meshes/abstractMesh.d.ts +5 -3
- package/Meshes/abstractMesh.js +9 -7
- package/Meshes/abstractMesh.js.map +1 -1
- package/Meshes/subMesh.d.ts +5 -3
- package/Meshes/subMesh.js +9 -7
- package/Meshes/subMesh.js.map +1 -1
- package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js.map +1 -1
- package/Misc/dds.d.ts +1 -1
- package/Misc/dds.js.map +1 -1
- package/Misc/environmentTextureTools.js.map +1 -1
- package/Misc/observable.d.ts +1 -3
- package/Misc/observable.js +9 -7
- package/Misc/observable.js.map +1 -1
- package/Misc/screenshotTools.js.map +1 -1
- package/Misc/snapshotRenderingHelper.js +3 -0
- package/Misc/snapshotRenderingHelper.js.map +1 -1
- package/Misc/textureTools.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.d.ts +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
- package/PostProcesses/bloomMergePostProcess.js.map +1 -1
- package/PostProcesses/blurPostProcess.js.map +1 -1
- package/PostProcesses/chromaticAberrationPostProcess.js.map +1 -1
- package/PostProcesses/circleOfConfusionPostProcess.js.map +1 -1
- package/PostProcesses/convolutionPostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
- package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
- package/PostProcesses/fxaaPostProcess.js.map +1 -1
- package/PostProcesses/grainPostProcess.js.map +1 -1
- package/PostProcesses/highlightsPostProcess.d.ts +1 -1
- package/PostProcesses/highlightsPostProcess.js +1 -1
- package/PostProcesses/highlightsPostProcess.js.map +1 -1
- package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/motionBlurPostProcess.js.map +1 -1
- package/PostProcesses/passPostProcess.js.map +1 -1
- package/PostProcesses/postProcess.d.ts +1 -1
- package/PostProcesses/postProcess.js.map +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
- package/PostProcesses/sharpenPostProcess.js.map +1 -1
- package/PostProcesses/subSurfaceScatteringPostProcess.js.map +1 -1
- package/PostProcesses/tonemapPostProcess.d.ts +1 -1
- package/PostProcesses/tonemapPostProcess.js +1 -1
- package/PostProcesses/tonemapPostProcess.js.map +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsImportanceSamplingRenderer.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.js.map +1 -1
- package/Rendering/prePassRenderer.js.map +1 -1
- package/ShadersWGSL/pbr.fragment.js +4 -3
- package/ShadersWGSL/pbr.fragment.js.map +1 -1
- package/package.json +1 -1
package/Engines/thinEngine.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createPipelineContext, createRawShaderProgram, createShaderProgram, _finalizePipelineContext, _preparePipelineContext, _setProgram, _executeWhenRenderingStateIsCompiled, getStateObject, _createShaderProgram, deleteStateObject, } from "./thinEngine.functions.js";
|
|
1
|
+
import { createPipelineContext, createRawShaderProgram, createShaderProgram, _finalizePipelineContext, _preparePipelineContext, _setProgram, _executeWhenRenderingStateIsCompiled, getStateObject, _createShaderProgram, deleteStateObject, _isRenderingStateCompiled, } from "./thinEngine.functions.js";
|
|
2
2
|
import { IsWrapper } from "../Materials/drawWrapper.functions.js";
|
|
3
3
|
import { Logger } from "../Misc/logger.js";
|
|
4
4
|
import { IsWindowObjectExist } from "../Misc/domManagement.js";
|
|
@@ -9,7 +9,7 @@ import { GetExponentOfTwo } from "../Misc/tools.functions.js";
|
|
|
9
9
|
import { AbstractEngine } from "./abstractEngine.js";
|
|
10
10
|
|
|
11
11
|
import { WebGLHardwareTexture } from "./WebGL/webGLHardwareTexture.js";
|
|
12
|
-
import { InternalTexture } from "../Materials/Textures/internalTexture.js";
|
|
12
|
+
import { InternalTexture, IsDepthTexture, HasStencilAspect } from "../Materials/Textures/internalTexture.js";
|
|
13
13
|
import { Effect } from "../Materials/effect.js";
|
|
14
14
|
import { _ConcatenateShader, _getGlobalDefines } from "./abstractEngine.functions.js";
|
|
15
15
|
import { resetCachedPipeline } from "../Materials/effect.functions.js";
|
|
@@ -365,6 +365,7 @@ export class ThinEngine extends AbstractEngine {
|
|
|
365
365
|
textureMaxLevel: this._webGLVersion > 1,
|
|
366
366
|
texture2DArrayMaxLayerCount: this._webGLVersion > 1 ? this._gl.getParameter(this._gl.MAX_ARRAY_TEXTURE_LAYERS) : 128,
|
|
367
367
|
disableMorphTargetTexture: false,
|
|
368
|
+
textureNorm16: this._gl.getExtension("EXT_texture_norm16") ? true : false,
|
|
368
369
|
};
|
|
369
370
|
this._caps.supportFloatTexturesResolve = this._caps.colorBufferFloat;
|
|
370
371
|
this._caps.rg11b10ufColorRenderable = this._caps.colorBufferFloat;
|
|
@@ -409,6 +410,16 @@ export class ThinEngine extends AbstractEngine {
|
|
|
409
410
|
this._caps.textureFloatRender = this._caps.textureFloat && this._canRenderToFloatFramebuffer() ? true : false;
|
|
410
411
|
this._caps.textureHalfFloatLinearFiltering =
|
|
411
412
|
this._webGLVersion > 1 || (this._caps.textureHalfFloat && this._gl.getExtension("OES_texture_half_float_linear")) ? true : false;
|
|
413
|
+
if (this._caps.textureNorm16) {
|
|
414
|
+
this._gl.R16_EXT = 0x822a;
|
|
415
|
+
this._gl.RG16_EXT = 0x822c;
|
|
416
|
+
this._gl.RGB16_EXT = 0x8054;
|
|
417
|
+
this._gl.RGBA16_EXT = 0x805b;
|
|
418
|
+
this._gl.R16_SNORM_EXT = 0x8f98;
|
|
419
|
+
this._gl.RG16_SNORM_EXT = 0x8f99;
|
|
420
|
+
this._gl.RGB16_SNORM_EXT = 0x8f9a;
|
|
421
|
+
this._gl.RGBA16_SNORM_EXT = 0x8f9b;
|
|
422
|
+
}
|
|
412
423
|
// Compressed formats
|
|
413
424
|
if (this._caps.astc) {
|
|
414
425
|
this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR = this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR;
|
|
@@ -885,20 +896,21 @@ export class ThinEngine extends AbstractEngine {
|
|
|
885
896
|
unBindFramebuffer(texture, disableGenerateMipMaps = false, onBeforeUnbind) {
|
|
886
897
|
const webglRTWrapper = texture;
|
|
887
898
|
this._currentRenderTarget = null;
|
|
888
|
-
|
|
889
|
-
const gl = this._gl;
|
|
890
|
-
if (webglRTWrapper._MSAAFramebuffer) {
|
|
899
|
+
if (!webglRTWrapper.disableAutomaticMSAAResolve) {
|
|
891
900
|
if (texture.isMulti) {
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
901
|
+
this.resolveMultiFramebuffer(texture);
|
|
902
|
+
}
|
|
903
|
+
else {
|
|
904
|
+
this.resolveFramebuffer(texture);
|
|
895
905
|
}
|
|
896
|
-
gl.bindFramebuffer(gl.READ_FRAMEBUFFER, webglRTWrapper._MSAAFramebuffer);
|
|
897
|
-
gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, webglRTWrapper._framebuffer);
|
|
898
|
-
gl.blitFramebuffer(0, 0, texture.width, texture.height, 0, 0, texture.width, texture.height, gl.COLOR_BUFFER_BIT, gl.NEAREST);
|
|
899
906
|
}
|
|
900
|
-
if (
|
|
901
|
-
|
|
907
|
+
if (!disableGenerateMipMaps) {
|
|
908
|
+
if (texture.isMulti) {
|
|
909
|
+
this.generateMipMapsMultiFramebuffer(texture);
|
|
910
|
+
}
|
|
911
|
+
else {
|
|
912
|
+
this.generateMipMapsFramebuffer(texture);
|
|
913
|
+
}
|
|
902
914
|
}
|
|
903
915
|
if (onBeforeUnbind) {
|
|
904
916
|
if (webglRTWrapper._MSAAFramebuffer) {
|
|
@@ -909,6 +921,33 @@ export class ThinEngine extends AbstractEngine {
|
|
|
909
921
|
}
|
|
910
922
|
this._bindUnboundFramebuffer(null);
|
|
911
923
|
}
|
|
924
|
+
/**
|
|
925
|
+
* Generates mipmaps for the texture of the (single) render target
|
|
926
|
+
* @param texture The render target containing the texture to generate the mipmaps for
|
|
927
|
+
*/
|
|
928
|
+
generateMipMapsFramebuffer(texture) {
|
|
929
|
+
if (!texture.isMulti && texture.texture?.generateMipMaps && !texture.isCube) {
|
|
930
|
+
this.generateMipmaps(texture.texture);
|
|
931
|
+
}
|
|
932
|
+
}
|
|
933
|
+
/**
|
|
934
|
+
* Resolves the MSAA texture of the (single) render target into its non-MSAA version.
|
|
935
|
+
* Note that if "texture" is not a MSAA render target, no resolve is performed.
|
|
936
|
+
* @param texture The render target texture containing the MSAA textures to resolve
|
|
937
|
+
*/
|
|
938
|
+
resolveFramebuffer(texture) {
|
|
939
|
+
const rtWrapper = texture;
|
|
940
|
+
const gl = this._gl;
|
|
941
|
+
if (!rtWrapper._MSAAFramebuffer || rtWrapper.isMulti) {
|
|
942
|
+
return;
|
|
943
|
+
}
|
|
944
|
+
let bufferBits = rtWrapper.resolveMSAAColors ? gl.COLOR_BUFFER_BIT : 0;
|
|
945
|
+
bufferBits |= rtWrapper._generateDepthBuffer && rtWrapper.resolveMSAADepth ? gl.DEPTH_BUFFER_BIT : 0;
|
|
946
|
+
bufferBits |= rtWrapper._generateStencilBuffer && rtWrapper.resolveMSAAStencil ? gl.STENCIL_BUFFER_BIT : 0;
|
|
947
|
+
gl.bindFramebuffer(gl.READ_FRAMEBUFFER, rtWrapper._MSAAFramebuffer);
|
|
948
|
+
gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, rtWrapper._framebuffer);
|
|
949
|
+
gl.blitFramebuffer(0, 0, texture.width, texture.height, 0, 0, texture.width, texture.height, bufferBits, gl.NEAREST);
|
|
950
|
+
}
|
|
912
951
|
/**
|
|
913
952
|
* Force a webGL flush (ie. a flush of all waiting webGL commands)
|
|
914
953
|
*/
|
|
@@ -1666,15 +1705,10 @@ export class ThinEngine extends AbstractEngine {
|
|
|
1666
1705
|
* @internal
|
|
1667
1706
|
*/
|
|
1668
1707
|
_isRenderingStateCompiled(pipelineContext) {
|
|
1669
|
-
|
|
1670
|
-
if (this._isDisposed || webGLPipelineContext._isDisposed) {
|
|
1708
|
+
if (this._isDisposed) {
|
|
1671
1709
|
return false;
|
|
1672
1710
|
}
|
|
1673
|
-
|
|
1674
|
-
this._finalizePipelineContext(webGLPipelineContext);
|
|
1675
|
-
return true;
|
|
1676
|
-
}
|
|
1677
|
-
return false;
|
|
1711
|
+
return _isRenderingStateCompiled(pipelineContext, this._gl, this.validateShaderPrograms);
|
|
1678
1712
|
}
|
|
1679
1713
|
/**
|
|
1680
1714
|
* @internal
|
|
@@ -2286,20 +2320,26 @@ export class ThinEngine extends AbstractEngine {
|
|
|
2286
2320
|
*/
|
|
2287
2321
|
_createInternalTexture(size, options, delayGPUTextureCreation = true, source = 0 /* InternalTextureSource.Unknown */) {
|
|
2288
2322
|
let generateMipMaps = false;
|
|
2323
|
+
let createMipMaps = false;
|
|
2289
2324
|
let type = 0;
|
|
2290
2325
|
let samplingMode = 3;
|
|
2291
2326
|
let format = 5;
|
|
2292
2327
|
let useSRGBBuffer = false;
|
|
2293
2328
|
let samples = 1;
|
|
2294
2329
|
let label;
|
|
2330
|
+
let createMSAATexture = false;
|
|
2331
|
+
let comparisonFunction = 0;
|
|
2295
2332
|
if (options !== undefined && typeof options === "object") {
|
|
2296
2333
|
generateMipMaps = !!options.generateMipMaps;
|
|
2334
|
+
createMipMaps = !!options.createMipMaps;
|
|
2297
2335
|
type = options.type === undefined ? 0 : options.type;
|
|
2298
2336
|
samplingMode = options.samplingMode === undefined ? 3 : options.samplingMode;
|
|
2299
2337
|
format = options.format === undefined ? 5 : options.format;
|
|
2300
2338
|
useSRGBBuffer = options.useSRGBBuffer === undefined ? false : options.useSRGBBuffer;
|
|
2301
2339
|
samples = options.samples ?? 1;
|
|
2302
2340
|
label = options.label;
|
|
2341
|
+
createMSAATexture = !!options.createMSAATexture;
|
|
2342
|
+
comparisonFunction = options.comparisonFunction || 0;
|
|
2303
2343
|
}
|
|
2304
2344
|
else {
|
|
2305
2345
|
generateMipMaps = !!options;
|
|
@@ -2317,17 +2357,21 @@ export class ThinEngine extends AbstractEngine {
|
|
|
2317
2357
|
type = 0;
|
|
2318
2358
|
Logger.Warn("Float textures are not supported. Type forced to TEXTURETYPE_UNSIGNED_BYTE");
|
|
2319
2359
|
}
|
|
2360
|
+
const isDepthTexture = IsDepthTexture(format);
|
|
2361
|
+
const hasStencil = HasStencilAspect(format);
|
|
2320
2362
|
const gl = this._gl;
|
|
2321
2363
|
const texture = new InternalTexture(this, source);
|
|
2322
2364
|
const width = size.width || size;
|
|
2323
2365
|
const height = size.height || size;
|
|
2324
2366
|
const depth = size.depth || 0;
|
|
2325
2367
|
const layers = size.layers || 0;
|
|
2326
|
-
const filters = this._getSamplingParameters(samplingMode, generateMipMaps);
|
|
2368
|
+
const filters = this._getSamplingParameters(samplingMode, (generateMipMaps || createMipMaps) && !isDepthTexture);
|
|
2327
2369
|
const target = layers !== 0 ? gl.TEXTURE_2D_ARRAY : depth !== 0 ? gl.TEXTURE_3D : gl.TEXTURE_2D;
|
|
2328
|
-
const sizedFormat =
|
|
2329
|
-
|
|
2330
|
-
|
|
2370
|
+
const sizedFormat = isDepthTexture
|
|
2371
|
+
? this._getInternalFormatFromDepthTextureFormat(format, true, hasStencil)
|
|
2372
|
+
: this._getRGBABufferInternalSizedFormat(type, format, useSRGBBuffer);
|
|
2373
|
+
const internalFormat = isDepthTexture ? (hasStencil ? gl.DEPTH_STENCIL : gl.DEPTH_COMPONENT) : this._getInternalFormat(format);
|
|
2374
|
+
const textureType = isDepthTexture ? this._getWebGLTextureTypeFromDepthTextureFormat(format) : this._getWebGLTextureType(type);
|
|
2331
2375
|
// Bind
|
|
2332
2376
|
this._bindTextureDirectly(target, texture);
|
|
2333
2377
|
if (layers !== 0) {
|
|
@@ -2345,8 +2389,18 @@ export class ThinEngine extends AbstractEngine {
|
|
|
2345
2389
|
gl.texParameteri(target, gl.TEXTURE_MIN_FILTER, filters.min);
|
|
2346
2390
|
gl.texParameteri(target, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
2347
2391
|
gl.texParameteri(target, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
2392
|
+
if (isDepthTexture && this.webGLVersion > 1) {
|
|
2393
|
+
if (comparisonFunction === 0) {
|
|
2394
|
+
gl.texParameteri(target, gl.TEXTURE_COMPARE_FUNC, 515);
|
|
2395
|
+
gl.texParameteri(target, gl.TEXTURE_COMPARE_MODE, gl.NONE);
|
|
2396
|
+
}
|
|
2397
|
+
else {
|
|
2398
|
+
gl.texParameteri(target, gl.TEXTURE_COMPARE_FUNC, comparisonFunction);
|
|
2399
|
+
gl.texParameteri(target, gl.TEXTURE_COMPARE_MODE, gl.COMPARE_REF_TO_TEXTURE);
|
|
2400
|
+
}
|
|
2401
|
+
}
|
|
2348
2402
|
// MipMaps
|
|
2349
|
-
if (generateMipMaps) {
|
|
2403
|
+
if (generateMipMaps || createMipMaps) {
|
|
2350
2404
|
this._gl.generateMipmap(target);
|
|
2351
2405
|
}
|
|
2352
2406
|
this._bindTextureDirectly(target, null);
|
|
@@ -2355,7 +2409,7 @@ export class ThinEngine extends AbstractEngine {
|
|
|
2355
2409
|
texture.baseHeight = height;
|
|
2356
2410
|
texture.width = width;
|
|
2357
2411
|
texture.height = height;
|
|
2358
|
-
texture.depth = layers;
|
|
2412
|
+
texture.depth = layers || depth;
|
|
2359
2413
|
texture.isReady = true;
|
|
2360
2414
|
texture.samples = samples;
|
|
2361
2415
|
texture.generateMipMaps = generateMipMaps;
|
|
@@ -2363,7 +2417,26 @@ export class ThinEngine extends AbstractEngine {
|
|
|
2363
2417
|
texture.type = type;
|
|
2364
2418
|
texture.format = format;
|
|
2365
2419
|
texture.label = label;
|
|
2420
|
+
texture.comparisonFunction = comparisonFunction;
|
|
2366
2421
|
this._internalTexturesCache.push(texture);
|
|
2422
|
+
if (createMSAATexture) {
|
|
2423
|
+
let renderBuffer = null;
|
|
2424
|
+
if (IsDepthTexture(texture.format)) {
|
|
2425
|
+
renderBuffer = this._setupFramebufferDepthAttachments(HasStencilAspect(texture.format), texture.format !== 19, texture.width, texture.height, samples, texture.format, true);
|
|
2426
|
+
}
|
|
2427
|
+
else {
|
|
2428
|
+
renderBuffer = this._createRenderBuffer(texture.width, texture.height, samples, -1 /* not used */, this._getRGBABufferInternalSizedFormat(texture.type, texture.format, texture._useSRGBBuffer), -1 /* attachment */);
|
|
2429
|
+
}
|
|
2430
|
+
if (!renderBuffer) {
|
|
2431
|
+
throw new Error("Unable to create render buffer");
|
|
2432
|
+
}
|
|
2433
|
+
texture._autoMSAAManagement = true;
|
|
2434
|
+
let hardwareTexture = texture._hardwareTexture;
|
|
2435
|
+
if (!hardwareTexture) {
|
|
2436
|
+
hardwareTexture = texture._hardwareTexture = this._createHardwareTexture();
|
|
2437
|
+
}
|
|
2438
|
+
hardwareTexture.addMSAARenderBuffer(renderBuffer);
|
|
2439
|
+
}
|
|
2367
2440
|
return texture;
|
|
2368
2441
|
}
|
|
2369
2442
|
/**
|
|
@@ -2759,22 +2832,42 @@ export class ThinEngine extends AbstractEngine {
|
|
|
2759
2832
|
}
|
|
2760
2833
|
return internalFormat;
|
|
2761
2834
|
}
|
|
2835
|
+
_getWebGLTextureTypeFromDepthTextureFormat(textureFormat) {
|
|
2836
|
+
const gl = this._gl;
|
|
2837
|
+
let type = gl.UNSIGNED_INT;
|
|
2838
|
+
if (textureFormat === 15) {
|
|
2839
|
+
type = gl.UNSIGNED_SHORT;
|
|
2840
|
+
}
|
|
2841
|
+
else if (textureFormat === 17 || textureFormat === 13) {
|
|
2842
|
+
type = gl.UNSIGNED_INT_24_8;
|
|
2843
|
+
}
|
|
2844
|
+
else if (textureFormat === 14) {
|
|
2845
|
+
type = gl.FLOAT;
|
|
2846
|
+
}
|
|
2847
|
+
else if (textureFormat === 18) {
|
|
2848
|
+
type = gl.FLOAT_32_UNSIGNED_INT_24_8_REV;
|
|
2849
|
+
}
|
|
2850
|
+
else if (textureFormat === 19) {
|
|
2851
|
+
type = gl.UNSIGNED_BYTE;
|
|
2852
|
+
}
|
|
2853
|
+
return type;
|
|
2854
|
+
}
|
|
2762
2855
|
/**
|
|
2763
2856
|
* @internal
|
|
2764
2857
|
*/
|
|
2765
|
-
_setupFramebufferDepthAttachments(generateStencilBuffer, generateDepthBuffer, width, height, samples = 1, depthTextureFormat) {
|
|
2858
|
+
_setupFramebufferDepthAttachments(generateStencilBuffer, generateDepthBuffer, width, height, samples = 1, depthTextureFormat, dontBindRenderBufferToFrameBuffer = false) {
|
|
2766
2859
|
const gl = this._gl;
|
|
2767
2860
|
depthTextureFormat = depthTextureFormat ?? (generateStencilBuffer ? 13 : 14);
|
|
2768
2861
|
const internalFormat = this._getInternalFormatFromDepthTextureFormat(depthTextureFormat, generateDepthBuffer, generateStencilBuffer);
|
|
2769
2862
|
// Create the depth/stencil buffer
|
|
2770
2863
|
if (generateStencilBuffer && generateDepthBuffer) {
|
|
2771
|
-
return this._createRenderBuffer(width, height, samples, gl.DEPTH_STENCIL, internalFormat, gl.DEPTH_STENCIL_ATTACHMENT);
|
|
2864
|
+
return this._createRenderBuffer(width, height, samples, gl.DEPTH_STENCIL, internalFormat, dontBindRenderBufferToFrameBuffer ? -1 : gl.DEPTH_STENCIL_ATTACHMENT);
|
|
2772
2865
|
}
|
|
2773
2866
|
if (generateDepthBuffer) {
|
|
2774
|
-
return this._createRenderBuffer(width, height, samples, internalFormat, internalFormat, gl.DEPTH_ATTACHMENT);
|
|
2867
|
+
return this._createRenderBuffer(width, height, samples, internalFormat, internalFormat, dontBindRenderBufferToFrameBuffer ? -1 : gl.DEPTH_ATTACHMENT);
|
|
2775
2868
|
}
|
|
2776
2869
|
if (generateStencilBuffer) {
|
|
2777
|
-
return this._createRenderBuffer(width, height, samples, internalFormat, internalFormat, gl.STENCIL_ATTACHMENT);
|
|
2870
|
+
return this._createRenderBuffer(width, height, samples, internalFormat, internalFormat, dontBindRenderBufferToFrameBuffer ? -1 : gl.STENCIL_ATTACHMENT);
|
|
2778
2871
|
}
|
|
2779
2872
|
return null;
|
|
2780
2873
|
}
|
|
@@ -2795,7 +2888,9 @@ export class ThinEngine extends AbstractEngine {
|
|
|
2795
2888
|
else {
|
|
2796
2889
|
gl.renderbufferStorage(gl.RENDERBUFFER, internalFormat, width, height);
|
|
2797
2890
|
}
|
|
2798
|
-
|
|
2891
|
+
if (attachment !== -1) {
|
|
2892
|
+
gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachment, gl.RENDERBUFFER, renderBuffer);
|
|
2893
|
+
}
|
|
2799
2894
|
if (unbindBuffer) {
|
|
2800
2895
|
gl.bindRenderbuffer(gl.RENDERBUFFER, null);
|
|
2801
2896
|
}
|
|
@@ -3123,7 +3218,7 @@ export class ThinEngine extends AbstractEngine {
|
|
|
3123
3218
|
const keys = Object.keys(this._compiledEffects);
|
|
3124
3219
|
for (const name of keys) {
|
|
3125
3220
|
const effect = this._compiledEffects[name];
|
|
3126
|
-
effect.dispose();
|
|
3221
|
+
effect.dispose(true);
|
|
3127
3222
|
}
|
|
3128
3223
|
this._compiledEffects = {};
|
|
3129
3224
|
}
|
|
@@ -3311,15 +3406,23 @@ export class ThinEngine extends AbstractEngine {
|
|
|
3311
3406
|
internalFormat = this._gl.LUMINANCE_ALPHA;
|
|
3312
3407
|
break;
|
|
3313
3408
|
case 6:
|
|
3409
|
+
case 33322:
|
|
3410
|
+
case 36760:
|
|
3314
3411
|
internalFormat = this._gl.RED;
|
|
3315
3412
|
break;
|
|
3316
3413
|
case 7:
|
|
3414
|
+
case 33324:
|
|
3415
|
+
case 36761:
|
|
3317
3416
|
internalFormat = this._gl.RG;
|
|
3318
3417
|
break;
|
|
3319
3418
|
case 4:
|
|
3419
|
+
case 32852:
|
|
3420
|
+
case 36762:
|
|
3320
3421
|
internalFormat = useSRGBBuffer ? this._glSRGBExtensionValues.SRGB : this._gl.RGB;
|
|
3321
3422
|
break;
|
|
3322
3423
|
case 5:
|
|
3424
|
+
case 32859:
|
|
3425
|
+
case 36763:
|
|
3323
3426
|
internalFormat = useSRGBBuffer ? this._glSRGBExtensionValues.SRGB8_ALPHA8 : this._gl.RGBA;
|
|
3324
3427
|
break;
|
|
3325
3428
|
}
|
|
@@ -3411,6 +3514,14 @@ export class ThinEngine extends AbstractEngine {
|
|
|
3411
3514
|
switch (format) {
|
|
3412
3515
|
case 8:
|
|
3413
3516
|
return this._gl.R16I;
|
|
3517
|
+
case 36760:
|
|
3518
|
+
return this._gl.R16_SNORM_EXT;
|
|
3519
|
+
case 36761:
|
|
3520
|
+
return this._gl.RG16_SNORM_EXT;
|
|
3521
|
+
case 36762:
|
|
3522
|
+
return this._gl.RGB16_SNORM_EXT;
|
|
3523
|
+
case 36763:
|
|
3524
|
+
return this._gl.RGBA16_SNORM_EXT;
|
|
3414
3525
|
case 9:
|
|
3415
3526
|
return this._gl.RG16I;
|
|
3416
3527
|
case 10:
|
|
@@ -3424,6 +3535,14 @@ export class ThinEngine extends AbstractEngine {
|
|
|
3424
3535
|
switch (format) {
|
|
3425
3536
|
case 8:
|
|
3426
3537
|
return this._gl.R16UI;
|
|
3538
|
+
case 33322:
|
|
3539
|
+
return this._gl.R16_EXT;
|
|
3540
|
+
case 33324:
|
|
3541
|
+
return this._gl.RG16_EXT;
|
|
3542
|
+
case 32852:
|
|
3543
|
+
return this._gl.RGB16_EXT;
|
|
3544
|
+
case 32859:
|
|
3545
|
+
return this._gl.RGBA16_EXT;
|
|
3427
3546
|
case 9:
|
|
3428
3547
|
return this._gl.RG16UI;
|
|
3429
3548
|
case 10:
|