24b645a4cef82ce68a835907c1f91637a53e463a265594cfd9b90baa1cb5fa0e.json 55 KB

1
  1. {"ast":null,"code":"import { InternalTexture } from \"../../Materials/Textures/internalTexture.js\";\nimport { Logger } from \"../../Misc/logger.js\";\nimport { ThinEngine } from \"../thinEngine.js\";\nThinEngine.prototype.restoreSingleAttachment = function () {\n const gl = this._gl;\n this.bindAttachments([gl.BACK]);\n};\nThinEngine.prototype.restoreSingleAttachmentForRenderTarget = function () {\n const gl = this._gl;\n this.bindAttachments([gl.COLOR_ATTACHMENT0]);\n};\nThinEngine.prototype.buildTextureLayout = function (textureStatus) {\n const gl = this._gl;\n const result = [];\n for (let i = 0; i < textureStatus.length; i++) {\n if (textureStatus[i]) {\n result.push(gl[\"COLOR_ATTACHMENT\" + i]);\n } else {\n result.push(gl.NONE);\n }\n }\n return result;\n};\nThinEngine.prototype.bindAttachments = function (attachments) {\n const gl = this._gl;\n gl.drawBuffers(attachments);\n};\nThinEngine.prototype.unBindMultiColorAttachmentFramebuffer = function (rtWrapper, disableGenerateMipMaps = false, onBeforeUnbind) {\n this._currentRenderTarget = null;\n if (!rtWrapper.disableAutomaticMSAAResolve) {\n this.resolveMultiFramebuffer(rtWrapper);\n }\n if (!disableGenerateMipMaps) {\n this.generateMipMapsMultiFramebuffer(rtWrapper);\n }\n if (onBeforeUnbind) {\n if (rtWrapper._MSAAFramebuffer) {\n // Bind the correct framebuffer\n this._bindUnboundFramebuffer(rtWrapper._framebuffer);\n }\n onBeforeUnbind();\n }\n this._bindUnboundFramebuffer(null);\n};\nThinEngine.prototype.createMultipleRenderTarget = function (size, options, initializeBuffers = true) {\n var _size$width, _size$height, _options$label;\n let generateMipMaps = false;\n let generateDepthBuffer = true;\n let generateStencilBuffer = false;\n let generateDepthTexture = false;\n let depthTextureFormat = undefined;\n let textureCount = 1;\n let samples = 1;\n const defaultType = 0;\n const defaultSamplingMode = 3;\n const defaultUseSRGBBuffer = false;\n const defaultFormat = 5;\n const defaultTarget = 3553;\n let types = [];\n let samplingModes = [];\n let useSRGBBuffers = [];\n let formats = [];\n let targets = [];\n let faceIndex = [];\n let layerIndex = [];\n let layers = [];\n let labels = [];\n let dontCreateTextures = false;\n const rtWrapper = this._createHardwareRenderTargetWrapper(true, false, size);\n if (options !== undefined) {\n var _options$textureCount, _options$samples, _options$dontCreateTe;\n generateMipMaps = options.generateMipMaps === undefined ? false : options.generateMipMaps;\n generateDepthBuffer = options.generateDepthBuffer === undefined ? true : options.generateDepthBuffer;\n generateStencilBuffer = options.generateStencilBuffer === undefined ? false : options.generateStencilBuffer;\n generateDepthTexture = options.generateDepthTexture === undefined ? false : options.generateDepthTexture;\n textureCount = (_options$textureCount = options.textureCount) !== null && _options$textureCount !== void 0 ? _options$textureCount : 1;\n samples = (_options$samples = options.samples) !== null && _options$samples !== void 0 ? _options$samples : samples;\n types = options.types || types;\n samplingModes = options.samplingModes || samplingModes;\n useSRGBBuffers = options.useSRGBBuffers || useSRGBBuffers;\n formats = options.formats || formats;\n targets = options.targetTypes || targets;\n faceIndex = options.faceIndex || faceIndex;\n layerIndex = options.layerIndex || layerIndex;\n layers = options.layerCounts || layers;\n labels = options.labels || labels;\n dontCreateTextures = (_options$dontCreateTe = options.dontCreateTextures) !== null && _options$dontCreateTe !== void 0 ? _options$dontCreateTe : false;\n if (this.webGLVersion > 1 && (options.depthTextureFormat === 13 || options.depthTextureFormat === 17 || options.depthTextureFormat === 16 || options.depthTextureFormat === 14 || options.depthTextureFormat === 18)) {\n depthTextureFormat = options.depthTextureFormat;\n }\n }\n if (depthTextureFormat === undefined) {\n depthTextureFormat = generateStencilBuffer ? 13 : 14;\n }\n const gl = this._gl;\n // Create the framebuffer\n const framebuffer = gl.createFramebuffer();\n this._bindUnboundFramebuffer(framebuffer);\n const width = (_size$width = size.width) !== null && _size$width !== void 0 ? _size$width : size;\n const height = (_size$height = size.height) !== null && _size$height !== void 0 ? _size$height : size;\n const textures = [];\n const attachments = [];\n const useStencilTexture = this.webGLVersion > 1 && (depthTextureFormat === 13 || depthTextureFormat === 17 || depthTextureFormat === 18);\n rtWrapper.label = (_options$label = options === null || options === void 0 ? void 0 : options.label) !== null && _options$label !== void 0 ? _options$label : \"MultiRenderTargetWrapper\";\n rtWrapper._framebuffer = framebuffer;\n rtWrapper._generateDepthBuffer = generateDepthTexture || generateDepthBuffer;\n rtWrapper._generateStencilBuffer = generateDepthTexture ? useStencilTexture : generateStencilBuffer;\n rtWrapper._depthStencilBuffer = this._setupFramebufferDepthAttachments(rtWrapper._generateStencilBuffer, rtWrapper._generateDepthBuffer, width, height, 1, depthTextureFormat);\n rtWrapper._attachments = attachments;\n for (let i = 0; i < textureCount; i++) {\n var _layers$i, _labels$i;\n let samplingMode = samplingModes[i] || defaultSamplingMode;\n let type = types[i] || defaultType;\n let useSRGBBuffer = useSRGBBuffers[i] || defaultUseSRGBBuffer;\n const format = formats[i] || defaultFormat;\n const target = targets[i] || defaultTarget;\n const layerCount = (_layers$i = layers[i]) !== null && _layers$i !== void 0 ? _layers$i : 1;\n if (type === 1 && !this._caps.textureFloatLinearFiltering) {\n // if floating point linear (gl.FLOAT) then force to NEAREST_SAMPLINGMODE\n samplingMode = 1;\n } else if (type === 2 && !this._caps.textureHalfFloatLinearFiltering) {\n // if floating point linear (HALF_FLOAT) then force to NEAREST_SAMPLINGMODE\n samplingMode = 1;\n }\n const filters = this._getSamplingParameters(samplingMode, generateMipMaps);\n if (type === 1 && !this._caps.textureFloat) {\n type = 0;\n Logger.Warn(\"Float textures are not supported. Render target forced to TEXTURETYPE_UNSIGNED_BYTE type\");\n }\n useSRGBBuffer = useSRGBBuffer && this._caps.supportSRGBBuffers && (this.webGLVersion > 1 || this.isWebGPU);\n const isWebGL2 = this.webGLVersion > 1;\n const attachment = gl[isWebGL2 ? \"COLOR_ATTACHMENT\" + i : \"COLOR_ATTACHMENT\" + i + \"_WEBGL\"];\n attachments.push(attachment);\n if (target === -1 || dontCreateTextures) {\n continue;\n }\n const texture = new InternalTexture(this, 6 /* InternalTextureSource.MultiRenderTarget */);\n textures[i] = texture;\n gl.activeTexture(gl[\"TEXTURE\" + i]);\n gl.bindTexture(target, texture._hardwareTexture.underlyingResource);\n gl.texParameteri(target, gl.TEXTURE_MAG_FILTER, filters.mag);\n gl.texParameteri(target, gl.TEXTURE_MIN_FILTER, filters.min);\n gl.texParameteri(target, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(target, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n const internalSizedFormat = this._getRGBABufferInternalSizedFormat(type, format, useSRGBBuffer);\n const internalFormat = this._getInternalFormat(format);\n const webGLTextureType = this._getWebGLTextureType(type);\n if (isWebGL2 && (target === 35866 || target === 32879)) {\n if (target === 35866) {\n texture.is2DArray = true;\n } else {\n texture.is3D = true;\n }\n texture.baseDepth = texture.depth = layerCount;\n gl.texImage3D(target, 0, internalSizedFormat, width, height, layerCount, 0, internalFormat, webGLTextureType, null);\n } else if (target === 34067) {\n // We have to generate all faces to complete the framebuffer\n for (let i = 0; i < 6; i++) {\n gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, internalSizedFormat, width, height, 0, internalFormat, webGLTextureType, null);\n }\n texture.isCube = true;\n } else {\n gl.texImage2D(gl.TEXTURE_2D, 0, internalSizedFormat, width, height, 0, internalFormat, webGLTextureType, null);\n }\n if (generateMipMaps) {\n gl.generateMipmap(target);\n }\n // Unbind\n this._bindTextureDirectly(target, null);\n texture.baseWidth = width;\n texture.baseHeight = height;\n texture.width = width;\n texture.height = height;\n texture.isReady = true;\n texture.samples = 1;\n texture.generateMipMaps = generateMipMaps;\n texture.samplingMode = samplingMode;\n texture.type = type;\n texture._useSRGBBuffer = useSRGBBuffer;\n texture.format = format;\n texture.label = (_labels$i = labels[i]) !== null && _labels$i !== void 0 ? _labels$i : rtWrapper.label + \"-Texture\" + i;\n this._internalTexturesCache.push(texture);\n }\n if (generateDepthTexture && this._caps.depthTextureExtension && !dontCreateTextures) {\n // Depth texture\n const depthTexture = new InternalTexture(this, 14 /* InternalTextureSource.Depth */);\n let depthTextureType = 5;\n let glDepthTextureInternalFormat = gl.DEPTH_COMPONENT16;\n let glDepthTextureFormat = gl.DEPTH_COMPONENT;\n let glDepthTextureType = gl.UNSIGNED_SHORT;\n let glDepthTextureAttachment = gl.DEPTH_ATTACHMENT;\n if (this.webGLVersion < 2) {\n glDepthTextureInternalFormat = gl.DEPTH_COMPONENT;\n } else {\n if (depthTextureFormat === 14) {\n depthTextureType = 1;\n glDepthTextureType = gl.FLOAT;\n glDepthTextureInternalFormat = gl.DEPTH_COMPONENT32F;\n } else if (depthTextureFormat === 18) {\n depthTextureType = 0;\n glDepthTextureType = gl.FLOAT_32_UNSIGNED_INT_24_8_REV;\n glDepthTextureInternalFormat = gl.DEPTH32F_STENCIL8;\n glDepthTextureFormat = gl.DEPTH_STENCIL;\n glDepthTextureAttachment = gl.DEPTH_STENCIL_ATTACHMENT;\n } else if (depthTextureFormat === 16) {\n depthTextureType = 0;\n glDepthTextureType = gl.UNSIGNED_INT;\n glDepthTextureInternalFormat = gl.DEPTH_COMPONENT24;\n glDepthTextureAttachment = gl.DEPTH_ATTACHMENT;\n } else if (depthTextureFormat === 13 || depthTextureFormat === 17) {\n depthTextureType = 12;\n glDepthTextureType = gl.UNSIGNED_INT_24_8;\n glDepthTextureInternalFormat = gl.DEPTH24_STENCIL8;\n glDepthTextureFormat = gl.DEPTH_STENCIL;\n glDepthTextureAttachment = gl.DEPTH_STENCIL_ATTACHMENT;\n }\n }\n this._bindTextureDirectly(gl.TEXTURE_2D, depthTexture, true);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texImage2D(gl.TEXTURE_2D, 0, glDepthTextureInternalFormat, width, height, 0, glDepthTextureFormat, glDepthTextureType, null);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, glDepthTextureAttachment, gl.TEXTURE_2D, depthTexture._hardwareTexture.underlyingResource, 0);\n this._bindTextureDirectly(gl.TEXTURE_2D, null);\n rtWrapper._depthStencilTexture = depthTexture;\n rtWrapper._depthStencilTextureWithStencil = useStencilTexture;\n depthTexture.baseWidth = width;\n depthTexture.baseHeight = height;\n depthTexture.width = width;\n depthTexture.height = height;\n depthTexture.isReady = true;\n depthTexture.samples = 1;\n depthTexture.generateMipMaps = generateMipMaps;\n depthTexture.samplingMode = 1;\n depthTexture.format = depthTextureFormat;\n depthTexture.type = depthTextureType;\n depthTexture.label = rtWrapper.label + \"-DepthStencil\";\n textures[textureCount] = depthTexture;\n this._internalTexturesCache.push(depthTexture);\n }\n rtWrapper.setTextures(textures);\n if (initializeBuffers) {\n gl.drawBuffers(attachments);\n }\n this._bindUnboundFramebuffer(null);\n rtWrapper.setLayerAndFaceIndices(layerIndex, faceIndex);\n this.resetTextureCache();\n if (!dontCreateTextures) {\n this.updateMultipleRenderTargetTextureSampleCount(rtWrapper, samples, initializeBuffers);\n } else if (samples > 1) {\n const framebuffer = gl.createFramebuffer();\n if (!framebuffer) {\n throw new Error(\"Unable to create multi sampled framebuffer\");\n }\n rtWrapper._samples = samples;\n rtWrapper._MSAAFramebuffer = framebuffer;\n if (textureCount > 0 && initializeBuffers) {\n this._bindUnboundFramebuffer(framebuffer);\n gl.drawBuffers(attachments);\n this._bindUnboundFramebuffer(null);\n }\n }\n return rtWrapper;\n};\nThinEngine.prototype.updateMultipleRenderTargetTextureSampleCount = function (rtWrapper, samples, initializeBuffers = true) {\n if (this.webGLVersion < 2 || !rtWrapper) {\n return 1;\n }\n if (rtWrapper.samples === samples) {\n return samples;\n }\n const gl = this._gl;\n samples = Math.min(samples, this.getCaps().maxMSAASamples);\n // Dispose previous render buffers\n if (rtWrapper._depthStencilBuffer) {\n gl.deleteRenderbuffer(rtWrapper._depthStencilBuffer);\n rtWrapper._depthStencilBuffer = null;\n }\n if (rtWrapper._MSAAFramebuffer) {\n gl.deleteFramebuffer(rtWrapper._MSAAFramebuffer);\n rtWrapper._MSAAFramebuffer = null;\n }\n const count = rtWrapper._attachments.length; // We do it this way instead of rtWrapper.textures.length to avoid taking into account the depth/stencil texture, in case it has been created\n for (let i = 0; i < count; i++) {\n const texture = rtWrapper.textures[i];\n const hardwareTexture = texture._hardwareTexture;\n hardwareTexture === null || hardwareTexture === void 0 || hardwareTexture.releaseMSAARenderBuffers();\n }\n if (samples > 1 && typeof gl.renderbufferStorageMultisample === \"function\") {\n const framebuffer = gl.createFramebuffer();\n if (!framebuffer) {\n throw new Error(\"Unable to create multi sampled framebuffer\");\n }\n rtWrapper._MSAAFramebuffer = framebuffer;\n this._bindUnboundFramebuffer(framebuffer);\n const attachments = [];\n for (let i = 0; i < count; i++) {\n const texture = rtWrapper.textures[i];\n const hardwareTexture = texture._hardwareTexture;\n const attachment = gl[this.webGLVersion > 1 ? \"COLOR_ATTACHMENT\" + i : \"COLOR_ATTACHMENT\" + i + \"_WEBGL\"];\n const colorRenderbuffer = this._createRenderBuffer(texture.width, texture.height, samples, -1 /* not used */, this._getRGBABufferInternalSizedFormat(texture.type, texture.format, texture._useSRGBBuffer), attachment);\n if (!colorRenderbuffer) {\n throw new Error(\"Unable to create multi sampled framebuffer\");\n }\n hardwareTexture.addMSAARenderBuffer(colorRenderbuffer);\n texture.samples = samples;\n attachments.push(attachment);\n }\n if (initializeBuffers) {\n gl.drawBuffers(attachments);\n }\n } else {\n this._bindUnboundFramebuffer(rtWrapper._framebuffer);\n }\n const depthFormat = rtWrapper._depthStencilTexture ? rtWrapper._depthStencilTexture.format : undefined;\n rtWrapper._depthStencilBuffer = this._setupFramebufferDepthAttachments(rtWrapper._generateStencilBuffer, rtWrapper._generateDepthBuffer, rtWrapper.width, rtWrapper.height, samples, depthFormat);\n this._bindUnboundFramebuffer(null);\n rtWrapper._samples = samples;\n return samples;\n};\nThinEngine.prototype.generateMipMapsMultiFramebuffer = function (texture) {\n const rtWrapper = texture;\n const gl = this._gl;\n if (!rtWrapper.isMulti) {\n return;\n }\n for (let i = 0; i < rtWrapper._attachments.length; i++) {\n const texture = rtWrapper.textures[i];\n if (texture !== null && texture !== void 0 && texture.generateMipMaps && !(texture !== null && texture !== void 0 && texture.isCube) && !(texture !== null && texture !== void 0 && texture.is3D)) {\n this._bindTextureDirectly(gl.TEXTURE_2D, texture, true);\n gl.generateMipmap(gl.TEXTURE_2D);\n this._bindTextureDirectly(gl.TEXTURE_2D, null);\n }\n }\n};\nThinEngine.prototype.resolveMultiFramebuffer = function (texture) {\n const rtWrapper = texture;\n const gl = this._gl;\n if (!rtWrapper._MSAAFramebuffer || !rtWrapper.isMulti) {\n return;\n }\n let bufferBits = rtWrapper.resolveMSAAColors ? gl.COLOR_BUFFER_BIT : 0;\n bufferBits |= rtWrapper._generateDepthBuffer && rtWrapper.resolveMSAADepth ? gl.DEPTH_BUFFER_BIT : 0;\n bufferBits |= rtWrapper._generateStencilBuffer && rtWrapper.resolveMSAAStencil ? gl.STENCIL_BUFFER_BIT : 0;\n const attachments = rtWrapper._attachments;\n const count = attachments.length;\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, rtWrapper._MSAAFramebuffer);\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, rtWrapper._framebuffer);\n for (let i = 0; i < count; i++) {\n const texture = rtWrapper.textures[i];\n for (let j = 0; j < count; j++) {\n attachments[j] = gl.NONE;\n }\n attachments[i] = gl[this.webGLVersion > 1 ? \"COLOR_ATTACHMENT\" + i : \"COLOR_ATTACHMENT\" + i + \"_WEBGL\"];\n gl.readBuffer(attachments[i]);\n gl.drawBuffers(attachments);\n gl.blitFramebuffer(0, 0, texture.width, texture.height, 0, 0, texture.width, texture.height, bufferBits, gl.NEAREST);\n }\n for (let i = 0; i < count; i++) {\n attachments[i] = gl[this.webGLVersion > 1 ? \"COLOR_ATTACHMENT\" + i : \"COLOR_ATTACHMENT\" + i + \"_WEBGL\"];\n }\n gl.drawBuffers(attachments);\n};","map":{"version":3,"names":["InternalTexture","Logger","ThinEngine","prototype","restoreSingleAttachment","gl","_gl","bindAttachments","BACK","restoreSingleAttachmentForRenderTarget","COLOR_ATTACHMENT0","buildTextureLayout","textureStatus","result","i","length","push","NONE","attachments","drawBuffers","unBindMultiColorAttachmentFramebuffer","rtWrapper","disableGenerateMipMaps","onBeforeUnbind","_currentRenderTarget","disableAutomaticMSAAResolve","resolveMultiFramebuffer","generateMipMapsMultiFramebuffer","_MSAAFramebuffer","_bindUnboundFramebuffer","_framebuffer","createMultipleRenderTarget","size","options","initializeBuffers","_size$width","_size$height","_options$label","generateMipMaps","generateDepthBuffer","generateStencilBuffer","generateDepthTexture","depthTextureFormat","undefined","textureCount","samples","defaultType","defaultSamplingMode","defaultUseSRGBBuffer","defaultFormat","defaultTarget","types","samplingModes","useSRGBBuffers","formats","targets","faceIndex","layerIndex","layers","labels","dontCreateTextures","_createHardwareRenderTargetWrapper","_options$textureCount","_options$samples","_options$dontCreateTe","targetTypes","layerCounts","webGLVersion","framebuffer","createFramebuffer","width","height","textures","useStencilTexture","label","_generateDepthBuffer","_generateStencilBuffer","_depthStencilBuffer","_setupFramebufferDepthAttachments","_attachments","_layers$i","_labels$i","samplingMode","type","useSRGBBuffer","format","target","layerCount","_caps","textureFloatLinearFiltering","textureHalfFloatLinearFiltering","filters","_getSamplingParameters","textureFloat","Warn","supportSRGBBuffers","isWebGPU","isWebGL2","attachment","texture","activeTexture","bindTexture","_hardwareTexture","underlyingResource","texParameteri","TEXTURE_MAG_FILTER","mag","TEXTURE_MIN_FILTER","min","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","internalSizedFormat","_getRGBABufferInternalSizedFormat","internalFormat","_getInternalFormat","webGLTextureType","_getWebGLTextureType","is2DArray","is3D","baseDepth","depth","texImage3D","texImage2D","TEXTURE_CUBE_MAP_POSITIVE_X","isCube","TEXTURE_2D","generateMipmap","_bindTextureDirectly","baseWidth","baseHeight","isReady","_useSRGBBuffer","_internalTexturesCache","depthTextureExtension","depthTexture","depthTextureType","glDepthTextureInternalFormat","DEPTH_COMPONENT16","glDepthTextureFormat","DEPTH_COMPONENT","glDepthTextureType","UNSIGNED_SHORT","glDepthTextureAttachment","DEPTH_ATTACHMENT","FLOAT","DEPTH_COMPONENT32F","FLOAT_32_UNSIGNED_INT_24_8_REV","DEPTH32F_STENCIL8","DEPTH_STENCIL","DEPTH_STENCIL_ATTACHMENT","UNSIGNED_INT","DEPTH_COMPONENT24","UNSIGNED_INT_24_8","DEPTH24_STENCIL8","NEAREST","framebufferTexture2D","FRAMEBUFFER","_depthStencilTexture","_depthStencilTextureWithStencil","setTextures","setLayerAndFaceIndices","resetTextureCache","updateMultipleRenderTargetTextureSampleCount","Error","_samples","Math","getCaps","maxMSAASamples","deleteRenderbuffer","deleteFramebuffer","count","hardwareTexture","releaseMSAARenderBuffers","renderbufferStorageMultisample","colorRenderbuffer","_createRenderBuffer","addMSAARenderBuffer","depthFormat","isMulti","bufferBits","resolveMSAAColors","COLOR_BUFFER_BIT","resolveMSAADepth","DEPTH_BUFFER_BIT","resolveMSAAStencil","STENCIL_BUFFER_BIT","bindFramebuffer","READ_FRAMEBUFFER","DRAW_FRAMEBUFFER","j","readBuffer","blitFramebuffer"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Engines/Extensions/engine.multiRender.js"],"sourcesContent":["import { InternalTexture } from \"../../Materials/Textures/internalTexture.js\";\nimport { Logger } from \"../../Misc/logger.js\";\n\nimport { ThinEngine } from \"../thinEngine.js\";\nThinEngine.prototype.restoreSingleAttachment = function () {\n const gl = this._gl;\n this.bindAttachments([gl.BACK]);\n};\nThinEngine.prototype.restoreSingleAttachmentForRenderTarget = function () {\n const gl = this._gl;\n this.bindAttachments([gl.COLOR_ATTACHMENT0]);\n};\nThinEngine.prototype.buildTextureLayout = function (textureStatus) {\n const gl = this._gl;\n const result = [];\n for (let i = 0; i < textureStatus.length; i++) {\n if (textureStatus[i]) {\n result.push(gl[\"COLOR_ATTACHMENT\" + i]);\n }\n else {\n result.push(gl.NONE);\n }\n }\n return result;\n};\nThinEngine.prototype.bindAttachments = function (attachments) {\n const gl = this._gl;\n gl.drawBuffers(attachments);\n};\nThinEngine.prototype.unBindMultiColorAttachmentFramebuffer = function (rtWrapper, disableGenerateMipMaps = false, onBeforeUnbind) {\n this._currentRenderTarget = null;\n if (!rtWrapper.disableAutomaticMSAAResolve) {\n this.resolveMultiFramebuffer(rtWrapper);\n }\n if (!disableGenerateMipMaps) {\n this.generateMipMapsMultiFramebuffer(rtWrapper);\n }\n if (onBeforeUnbind) {\n if (rtWrapper._MSAAFramebuffer) {\n // Bind the correct framebuffer\n this._bindUnboundFramebuffer(rtWrapper._framebuffer);\n }\n onBeforeUnbind();\n }\n this._bindUnboundFramebuffer(null);\n};\nThinEngine.prototype.createMultipleRenderTarget = function (size, options, initializeBuffers = true) {\n let generateMipMaps = false;\n let generateDepthBuffer = true;\n let generateStencilBuffer = false;\n let generateDepthTexture = false;\n let depthTextureFormat = undefined;\n let textureCount = 1;\n let samples = 1;\n const defaultType = 0;\n const defaultSamplingMode = 3;\n const defaultUseSRGBBuffer = false;\n const defaultFormat = 5;\n const defaultTarget = 3553;\n let types = [];\n let samplingModes = [];\n let useSRGBBuffers = [];\n let formats = [];\n let targets = [];\n let faceIndex = [];\n let layerIndex = [];\n let layers = [];\n let labels = [];\n let dontCreateTextures = false;\n const rtWrapper = this._createHardwareRenderTargetWrapper(true, false, size);\n if (options !== undefined) {\n generateMipMaps = options.generateMipMaps === undefined ? false : options.generateMipMaps;\n generateDepthBuffer = options.generateDepthBuffer === undefined ? true : options.generateDepthBuffer;\n generateStencilBuffer = options.generateStencilBuffer === undefined ? false : options.generateStencilBuffer;\n generateDepthTexture = options.generateDepthTexture === undefined ? false : options.generateDepthTexture;\n textureCount = options.textureCount ?? 1;\n samples = options.samples ?? samples;\n types = options.types || types;\n samplingModes = options.samplingModes || samplingModes;\n useSRGBBuffers = options.useSRGBBuffers || useSRGBBuffers;\n formats = options.formats || formats;\n targets = options.targetTypes || targets;\n faceIndex = options.faceIndex || faceIndex;\n layerIndex = options.layerIndex || layerIndex;\n layers = options.layerCounts || layers;\n labels = options.labels || labels;\n dontCreateTextures = options.dontCreateTextures ?? false;\n if (this.webGLVersion > 1 &&\n (options.depthTextureFormat === 13 ||\n options.depthTextureFormat === 17 ||\n options.depthTextureFormat === 16 ||\n options.depthTextureFormat === 14 ||\n options.depthTextureFormat === 18)) {\n depthTextureFormat = options.depthTextureFormat;\n }\n }\n if (depthTextureFormat === undefined) {\n depthTextureFormat = generateStencilBuffer ? 13 : 14;\n }\n const gl = this._gl;\n // Create the framebuffer\n const framebuffer = gl.createFramebuffer();\n this._bindUnboundFramebuffer(framebuffer);\n const width = size.width ?? size;\n const height = size.height ?? size;\n const textures = [];\n const attachments = [];\n const useStencilTexture = this.webGLVersion > 1 &&\n (depthTextureFormat === 13 ||\n depthTextureFormat === 17 ||\n depthTextureFormat === 18);\n rtWrapper.label = options?.label ?? \"MultiRenderTargetWrapper\";\n rtWrapper._framebuffer = framebuffer;\n rtWrapper._generateDepthBuffer = generateDepthTexture || generateDepthBuffer;\n rtWrapper._generateStencilBuffer = generateDepthTexture ? useStencilTexture : generateStencilBuffer;\n rtWrapper._depthStencilBuffer = this._setupFramebufferDepthAttachments(rtWrapper._generateStencilBuffer, rtWrapper._generateDepthBuffer, width, height, 1, depthTextureFormat);\n rtWrapper._attachments = attachments;\n for (let i = 0; i < textureCount; i++) {\n let samplingMode = samplingModes[i] || defaultSamplingMode;\n let type = types[i] || defaultType;\n let useSRGBBuffer = useSRGBBuffers[i] || defaultUseSRGBBuffer;\n const format = formats[i] || defaultFormat;\n const target = targets[i] || defaultTarget;\n const layerCount = layers[i] ?? 1;\n if (type === 1 && !this._caps.textureFloatLinearFiltering) {\n // if floating point linear (gl.FLOAT) then force to NEAREST_SAMPLINGMODE\n samplingMode = 1;\n }\n else if (type === 2 && !this._caps.textureHalfFloatLinearFiltering) {\n // if floating point linear (HALF_FLOAT) then force to NEAREST_SAMPLINGMODE\n samplingMode = 1;\n }\n const filters = this._getSamplingParameters(samplingMode, generateMipMaps);\n if (type === 1 && !this._caps.textureFloat) {\n type = 0;\n Logger.Warn(\"Float textures are not supported. Render target forced to TEXTURETYPE_UNSIGNED_BYTE type\");\n }\n useSRGBBuffer = useSRGBBuffer && this._caps.supportSRGBBuffers && (this.webGLVersion > 1 || this.isWebGPU);\n const isWebGL2 = this.webGLVersion > 1;\n const attachment = gl[isWebGL2 ? \"COLOR_ATTACHMENT\" + i : \"COLOR_ATTACHMENT\" + i + \"_WEBGL\"];\n attachments.push(attachment);\n if (target === -1 || dontCreateTextures) {\n continue;\n }\n const texture = new InternalTexture(this, 6 /* InternalTextureSource.MultiRenderTarget */);\n textures[i] = texture;\n gl.activeTexture(gl[\"TEXTURE\" + i]);\n gl.bindTexture(target, texture._hardwareTexture.underlyingResource);\n gl.texParameteri(target, gl.TEXTURE_MAG_FILTER, filters.mag);\n gl.texParameteri(target, gl.TEXTURE_MIN_FILTER, filters.min);\n gl.texParameteri(target, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(target, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n const internalSizedFormat = this._getRGBABufferInternalSizedFormat(type, format, useSRGBBuffer);\n const internalFormat = this._getInternalFormat(format);\n const webGLTextureType = this._getWebGLTextureType(type);\n if (isWebGL2 && (target === 35866 || target === 32879)) {\n if (target === 35866) {\n texture.is2DArray = true;\n }\n else {\n texture.is3D = true;\n }\n texture.baseDepth = texture.depth = layerCount;\n gl.texImage3D(target, 0, internalSizedFormat, width, height, layerCount, 0, internalFormat, webGLTextureType, null);\n }\n else if (target === 34067) {\n // We have to generate all faces to complete the framebuffer\n for (let i = 0; i < 6; i++) {\n gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, internalSizedFormat, width, height, 0, internalFormat, webGLTextureType, null);\n }\n texture.isCube = true;\n }\n else {\n gl.texImage2D(gl.TEXTURE_2D, 0, internalSizedFormat, width, height, 0, internalFormat, webGLTextureType, null);\n }\n if (generateMipMaps) {\n gl.generateMipmap(target);\n }\n // Unbind\n this._bindTextureDirectly(target, null);\n texture.baseWidth = width;\n texture.baseHeight = height;\n texture.width = width;\n texture.height = height;\n texture.isReady = true;\n texture.samples = 1;\n texture.generateMipMaps = generateMipMaps;\n texture.samplingMode = samplingMode;\n texture.type = type;\n texture._useSRGBBuffer = useSRGBBuffer;\n texture.format = format;\n texture.label = labels[i] ?? rtWrapper.label + \"-Texture\" + i;\n this._internalTexturesCache.push(texture);\n }\n if (generateDepthTexture && this._caps.depthTextureExtension && !dontCreateTextures) {\n // Depth texture\n const depthTexture = new InternalTexture(this, 14 /* InternalTextureSource.Depth */);\n let depthTextureType = 5;\n let glDepthTextureInternalFormat = gl.DEPTH_COMPONENT16;\n let glDepthTextureFormat = gl.DEPTH_COMPONENT;\n let glDepthTextureType = gl.UNSIGNED_SHORT;\n let glDepthTextureAttachment = gl.DEPTH_ATTACHMENT;\n if (this.webGLVersion < 2) {\n glDepthTextureInternalFormat = gl.DEPTH_COMPONENT;\n }\n else {\n if (depthTextureFormat === 14) {\n depthTextureType = 1;\n glDepthTextureType = gl.FLOAT;\n glDepthTextureInternalFormat = gl.DEPTH_COMPONENT32F;\n }\n else if (depthTextureFormat === 18) {\n depthTextureType = 0;\n glDepthTextureType = gl.FLOAT_32_UNSIGNED_INT_24_8_REV;\n glDepthTextureInternalFormat = gl.DEPTH32F_STENCIL8;\n glDepthTextureFormat = gl.DEPTH_STENCIL;\n glDepthTextureAttachment = gl.DEPTH_STENCIL_ATTACHMENT;\n }\n else if (depthTextureFormat === 16) {\n depthTextureType = 0;\n glDepthTextureType = gl.UNSIGNED_INT;\n glDepthTextureInternalFormat = gl.DEPTH_COMPONENT24;\n glDepthTextureAttachment = gl.DEPTH_ATTACHMENT;\n }\n else if (depthTextureFormat === 13 || depthTextureFormat === 17) {\n depthTextureType = 12;\n glDepthTextureType = gl.UNSIGNED_INT_24_8;\n glDepthTextureInternalFormat = gl.DEPTH24_STENCIL8;\n glDepthTextureFormat = gl.DEPTH_STENCIL;\n glDepthTextureAttachment = gl.DEPTH_STENCIL_ATTACHMENT;\n }\n }\n this._bindTextureDirectly(gl.TEXTURE_2D, depthTexture, true);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texImage2D(gl.TEXTURE_2D, 0, glDepthTextureInternalFormat, width, height, 0, glDepthTextureFormat, glDepthTextureType, null);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, glDepthTextureAttachment, gl.TEXTURE_2D, depthTexture._hardwareTexture.underlyingResource, 0);\n this._bindTextureDirectly(gl.TEXTURE_2D, null);\n rtWrapper._depthStencilTexture = depthTexture;\n rtWrapper._depthStencilTextureWithStencil = useStencilTexture;\n depthTexture.baseWidth = width;\n depthTexture.baseHeight = height;\n depthTexture.width = width;\n depthTexture.height = height;\n depthTexture.isReady = true;\n depthTexture.samples = 1;\n depthTexture.generateMipMaps = generateMipMaps;\n depthTexture.samplingMode = 1;\n depthTexture.format = depthTextureFormat;\n depthTexture.type = depthTextureType;\n depthTexture.label = rtWrapper.label + \"-DepthStencil\";\n textures[textureCount] = depthTexture;\n this._internalTexturesCache.push(depthTexture);\n }\n rtWrapper.setTextures(textures);\n if (initializeBuffers) {\n gl.drawBuffers(attachments);\n }\n this._bindUnboundFramebuffer(null);\n rtWrapper.setLayerAndFaceIndices(layerIndex, faceIndex);\n this.resetTextureCache();\n if (!dontCreateTextures) {\n this.updateMultipleRenderTargetTextureSampleCount(rtWrapper, samples, initializeBuffers);\n }\n else if (samples > 1) {\n const framebuffer = gl.createFramebuffer();\n if (!framebuffer) {\n throw new Error(\"Unable to create multi sampled framebuffer\");\n }\n rtWrapper._samples = samples;\n rtWrapper._MSAAFramebuffer = framebuffer;\n if (textureCount > 0 && initializeBuffers) {\n this._bindUnboundFramebuffer(framebuffer);\n gl.drawBuffers(attachments);\n this._bindUnboundFramebuffer(null);\n }\n }\n return rtWrapper;\n};\nThinEngine.prototype.updateMultipleRenderTargetTextureSampleCount = function (rtWrapper, samples, initializeBuffers = true) {\n if (this.webGLVersion < 2 || !rtWrapper) {\n return 1;\n }\n if (rtWrapper.samples === samples) {\n return samples;\n }\n const gl = this._gl;\n samples = Math.min(samples, this.getCaps().maxMSAASamples);\n // Dispose previous render buffers\n if (rtWrapper._depthStencilBuffer) {\n gl.deleteRenderbuffer(rtWrapper._depthStencilBuffer);\n rtWrapper._depthStencilBuffer = null;\n }\n if (rtWrapper._MSAAFramebuffer) {\n gl.deleteFramebuffer(rtWrapper._MSAAFramebuffer);\n rtWrapper._MSAAFramebuffer = null;\n }\n const count = rtWrapper._attachments.length; // We do it this way instead of rtWrapper.textures.length to avoid taking into account the depth/stencil texture, in case it has been created\n for (let i = 0; i < count; i++) {\n const texture = rtWrapper.textures[i];\n const hardwareTexture = texture._hardwareTexture;\n hardwareTexture?.releaseMSAARenderBuffers();\n }\n if (samples > 1 && typeof gl.renderbufferStorageMultisample === \"function\") {\n const framebuffer = gl.createFramebuffer();\n if (!framebuffer) {\n throw new Error(\"Unable to create multi sampled framebuffer\");\n }\n rtWrapper._MSAAFramebuffer = framebuffer;\n this._bindUnboundFramebuffer(framebuffer);\n const attachments = [];\n for (let i = 0; i < count; i++) {\n const texture = rtWrapper.textures[i];\n const hardwareTexture = texture._hardwareTexture;\n const attachment = gl[this.webGLVersion > 1 ? \"COLOR_ATTACHMENT\" + i : \"COLOR_ATTACHMENT\" + i + \"_WEBGL\"];\n const colorRenderbuffer = this._createRenderBuffer(texture.width, texture.height, samples, -1 /* not used */, this._getRGBABufferInternalSizedFormat(texture.type, texture.format, texture._useSRGBBuffer), attachment);\n if (!colorRenderbuffer) {\n throw new Error(\"Unable to create multi sampled framebuffer\");\n }\n hardwareTexture.addMSAARenderBuffer(colorRenderbuffer);\n texture.samples = samples;\n attachments.push(attachment);\n }\n if (initializeBuffers) {\n gl.drawBuffers(attachments);\n }\n }\n else {\n this._bindUnboundFramebuffer(rtWrapper._framebuffer);\n }\n const depthFormat = rtWrapper._depthStencilTexture ? rtWrapper._depthStencilTexture.format : undefined;\n rtWrapper._depthStencilBuffer = this._setupFramebufferDepthAttachments(rtWrapper._generateStencilBuffer, rtWrapper._generateDepthBuffer, rtWrapper.width, rtWrapper.height, samples, depthFormat);\n this._bindUnboundFramebuffer(null);\n rtWrapper._samples = samples;\n return samples;\n};\nThinEngine.prototype.generateMipMapsMultiFramebuffer = function (texture) {\n const rtWrapper = texture;\n const gl = this._gl;\n if (!rtWrapper.isMulti) {\n return;\n }\n for (let i = 0; i < rtWrapper._attachments.length; i++) {\n const texture = rtWrapper.textures[i];\n if (texture?.generateMipMaps && !texture?.isCube && !texture?.is3D) {\n this._bindTextureDirectly(gl.TEXTURE_2D, texture, true);\n gl.generateMipmap(gl.TEXTURE_2D);\n this._bindTextureDirectly(gl.TEXTURE_2D, null);\n }\n }\n};\nThinEngine.prototype.resolveMultiFramebuffer = function (texture) {\n const rtWrapper = texture;\n const gl = this._gl;\n if (!rtWrapper._MSAAFramebuffer || !rtWrapper.isMulti) {\n return;\n }\n let bufferBits = rtWrapper.resolveMSAAColors ? gl.COLOR_BUFFER_BIT : 0;\n bufferBits |= rtWrapper._generateDepthBuffer && rtWrapper.resolveMSAADepth ? gl.DEPTH_BUFFER_BIT : 0;\n bufferBits |= rtWrapper._generateStencilBuffer && rtWrapper.resolveMSAAStencil ? gl.STENCIL_BUFFER_BIT : 0;\n const attachments = rtWrapper._attachments;\n const count = attachments.length;\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, rtWrapper._MSAAFramebuffer);\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, rtWrapper._framebuffer);\n for (let i = 0; i < count; i++) {\n const texture = rtWrapper.textures[i];\n for (let j = 0; j < count; j++) {\n attachments[j] = gl.NONE;\n }\n attachments[i] = gl[this.webGLVersion > 1 ? \"COLOR_ATTACHMENT\" + i : \"COLOR_ATTACHMENT\" + i + \"_WEBGL\"];\n gl.readBuffer(attachments[i]);\n gl.drawBuffers(attachments);\n gl.blitFramebuffer(0, 0, texture.width, texture.height, 0, 0, texture.width, texture.height, bufferBits, gl.NEAREST);\n }\n for (let i = 0; i < count; i++) {\n attachments[i] = gl[this.webGLVersion > 1 ? \"COLOR_ATTACHMENT\" + i : \"COLOR_ATTACHMENT\" + i + \"_WEBGL\"];\n }\n gl.drawBuffers(attachments);\n};\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}