@galacean/engine-rhi-webgl 1.2.0-beta.6 → 1.2.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/dist/main.js.map +1 -1
- package/dist/module.js.map +1 -1
- package/package.json +4 -4
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sources":["../src/type.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_instanceof.js","../src/WebCanvas.ts","../src/WebGLEngine.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_extends.js","../src/GLBuffer.ts","../src/GLCapability.ts","../src/GLExtensions.ts","../src/GLPrimitive.ts","../src/GLRenderStates.ts","../src/GLTexture.ts","../src/GLRenderTarget.ts","../src/GLTexture2D.ts","../src/GLTexture2DArray.ts","../src/GLTextureCube.ts","../src/WebGLGraphicDevice.ts"],"sourcesContent":["/**\n * Smoothing plug-in.\n * */\nexport interface WebGLExtension {\n MAX_DRAW_BUFFERS: GLenum;\n UNSIGNED_INT_24_8: GLenum;\n MAX_SAMPLES: GLenum;\n RGBA8: GLenum;\n RGBA16F: GLenum;\n RGBA32F: GLenum;\n DEPTH_COMPONENT32F: GLenum;\n READ_FRAMEBUFFER: GLenum;\n DRAW_FRAMEBUFFER: GLenum;\n\n createVertexArray(): WebGLVertexArrayObject | null;\n deleteVertexArray(vertexArray: WebGLVertexArrayObject | null): void;\n isVertexArray(vertexArray: WebGLVertexArrayObject | null): GLboolean;\n bindVertexArray(array: WebGLVertexArrayObject | null): void;\n\n renderbufferStorageMultisample(\n target: GLenum,\n samples: GLsizei,\n internalformat: GLenum,\n width: GLsizei,\n height: GLsizei\n ): void;\n blitFramebuffer(\n srcX0: GLint,\n srcY0: GLint,\n srcX1: GLint,\n srcY1: GLint,\n dstX0: GLint,\n dstY0: GLint,\n dstX1: GLint,\n dstY1: GLint,\n mask: GLbitfield,\n filter: GLenum\n ): void;\n\n drawArraysInstanced(mode: GLenum, first: GLint, count: GLsizei, instanceCount: GLsizei): void;\n drawElementsInstanced(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr, instanceCount: GLsizei): void;\n vertexAttribDivisor(index: GLuint, divisor: GLuint): void;\n drawBuffers(buffers: Iterable<GLenum>): void;\n}\n\nexport interface TextureFormatDetail {\n internalFormat: GLint;\n baseFormat?: GLenum;\n dataType?: GLenum;\n isCompressed: boolean;\n attachment?: GLenum;\n}\n\n/**\n * @deprecated\n */\nexport enum GLCompressedTextureInternalFormat {\n // astc\n RGBA_ASTC_4X4_KHR = 0x93b0,\n RGBA_ASTC_5X4_KHR = 0x93b1,\n RGBA_ASTC_5X5_KHR = 0x93b2,\n RGBA_ASTC_6X5_KHR = 0x93b3,\n RGBA_ASTC_6X6_KHR = 0x93b4,\n RGBA_ASTC_8X5_KHR = 0x93b5,\n RGBA_ASTC_8X6_KHR = 0x93b6,\n RGBA_ASTC_8X8_KHR = 0x93b7,\n RGBA_ASTC_10X5_KHR = 0x93b8,\n RGBA_ASTC_10X6_KHR = 0x93b9,\n RGBA_ASTC_10X8_KHR = 0x93ba,\n RGBA_ASTC_10X10_KHR = 0x93bb,\n RGBA_ASTC_12X10_KHR = 0x93bc,\n RGBA_ASTC_12X12_KHR = 0x93bd,\n SRGB8_ALPHA8_ASTC_4X4_KHR = 0x93d0,\n SRGB8_ALPHA8_ASTC_5X4_KHR = 0x93d1,\n SRGB8_ALPHA8_ASTC_5X5_KHR = 0x93d2,\n SRGB8_ALPHA8_ASTC_6X5_KHR = 0x93d3,\n SRGB8_ALPHA8_ASTC_6X6_KHR = 0x93d4,\n SRGB8_ALPHA8_ASTC_8X5_KHR = 0x93d5,\n SRGB8_ALPHA8_ASTC_8X6_KHR = 0x93d6,\n SRGB8_ALPHA8_ASTC_8X8_KHR = 0x93d7,\n SRGB8_ALPHA8_ASTC_10X5_KHR = 0x93d8,\n SRGB8_ALPHA8_ASTC_10X6_KHR = 0x93d9,\n SRGB8_ALPHA8_ASTC_10X8_KHR = 0x93da,\n SRGB8_ALPHA8_ASTC_10X10_KHR = 0x93db,\n SRGB8_ALPHA8_ASTC_12X10_KHR = 0x93dc,\n SRGB8_ALPHA8_ASTC_12X12_KHR = 0x93dd,\n\n // etc1\n RGB_ETC1_WEBGL = 0x8d64,\n\n // etc2\n R11_EAC = 0x9270,\n SIGNED_R11_EAC = 0x9271,\n RG11_EAC = 0x9272,\n SIGNED_RG11_EAC = 0x9273,\n RGB8_ETC2 = 0x9274,\n SRGB8_ETC2 = 0x9275,\n RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9276,\n SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277,\n RGBA8_ETC2_EAC = 0x9278,\n SRGB8_ALPHA8_ETC2_EAC = 0x9279,\n\n // pvrtc\n RGB_PVRTC_4BPPV1_IMG = 0x8c00,\n RGB_PVRTC_2BPPV1_IMG = 0x8c01,\n RGBA_PVRTC_4BPPV1_IMG = 0x8c02,\n RGBA_PVRTC_2BPPV1_IMG = 0x8c03,\n\n // s3tc\n RGB_S3TC_DXT1_EXT = 0x83f0,\n RGBA_S3TC_DXT1_EXT = 0x83f1,\n RGBA_S3TC_DXT3_EXT = 0x83f2,\n RGBA_S3TC_DXT5_EXT = 0x83f3,\n\n // bptc\n RGBA_BPTC_UNORM_EXT = 0x8e8c,\n SRGB_ALPHA_BPTC_UNORM_EXT = 0x8e8d,\n RGB_BPTC_SIGNED_FLOAT_EXT = 0x8e8e,\n RGB_BPTC_UNSIGNED_FLOAT_EXT = 0x8e8f\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nexport function _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","export function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _set_prototype_of } from \"./_set_prototype_of.js\";\n\nexport function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","export function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","import { Canvas } from \"@galacean/engine-core\";\nimport { Vector2 } from \"@galacean/engine-math\";\n\ntype OffscreenCanvas = any;\n\n/**\n * The canvas used on the web, which can support HTMLCanvasElement and OffscreenCanvas.\n */\nexport class WebCanvas extends Canvas {\n _webCanvas: HTMLCanvasElement | OffscreenCanvas;\n\n private _scale: Vector2 = new Vector2();\n\n /**\n * The scale of canvas, the value is visible width/height divide the render width/height.\n * @remarks Need to re-assign after modification to ensure that the modification takes effect.\n */\n get scale(): Vector2 {\n const webCanvas = this._webCanvas;\n if (typeof OffscreenCanvas === \"undefined\" || !(webCanvas instanceof OffscreenCanvas)) {\n this._scale.set(\n (webCanvas.clientWidth * devicePixelRatio) / webCanvas.width,\n (webCanvas.clientHeight * devicePixelRatio) / webCanvas.height\n );\n }\n return this._scale;\n }\n\n set scale(value: Vector2) {\n const webCanvas = this._webCanvas;\n if (typeof OffscreenCanvas === \"undefined\" || !(webCanvas instanceof OffscreenCanvas)) {\n webCanvas.style.transformOrigin = `left top`;\n webCanvas.style.transform = `scale(${value.x}, ${value.y})`;\n }\n }\n\n /**\n * Resize the rendering size according to the clientWidth and clientHeight of the canvas.\n * @param pixelRatio - Pixel ratio\n */\n resizeByClientSize(pixelRatio: number = window.devicePixelRatio): void {\n const webCanvas = this._webCanvas;\n if (typeof OffscreenCanvas === \"undefined\" || !(webCanvas instanceof OffscreenCanvas)) {\n const exportWidth = webCanvas.clientWidth * pixelRatio;\n const exportHeight = webCanvas.clientHeight * pixelRatio;\n this.width = exportWidth;\n this.height = exportHeight;\n }\n }\n\n /**\n * Create a web canvas.\n * @param webCanvas - Web native canvas\n */\n constructor(webCanvas: HTMLCanvasElement | OffscreenCanvas) {\n super();\n const width = webCanvas.width;\n const height = webCanvas.height;\n this._webCanvas = webCanvas;\n this.width = width;\n this.height = height;\n }\n\n /**\n * Set scale.\n * @param x - Scale along the X axis\n * @param y - Scale along the Y axis\n */\n setScale(x: number, y: number): void {\n this._scale.set(x, y);\n this.scale = this._scale;\n }\n\n protected override _onWidthChanged(value: number): void {\n this._webCanvas.width = value;\n }\n\n protected override _onHeightChange(value: number): void {\n this._webCanvas.height = value;\n }\n}\n","import { Engine, EngineConfiguration, Scene } from \"@galacean/engine-core\";\nimport { WebGLGraphicDevice, WebGLGraphicDeviceOptions } from \"./\";\nimport { WebCanvas } from \"./WebCanvas\";\n\n/**\n * WebGL platform engine,support includes WebGL1.0 and WebGL2.0.\n */\nexport class WebGLEngine extends Engine {\n /**\n * Create a WebGL engine.\n * @param configuration - WebGL engine configuration\n * @returns A promise that will resolve when the engine is created\n */\n static create(configuration: WebGLEngineConfiguration): Promise<WebGLEngine> {\n const canvas = configuration.canvas;\n const webCanvas = new WebCanvas(typeof canvas === \"string\" ? document.getElementById(canvas) : canvas);\n const webGLGraphicDevice = new WebGLGraphicDevice(configuration.graphicDeviceOptions);\n const engine = new WebGLEngine(webCanvas, webGLGraphicDevice, configuration);\n // @ts-ignore\n const promise = engine._initialize(configuration) as Promise<WebGLEngine>;\n return promise.then(() => {\n engine.sceneManager.addScene(new Scene(engine, \"DefaultScene\"));\n return engine;\n });\n }\n\n /**\n * Web canvas.\n */\n override get canvas(): WebCanvas {\n // @ts-ignore\n return this._canvas as WebCanvas;\n }\n}\n\n/**\n * WebGL engine configuration.\n */\nexport interface WebGLEngineConfiguration extends EngineConfiguration {\n /** Canvas element or canvas id. */\n canvas: HTMLCanvasElement | OffscreenCanvas | string;\n /** Graphic device options. */\n graphicDeviceOptions?: WebGLGraphicDeviceOptions;\n}\n","export function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","import { BufferBindFlag, BufferUsage, IPlatformBuffer, SetDataOptions } from \"@galacean/engine-core\";\nimport { WebGLGraphicDevice } from \"./WebGLGraphicDevice\";\nimport { WebGLExtension } from \"./type\";\n\nexport class GLBuffer implements IPlatformBuffer {\n private _gl: (WebGLRenderingContext & WebGLExtension) | WebGL2RenderingContext;\n private _glBindTarget: number;\n private _glBufferUsage: number;\n private _glBuffer: WebGLBuffer;\n private _isWebGL2: boolean;\n\n constructor(\n rhi: WebGLGraphicDevice,\n type: BufferBindFlag,\n byteLength: number,\n bufferUsage: BufferUsage = BufferUsage.Static,\n data?: ArrayBuffer | ArrayBufferView\n ) {\n const gl = rhi.gl;\n const glBuffer = gl.createBuffer();\n const glBufferUsage = this._getGLBufferUsage(gl, bufferUsage);\n const glBindTarget = type === BufferBindFlag.VertexBuffer ? gl.ARRAY_BUFFER : gl.ELEMENT_ARRAY_BUFFER;\n\n this._gl = gl;\n this._glBuffer = glBuffer;\n this._glBufferUsage = glBufferUsage;\n this._glBindTarget = glBindTarget;\n this._isWebGL2 = rhi.isWebGL2;\n\n this.bind();\n\n if (data) {\n gl.bufferData(glBindTarget, data, glBufferUsage);\n } else {\n gl.bufferData(glBindTarget, byteLength, glBufferUsage);\n }\n gl.bindBuffer(glBindTarget, null);\n }\n\n bind(): void {\n this._gl.bindBuffer(this._glBindTarget, this._glBuffer);\n }\n\n setData(\n byteLength: number,\n data: ArrayBuffer | ArrayBufferView,\n bufferByteOffset?: number,\n dataOffset?: number,\n dataLength?: number,\n options?: SetDataOptions\n ): void {\n const gl = this._gl;\n const glBindTarget = this._glBindTarget;\n\n this.bind();\n\n if (options === SetDataOptions.Discard) {\n gl.bufferData(glBindTarget, byteLength, this._glBufferUsage);\n }\n\n // TypeArray is BYTES_PER_ELEMENT, unTypeArray is 1\n const byteSize = (<Uint8Array>data).BYTES_PER_ELEMENT || 1;\n const dataByteLength = dataLength ? byteSize * dataLength : data.byteLength;\n\n if (dataOffset !== 0 || dataByteLength < data.byteLength) {\n const isArrayBufferView = (<ArrayBufferView>data).byteOffset !== undefined;\n if (this._isWebGL2 && isArrayBufferView) {\n gl.bufferSubData(glBindTarget, bufferByteOffset, <ArrayBufferView>data, dataOffset, dataByteLength / byteSize);\n } else {\n const subData = new Uint8Array(\n isArrayBufferView ? (<ArrayBufferView>data).buffer : <ArrayBuffer>data,\n dataOffset * byteSize,\n dataByteLength\n );\n gl.bufferSubData(glBindTarget, bufferByteOffset, subData);\n }\n } else {\n gl.bufferSubData(glBindTarget, bufferByteOffset, data);\n }\n gl.bindBuffer(glBindTarget, null);\n }\n\n getData(data: ArrayBufferView, bufferByteOffset?: number, dataOffset?: number, dataLength?: number): void {\n if (this._isWebGL2) {\n const gl = <WebGL2RenderingContext>this._gl;\n this.bind();\n gl.getBufferSubData(this._glBindTarget, bufferByteOffset, data, dataOffset, dataLength);\n } else {\n throw \"Buffer is write-only on WebGL1.0 platforms.\";\n }\n }\n\n destroy(): void {\n this._gl.deleteBuffer(this._glBuffer);\n this._gl = null;\n this._glBuffer = null;\n }\n\n private _getGLBufferUsage(gl: WebGLRenderingContext, bufferUsage: BufferUsage): number {\n switch (bufferUsage) {\n case BufferUsage.Static:\n return gl.STATIC_DRAW;\n case BufferUsage.Dynamic:\n return gl.DYNAMIC_DRAW;\n case BufferUsage.Stream:\n return gl.STREAM_DRAW;\n }\n }\n}\n","import { GLCapabilityType } from \"@galacean/engine-core\";\nimport { WebGLGraphicDevice } from \"./WebGLGraphicDevice\";\nimport { GLCompressedTextureInternalFormat } from \"./type\";\n\ntype extensionKey = string;\n\n/**\n * GL capability.\n */\nexport class GLCapability {\n private _maxDrawBuffers: number;\n private _maxAnisoLevel: number;\n private _maxAntiAliasing: number;\n\n _rhi: WebGLGraphicDevice;\n capabilityList: Map<GLCapabilityType, boolean>;\n\n get maxTextureSize(): boolean {\n return this.rhi.renderStates.getParameter(this.rhi.gl.MAX_TEXTURE_SIZE);\n }\n\n get canUseFloatTextureBlendShape(): boolean {\n return (\n this.canIUse(GLCapabilityType.shaderVertexID) &&\n this.canIUse(GLCapabilityType.textureFloat) &&\n this.rhi.renderStates.getParameter(this.rhi.gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS) > 0\n );\n }\n\n /**\n * Whether can use more joints.\n */\n get canIUseMoreJoints(): boolean {\n return (\n this.canIUse(GLCapabilityType.textureFloat) &&\n this.rhi.renderStates.getParameter(this.rhi.gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS) > 0\n );\n }\n\n get maxDrawBuffers() {\n if (!this._maxDrawBuffers) {\n if (this.canIUse(GLCapabilityType.drawBuffers)) {\n this._maxDrawBuffers = this._rhi.gl.getParameter(this._rhi.gl.MAX_DRAW_BUFFERS);\n } else {\n this._maxDrawBuffers = 1;\n }\n }\n return this._maxDrawBuffers;\n }\n\n /**\n * Max anisoLevel.\n */\n get maxAnisoLevel(): number {\n if (!this._maxAnisoLevel) {\n const ext = this._rhi.requireExtension(GLCapabilityType.textureFilterAnisotropic);\n this._maxAnisoLevel = ext ? this._rhi.gl.getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1;\n }\n return this._maxAnisoLevel;\n }\n\n /**\n * Max MSAA count.\n */\n get maxAntiAliasing(): number {\n if (!this._maxAntiAliasing) {\n const gl = this._rhi.gl;\n const canMSAA = this.canIUse(GLCapabilityType.multipleSample);\n\n this._maxAntiAliasing = canMSAA ? gl.getParameter(gl.MAX_SAMPLES) : 1;\n }\n return this._maxAntiAliasing;\n }\n\n get rhi() {\n return this._rhi;\n }\n\n constructor(rhi: WebGLGraphicDevice) {\n this._rhi = rhi;\n this.capabilityList = new Map();\n\n this._init();\n this._compatibleAllInterface();\n }\n\n /**\n * Check device capabilities.\n */\n canIUse(capabilityType: GLCapabilityType): boolean {\n return this.capabilityList.get(capabilityType);\n }\n\n /**\n * Check if can use some compressed texture format.\n */\n canIUseCompressedTextureInternalFormat(internalType: GLCompressedTextureInternalFormat): boolean {\n const {\n // astc\n RGBA_ASTC_4X4_KHR,\n RGBA_ASTC_12X12_KHR,\n SRGB8_ALPHA8_ASTC_4X4_KHR,\n SRGB8_ALPHA8_ASTC_12X12_KHR,\n // etc1\n RGB_ETC1_WEBGL,\n // etc\n R11_EAC,\n SRGB8_ALPHA8_ETC2_EAC,\n // pvrtc\n RGB_PVRTC_4BPPV1_IMG,\n RGBA_PVRTC_2BPPV1_IMG,\n // s3tc\n RGB_S3TC_DXT1_EXT,\n RGBA_S3TC_DXT5_EXT,\n\n // bptc\n RGBA_BPTC_UNORM_EXT,\n RGB_BPTC_UNSIGNED_FLOAT_EXT\n } = GLCompressedTextureInternalFormat;\n if (\n (internalType >= RGBA_ASTC_4X4_KHR && RGBA_ASTC_12X12_KHR <= RGBA_ASTC_12X12_KHR) ||\n (internalType >= SRGB8_ALPHA8_ASTC_4X4_KHR && internalType <= SRGB8_ALPHA8_ASTC_12X12_KHR)\n ) {\n return this.canIUse(GLCapabilityType.astc);\n } else if (internalType === RGB_ETC1_WEBGL) {\n return this.canIUse(GLCapabilityType.etc1);\n } else if (internalType >= R11_EAC && internalType <= SRGB8_ALPHA8_ETC2_EAC) {\n return this.canIUse(GLCapabilityType.etc);\n } else if (internalType >= RGB_PVRTC_4BPPV1_IMG && internalType <= RGBA_PVRTC_2BPPV1_IMG) {\n return this.canIUse(GLCapabilityType.pvrtc);\n } else if (internalType >= RGB_S3TC_DXT1_EXT && internalType <= RGBA_S3TC_DXT5_EXT) {\n return this.canIUse(GLCapabilityType.s3tc);\n } else if (internalType >= RGBA_BPTC_UNORM_EXT && internalType <= RGB_BPTC_UNSIGNED_FLOAT_EXT) {\n return this.canIUse(GLCapabilityType.bptc);\n }\n return false;\n }\n\n /**\n * Init capabilities.\n */\n private _init() {\n const cap = this.capabilityList;\n const { isWebGL2 } = this.rhi;\n const requireExtension = this.rhi.requireExtension.bind(this.rhi);\n\n const {\n shaderVertexID,\n standardDerivatives,\n shaderTextureLod,\n elementIndexUint,\n depthTexture,\n vertexArrayObject,\n instancedArrays,\n multipleSample,\n drawBuffers,\n blendMinMax,\n\n astc,\n astc_webkit,\n etc,\n etc_webkit,\n etc1,\n etc1_webkit,\n pvrtc,\n pvrtc_webkit,\n s3tc,\n s3tc_webkit,\n bptc,\n\n textureFloat,\n textureHalfFloat,\n textureFloatLinear,\n textureHalfFloatLinear,\n WEBGL_colorBufferFloat,\n colorBufferFloat,\n colorBufferHalfFloat,\n textureFilterAnisotropic,\n fragDepth\n } = GLCapabilityType;\n cap.set(shaderVertexID, isWebGL2);\n cap.set(standardDerivatives, isWebGL2 || !!requireExtension(standardDerivatives));\n cap.set(shaderTextureLod, isWebGL2 || !!requireExtension(shaderTextureLod));\n cap.set(elementIndexUint, isWebGL2 || !!requireExtension(elementIndexUint));\n cap.set(depthTexture, isWebGL2 || !!requireExtension(depthTexture));\n cap.set(vertexArrayObject, isWebGL2 || !!requireExtension(vertexArrayObject));\n cap.set(instancedArrays, isWebGL2 || !!requireExtension(instancedArrays));\n cap.set(multipleSample, isWebGL2);\n cap.set(drawBuffers, isWebGL2 || !!requireExtension(drawBuffers));\n cap.set(blendMinMax, isWebGL2 || !!requireExtension(blendMinMax));\n cap.set(textureFloat, isWebGL2 || !!requireExtension(textureFloat));\n cap.set(textureHalfFloat, isWebGL2 || !!requireExtension(textureHalfFloat));\n cap.set(textureFloatLinear, !!requireExtension(textureFloatLinear));\n cap.set(textureHalfFloatLinear, isWebGL2 || !!requireExtension(textureHalfFloatLinear));\n cap.set(\n colorBufferFloat,\n (isWebGL2 && !!requireExtension(colorBufferFloat)) || !!requireExtension(WEBGL_colorBufferFloat)\n );\n cap.set(\n colorBufferHalfFloat,\n (isWebGL2 && !!requireExtension(colorBufferFloat)) || !!requireExtension(colorBufferHalfFloat)\n );\n cap.set(textureFilterAnisotropic, !!requireExtension(textureFilterAnisotropic));\n cap.set(fragDepth, isWebGL2 || !!requireExtension(fragDepth));\n\n cap.set(astc, !!(requireExtension(astc) || requireExtension(astc_webkit)));\n cap.set(etc, !!(requireExtension(etc) || requireExtension(etc_webkit)));\n cap.set(etc1, !!(requireExtension(etc1) || requireExtension(etc1_webkit)));\n cap.set(pvrtc, !!(requireExtension(pvrtc) || requireExtension(pvrtc_webkit)));\n cap.set(s3tc, !!(requireExtension(s3tc) || requireExtension(s3tc_webkit)));\n cap.set(bptc, !!requireExtension(bptc));\n }\n\n /**\n * If there are extensions that can supplement this ability, smooth out the difference.\n * @example\n * compatible(GLCapabilityType.depthTexture,{\n * UNSIGNED_INT_24_8: \"UNSIGNED_INT_24_8_WEBGL\"\n * })\n * gl.UNSIGNED_INT_24_8 = ext.UNSIGNED_INT_24_8_WEBGL\n */\n private _compatibleInterface(capabilityType: GLCapabilityType, flatItem: { [glKey: string]: extensionKey }) {\n const rhi = this.rhi;\n const gl = rhi.gl;\n let ext = null;\n\n if ((ext = rhi.requireExtension(capabilityType))) {\n for (let glKey in flatItem) {\n const extensionKey = flatItem[glKey];\n const extensionVal = ext[extensionKey];\n\n // Mini game hack the native function,use “.bind” to smooth out if is “Funcion”.\n if (extensionVal?.bind) {\n gl[glKey] = extensionVal.bind(ext);\n } else {\n gl[glKey] = extensionVal;\n }\n }\n }\n }\n\n private _compatibleAllInterface() {\n const {\n depthTexture,\n vertexArrayObject,\n instancedArrays,\n drawBuffers,\n textureFilterAnisotropic,\n textureHalfFloat,\n colorBufferHalfFloat,\n WEBGL_colorBufferFloat,\n blendMinMax\n } = GLCapabilityType;\n const { isWebGL2 } = this.rhi;\n\n if (!isWebGL2) {\n this._compatibleInterface(blendMinMax, {\n MIN: \"MIN_EXT\",\n MAX: \"MAX_EXT\"\n });\n this._compatibleInterface(depthTexture, {\n UNSIGNED_INT_24_8: \"UNSIGNED_INT_24_8_WEBGL\"\n });\n this._compatibleInterface(vertexArrayObject, {\n createVertexArray: \"createVertexArrayOES\",\n deleteVertexArray: \"deleteVertexArrayOES\",\n isVertexArray: \"isVertexArrayOES\",\n bindVertexArray: \"bindVertexArrayOES\"\n });\n this._compatibleInterface(instancedArrays, {\n drawArraysInstanced: \"drawArraysInstancedANGLE\",\n drawElementsInstanced: \"drawElementsInstancedANGLE\",\n vertexAttribDivisor: \"vertexAttribDivisorANGLE\"\n });\n this._compatibleInterface(drawBuffers, {\n MAX_DRAW_BUFFERS: \"MAX_DRAW_BUFFERS_WEBGL\"\n });\n const items = {};\n if (this.canIUse(GLCapabilityType.drawBuffers)) {\n const maxDrawBuffers = this.maxDrawBuffers;\n for (let i = 0; i < maxDrawBuffers; i++) {\n i != 0 && (items[`COLOR_ATTACHMENT${i}`] = `COLOR_ATTACHMENT${i}_WEBGL`);\n items[`DRAW_BUFFER${i}`] = `DRAW_BUFFER${i}_WEBGL`;\n }\n this._compatibleInterface(drawBuffers, {\n drawBuffers: \"drawBuffersWEBGL\",\n ...items\n });\n }\n this._compatibleInterface(textureHalfFloat, {\n HALF_FLOAT: \"HALF_FLOAT_OES\"\n });\n this._compatibleInterface(colorBufferHalfFloat, {\n RGBA16F: \"RBGA16F_EXT\"\n });\n this._compatibleInterface(WEBGL_colorBufferFloat, {\n RGBA32F: \"RBGA32F_EXT\"\n });\n }\n\n this._compatibleInterface(textureFilterAnisotropic, {\n TEXTURE_MAX_ANISOTROPY_EXT: \"TEXTURE_MAX_ANISOTROPY_EXT\"\n });\n }\n}\n","import { WebGLGraphicDevice } from \"./WebGLGraphicDevice\";\nimport { GLCapabilityType } from \"@galacean/engine-core\";\n\n/**\n * GLContext extension.\n */\nexport class GLExtensions {\n private rhi: WebGLGraphicDevice;\n private _requireResult;\n\n constructor(rhi: WebGLGraphicDevice) {\n this.rhi = rhi;\n this._requireResult = {};\n }\n\n /**\n * Require an extension.\n */\n requireExtension(ext: GLCapabilityType) {\n if (this._requireResult[ext] !== undefined) {\n return this._requireResult[ext];\n }\n\n this._requireResult[ext] = this.rhi.gl.getExtension(ext);\n return this._requireResult[ext];\n }\n}\n","import { GLCapabilityType, Logger, Primitive } from \"@galacean/engine-core\";\nimport { SubPrimitive } from \"@galacean/engine-core/types/graphic/SubPrimitive\";\nimport { IPlatformPrimitive } from \"@galacean/engine-design\";\nimport { WebGLGraphicDevice } from \"./WebGLGraphicDevice\";\nimport { WebGLExtension } from \"./type\";\n\n/**\n * Improvement of VAO:\n * 1) WebGL2.0 must support VAO, almost all devices support vao extensions in webgl1.0, we can use PollyFill,only keep VAO mode.\n */\n\n/**\n * @internal\n * GL platform primitive.\n */\nexport class GLPrimitive implements IPlatformPrimitive {\n private _attribLocArray: number[] = [];\n private readonly _primitive: Primitive;\n private readonly _canUseInstancedArrays: boolean;\n\n private _gl: (WebGLRenderingContext & WebGLExtension) | WebGL2RenderingContext;\n private _vaoMap: Map<number, WebGLVertexArrayObject> = new Map();\n private readonly _isSupportVAO: boolean;\n\n constructor(rhi: WebGLGraphicDevice, primitive: Primitive) {\n this._primitive = primitive;\n this._canUseInstancedArrays = rhi.canIUse(GLCapabilityType.instancedArrays);\n this._isSupportVAO = rhi.canIUse(GLCapabilityType.vertexArrayObject);\n this._gl = rhi.gl;\n }\n\n /**\n * Draw the primitive.\n */\n draw(shaderProgram: any, subMesh: SubPrimitive): void {\n const gl = this._gl;\n const primitive = this._primitive;\n const useVao = this._isSupportVAO && primitive.enableVAO;\n\n if (useVao) {\n if (primitive._bufferStructChanged) {\n this._clearVAO();\n }\n if (!this._vaoMap.has(shaderProgram.id)) {\n this._registerVAO(shaderProgram);\n }\n const vao = this._vaoMap.get(shaderProgram.id);\n gl.bindVertexArray(vao);\n } else {\n this._bindBufferAndAttrib(shaderProgram);\n }\n\n const { indexBufferBinding, instanceCount, _glIndexType, _glIndexByteCount } = primitive;\n const { topology, start, count } = subMesh;\n\n if (!instanceCount) {\n if (indexBufferBinding) {\n if (useVao) {\n gl.drawElements(topology, count, _glIndexType, start * _glIndexByteCount);\n } else {\n const { _glBuffer } = indexBufferBinding.buffer._platformBuffer;\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, _glBuffer);\n gl.drawElements(topology, count, _glIndexType, start * _glIndexByteCount);\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);\n }\n } else {\n gl.drawArrays(topology, start, count);\n }\n } else {\n if (this._canUseInstancedArrays) {\n if (indexBufferBinding) {\n if (useVao) {\n gl.drawElementsInstanced(topology, count, _glIndexType, start * _glIndexByteCount, instanceCount);\n } else {\n const { _glBuffer } = indexBufferBinding.buffer._platformBuffer;\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, _glBuffer);\n gl.drawElementsInstanced(topology, count, _glIndexType, start * _glIndexByteCount, instanceCount);\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);\n }\n } else {\n gl.drawArraysInstanced(topology, start, count, instanceCount);\n }\n } else {\n Logger.error(\"ANGLE_instanced_arrays extension is not supported\");\n }\n }\n\n // Unbind\n if (useVao) {\n gl.bindVertexArray(null);\n } else {\n this._disableAttrib();\n }\n }\n\n destroy(): void {\n this._isSupportVAO && this._clearVAO();\n }\n\n /**\n * Bind buffer and attribute.\n */\n private _bindBufferAndAttrib(shaderProgram: any): void {\n const gl = this._gl;\n const primitive = this._primitive;\n const vertexBufferBindings = primitive.vertexBufferBindings;\n\n this._attribLocArray.length = 0;\n const attributeLocation = shaderProgram.attributeLocation;\n const attributes = primitive._vertexElementMap;\n\n let vbo: WebGLBuffer;\n let lastBoundVbo: WebGLBuffer;\n\n for (const name in attributeLocation) {\n const loc = attributeLocation[name];\n if (loc === -1) continue;\n\n const element = attributes[name];\n if (element) {\n const { buffer, stride } = vertexBufferBindings[element.bindingIndex];\n vbo = buffer._platformBuffer._glBuffer;\n // prevent binding the vbo which already bound at the last loop, e.g. a buffer with multiple attributes.\n if (lastBoundVbo !== vbo) {\n lastBoundVbo = vbo;\n gl.bindBuffer(gl.ARRAY_BUFFER, vbo);\n }\n\n gl.enableVertexAttribArray(loc);\n const elementInfo = element._formatMetaInfo;\n gl.vertexAttribPointer(loc, elementInfo.size, elementInfo.type, elementInfo.normalized, stride, element.offset);\n if (this._canUseInstancedArrays) {\n gl.vertexAttribDivisor(loc, element.instanceStepRate);\n }\n this._attribLocArray.push(loc);\n } else {\n Logger.warn(\"vertex attribute not found: \" + name);\n }\n }\n\n gl.bindBuffer(gl.ARRAY_BUFFER, null);\n }\n\n private _disableAttrib() {\n const gl = this._gl;\n for (let i = 0, l = this._attribLocArray.length; i < l; i++) {\n gl.disableVertexAttribArray(this._attribLocArray[i]);\n }\n }\n\n private _registerVAO(shaderProgram: any): void {\n const gl = this._gl;\n const vao = gl.createVertexArray();\n\n /** register VAO */\n gl.bindVertexArray(vao);\n\n const { indexBufferBinding } = this._primitive;\n if (indexBufferBinding) {\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBufferBinding.buffer._platformBuffer._glBuffer);\n }\n this._bindBufferAndAttrib(shaderProgram);\n\n /** unbind */\n gl.bindVertexArray(null);\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);\n this._disableAttrib();\n\n this._vaoMap.set(shaderProgram.id, vao);\n }\n\n private _clearVAO(): void {\n const gl = this._gl;\n this._vaoMap.forEach((vao) => {\n gl.deleteVertexArray(vao);\n });\n this._vaoMap.clear();\n }\n}\n","/**\n * @private\n */\nexport class GLRenderStates {\n private _gl: WebGLRenderingContext;\n private _parameters = {};\n /**\n * @param {WebGLRenderingContext} gl\n */\n constructor(gl: WebGLRenderingContext) {\n this._gl = gl;\n this._parameters = {}; // current gl state parameters\n\n /** cache */\n this._parameters[gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS] = gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS);\n this._parameters[gl.MAX_VERTEX_UNIFORM_VECTORS] = gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS);\n this._parameters[gl.MAX_VERTEX_ATTRIBS] = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n this._parameters[gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS] = gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS);\n this._parameters[gl.MAX_TEXTURE_SIZE] = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n\n // init blend state same as BlendState default value.\n gl.blendFuncSeparate(gl.ONE, gl.ZERO, gl.ONE, gl.ZERO);\n gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_ADD);\n gl.colorMask(true, true, true, true);\n gl.blendColor(0, 0, 0, 0);\n gl.disable(gl.SAMPLE_ALPHA_TO_COVERAGE);\n\n // init depth state same as DepthState default value.\n gl.enable(gl.DEPTH_TEST);\n gl.depthFunc(gl.LESS);\n gl.depthMask(true);\n\n // init stencil state same as StencilState default value.\n gl.disable(gl.STENCIL_TEST);\n gl.stencilFuncSeparate(gl.FRONT, gl.ALWAYS, 0, 0xff);\n gl.stencilFuncSeparate(gl.BACK, gl.ALWAYS, 0, 0xff);\n gl.stencilOpSeparate(gl.FRONT, gl.KEEP, gl.KEEP, gl.KEEP);\n gl.stencilOpSeparate(gl.BACK, gl.KEEP, gl.KEEP, gl.KEEP);\n gl.stencilMask(0xff);\n\n // init raster state same as RasterState default value.\n gl.enable(gl.CULL_FACE);\n gl.cullFace(gl.BACK);\n gl.disable(gl.POLYGON_OFFSET_FILL);\n gl.polygonOffset(0, 0);\n }\n\n /**\n * Get a parameter.\n */\n getParameter(pname) {\n return this._parameters[pname];\n }\n}\n","import {\n GLCapabilityType,\n IPlatformTexture,\n Logger,\n RenderBufferDepthFormat,\n Texture,\n TextureCubeFace,\n TextureDepthCompareFunction,\n TextureFilterMode,\n TextureFormat,\n TextureUsage,\n TextureWrapMode\n} from \"@galacean/engine-core\";\nimport { WebGLGraphicDevice } from \"./WebGLGraphicDevice\";\nimport { GLCompressedTextureInternalFormat, TextureFormatDetail } from \"./type\";\n\n/**\n * Texture in WebGL platform.\n */\nexport class GLTexture implements IPlatformTexture {\n /** @internal */\n static _isPowerOf2(v: number): boolean {\n return (v & (v - 1)) === 0;\n }\n\n /**\n * Get more texture info from TextureFormat.\n * @internal\n */\n static _getFormatDetail(\n format: TextureFormat,\n gl: WebGLRenderingContext & WebGL2RenderingContext,\n isWebGL2: boolean\n ): TextureFormatDetail {\n switch (format) {\n case TextureFormat.R8G8B8:\n return {\n internalFormat: isWebGL2 ? gl.RGB8 : gl.RGB,\n baseFormat: gl.RGB,\n dataType: gl.UNSIGNED_BYTE,\n isCompressed: false\n };\n case TextureFormat.R8G8B8A8:\n return {\n internalFormat: isWebGL2 ? gl.RGBA8 : gl.RGBA,\n baseFormat: gl.RGBA,\n dataType: gl.UNSIGNED_BYTE,\n isCompressed: false\n };\n case TextureFormat.R4G4B4A4:\n return {\n internalFormat: isWebGL2 ? gl.RGBA4 : gl.RGBA,\n baseFormat: gl.RGBA,\n dataType: gl.UNSIGNED_SHORT_4_4_4_4,\n isCompressed: false\n };\n case TextureFormat.R5G5B5A1:\n return {\n internalFormat: isWebGL2 ? gl.RGB5_A1 : gl.RGBA,\n baseFormat: gl.RGBA,\n dataType: gl.UNSIGNED_SHORT_5_5_5_1,\n isCompressed: false\n };\n case TextureFormat.R5G6B5:\n return {\n internalFormat: isWebGL2 ? gl.RGB565 : gl.RGB,\n baseFormat: gl.RGB,\n dataType: gl.UNSIGNED_SHORT_5_6_5,\n isCompressed: false\n };\n case TextureFormat.Alpha8:\n return {\n internalFormat: gl.ALPHA,\n baseFormat: gl.ALPHA,\n dataType: gl.UNSIGNED_BYTE,\n isCompressed: false\n };\n case TextureFormat.LuminanceAlpha:\n return {\n internalFormat: gl.LUMINANCE_ALPHA,\n baseFormat: gl.LUMINANCE_ALPHA,\n dataType: gl.UNSIGNED_BYTE,\n isCompressed: false\n };\n case TextureFormat.R16G16B16A16:\n return {\n internalFormat: isWebGL2 ? gl.RGBA16F : gl.RGBA,\n baseFormat: gl.RGBA,\n dataType: gl.HALF_FLOAT,\n isCompressed: false\n };\n case TextureFormat.R32G32B32A32:\n return {\n internalFormat: isWebGL2 ? gl.RGBA32F : gl.RGBA,\n baseFormat: gl.RGBA,\n dataType: gl.FLOAT,\n isCompressed: false\n };\n case TextureFormat.R32G32B32A32_UInt:\n return {\n internalFormat: isWebGL2 ? gl.RGBA32UI : gl.NONE,\n baseFormat: gl.RGBA_INTEGER,\n dataType: gl.UNSIGNED_INT,\n isCompressed: false\n };\n case TextureFormat.BC1:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGB_S3TC_DXT1_EXT,\n isCompressed: true\n };\n case TextureFormat.BC3:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGBA_S3TC_DXT5_EXT,\n isCompressed: true\n };\n case TextureFormat.BC7:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGBA_BPTC_UNORM_EXT,\n isCompressed: true\n };\n case TextureFormat.ETC1_RGB:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGB_ETC1_WEBGL,\n isCompressed: true\n };\n case TextureFormat.ETC2_RGB:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGB8_ETC2,\n isCompressed: true\n };\n case TextureFormat.ETC2_RGBA5:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGB8_PUNCHTHROUGH_ALPHA1_ETC2,\n isCompressed: true\n };\n case TextureFormat.ETC2_RGBA8:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGBA8_ETC2_EAC,\n isCompressed: true\n };\n case TextureFormat.PVRTC_RGB2:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGB_PVRTC_2BPPV1_IMG,\n isCompressed: true\n };\n case TextureFormat.PVRTC_RGBA2:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGBA_PVRTC_2BPPV1_IMG,\n isCompressed: true\n };\n case TextureFormat.PVRTC_RGB4:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGB_PVRTC_4BPPV1_IMG,\n isCompressed: true\n };\n case TextureFormat.PVRTC_RGBA4:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGBA_PVRTC_4BPPV1_IMG,\n isCompressed: true\n };\n case TextureFormat.ASTC_4x4:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGBA_ASTC_4X4_KHR,\n isCompressed: true\n };\n case TextureFormat.ASTC_5x5:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGBA_ASTC_5X5_KHR,\n isCompressed: true\n };\n case TextureFormat.ASTC_6x6:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGBA_ASTC_6X6_KHR,\n isCompressed: true\n };\n case TextureFormat.ASTC_8x8:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGBA_ASTC_8X8_KHR,\n isCompressed: true\n };\n case TextureFormat.ASTC_10x10:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGBA_ASTC_10X10_KHR,\n isCompressed: true\n };\n case TextureFormat.ASTC_12x12:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGBA_ASTC_12X12_KHR,\n isCompressed: true\n };\n\n case TextureFormat.Depth:\n return {\n internalFormat: isWebGL2 ? gl.DEPTH_COMPONENT32F : gl.DEPTH_COMPONENT,\n baseFormat: gl.DEPTH_COMPONENT,\n dataType: isWebGL2 ? gl.FLOAT : gl.UNSIGNED_SHORT,\n isCompressed: false,\n attachment: gl.DEPTH_ATTACHMENT\n };\n case TextureFormat.DepthStencil:\n return {\n internalFormat: isWebGL2 ? gl.DEPTH32F_STENCIL8 : gl.DEPTH_STENCIL,\n baseFormat: gl.DEPTH_STENCIL,\n dataType: isWebGL2 ? gl.FLOAT_32_UNSIGNED_INT_24_8_REV : gl.UNSIGNED_INT_24_8,\n isCompressed: false,\n attachment: gl.DEPTH_STENCIL_ATTACHMENT\n };\n case TextureFormat.Depth16:\n return {\n internalFormat: isWebGL2 ? gl.DEPTH_COMPONENT16 : gl.DEPTH_COMPONENT,\n baseFormat: gl.DEPTH_COMPONENT,\n dataType: gl.UNSIGNED_SHORT,\n isCompressed: false,\n attachment: gl.DEPTH_ATTACHMENT\n };\n case TextureFormat.Depth24Stencil8:\n return {\n internalFormat: isWebGL2 ? gl.DEPTH24_STENCIL8 : gl.DEPTH_STENCIL,\n baseFormat: gl.DEPTH_STENCIL,\n dataType: gl.UNSIGNED_INT_24_8,\n isCompressed: false,\n attachment: gl.DEPTH_STENCIL_ATTACHMENT\n };\n case TextureFormat.Depth24:\n return {\n internalFormat: gl.DEPTH_COMPONENT24,\n baseFormat: gl.DEPTH_COMPONENT,\n dataType: gl.UNSIGNED_INT,\n isCompressed: false,\n attachment: gl.DEPTH_ATTACHMENT\n };\n case TextureFormat.Depth32:\n return {\n internalFormat: gl.DEPTH_COMPONENT32F,\n baseFormat: gl.DEPTH_COMPONENT,\n dataType: gl.FLOAT,\n isCompressed: false,\n attachment: gl.DEPTH_ATTACHMENT\n };\n case TextureFormat.Depth32Stencil8:\n return {\n internalFormat: gl.DEPTH32F_STENCIL8,\n baseFormat: gl.DEPTH_STENCIL,\n dataType: gl.FLOAT_32_UNSIGNED_INT_24_8_REV,\n isCompressed: false,\n attachment: gl.DEPTH_STENCIL_ATTACHMENT\n };\n default:\n throw new Error(`this TextureFormat is not supported in Galacean Engine: ${format}`);\n }\n }\n\n /**\n * In WebGL 1, internalformat must be the same as baseFormat when call texImage2D.\n * @internal\n */\n static _getRenderBufferDepthFormatDetail(\n format: TextureFormat,\n gl: WebGLRenderingContext & WebGL2RenderingContext,\n isWebGL2: boolean\n ): TextureFormatDetail {\n switch (format) {\n case TextureFormat.Depth:\n return {\n internalFormat: isWebGL2 ? gl.DEPTH_COMPONENT32F : gl.DEPTH_COMPONENT16,\n baseFormat: gl.DEPTH_COMPONENT,\n dataType: isWebGL2 ? gl.FLOAT : gl.UNSIGNED_SHORT,\n isCompressed: false,\n attachment: gl.DEPTH_ATTACHMENT\n };\n case TextureFormat.DepthStencil:\n return {\n internalFormat: isWebGL2 ? gl.DEPTH32F_STENCIL8 : gl.DEPTH_STENCIL,\n baseFormat: gl.DEPTH_STENCIL,\n dataType: isWebGL2 ? gl.FLOAT_32_UNSIGNED_INT_24_8_REV : gl.UNSIGNED_INT_24_8,\n isCompressed: false,\n attachment: gl.DEPTH_STENCIL_ATTACHMENT\n };\n case TextureFormat.Stencil:\n return {\n internalFormat: gl.STENCIL_INDEX8,\n baseFormat: gl.STENCIL_ATTACHMENT,\n dataType: gl.UNSIGNED_BYTE,\n isCompressed: false,\n attachment: gl.STENCIL_ATTACHMENT\n };\n case TextureFormat.Depth16:\n return {\n internalFormat: gl.DEPTH_COMPONENT16,\n baseFormat: gl.DEPTH_COMPONENT,\n dataType: gl.UNSIGNED_SHORT,\n isCompressed: false,\n attachment: gl.DEPTH_ATTACHMENT\n };\n case TextureFormat.Depth24Stencil8:\n return {\n internalFormat: isWebGL2 ? gl.DEPTH24_STENCIL8 : gl.DEPTH_STENCIL,\n baseFormat: gl.DEPTH_STENCIL,\n dataType: gl.UNSIGNED_INT_24_8,\n isCompressed: false,\n attachment: gl.DEPTH_STENCIL_ATTACHMENT\n };\n case TextureFormat.Depth24:\n return {\n internalFormat: gl.DEPTH_COMPONENT24,\n baseFormat: gl.DEPTH_COMPONENT,\n dataType: gl.UNSIGNED_INT,\n isCompressed: false,\n attachment: gl.DEPTH_ATTACHMENT\n };\n case TextureFormat.Depth32:\n return {\n internalFormat: gl.DEPTH_COMPONENT32F,\n baseFormat: gl.DEPTH_COMPONENT,\n dataType: gl.FLOAT,\n isCompressed: false,\n attachment: gl.DEPTH_ATTACHMENT\n };\n\n case TextureFormat.Depth32Stencil8:\n return {\n internalFormat: gl.DEPTH32F_STENCIL8,\n baseFormat: gl.DEPTH_STENCIL,\n dataType: gl.FLOAT_32_UNSIGNED_INT_24_8_REV,\n isCompressed: false,\n attachment: gl.DEPTH_STENCIL_ATTACHMENT\n };\n default:\n throw new Error(`this TextureFormat is not supported in Galacean Engine: ${format}`);\n }\n }\n\n /**\n * Check whether the corresponding texture format is supported.\n * @internal\n */\n static _supportTextureFormat(format: TextureFormat, rhi: WebGLGraphicDevice): boolean {\n switch (format) {\n case TextureFormat.R16G16B16A16:\n if (!rhi.canIUse(GLCapabilityType.textureHalfFloat)) {\n return false;\n }\n break;\n case TextureFormat.R32G32B32A32:\n if (!rhi.canIUse(GLCapabilityType.textureFloat)) {\n return false;\n }\n break;\n case TextureFormat.Depth16:\n case TextureFormat.Depth24Stencil8:\n case TextureFormat.Depth:\n case TextureFormat.DepthStencil:\n if (!rhi.canIUse(GLCapabilityType.depthTexture)) {\n return false;\n }\n break;\n case TextureFormat.R32G32B32A32_UInt:\n case TextureFormat.Depth24:\n case TextureFormat.Depth32:\n case TextureFormat.Depth32Stencil8:\n return rhi.isWebGL2;\n }\n\n return true;\n }\n /**\n * @internal\n */\n static _supportRenderBufferColorFormat(format: TextureFormat, rhi: WebGLGraphicDevice): boolean {\n let isSupported = true;\n\n switch (format) {\n case TextureFormat.R16G16B16A16:\n {\n if (!rhi.canIUse(GLCapabilityType.colorBufferHalfFloat) || !rhi.canIUse(GLCapabilityType.textureHalfFloat)) {\n isSupported = false;\n }\n }\n break;\n case TextureFormat.R32G32B32A32:\n {\n if (!rhi.canIUse(GLCapabilityType.colorBufferFloat) || !rhi.canIUse(GLCapabilityType.textureFloat)) {\n isSupported = false;\n }\n }\n break;\n }\n\n return isSupported;\n }\n\n /**\n * @internal\n */\n static _supportRenderBufferDepthFormat(format: TextureFormat, rhi: WebGLGraphicDevice): boolean {\n if (!rhi.isWebGL2) {\n switch (format) {\n case TextureFormat.Depth24:\n case TextureFormat.Depth32:\n case TextureFormat.Depth32Stencil8:\n return false;\n }\n }\n\n return true;\n }\n\n /** @internal */\n _texture: Texture;\n /** @internal */\n _glTexture: WebGLTexture;\n /** @internal */\n _rhi: WebGLGraphicDevice;\n /** @internal */\n _gl: WebGLRenderingContext & WebGL2RenderingContext;\n /** @internal */\n _isWebGL2: boolean;\n /** @internal */\n _target: GLenum; // gl.TEXTURE_2D | gl.TEXTURE_CUBE_MAP\n /** @internal */\n _formatDetail: TextureFormatDetail;\n\n /**\n * Wrapping mode for texture coordinate S.\n */\n set wrapModeU(value: TextureWrapMode) {\n this._bind();\n this._setWrapMode(value, this._gl.TEXTURE_WRAP_S);\n }\n\n /**\n * Wrapping mode for texture coordinate T.\n */\n set wrapModeV(value: TextureWrapMode) {\n this._bind();\n this._setWrapMode(value, this._gl.TEXTURE_WRAP_T);\n }\n\n /**\n * Filter mode for texture.\n */\n set filterMode(value: TextureFilterMode) {\n const gl = this._gl;\n const target = this._target;\n /** @ts-ignore */\n const { _mipmap } = this._texture;\n\n this._bind();\n switch (value) {\n case TextureFilterMode.Point:\n gl.texParameteri(target, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(target, gl.TEXTURE_MIN_FILTER, _mipmap ? gl.NEAREST_MIPMAP_NEAREST : gl.NEAREST);\n break;\n case TextureFilterMode.Bilinear:\n gl.texParameteri(target, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(target, gl.TEXTURE_MIN_FILTER, _mipmap ? gl.LINEAR_MIPMAP_NEAREST : gl.LINEAR);\n break;\n case TextureFilterMode.Trilinear:\n gl.texParameteri(target, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(target, gl.TEXTURE_MIN_FILTER, _mipmap ? gl.LINEAR_MIPMAP_LINEAR : gl.LINEAR);\n break;\n }\n }\n\n /**\n * Anisotropic level for texture.\n */\n set anisoLevel(value: number) {\n const gl = this._gl as WebGLRenderingContext & WebGL2RenderingContext & EXT_texture_filter_anisotropic;\n\n this._bind();\n gl.texParameterf(this._target, gl.TEXTURE_MAX_ANISOTROPY_EXT, value);\n }\n\n set depthCompareFunction(value: TextureDepthCompareFunction) {\n this._bind();\n\n const gl = this._gl;\n switch (value) {\n case TextureDepthCompareFunction.Never:\n gl.texParameteri(this._target, gl.TEXTURE_COMPARE_FUNC, gl.NEVER);\n break;\n case TextureDepthCompareFunction.Less:\n gl.texParameteri(this._target, gl.TEXTURE_COMPARE_FUNC, gl.LESS);\n break;\n case TextureDepthCompareFunction.Equal:\n gl.texParameteri(this._target, gl.TEXTURE_COMPARE_FUNC, gl.EQUAL);\n break;\n case TextureDepthCompareFunction.LessEqual:\n gl.texParameteri(this._target, gl.TEXTURE_COMPARE_FUNC, gl.LEQUAL);\n break;\n case TextureDepthCompareFunction.Greater:\n gl.texParameteri(this._target, gl.TEXTURE_COMPARE_FUNC, gl.GREATER);\n break;\n case TextureDepthCompareFunction.NotEqual:\n gl.texParameteri(this._target, gl.TEXTURE_COMPARE_FUNC, gl.NOTEQUAL);\n break;\n case TextureDepthCompareFunction.GreaterEqual:\n gl.texParameteri(this._target, gl.TEXTURE_COMPARE_FUNC, gl.GEQUAL);\n break;\n case TextureDepthCompareFunction.Always:\n gl.texParameteri(this._target, gl.TEXTURE_COMPARE_FUNC, gl.ALWAYS);\n break;\n }\n }\n /**\n * Create texture in WebGL platform.\n */\n constructor(rhi: WebGLGraphicDevice, texture: Texture, target: GLenum) {\n this._texture = texture;\n this._rhi = rhi;\n this._gl = rhi.gl as WebGLRenderingContext & WebGL2RenderingContext;\n this._isWebGL2 = rhi.isWebGL2;\n this._target = target;\n this._glTexture = this._gl.createTexture();\n }\n\n /**\n * Destroy texture.\n */\n destroy() {\n this._gl.deleteTexture(this._glTexture);\n this._texture = null;\n this._glTexture = null;\n this._formatDetail = null;\n }\n\n /**\n * @internal\n */\n setUseDepthCompareMode(value: boolean): void {\n const gl = this._gl;\n gl.texParameteri(this._target, gl.TEXTURE_COMPARE_MODE, value ? gl.COMPARE_REF_TO_TEXTURE : gl.NONE);\n }\n\n /**\n * Generate multi-level textures based on the 0th level data.\n */\n generateMipmaps(): void {\n // @todo (1x1).generateMipmap() will flash back in uc.\n if (this._texture.width !== 1 || this._texture.height !== 1) {\n this._bind();\n this._gl.generateMipmap(this._target);\n }\n }\n\n protected _bind() {\n this._rhi.bindTexture(this);\n }\n\n /**\n * Pre-development mipmapping GPU memory.\n */\n protected _init(isCube: boolean): void {\n const gl = this._gl;\n const isWebGL2 = this._isWebGL2;\n let { internalFormat, baseFormat, dataType } = this._formatDetail;\n // @ts-ignore\n const { mipmapCount, width, height, usage, _isDepthTexture } = this._texture;\n\n this._bind();\n\n if (isWebGL2 && !(baseFormat === gl.LUMINANCE_ALPHA || baseFormat === gl.ALPHA) && usage !== TextureUsage.Dynamic) {\n gl.texStorage2D(this._target, mipmapCount, internalFormat, width, height);\n } else {\n if (!isCube) {\n if (_isDepthTexture) {\n gl.texImage2D(this._target, 0, internalFormat, width, height, 0, baseFormat, dataType, null);\n } else {\n for (let i = 0; i < mipmapCount; i++) {\n const mipWidth = Math.max(1, width >> i);\n const mipHeight = Math.max(1, height >> i);\n gl.texImage2D(this._target, i, internalFormat, mipWidth, mipHeight, 0, baseFormat, dataType, null);\n }\n }\n } else {\n for (let i = 0; i < mipmapCount; i++) {\n const size = Math.max(1, width >> i);\n for (let faceIndex = 0; faceIndex < 6; faceIndex++) {\n gl.texImage2D(\n gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex,\n i,\n internalFormat,\n size,\n size,\n 0,\n baseFormat,\n dataType,\n null\n );\n }\n }\n }\n }\n }\n\n /**\n * Get the pixel color buffer according to the specified cube face and area.\n * @param face - You can choose which cube face to read\n * @param x - X coordinate of area start\n * @param y - Y coordinate of area start\n * @param width - Area width\n * @param height - Area height\n * @param out - Color buffer\n * @param mipLevel - Set mip level the data want to get from\n */\n protected _getPixelBuffer(\n face: TextureCubeFace | null,\n x: number,\n y: number,\n width: number,\n height: number,\n mipLevel: number,\n out: ArrayBufferView\n ): void {\n const gl = this._gl;\n const { baseFormat, dataType } = this._formatDetail;\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, this._getReadFrameBuffer());\n\n if (mipLevel > 0 && !this._isWebGL2) {\n mipLevel = 0;\n Logger.error(\"mipLevel only take effect in WebGL2.0\");\n }\n\n if (face != null) {\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_CUBE_MAP_POSITIVE_X + face,\n this._glTexture,\n mipLevel\n );\n } else {\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this._glTexture, mipLevel);\n }\n gl.readPixels(x, y, width, height, baseFormat, dataType, out);\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n }\n\n private _setWrapMode(value: TextureWrapMode, pname: GLenum): void {\n const gl = this._gl;\n const isWebGL2 = this._isWebGL2;\n const target = this._target;\n const { width, height } = this._texture;\n\n if (\n !isWebGL2 &&\n value !== TextureWrapMode.Clamp &&\n (!GLTexture._isPowerOf2(width) || !GLTexture._isPowerOf2(height))\n ) {\n Logger.warn(\n \"non-power-2 texture is not supported for REPEAT or MIRRORED_REPEAT in WebGL1,and has automatically downgraded to CLAMP_TO_EDGE\"\n );\n value = TextureWrapMode.Clamp;\n }\n\n switch (value) {\n case TextureWrapMode.Clamp:\n gl.texParameteri(target, pname, gl.CLAMP_TO_EDGE);\n break;\n case TextureWrapMode.Repeat:\n gl.texParameteri(target, pname, gl.REPEAT);\n break;\n case TextureWrapMode.Mirror:\n gl.texParameteri(target, pname, gl.MIRRORED_REPEAT);\n break;\n }\n }\n\n protected _getReadFrameBuffer(): WebGLFramebuffer {\n let frameBuffer = this._rhi._readFrameBuffer;\n if (!frameBuffer) {\n this._rhi._readFrameBuffer = frameBuffer = this._gl.createFramebuffer();\n }\n return frameBuffer;\n }\n}\n","import {\n GLCapabilityType,\n IPlatformRenderTarget,\n Logger,\n RenderTarget,\n Texture,\n TextureCube,\n TextureCubeFace,\n TextureFormat\n} from \"@galacean/engine-core\";\nimport { GLTexture } from \"./GLTexture\";\nimport { WebGLGraphicDevice } from \"./WebGLGraphicDevice\";\n\n/**\n * The render target in WebGL platform is used for off-screen rendering.\n */\nexport class GLRenderTarget implements IPlatformRenderTarget {\n private _gl: WebGLRenderingContext & WebGL2RenderingContext;\n private _isWebGL2: boolean;\n private _target: RenderTarget;\n private _frameBuffer: WebGLFramebuffer;\n private _MSAAFrameBuffer: WebGLFramebuffer | null;\n private _depthRenderBuffer: WebGLRenderbuffer | null;\n private _MSAAColorRenderBuffers: WebGLRenderbuffer[] = [];\n private _MSAADepthRenderBuffer: WebGLRenderbuffer | null;\n private _oriDrawBuffers: GLenum[];\n private _blitDrawBuffers: GLenum[] | null;\n private _curMipLevel: number = 0;\n private _curFaceIndex: TextureCubeFace = undefined;\n\n /**\n * Create render target in WebGL platform.\n */\n constructor(rhi: WebGLGraphicDevice, target: RenderTarget) {\n this._gl = rhi.gl as WebGLRenderingContext & WebGL2RenderingContext;\n this._isWebGL2 = rhi.isWebGL2;\n this._target = target;\n\n /** @ts-ignore */\n const { _colorTextures, _depth, width, height } = target;\n const isDepthTexture = _depth instanceof Texture;\n\n /** todo\n * MRT + Cube + [,MSAA]\n * MRT + MSAA\n */\n\n for (let i = 0, n = _colorTextures.length; i < n; i++) {\n const format = _colorTextures[i]._format;\n if (!GLTexture._supportRenderBufferColorFormat(format, rhi)) {\n throw new Error(`TextureFormat is not supported:${TextureFormat[format]} in RenderTarget`);\n }\n }\n\n if (!isDepthTexture && !GLTexture._supportRenderBufferDepthFormat(_depth, rhi)) {\n throw new Error(`TextureFormat is not supported:${TextureFormat[_depth]} in RenderTarget`);\n }\n\n if (_colorTextures.length > 1 && !rhi.canIUse(GLCapabilityType.drawBuffers)) {\n throw new Error(\"MRT is not supported\");\n }\n\n if (_colorTextures.some((v: Texture) => v.width !== width || v.height !== height)) {\n throw new Error(\"ColorTexture's size must as same as RenderTarget\");\n }\n\n if (isDepthTexture && (_depth.width !== width || _depth.height !== height)) {\n throw new Error(\"DepthTexture's size must as same as RenderTarget\");\n }\n\n // todo: necessary to support MRT + Cube + [,MSAA] ?\n if (_colorTextures.length > 1 && _colorTextures.some((v: Texture) => v instanceof TextureCube)) {\n throw new Error(\"MRT+Cube+[,MSAA] is not supported\");\n }\n\n const maxAntiAliasing = rhi.capability.maxAntiAliasing;\n if (target.antiAliasing > maxAntiAliasing) {\n Logger.warn(`MSAA antiAliasing exceeds the limit and is automatically downgraded to:${maxAntiAliasing}`);\n\n /** @ts-ignore */\n target._antiAliasing = maxAntiAliasing;\n }\n\n this._frameBuffer = this._gl.createFramebuffer();\n\n // bind main FBO\n this._bindMainFBO();\n\n // bind MSAA FBO\n if (target.antiAliasing > 1) {\n this._MSAAFrameBuffer = this._gl.createFramebuffer();\n this._bindMSAAFBO();\n }\n }\n\n /**\n * Set which face and mipLevel of the cube texture to render to.\n * @param mipLevel - Set mip level the data want to write\n * @param faceIndex - Cube texture face\n */\n activeRenderTarget(mipLevel: number, faceIndex?: TextureCubeFace): void {\n // @todo: support MRT\n const { _gl: gl, _target: target } = this;\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, this._frameBuffer);\n\n const mipChanged = mipLevel !== this._curMipLevel;\n const faceChanged = faceIndex !== this._curFaceIndex;\n\n const colorTexture = target.getColorTexture(0);\n if (colorTexture) {\n const isCube = colorTexture instanceof TextureCube;\n if (mipChanged || (isCube && faceChanged)) {\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n isCube ? gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex : gl.TEXTURE_2D,\n // @ts-ignore\n (colorTexture._platformTexture as GLTexture)._glTexture,\n mipLevel\n );\n }\n }\n\n const { depthTexture } = target;\n if (depthTexture) {\n const isCube = depthTexture instanceof TextureCube;\n if (mipChanged || isCube) {\n // @ts-ignore\n const platformTexture = <GLTexture>depthTexture._platformTexture;\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n platformTexture._formatDetail.attachment,\n isCube ? gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex : gl.TEXTURE_2D,\n platformTexture._glTexture,\n mipLevel\n );\n }\n } else {\n if (mipChanged) {\n // @ts-ignore\n const { internalFormat } = GLTexture._getRenderBufferDepthFormatDetail(target._depth, gl, this._isWebGL2);\n gl.bindRenderbuffer(gl.RENDERBUFFER, this._depthRenderBuffer);\n gl.renderbufferStorage(gl.RENDERBUFFER, internalFormat, target.width >> mipLevel, target.height >> mipLevel);\n }\n }\n\n this._curMipLevel = mipLevel;\n this._curFaceIndex = faceIndex;\n\n if (this._MSAAFrameBuffer) {\n gl.bindFramebuffer(gl.FRAMEBUFFER, this._MSAAFrameBuffer);\n }\n }\n\n /**\n * Blit FBO.\n */\n blitRenderTarget(): void {\n if (!this._MSAAFrameBuffer) return;\n\n const gl = this._gl;\n const mask = gl.COLOR_BUFFER_BIT | (this._target.depthTexture ? gl.DEPTH_BUFFER_BIT : 0);\n const { colorTextureCount, width, height } = this._target;\n\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, this._MSAAFrameBuffer);\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this._frameBuffer);\n\n for (let textureIndex = 0; textureIndex < colorTextureCount; textureIndex++) {\n const attachment = gl.COLOR_ATTACHMENT0 + textureIndex;\n\n this._blitDrawBuffers[textureIndex] = attachment;\n\n gl.readBuffer(attachment);\n gl.drawBuffers(this._blitDrawBuffers);\n gl.blitFramebuffer(0, 0, width, height, 0, 0, width, height, mask, gl.NEAREST);\n\n this._blitDrawBuffers[textureIndex] = gl.NONE;\n }\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n }\n\n /**\n * Destroy render target.\n */\n destroy(): void {\n const gl = this._gl;\n\n this._frameBuffer && gl.deleteFramebuffer(this._frameBuffer);\n this._depthRenderBuffer && gl.deleteRenderbuffer(this._depthRenderBuffer);\n this._MSAAFrameBuffer && gl.deleteFramebuffer(this._MSAAFrameBuffer);\n this._MSAADepthRenderBuffer && gl.deleteRenderbuffer(this._MSAADepthRenderBuffer);\n\n for (let i = 0; i < this._MSAAColorRenderBuffers.length; i++) {\n gl.deleteRenderbuffer(this._MSAAColorRenderBuffers[i]);\n }\n\n this._frameBuffer = null;\n this._depthRenderBuffer = null;\n this._MSAAFrameBuffer = null;\n this._MSAAColorRenderBuffers.length = 0;\n this._MSAADepthRenderBuffer = null;\n }\n\n private _bindMainFBO(): void {\n const gl = this._gl;\n const isWebGL2: boolean = this._isWebGL2;\n\n /** @ts-ignore */\n const { _depth, colorTextureCount, width, height } = this._target;\n const drawBuffers = new Array(colorTextureCount);\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, this._frameBuffer);\n\n /** color render buffer */\n for (let i = 0; i < colorTextureCount; i++) {\n const colorTexture = this._target.getColorTexture(i);\n const attachment = gl.COLOR_ATTACHMENT0 + i;\n\n drawBuffers[i] = attachment;\n\n if (!(colorTexture instanceof TextureCube)) {\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n attachment,\n gl.TEXTURE_2D,\n /** @ts-ignore */\n (colorTexture._platformTexture as GLTexture)._glTexture,\n 0\n );\n }\n }\n\n if (colorTextureCount > 1) {\n gl.drawBuffers(drawBuffers);\n }\n this._oriDrawBuffers = drawBuffers;\n\n /** depth render buffer */\n if (_depth !== null) {\n if (_depth instanceof Texture && !(_depth instanceof TextureCube)) {\n // @ts-ignore\n const platformTexture = _depth._platformTexture as GLTexture;\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n platformTexture._formatDetail.attachment,\n gl.TEXTURE_2D,\n platformTexture._glTexture,\n 0\n );\n } else if (this._target.antiAliasing <= 1) {\n const { internalFormat, attachment } = GLTexture._getRenderBufferDepthFormatDetail(_depth, gl, isWebGL2);\n const depthRenderBuffer = gl.createRenderbuffer();\n\n this._depthRenderBuffer = depthRenderBuffer;\n\n gl.bindRenderbuffer(gl.RENDERBUFFER, depthRenderBuffer);\n gl.renderbufferStorage(gl.RENDERBUFFER, internalFormat, width, height);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachment, gl.RENDERBUFFER, depthRenderBuffer);\n }\n }\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n gl.bindRenderbuffer(gl.RENDERBUFFER, null);\n }\n\n private _bindMSAAFBO(): void {\n const gl = this._gl;\n const isWebGL2 = this._isWebGL2;\n const MSAADepthRenderBuffer = gl.createRenderbuffer();\n\n /** @ts-ignore */\n const { _depth, colorTextureCount, antiAliasing, width, height } = this._target;\n\n this._blitDrawBuffers = new Array(colorTextureCount);\n this._MSAADepthRenderBuffer = MSAADepthRenderBuffer;\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, this._MSAAFrameBuffer);\n\n // prepare MRT+MSAA color RBOs\n for (let i = 0; i < colorTextureCount; i++) {\n const MSAAColorRenderBuffer = gl.createRenderbuffer();\n\n this._MSAAColorRenderBuffers[i] = MSAAColorRenderBuffer;\n this._blitDrawBuffers[i] = gl.NONE;\n\n gl.bindRenderbuffer(gl.RENDERBUFFER, MSAAColorRenderBuffer);\n gl.renderbufferStorageMultisample(\n gl.RENDERBUFFER,\n antiAliasing,\n /** @ts-ignore */\n (this._target.getColorTexture(i)._platformTexture as GLTexture)._formatDetail.internalFormat,\n width,\n height\n );\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + i, gl.RENDERBUFFER, MSAAColorRenderBuffer);\n }\n gl.drawBuffers(this._oriDrawBuffers);\n\n // prepare MSAA depth RBO\n if (_depth !== null) {\n const { internalFormat, attachment } =\n _depth instanceof Texture\n ? /** @ts-ignore */\n (_depth._platformTexture as GLTexture)._formatDetail\n : GLTexture._getRenderBufferDepthFormatDetail(_depth, gl, isWebGL2);\n\n gl.bindRenderbuffer(gl.RENDERBUFFER, MSAADepthRenderBuffer);\n gl.renderbufferStorageMultisample(gl.RENDERBUFFER, antiAliasing, internalFormat, width, height);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachment, gl.RENDERBUFFER, MSAADepthRenderBuffer);\n }\n\n this._checkFrameBuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n gl.bindRenderbuffer(gl.RENDERBUFFER, null);\n }\n\n private _checkFrameBuffer(): void {\n const gl = this._gl;\n const isWebGL2 = this._isWebGL2;\n const e = gl.checkFramebufferStatus(gl.FRAMEBUFFER);\n\n switch (e) {\n case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:\n throw new Error(\n \"The attachment types are mismatched or not all framebuffer attachment points are framebuffer attachment complete\"\n );\n case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:\n throw new Error(\"There is no attachment\");\n case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:\n throw new Error(\" Height and width of the attachment are not the same.\");\n case gl.FRAMEBUFFER_UNSUPPORTED:\n throw new Error(\n \"The format of the attachment is not supported or if depth and stencil attachments are not the same renderbuffer\"\n );\n }\n\n if (isWebGL2 && e === gl.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE) {\n throw new Error(\n \"The values of gl.RENDERBUFFER_SAMPLES are different among attached renderbuffers, or are non-zero if the attached images are a mix of renderbuffers and textures.\"\n );\n }\n }\n}\n","import { IPlatformTexture2D, Logger, Texture2D, TextureFormat, TextureUsage } from \"@galacean/engine-core\";\nimport { GLTexture } from \"./GLTexture\";\nimport { WebGLGraphicDevice } from \"./WebGLGraphicDevice\";\n\n/**\n * Texture 2d in WebGL platform.\n */\nexport class GLTexture2D extends GLTexture implements IPlatformTexture2D {\n /** Backward compatible with WebGL1.0. */\n private _compressedMipFilled: number = 0;\n\n constructor(rhi: WebGLGraphicDevice, texture2D: Texture2D) {\n super(rhi, texture2D, rhi.gl.TEXTURE_2D);\n\n /** @ts-ignore */\n const { format, _mipmap, width, height } = texture2D;\n const isWebGL2 = this._isWebGL2;\n\n /** @ts-ignore */\n if (!GLTexture._supportTextureFormat(format, rhi)) {\n throw new Error(`Texture format is not supported:${TextureFormat[format]}`);\n }\n\n if (_mipmap && !isWebGL2 && (!GLTexture._isPowerOf2(width) || !GLTexture._isPowerOf2(height))) {\n Logger.warn(\n \"non-power-2 texture is not supported for mipmap in WebGL1,and has automatically downgraded to non-mipmap\"\n );\n\n /** @ts-ignore */\n texture2D._mipmap = false;\n /** @ts-ignore */\n texture2D._mipmapCount = texture2D._getMipmapCount();\n }\n\n this._formatDetail = GLTexture._getFormatDetail(format, this._gl, isWebGL2);\n (this._formatDetail.isCompressed && !isWebGL2) || this._init(false);\n }\n\n /**\n * {@inheritDoc IPlatformTexture2D.setPixelBuffer}\n */\n setPixelBuffer(\n colorBuffer: ArrayBufferView,\n mipLevel: number = 0,\n x: number,\n y: number,\n width?: number,\n height?: number\n ): void {\n const gl = this._gl;\n const isWebGL2: boolean = this._isWebGL2;\n const { internalFormat, baseFormat, dataType, isCompressed } = this._formatDetail;\n const mipWidth = Math.max(1, this._texture.width >> mipLevel);\n const mipHeight = Math.max(1, this._texture.height >> mipLevel);\n\n width = width || mipWidth - x;\n height = height || mipHeight - y;\n\n this._bind();\n\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 0);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 0);\n\n if (isCompressed) {\n const mipBit = 1 << mipLevel;\n if (isWebGL2 || this._compressedMipFilled & mipBit) {\n gl.compressedTexSubImage2D(this._target, mipLevel, x, y, width, height, internalFormat, colorBuffer);\n } else {\n gl.compressedTexImage2D(this._target, mipLevel, internalFormat, width, height, 0, colorBuffer);\n this._compressedMipFilled |= mipBit;\n }\n } else {\n gl.texSubImage2D(this._target, mipLevel, x, y, width, height, baseFormat, dataType, colorBuffer);\n }\n }\n\n /**\n * {@inheritDoc IPlatformTexture2D.setImageSource}\n */\n setImageSource(\n imageSource: TexImageSource,\n mipLevel: number,\n flipY: boolean,\n premultiplyAlpha: boolean,\n x: number,\n y: number\n ): void {\n const gl = this._gl;\n const { internalFormat, baseFormat, dataType } = this._formatDetail;\n\n this._bind();\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, +flipY);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, +premultiplyAlpha);\n\n if (this._texture.usage === TextureUsage.Dynamic) {\n gl.texImage2D(this._target, mipLevel, internalFormat, baseFormat, dataType, imageSource);\n } else {\n gl.texSubImage2D(this._target, mipLevel, x || 0, y || 0, baseFormat, dataType, imageSource);\n }\n }\n\n /**\n * {@inheritDoc IPlatformTexture2D.getPixelBuffer }\n */\n getPixelBuffer(x: number, y: number, width: number, height: number, mipLevel: number, out: ArrayBufferView): void {\n if (this._formatDetail.isCompressed) {\n throw new Error(\"Unable to read compressed texture\");\n }\n super._getPixelBuffer(null, x, y, width, height, mipLevel, out);\n }\n}\n","import { IPlatformTexture2DArray, Texture2DArray, TextureFormat } from \"@galacean/engine-core\";\nimport { GLTexture } from \"./GLTexture\";\nimport { WebGLGraphicDevice } from \"./WebGLGraphicDevice\";\n\n/**\n * Texture 2D array in WebGL platform.\n */\nexport class GLTexture2DArray extends GLTexture implements IPlatformTexture2DArray {\n constructor(rhi: WebGLGraphicDevice, texture2DArray: Texture2DArray) {\n super(rhi, texture2DArray, (<WebGL2RenderingContext>rhi.gl).TEXTURE_2D_ARRAY);\n\n const { format, width, height, length, mipmapCount } = texture2DArray;\n\n if (!this._isWebGL2) {\n throw new Error(`Texture2D Array is not supported in WebGL1.0`);\n }\n\n /** @ts-ignore */\n if (!GLTexture._supportTextureFormat(format, rhi)) {\n throw new Error(`Texture format is not supported:${TextureFormat[format]}`);\n }\n\n this._bind();\n this._formatDetail = GLTexture._getFormatDetail(format, this._gl, true);\n this._gl.texStorage3D(this._target, mipmapCount, this._formatDetail.internalFormat, width, height, length);\n }\n\n /**\n * {@inheritDoc IPlatformTexture2DArray.setPixelBuffer}\n */\n setPixelBuffer(\n offsetIndex: number,\n colorBuffer: ArrayBufferView,\n mipLevel: number,\n x: number,\n y: number,\n width?: number,\n height?: number,\n length?: number\n ): void {\n const { _target: target, _gl: gl } = this;\n const { internalFormat, baseFormat, dataType, isCompressed } = this._formatDetail;\n\n width = width || Math.max(1, this._texture.width >> mipLevel) - x;\n height = height || Math.max(1, this._texture.height >> mipLevel) - y;\n length = length || (<Texture2DArray>this._texture).length;\n\n this._bind();\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 0);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 0);\n\n if (isCompressed) {\n gl.compressedTexSubImage3D(\n target,\n mipLevel,\n x,\n y,\n offsetIndex,\n width,\n height,\n length,\n internalFormat,\n colorBuffer\n );\n } else {\n gl.texSubImage3D(target, mipLevel, x, y, offsetIndex, width, height, length, baseFormat, dataType, colorBuffer);\n }\n }\n\n /**\n * {@inheritDoc IPlatformTexture2DArray.setImageSource}\n */\n setImageSource(\n elementIndex: number,\n imageSource: TexImageSource,\n mipLevel: number,\n flipY: boolean,\n premultiplyAlpha: boolean,\n x: number,\n y: number\n ): void {\n const gl = this._gl;\n const { baseFormat, dataType } = this._formatDetail;\n\n this._bind();\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, +flipY);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, +premultiplyAlpha);\n gl.texSubImage3D(\n this._target,\n mipLevel,\n x,\n y,\n elementIndex,\n (<Exclude<TexImageSource, VideoFrame>>imageSource).width ?? (<VideoFrame>imageSource).codedWidth,\n (<Exclude<TexImageSource, VideoFrame>>imageSource).height ?? (<VideoFrame>imageSource).codedHeight,\n 1,\n baseFormat,\n dataType,\n imageSource\n );\n }\n\n /**\n * {@inheritDoc IPlatformTexture2DArray.getPixelBuffer}\n */\n getPixelBuffer(\n elementIndex: number,\n x: number,\n y: number,\n width: number,\n height: number,\n mipLevel: number,\n out: ArrayBufferView\n ): void {\n const { _gl: gl, _formatDetail: formatDetail } = this;\n\n if (formatDetail.isCompressed) {\n throw new Error(\"Unable to read compressed texture\");\n }\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, this._getReadFrameBuffer());\n gl.framebufferTextureLayer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, this._glTexture, mipLevel, elementIndex);\n gl.readPixels(x, y, width, height, formatDetail.baseFormat, formatDetail.dataType, out);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n }\n}\n","import { IPlatformTextureCube, Logger, TextureCube, TextureCubeFace, TextureFormat } from \"@galacean/engine-core\";\nimport { GLTexture } from \"./GLTexture\";\nimport { WebGLGraphicDevice } from \"./WebGLGraphicDevice\";\n\n/**\n * Cube texture in WebGL platform.\n */\nexport class GLTextureCube extends GLTexture implements IPlatformTextureCube {\n /** Backward compatible with WebGL1.0. */\n private _compressedFaceFilled: number[] = [0, 0, 0, 0, 0, 0];\n\n constructor(rhi: WebGLGraphicDevice, textureCube: TextureCube) {\n super(rhi, textureCube, rhi.gl.TEXTURE_CUBE_MAP);\n\n /** @ts-ignore */\n const { format, _mipmap, width: size } = textureCube;\n const isWebGL2 = this._isWebGL2;\n\n /** @ts-ignore */\n if (!GLTexture._supportTextureFormat(format, rhi)) {\n throw new Error(`Texture format is not supported:${TextureFormat[format]}`);\n }\n\n if (_mipmap && !isWebGL2 && !GLTexture._isPowerOf2(size)) {\n Logger.warn(\n \"non-power-2 texture is not supported for mipmap in WebGL1,and has automatically downgraded to non-mipmap\"\n );\n\n /** @ts-ignore */\n textureCube._mipmap = false;\n /** @ts-ignore */\n textureCube._mipmapCount = textureCube._getMipmapCount();\n }\n\n this._formatDetail = GLTexture._getFormatDetail(format, this._gl, isWebGL2);\n (this._formatDetail.isCompressed && !isWebGL2) || this._init(true);\n }\n\n /**\n * {@inheritDoc IPlatformTextureCube.setPixelBuffer}\n */\n setPixelBuffer(\n face: TextureCubeFace,\n colorBuffer: ArrayBufferView,\n mipLevel: number,\n x: number,\n y: number,\n width?: number,\n height?: number\n ): void {\n const gl = this._gl;\n const isWebGL2 = this._isWebGL2;\n const { internalFormat, baseFormat, dataType, isCompressed } = this._formatDetail;\n const mipSize = Math.max(1, this._texture.width >> mipLevel);\n\n width = width || mipSize - x;\n height = height || mipSize - y;\n\n this._bind();\n\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 0);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 0);\n\n if (isCompressed) {\n const mipBit = 1 << mipLevel;\n if (isWebGL2 || this._compressedFaceFilled[face] & mipBit) {\n gl.compressedTexSubImage2D(\n gl.TEXTURE_CUBE_MAP_POSITIVE_X + face,\n mipLevel,\n x,\n y,\n width,\n height,\n internalFormat,\n colorBuffer\n );\n } else {\n gl.compressedTexImage2D(\n gl.TEXTURE_CUBE_MAP_POSITIVE_X + face,\n mipLevel,\n internalFormat,\n width,\n height,\n 0,\n colorBuffer\n );\n this._compressedFaceFilled[face] |= mipBit;\n }\n } else {\n gl.texSubImage2D(\n gl.TEXTURE_CUBE_MAP_POSITIVE_X + face,\n mipLevel,\n x,\n y,\n width,\n height,\n baseFormat,\n dataType,\n colorBuffer\n );\n }\n }\n\n /**\n * {@inheritDoc IPlatformTextureCube.setImageSource}\n */\n setImageSource(\n face: TextureCubeFace,\n imageSource: TexImageSource,\n mipLevel: number,\n flipY: boolean,\n premultiplyAlpha: boolean,\n x: number,\n y: number\n ): void {\n const gl = this._gl;\n const { baseFormat, dataType } = this._formatDetail;\n\n this._bind();\n\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, +flipY);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, +premultiplyAlpha);\n gl.texSubImage2D(\n gl.TEXTURE_CUBE_MAP_POSITIVE_X + face,\n mipLevel,\n x || 0,\n y || 0,\n baseFormat,\n dataType,\n imageSource\n );\n }\n\n /**\n * {@inheritDoc IPlatformTextureCube.getPixelBuffer}\n */\n getPixelBuffer(\n face: TextureCubeFace,\n x: number,\n y: number,\n width: number,\n height: number,\n mipLevel: number,\n out: ArrayBufferView\n ): void {\n if (this._formatDetail.isCompressed) {\n throw new Error(\"Unable to read compressed texture\");\n }\n super._getPixelBuffer(face, x, y, width, height, mipLevel, out);\n }\n}\n","import {\n BufferBindFlag,\n BufferUsage,\n CameraClearFlags,\n Canvas,\n ColorWriteMask,\n Engine,\n GLCapabilityType,\n IPlatformBuffer,\n IPlatformRenderTarget,\n IPlatformTexture2D,\n IPlatformTextureCube,\n Logger,\n Mesh,\n Platform,\n RenderTarget,\n SubMesh,\n SystemInfo,\n Texture2D,\n Texture2DArray,\n TextureCube,\n TextureCubeFace\n} from \"@galacean/engine-core\";\nimport { IHardwareRenderer, IPlatformPrimitive } from \"@galacean/engine-design\";\nimport { Color, Vector4 } from \"@galacean/engine-math\";\nimport { GLBuffer } from \"./GLBuffer\";\nimport { GLCapability } from \"./GLCapability\";\nimport { GLExtensions } from \"./GLExtensions\";\nimport { GLPrimitive } from \"./GLPrimitive\";\nimport { GLRenderStates } from \"./GLRenderStates\";\nimport { GLRenderTarget } from \"./GLRenderTarget\";\nimport { GLTexture } from \"./GLTexture\";\nimport { GLTexture2D } from \"./GLTexture2D\";\nimport { GLTexture2DArray } from \"./GLTexture2DArray\";\nimport { GLTextureCube } from \"./GLTextureCube\";\nimport { WebCanvas } from \"./WebCanvas\";\nimport { WebGLExtension } from \"./type\";\n\n/**\n * WebGL mode.\n */\nexport enum WebGLMode {\n /** Auto, use WebGL2.0 if support, or will fallback to WebGL1.0. */\n Auto = 0,\n /** WebGL2.0. */\n WebGL2 = 1,\n /** WebGL1.0, */\n WebGL1 = 2\n}\n\n/**\n * WebGL graphic device options.\n */\nexport interface WebGLGraphicDeviceOptions extends WebGLContextAttributes {\n /** WebGL mode.*/\n webGLMode?: WebGLMode;\n\n /**\n * @internal\n * iOS 15 webgl implement has bug, maybe should force call flush command buffer, for example iPhone13(iOS 15.4.1).\n */\n _forceFlush?: boolean;\n\n /**\n * @internal\n * Max allow skin uniform vectors count, default is 256\n *\n * @remarks large count maybe cause performance issue.\n */\n _maxAllowSkinUniformVectorCount?: number;\n}\n\n/**\n * WebGL graphic device, including WebGL1.0 and WebGL2.0.\n */\nexport class WebGLGraphicDevice implements IHardwareRenderer {\n /** @internal */\n _readFrameBuffer: WebGLFramebuffer = null;\n /** @internal */\n _mainFrameBuffer: WebGLFramebuffer = null;\n /** @internal */\n _mainFrameWidth: number = 0;\n /** @internal */\n _mainFrameHeight: number = 0;\n /** @internal */\n _enableGlobalDepthBias: boolean = false;\n /** @internal */\n _currentBindShaderProgram: any;\n\n private _options: WebGLGraphicDeviceOptions;\n private _gl: (WebGLRenderingContext & WebGLExtension) | WebGL2RenderingContext;\n private _renderStates;\n private _extensions;\n private _capability: GLCapability;\n private _isWebGL2: boolean;\n private _renderer: string;\n private _webCanvas: HTMLCanvasElement | OffscreenCanvas;\n\n private _activeTextureID: number;\n private _activeTextures: GLTexture[] = new Array(32);\n\n private _lastViewport: Vector4 = new Vector4(null, null, null, null);\n private _lastScissor: Vector4 = new Vector4(null, null, null, null);\n private _lastClearColor: Color = new Color(null, null, null, null);\n private _scissorEnable: boolean = false;\n\n private _onDeviceLost: () => void;\n private _onDeviceRestored: () => void;\n\n get isWebGL2(): boolean {\n return this._isWebGL2;\n }\n\n get renderer(): string {\n return this._renderer;\n }\n\n /**\n * GL Context\n * @member {WebGLRenderingContext}\n */\n get gl() {\n return this._gl;\n }\n\n get renderStates(): GLRenderStates {\n return this._renderStates;\n }\n\n get capability(): GLCapability {\n return this._capability;\n }\n\n get canIUseMoreJoints() {\n return this.capability.canIUseMoreJoints;\n }\n\n constructor(initializeOptions: WebGLGraphicDeviceOptions = {}) {\n const options = {\n webGLMode: WebGLMode.Auto,\n stencil: true,\n _forceFlush: false,\n _maxAllowSkinUniformVectorCount: 256,\n ...initializeOptions\n };\n if (SystemInfo.platform === Platform.IPhone || SystemInfo.platform === Platform.IPad) {\n const version = SystemInfo.operatingSystem.match(/(\\d+).?(\\d+)?.?(\\d+)?/);\n if (version) {\n const majorVersion = parseInt(version[1]);\n const minorVersion = parseInt(version[2]);\n if (majorVersion === 15 && minorVersion >= 0 && minorVersion <= 4) {\n options._forceFlush = true;\n }\n }\n }\n this._options = options;\n\n this._onWebGLContextLost = this._onWebGLContextLost.bind(this);\n this._onWebGLContextRestored = this._onWebGLContextRestored.bind(this);\n }\n\n init(canvas: Canvas, onDeviceLost: () => void, onDeviceRestored: () => void): void {\n const options = this._options;\n const webCanvas = (canvas as WebCanvas)._webCanvas;\n const webGLMode = options.webGLMode;\n\n this._onDeviceLost = onDeviceLost;\n this._onDeviceRestored = onDeviceRestored;\n webCanvas.addEventListener(\"webglcontextlost\", this._onWebGLContextLost, false);\n webCanvas.addEventListener(\"webglcontextrestored\", this._onWebGLContextRestored, false);\n webCanvas.addEventListener(\"webglcontextcreationerror\", this._onContextCreationError, false);\n\n this._webCanvas = webCanvas;\n\n let gl: (WebGLRenderingContext & WebGLExtension) | WebGL2RenderingContext;\n if (webGLMode == WebGLMode.Auto || webGLMode == WebGLMode.WebGL2) {\n gl = webCanvas.getContext(\"webgl2\", options);\n if (!gl && (typeof OffscreenCanvas === \"undefined\" || !(webCanvas instanceof OffscreenCanvas))) {\n gl = <WebGL2RenderingContext>webCanvas.getContext(\"experimental-webgl2\", options);\n }\n this._isWebGL2 = true;\n\n // Prevent weird browsers to lie (such as safari!)\n if (gl && !(<WebGL2RenderingContext>gl).deleteQuery) {\n this._isWebGL2 = false;\n }\n }\n\n if (!gl) {\n if (webGLMode == WebGLMode.Auto || webGLMode == WebGLMode.WebGL1) {\n gl = <WebGLRenderingContext & WebGLExtension>webCanvas.getContext(\"webgl\", options);\n if (!gl && (typeof OffscreenCanvas === \"undefined\" || !(webCanvas instanceof OffscreenCanvas))) {\n gl = <WebGLRenderingContext & WebGLExtension>webCanvas.getContext(\"experimental-webgl\", options);\n }\n this._isWebGL2 = false;\n }\n }\n\n if (!gl) {\n throw new Error(\"Get GL Context FAILED.\");\n }\n\n this._gl = gl;\n this._initGLState(gl);\n }\n\n createPlatformPrimitive(primitive: Mesh): IPlatformPrimitive {\n return new GLPrimitive(this, primitive);\n }\n\n createPlatformTexture2D(texture2D: Texture2D): IPlatformTexture2D {\n return new GLTexture2D(this, texture2D);\n }\n\n createPlatformTexture2DArray(texture2D: Texture2DArray): GLTexture2DArray {\n return new GLTexture2DArray(this, texture2D);\n }\n\n createPlatformTextureCube(textureCube: TextureCube): IPlatformTextureCube {\n return new GLTextureCube(this, textureCube);\n }\n\n createPlatformRenderTarget(target: RenderTarget): IPlatformRenderTarget {\n return new GLRenderTarget(this, target);\n }\n\n createPlatformBuffer(\n type: BufferBindFlag,\n byteLength: number,\n bufferUsage: BufferUsage = BufferUsage.Static,\n data?: ArrayBuffer | ArrayBufferView\n ): IPlatformBuffer {\n return new GLBuffer(this, type, byteLength, bufferUsage, data);\n }\n\n requireExtension(ext) {\n return this._extensions.requireExtension(ext);\n }\n\n canIUse(capabilityType: GLCapabilityType) {\n return this.capability.canIUse(capabilityType);\n }\n\n canIUseCompressedTextureInternalFormat(type: number) {\n return this.capability.canIUseCompressedTextureInternalFormat(type);\n }\n\n viewport(x: number, y: number, width: number, height: number): void {\n const { _gl: gl, _lastViewport: lastViewport } = this;\n if (x !== lastViewport.x || y !== lastViewport.y || width !== lastViewport.z || height !== lastViewport.w) {\n gl.viewport(x, y, width, height);\n lastViewport.set(x, y, width, height);\n }\n }\n\n scissor(x: number, y: number, width: number, height: number): void {\n const { _gl: gl, _lastScissor: lastScissor } = this;\n if (x !== lastScissor.x || y !== lastScissor.y || width !== lastScissor.z || height !== lastScissor.w) {\n const { _webCanvas: webCanvas } = this;\n if (x === 0 && y === 0 && width === webCanvas.width && height === webCanvas.height) {\n if (this._scissorEnable) {\n gl.disable(gl.SCISSOR_TEST);\n this._scissorEnable = false;\n }\n } else {\n if (!this._scissorEnable) {\n gl.enable(gl.SCISSOR_TEST);\n this._scissorEnable = true;\n }\n gl.scissor(x, y, width, height);\n }\n lastScissor.set(x, y, width, height);\n }\n }\n\n colorMask(r: boolean, g: boolean, b: boolean, a: boolean): void {\n this._gl.colorMask(r, g, b, a);\n }\n\n clearRenderTarget(engine: Engine, clearFlags: CameraClearFlags, clearColor: Color) {\n const gl = this._gl;\n\n const {\n blendState: { targetBlendState },\n depthState,\n stencilState\n // @ts-ignore\n } = engine._lastRenderState;\n let clearFlag = 0;\n if (clearFlags & CameraClearFlags.Color) {\n clearFlag |= gl.COLOR_BUFFER_BIT;\n\n const lc = this._lastClearColor;\n const { r, g, b, a } = clearColor;\n if (clearColor && (r !== lc.r || g !== lc.g || b !== lc.b || a !== lc.a)) {\n gl.clearColor(r, g, b, a);\n lc.set(r, g, b, a);\n }\n\n if (targetBlendState.colorWriteMask !== ColorWriteMask.All) {\n gl.colorMask(true, true, true, true);\n targetBlendState.colorWriteMask = ColorWriteMask.All;\n }\n }\n if (clearFlags & CameraClearFlags.Depth) {\n clearFlag |= gl.DEPTH_BUFFER_BIT;\n if (depthState.writeEnabled !== true) {\n gl.depthMask(true);\n depthState.writeEnabled = true;\n }\n }\n if (clearFlags & CameraClearFlags.Stencil) {\n clearFlag |= gl.STENCIL_BUFFER_BIT;\n if (stencilState.writeMask !== 0xff) {\n gl.stencilMask(0xff);\n stencilState.writeMask = 0xff;\n }\n }\n gl.clear(clearFlag);\n }\n\n drawPrimitive(primitive: GLPrimitive, subPrimitive: SubMesh, shaderProgram: any) {\n // todo: VAO not support morph animation\n if (primitive) {\n primitive.draw(shaderProgram, subPrimitive);\n } else {\n Logger.error(\"draw primitive failed.\");\n }\n }\n\n getMainFrameBufferWidth(): number {\n return this._mainFrameWidth || this._gl.drawingBufferWidth;\n }\n\n getMainFrameBufferHeight(): number {\n return this._mainFrameHeight || this._gl.drawingBufferHeight;\n }\n\n activeRenderTarget(\n renderTarget: RenderTarget,\n viewport: Vector4,\n isFlipProjection: boolean,\n mipLevel: number,\n faceIndex?: TextureCubeFace\n ) {\n let bufferWidth: number, bufferHeight: number;\n if (renderTarget) {\n /** @ts-ignore */\n renderTarget._isContentLost = false;\n\n /** @ts-ignore */\n const platformRenderTarget = renderTarget._platformRenderTarget as GLRenderTarget;\n platformRenderTarget.activeRenderTarget(mipLevel, faceIndex);\n\n bufferWidth = renderTarget.width >> mipLevel;\n bufferHeight = renderTarget.height >> mipLevel;\n } else {\n const gl = this._gl;\n gl.bindFramebuffer(gl.FRAMEBUFFER, this._mainFrameBuffer);\n bufferWidth = this.getMainFrameBufferWidth();\n bufferHeight = this.getMainFrameBufferHeight();\n }\n\n const width = bufferWidth * viewport.z;\n const height = bufferHeight * viewport.w;\n const x = viewport.x * bufferWidth;\n const y = isFlipProjection ? viewport.y * bufferHeight : bufferHeight - viewport.y * bufferHeight - height;\n this.viewport(x, y, width, height);\n this.scissor(x, y, width, height);\n }\n\n activeTexture(textureID: number): void {\n if (this._activeTextureID !== textureID) {\n this._gl.activeTexture(textureID);\n this._activeTextureID = textureID;\n }\n }\n\n bindTexture(texture: GLTexture): void {\n const index = this._activeTextureID - this._gl.TEXTURE0;\n if (this._activeTextures[index] !== texture) {\n this._gl.bindTexture(texture._target, texture._glTexture);\n this._activeTextures[index] = texture;\n }\n }\n\n setGlobalDepthBias(bias: number, slopeBias: number): void {\n const gl = this._gl;\n const enable = bias !== 0 || slopeBias !== 0;\n if (enable) {\n gl.enable(gl.POLYGON_OFFSET_FILL);\n gl.polygonOffset(slopeBias, bias);\n } else {\n gl.disable(gl.POLYGON_OFFSET_FILL);\n }\n this._enableGlobalDepthBias = enable;\n }\n\n flush(): void {\n this._gl.flush();\n }\n\n forceLoseDevice(): void {\n const extension = this.requireExtension(GLCapabilityType.WEBGL_lose_context);\n extension.loseContext();\n }\n\n forceRestoreDevice(): void {\n const extension = this.requireExtension(GLCapabilityType.WEBGL_lose_context);\n extension.restoreContext();\n }\n\n resetState(): void {\n this._readFrameBuffer = null;\n this._enableGlobalDepthBias = false;\n this._currentBindShaderProgram = null;\n\n const activeTextures = this._activeTextures;\n for (let i = 0, n = activeTextures.length; i < n; i++) {\n activeTextures[i] = null;\n }\n\n this._lastViewport.set(null, null, null, null);\n this._lastScissor.set(null, null, null, null);\n this._lastClearColor.set(null, null, null, null);\n this._scissorEnable = false;\n\n this._initGLState(this._gl);\n }\n\n protected _initGLState(gl: (WebGLRenderingContext & WebGLExtension) | WebGL2RenderingContext): void {\n this._activeTextureID = gl.TEXTURE0;\n this._renderStates = new GLRenderStates(gl);\n this._extensions = new GLExtensions(this);\n this._capability = new GLCapability(this);\n // Make sure the active texture in gl context is on default, because gl context may be used in other webgl renderer.\n gl.activeTexture(gl.TEXTURE0);\n\n const debugRenderInfo = gl.getExtension(\"WEBGL_debug_renderer_info\");\n if (debugRenderInfo != null) {\n this._renderer = gl.getParameter(debugRenderInfo.UNMASKED_RENDERER_WEBGL);\n }\n }\n\n destroy(): void {\n const webCanvas = this._webCanvas;\n webCanvas.removeEventListener(\"webglcontextcreationerror\", this._onContextCreationError, false);\n webCanvas.removeEventListener(\"webglcontextlost\", this._onWebGLContextLost, false);\n webCanvas.removeEventListener(\"webglcontextrestored\", this._onWebGLContextRestored, false);\n }\n\n private _onContextCreationError(event: WebGLContextEvent) {\n console.error(\"WebGLRenderer: WebGL context could not be created. Reason: \", event.statusMessage);\n }\n\n private _onWebGLContextLost(event: WebGLContextEvent) {\n event.preventDefault();\n this._onDeviceLost();\n }\n\n private _onWebGLContextRestored(event: WebGLContextEvent) {\n this._onDeviceRestored();\n }\n}\n"],"names":["GLCompressedTextureInternalFormat","RGBA_ASTC_4X4_KHR","RGBA_ASTC_5X4_KHR","RGBA_ASTC_5X5_KHR","RGBA_ASTC_6X5_KHR","RGBA_ASTC_6X6_KHR","RGBA_ASTC_8X5_KHR","RGBA_ASTC_8X6_KHR","RGBA_ASTC_8X8_KHR","RGBA_ASTC_10X5_KHR","RGBA_ASTC_10X6_KHR","RGBA_ASTC_10X8_KHR","RGBA_ASTC_10X10_KHR","RGBA_ASTC_12X10_KHR","RGBA_ASTC_12X12_KHR","SRGB8_ALPHA8_ASTC_4X4_KHR","SRGB8_ALPHA8_ASTC_5X4_KHR","SRGB8_ALPHA8_ASTC_5X5_KHR","SRGB8_ALPHA8_ASTC_6X5_KHR","SRGB8_ALPHA8_ASTC_6X6_KHR","SRGB8_ALPHA8_ASTC_8X5_KHR","SRGB8_ALPHA8_ASTC_8X6_KHR","SRGB8_ALPHA8_ASTC_8X8_KHR","SRGB8_ALPHA8_ASTC_10X5_KHR","SRGB8_ALPHA8_ASTC_10X6_KHR","SRGB8_ALPHA8_ASTC_10X8_KHR","SRGB8_ALPHA8_ASTC_10X10_KHR","SRGB8_ALPHA8_ASTC_12X10_KHR","SRGB8_ALPHA8_ASTC_12X12_KHR","RGB_ETC1_WEBGL","R11_EAC","SIGNED_R11_EAC","RG11_EAC","SIGNED_RG11_EAC","RGB8_ETC2","SRGB8_ETC2","RGB8_PUNCHTHROUGH_ALPHA1_ETC2","SRGB8_PUNCHTHROUGH_ALPHA1_ETC2","RGBA8_ETC2_EAC","SRGB8_ALPHA8_ETC2_EAC","RGB_PVRTC_4BPPV1_IMG","RGB_PVRTC_2BPPV1_IMG","RGBA_PVRTC_4BPPV1_IMG","RGBA_PVRTC_2BPPV1_IMG","RGB_S3TC_DXT1_EXT","RGBA_S3TC_DXT1_EXT","RGBA_S3TC_DXT3_EXT","RGBA_S3TC_DXT5_EXT","RGBA_BPTC_UNORM_EXT","SRGB_ALPHA_BPTC_UNORM_EXT","RGB_BPTC_SIGNED_FLOAT_EXT","RGB_BPTC_UNSIGNED_FLOAT_EXT","WebCanvas","webCanvas","_scale","Vector2","width","height","_webCanvas","resizeByClientSize","pixelRatio","window","devicePixelRatio","OffscreenCanvas","exportWidth","clientWidth","exportHeight","clientHeight","setScale","x","y","set","scale","_onWidthChanged","value","_onHeightChange","style","transformOrigin","transform","Canvas","WebGLEngine","create","configuration","canvas","document","getElementById","webGLGraphicDevice","WebGLGraphicDevice","graphicDeviceOptions","engine","promise","_initialize","then","sceneManager","addScene","Scene","_canvas","Engine","GLBuffer","rhi","type","byteLength","bufferUsage","data","BufferUsage","Static","gl","glBuffer","createBuffer","glBufferUsage","_getGLBufferUsage","glBindTarget","BufferBindFlag","VertexBuffer","ARRAY_BUFFER","ELEMENT_ARRAY_BUFFER","_gl","_glBuffer","_glBufferUsage","_glBindTarget","_isWebGL2","isWebGL2","bind","bufferData","bindBuffer","setData","bufferByteOffset","dataOffset","dataLength","options","SetDataOptions","Discard","byteSize","BYTES_PER_ELEMENT","dataByteLength","isArrayBufferView","byteOffset","undefined","bufferSubData","subData","Uint8Array","buffer","getData","getBufferSubData","destroy","deleteBuffer","STATIC_DRAW","Dynamic","DYNAMIC_DRAW","Stream","STREAM_DRAW","GLCapability","_rhi","capabilityList","Map","_init","_compatibleAllInterface","canIUse","capabilityType","get","canIUseCompressedTextureInternalFormat","internalType","GLCapabilityType","astc","etc1","etc","pvrtc","s3tc","bptc","cap","requireExtension","shaderVertexID","standardDerivatives","shaderTextureLod","elementIndexUint","depthTexture","vertexArrayObject","instancedArrays","multipleSample","drawBuffers","blendMinMax","astc_webkit","etc_webkit","etc1_webkit","pvrtc_webkit","s3tc_webkit","textureFloat","textureHalfFloat","textureFloatLinear","textureHalfFloatLinear","WEBGL_colorBufferFloat","colorBufferFloat","colorBufferHalfFloat","textureFilterAnisotropic","fragDepth","_compatibleInterface","flatItem","ext","glKey","extensionVal","extensionKey","MIN","MAX","UNSIGNED_INT_24_8","createVertexArray","deleteVertexArray","isVertexArray","bindVertexArray","drawArraysInstanced","drawElementsInstanced","vertexAttribDivisor","MAX_DRAW_BUFFERS","items","maxDrawBuffers","i","HALF_FLOAT","RGBA16F","RGBA32F","TEXTURE_MAX_ANISOTROPY_EXT","maxTextureSize","renderStates","getParameter","MAX_TEXTURE_SIZE","canUseFloatTextureBlendShape","MAX_VERTEX_TEXTURE_IMAGE_UNITS","canIUseMoreJoints","_maxDrawBuffers","maxAnisoLevel","_maxAnisoLevel","MAX_TEXTURE_MAX_ANISOTROPY_EXT","maxAntiAliasing","_maxAntiAliasing","canMSAA","MAX_SAMPLES","GLExtensions","_requireResult","getExtension","GLPrimitive","primitive","_attribLocArray","_vaoMap","_primitive","_canUseInstancedArrays","_isSupportVAO","draw","shaderProgram","subMesh","useVao","enableVAO","_bufferStructChanged","_clearVAO","has","id","_registerVAO","vao","_bindBufferAndAttrib","indexBufferBinding","instanceCount","_glIndexType","_glIndexByteCount","topology","start","count","drawElements","_platformBuffer","drawArrays","Logger","error","_disableAttrib","vertexBufferBindings","length","attributeLocation","attributes","_vertexElementMap","vbo","lastBoundVbo","name","loc","element","bindingIndex","stride","enableVertexAttribArray","elementInfo","_formatMetaInfo","vertexAttribPointer","size","normalized","offset","instanceStepRate","push","warn","l","disableVertexAttribArray","forEach","clear","GLRenderStates","_parameters","MAX_COMBINED_TEXTURE_IMAGE_UNITS","MAX_VERTEX_UNIFORM_VECTORS","MAX_VERTEX_ATTRIBS","blendFuncSeparate","ONE","ZERO","blendEquationSeparate","FUNC_ADD","colorMask","blendColor","disable","SAMPLE_ALPHA_TO_COVERAGE","enable","DEPTH_TEST","depthFunc","LESS","depthMask","STENCIL_TEST","stencilFuncSeparate","FRONT","ALWAYS","BACK","stencilOpSeparate","KEEP","stencilMask","CULL_FACE","cullFace","POLYGON_OFFSET_FILL","polygonOffset","pname","GLTexture","texture","target","_texture","_target","_glTexture","createTexture","deleteTexture","_formatDetail","setUseDepthCompareMode","texParameteri","TEXTURE_COMPARE_MODE","COMPARE_REF_TO_TEXTURE","NONE","generateMipmaps","_bind","generateMipmap","bindTexture","isCube","internalFormat","baseFormat","dataType","mipmapCount","usage","_isDepthTexture","LUMINANCE_ALPHA","ALPHA","TextureUsage","texStorage2D","texImage2D","mipWidth","Math","max","mipHeight","faceIndex","TEXTURE_CUBE_MAP_POSITIVE_X","_getPixelBuffer","face","mipLevel","out","bindFramebuffer","FRAMEBUFFER","_getReadFrameBuffer","framebufferTexture2D","COLOR_ATTACHMENT0","TEXTURE_2D","readPixels","_setWrapMode","TextureWrapMode","Clamp","_isPowerOf2","CLAMP_TO_EDGE","Repeat","REPEAT","Mirror","MIRRORED_REPEAT","frameBuffer","_readFrameBuffer","createFramebuffer","v","_getFormatDetail","format","TextureFormat","R8G8B8","RGB8","RGB","UNSIGNED_BYTE","isCompressed","R8G8B8A8","RGBA8","RGBA","R4G4B4A4","RGBA4","UNSIGNED_SHORT_4_4_4_4","R5G5B5A1","RGB5_A1","UNSIGNED_SHORT_5_5_5_1","R5G6B5","RGB565","UNSIGNED_SHORT_5_6_5","Alpha8","LuminanceAlpha","R16G16B16A16","R32G32B32A32","FLOAT","R32G32B32A32_UInt","RGBA32UI","RGBA_INTEGER","UNSIGNED_INT","BC1","BC3","BC7","ETC1_RGB","ETC2_RGB","ETC2_RGBA5","ETC2_RGBA8","PVRTC_RGB2","PVRTC_RGBA2","PVRTC_RGB4","PVRTC_RGBA4","ASTC_4x4","ASTC_5x5","ASTC_6x6","ASTC_8x8","ASTC_10x10","ASTC_12x12","Depth","DEPTH_COMPONENT32F","DEPTH_COMPONENT","UNSIGNED_SHORT","attachment","DEPTH_ATTACHMENT","DepthStencil","DEPTH32F_STENCIL8","DEPTH_STENCIL","FLOAT_32_UNSIGNED_INT_24_8_REV","DEPTH_STENCIL_ATTACHMENT","Depth16","DEPTH_COMPONENT16","Depth24Stencil8","DEPTH24_STENCIL8","Depth24","DEPTH_COMPONENT24","Depth32","Depth32Stencil8","Error","_getRenderBufferDepthFormatDetail","Stencil","STENCIL_INDEX8","STENCIL_ATTACHMENT","_supportTextureFormat","_supportRenderBufferColorFormat","isSupported","_supportRenderBufferDepthFormat","wrapModeU","TEXTURE_WRAP_S","wrapModeV","TEXTURE_WRAP_T","filterMode","_mipmap","TextureFilterMode","Point","TEXTURE_MAG_FILTER","NEAREST","TEXTURE_MIN_FILTER","NEAREST_MIPMAP_NEAREST","Bilinear","LINEAR","LINEAR_MIPMAP_NEAREST","Trilinear","LINEAR_MIPMAP_LINEAR","anisoLevel","texParameterf","depthCompareFunction","TextureDepthCompareFunction","Never","TEXTURE_COMPARE_FUNC","NEVER","Less","Equal","EQUAL","LessEqual","LEQUAL","Greater","GREATER","NotEqual","NOTEQUAL","GreaterEqual","GEQUAL","Always","GLRenderTarget","_MSAAColorRenderBuffers","_curMipLevel","_curFaceIndex","_colorTextures","_depth","isDepthTexture","Texture","n","_format","some","TextureCube","capability","antiAliasing","_antiAliasing","_frameBuffer","_bindMainFBO","_MSAAFrameBuffer","_bindMSAAFBO","activeRenderTarget","mipChanged","faceChanged","colorTexture","getColorTexture","_platformTexture","platformTexture","bindRenderbuffer","RENDERBUFFER","_depthRenderBuffer","renderbufferStorage","blitRenderTarget","mask","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","colorTextureCount","READ_FRAMEBUFFER","DRAW_FRAMEBUFFER","textureIndex","_blitDrawBuffers","readBuffer","blitFramebuffer","deleteFramebuffer","deleteRenderbuffer","_MSAADepthRenderBuffer","Array","_oriDrawBuffers","depthRenderBuffer","createRenderbuffer","framebufferRenderbuffer","MSAADepthRenderBuffer","MSAAColorRenderBuffer","renderbufferStorageMultisample","_checkFrameBuffer","e","checkFramebufferStatus","FRAMEBUFFER_INCOMPLETE_ATTACHMENT","FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT","FRAMEBUFFER_INCOMPLETE_DIMENSIONS","FRAMEBUFFER_UNSUPPORTED","FRAMEBUFFER_INCOMPLETE_MULTISAMPLE","GLTexture2D","texture2D","_compressedMipFilled","_mipmapCount","_getMipmapCount","setPixelBuffer","colorBuffer","pixelStorei","UNPACK_FLIP_Y_WEBGL","UNPACK_PREMULTIPLY_ALPHA_WEBGL","mipBit","compressedTexSubImage2D","compressedTexImage2D","texSubImage2D","setImageSource","imageSource","flipY","premultiplyAlpha","getPixelBuffer","GLTexture2DArray","texture2DArray","TEXTURE_2D_ARRAY","texStorage3D","offsetIndex","compressedTexSubImage3D","texSubImage3D","elementIndex","codedWidth","codedHeight","formatDetail","framebufferTextureLayer","GLTextureCube","textureCube","TEXTURE_CUBE_MAP","_compressedFaceFilled","mipSize","WebGLMode","Auto","WebGL2","WebGL1","initializeOptions","_mainFrameBuffer","_mainFrameWidth","_mainFrameHeight","_enableGlobalDepthBias","_activeTextures","_lastViewport","Vector4","_lastScissor","_lastClearColor","Color","_scissorEnable","webGLMode","stencil","_forceFlush","_maxAllowSkinUniformVectorCount","SystemInfo","platform","Platform","IPhone","IPad","version","operatingSystem","match","majorVersion","parseInt","minorVersion","_options","_onWebGLContextLost","_onWebGLContextRestored","init","onDeviceLost","onDeviceRestored","_onDeviceLost","_onDeviceRestored","addEventListener","_onContextCreationError","getContext","deleteQuery","_initGLState","createPlatformPrimitive","createPlatformTexture2D","createPlatformTexture2DArray","createPlatformTextureCube","createPlatformRenderTarget","createPlatformBuffer","_extensions","viewport","lastViewport","z","w","scissor","lastScissor","SCISSOR_TEST","r","g","b","a","clearRenderTarget","clearFlags","clearColor","_lastRenderState","blendState","targetBlendState","depthState","stencilState","clearFlag","CameraClearFlags","lc","colorWriteMask","ColorWriteMask","All","writeEnabled","STENCIL_BUFFER_BIT","writeMask","drawPrimitive","subPrimitive","getMainFrameBufferWidth","drawingBufferWidth","getMainFrameBufferHeight","drawingBufferHeight","renderTarget","isFlipProjection","bufferWidth","bufferHeight","_isContentLost","platformRenderTarget","_platformRenderTarget","activeTexture","textureID","_activeTextureID","index","TEXTURE0","setGlobalDepthBias","bias","slopeBias","flush","forceLoseDevice","extension","WEBGL_lose_context","loseContext","forceRestoreDevice","restoreContext","resetState","_currentBindShaderProgram","activeTextures","_renderStates","_capability","debugRenderInfo","_renderer","UNMASKED_RENDERER_WEBGL","removeEventListener","event","console","statusMessage","preventDefault","renderer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.js","sources":["../src/type.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_instanceof.js","../src/WebCanvas.ts","../src/WebGLEngine.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_extends.js","../src/GLBuffer.ts","../src/GLCapability.ts","../src/GLExtensions.ts","../src/GLPrimitive.ts","../src/GLRenderStates.ts","../src/GLTexture.ts","../src/GLRenderTarget.ts","../src/GLTexture2D.ts","../src/GLTexture2DArray.ts","../src/GLTextureCube.ts","../src/WebGLGraphicDevice.ts"],"sourcesContent":["/**\n * Smoothing plug-in.\n * */\nexport interface WebGLExtension {\n MAX_DRAW_BUFFERS: GLenum;\n UNSIGNED_INT_24_8: GLenum;\n MAX_SAMPLES: GLenum;\n RGBA8: GLenum;\n RGBA16F: GLenum;\n RGBA32F: GLenum;\n DEPTH_COMPONENT32F: GLenum;\n READ_FRAMEBUFFER: GLenum;\n DRAW_FRAMEBUFFER: GLenum;\n\n createVertexArray(): WebGLVertexArrayObject | null;\n deleteVertexArray(vertexArray: WebGLVertexArrayObject | null): void;\n isVertexArray(vertexArray: WebGLVertexArrayObject | null): GLboolean;\n bindVertexArray(array: WebGLVertexArrayObject | null): void;\n\n renderbufferStorageMultisample(\n target: GLenum,\n samples: GLsizei,\n internalformat: GLenum,\n width: GLsizei,\n height: GLsizei\n ): void;\n blitFramebuffer(\n srcX0: GLint,\n srcY0: GLint,\n srcX1: GLint,\n srcY1: GLint,\n dstX0: GLint,\n dstY0: GLint,\n dstX1: GLint,\n dstY1: GLint,\n mask: GLbitfield,\n filter: GLenum\n ): void;\n\n drawArraysInstanced(mode: GLenum, first: GLint, count: GLsizei, instanceCount: GLsizei): void;\n drawElementsInstanced(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr, instanceCount: GLsizei): void;\n vertexAttribDivisor(index: GLuint, divisor: GLuint): void;\n drawBuffers(buffers: Iterable<GLenum>): void;\n}\n\nexport interface TextureFormatDetail {\n internalFormat: GLint;\n baseFormat?: GLenum;\n dataType?: GLenum;\n isCompressed: boolean;\n attachment?: GLenum;\n}\n\n/**\n * @deprecated\n */\nexport enum GLCompressedTextureInternalFormat {\n // astc\n RGBA_ASTC_4X4_KHR = 0x93b0,\n RGBA_ASTC_5X4_KHR = 0x93b1,\n RGBA_ASTC_5X5_KHR = 0x93b2,\n RGBA_ASTC_6X5_KHR = 0x93b3,\n RGBA_ASTC_6X6_KHR = 0x93b4,\n RGBA_ASTC_8X5_KHR = 0x93b5,\n RGBA_ASTC_8X6_KHR = 0x93b6,\n RGBA_ASTC_8X8_KHR = 0x93b7,\n RGBA_ASTC_10X5_KHR = 0x93b8,\n RGBA_ASTC_10X6_KHR = 0x93b9,\n RGBA_ASTC_10X8_KHR = 0x93ba,\n RGBA_ASTC_10X10_KHR = 0x93bb,\n RGBA_ASTC_12X10_KHR = 0x93bc,\n RGBA_ASTC_12X12_KHR = 0x93bd,\n SRGB8_ALPHA8_ASTC_4X4_KHR = 0x93d0,\n SRGB8_ALPHA8_ASTC_5X4_KHR = 0x93d1,\n SRGB8_ALPHA8_ASTC_5X5_KHR = 0x93d2,\n SRGB8_ALPHA8_ASTC_6X5_KHR = 0x93d3,\n SRGB8_ALPHA8_ASTC_6X6_KHR = 0x93d4,\n SRGB8_ALPHA8_ASTC_8X5_KHR = 0x93d5,\n SRGB8_ALPHA8_ASTC_8X6_KHR = 0x93d6,\n SRGB8_ALPHA8_ASTC_8X8_KHR = 0x93d7,\n SRGB8_ALPHA8_ASTC_10X5_KHR = 0x93d8,\n SRGB8_ALPHA8_ASTC_10X6_KHR = 0x93d9,\n SRGB8_ALPHA8_ASTC_10X8_KHR = 0x93da,\n SRGB8_ALPHA8_ASTC_10X10_KHR = 0x93db,\n SRGB8_ALPHA8_ASTC_12X10_KHR = 0x93dc,\n SRGB8_ALPHA8_ASTC_12X12_KHR = 0x93dd,\n\n // etc1\n RGB_ETC1_WEBGL = 0x8d64,\n\n // etc2\n R11_EAC = 0x9270,\n SIGNED_R11_EAC = 0x9271,\n RG11_EAC = 0x9272,\n SIGNED_RG11_EAC = 0x9273,\n RGB8_ETC2 = 0x9274,\n SRGB8_ETC2 = 0x9275,\n RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9276,\n SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277,\n RGBA8_ETC2_EAC = 0x9278,\n SRGB8_ALPHA8_ETC2_EAC = 0x9279,\n\n // pvrtc\n RGB_PVRTC_4BPPV1_IMG = 0x8c00,\n RGB_PVRTC_2BPPV1_IMG = 0x8c01,\n RGBA_PVRTC_4BPPV1_IMG = 0x8c02,\n RGBA_PVRTC_2BPPV1_IMG = 0x8c03,\n\n // s3tc\n RGB_S3TC_DXT1_EXT = 0x83f0,\n RGBA_S3TC_DXT1_EXT = 0x83f1,\n RGBA_S3TC_DXT3_EXT = 0x83f2,\n RGBA_S3TC_DXT5_EXT = 0x83f3,\n\n // bptc\n RGBA_BPTC_UNORM_EXT = 0x8e8c,\n SRGB_ALPHA_BPTC_UNORM_EXT = 0x8e8d,\n RGB_BPTC_SIGNED_FLOAT_EXT = 0x8e8e,\n RGB_BPTC_UNSIGNED_FLOAT_EXT = 0x8e8f\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nexport function _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","export function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _set_prototype_of } from \"./_set_prototype_of.js\";\n\nexport function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","export function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","import { Canvas } from \"@galacean/engine-core\";\nimport { Vector2 } from \"@galacean/engine-math\";\n\ntype OffscreenCanvas = any;\n\n/**\n * The canvas used on the web, which can support HTMLCanvasElement and OffscreenCanvas.\n */\nexport class WebCanvas extends Canvas {\n _webCanvas: HTMLCanvasElement | OffscreenCanvas;\n\n private _scale: Vector2 = new Vector2();\n\n /**\n * The scale of canvas, the value is visible width/height divide the render width/height.\n * @remarks Need to re-assign after modification to ensure that the modification takes effect.\n */\n get scale(): Vector2 {\n const webCanvas = this._webCanvas;\n if (typeof OffscreenCanvas === \"undefined\" || !(webCanvas instanceof OffscreenCanvas)) {\n this._scale.set(\n (webCanvas.clientWidth * devicePixelRatio) / webCanvas.width,\n (webCanvas.clientHeight * devicePixelRatio) / webCanvas.height\n );\n }\n return this._scale;\n }\n\n set scale(value: Vector2) {\n const webCanvas = this._webCanvas;\n if (typeof OffscreenCanvas === \"undefined\" || !(webCanvas instanceof OffscreenCanvas)) {\n webCanvas.style.transformOrigin = `left top`;\n webCanvas.style.transform = `scale(${value.x}, ${value.y})`;\n }\n }\n\n /**\n * Resize the rendering size according to the clientWidth and clientHeight of the canvas.\n * @param pixelRatio - Pixel ratio\n */\n resizeByClientSize(pixelRatio: number = window.devicePixelRatio): void {\n const webCanvas = this._webCanvas;\n if (typeof OffscreenCanvas === \"undefined\" || !(webCanvas instanceof OffscreenCanvas)) {\n const exportWidth = webCanvas.clientWidth * pixelRatio;\n const exportHeight = webCanvas.clientHeight * pixelRatio;\n this.width = exportWidth;\n this.height = exportHeight;\n }\n }\n\n /**\n * Create a web canvas.\n * @param webCanvas - Web native canvas\n */\n constructor(webCanvas: HTMLCanvasElement | OffscreenCanvas) {\n super();\n const width = webCanvas.width;\n const height = webCanvas.height;\n this._webCanvas = webCanvas;\n this.width = width;\n this.height = height;\n }\n\n /**\n * Set scale.\n * @param x - Scale along the X axis\n * @param y - Scale along the Y axis\n */\n setScale(x: number, y: number): void {\n this._scale.set(x, y);\n this.scale = this._scale;\n }\n\n protected override _onWidthChanged(value: number): void {\n this._webCanvas.width = value;\n }\n\n protected override _onHeightChange(value: number): void {\n this._webCanvas.height = value;\n }\n}\n","import { Engine, EngineConfiguration, Scene } from \"@galacean/engine-core\";\nimport { WebGLGraphicDevice, WebGLGraphicDeviceOptions } from \"./\";\nimport { WebCanvas } from \"./WebCanvas\";\n\n/**\n * WebGL platform engine,support includes WebGL1.0 and WebGL2.0.\n */\nexport class WebGLEngine extends Engine {\n /**\n * Create a WebGL engine.\n * @param configuration - WebGL engine configuration\n * @returns A promise that will resolve when the engine is created\n */\n static create(configuration: WebGLEngineConfiguration): Promise<WebGLEngine> {\n const canvas = configuration.canvas;\n const webCanvas = new WebCanvas(typeof canvas === \"string\" ? document.getElementById(canvas) : canvas);\n const webGLGraphicDevice = new WebGLGraphicDevice(configuration.graphicDeviceOptions);\n const engine = new WebGLEngine(webCanvas, webGLGraphicDevice, configuration);\n // @ts-ignore\n const promise = engine._initialize(configuration) as Promise<WebGLEngine>;\n return promise.then(() => {\n engine.sceneManager.addScene(new Scene(engine, \"DefaultScene\"));\n return engine;\n });\n }\n\n /**\n * Web canvas.\n */\n override get canvas(): WebCanvas {\n // @ts-ignore\n return this._canvas as WebCanvas;\n }\n}\n\n/**\n * WebGL engine configuration.\n */\nexport interface WebGLEngineConfiguration extends EngineConfiguration {\n /** Canvas element or canvas id. */\n canvas: HTMLCanvasElement | OffscreenCanvas | string;\n /** Graphic device options. */\n graphicDeviceOptions?: WebGLGraphicDeviceOptions;\n}\n","export function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","import { BufferBindFlag, BufferUsage, IPlatformBuffer, SetDataOptions } from \"@galacean/engine-core\";\nimport { WebGLGraphicDevice } from \"./WebGLGraphicDevice\";\nimport { WebGLExtension } from \"./type\";\n\nexport class GLBuffer implements IPlatformBuffer {\n private _gl: (WebGLRenderingContext & WebGLExtension) | WebGL2RenderingContext;\n private _glBindTarget: number;\n private _glBufferUsage: number;\n private _glBuffer: WebGLBuffer;\n private _isWebGL2: boolean;\n\n constructor(\n rhi: WebGLGraphicDevice,\n type: BufferBindFlag,\n byteLength: number,\n bufferUsage: BufferUsage = BufferUsage.Static,\n data?: ArrayBuffer | ArrayBufferView\n ) {\n const gl = rhi.gl;\n const glBuffer = gl.createBuffer();\n const glBufferUsage = this._getGLBufferUsage(gl, bufferUsage);\n const glBindTarget = type === BufferBindFlag.VertexBuffer ? gl.ARRAY_BUFFER : gl.ELEMENT_ARRAY_BUFFER;\n\n this._gl = gl;\n this._glBuffer = glBuffer;\n this._glBufferUsage = glBufferUsage;\n this._glBindTarget = glBindTarget;\n this._isWebGL2 = rhi.isWebGL2;\n\n this.bind();\n\n if (data) {\n gl.bufferData(glBindTarget, data, glBufferUsage);\n } else {\n gl.bufferData(glBindTarget, byteLength, glBufferUsage);\n }\n gl.bindBuffer(glBindTarget, null);\n }\n\n bind(): void {\n this._gl.bindBuffer(this._glBindTarget, this._glBuffer);\n }\n\n setData(\n byteLength: number,\n data: ArrayBuffer | ArrayBufferView,\n bufferByteOffset?: number,\n dataOffset?: number,\n dataLength?: number,\n options?: SetDataOptions\n ): void {\n const gl = this._gl;\n const glBindTarget = this._glBindTarget;\n\n this.bind();\n\n if (options === SetDataOptions.Discard) {\n gl.bufferData(glBindTarget, byteLength, this._glBufferUsage);\n }\n\n // TypeArray is BYTES_PER_ELEMENT, unTypeArray is 1\n const byteSize = (<Uint8Array>data).BYTES_PER_ELEMENT || 1;\n const dataByteLength = dataLength ? byteSize * dataLength : data.byteLength;\n\n if (dataOffset !== 0 || dataByteLength < data.byteLength) {\n const isArrayBufferView = (<ArrayBufferView>data).byteOffset !== undefined;\n if (this._isWebGL2 && isArrayBufferView) {\n gl.bufferSubData(glBindTarget, bufferByteOffset, <ArrayBufferView>data, dataOffset, dataByteLength / byteSize);\n } else {\n const subData = new Uint8Array(\n isArrayBufferView ? (<ArrayBufferView>data).buffer : <ArrayBuffer>data,\n dataOffset * byteSize,\n dataByteLength\n );\n gl.bufferSubData(glBindTarget, bufferByteOffset, subData);\n }\n } else {\n gl.bufferSubData(glBindTarget, bufferByteOffset, data);\n }\n gl.bindBuffer(glBindTarget, null);\n }\n\n getData(data: ArrayBufferView, bufferByteOffset?: number, dataOffset?: number, dataLength?: number): void {\n if (this._isWebGL2) {\n const gl = <WebGL2RenderingContext>this._gl;\n this.bind();\n gl.getBufferSubData(this._glBindTarget, bufferByteOffset, data, dataOffset, dataLength);\n } else {\n throw \"Buffer is write-only on WebGL1.0 platforms.\";\n }\n }\n\n destroy(): void {\n this._gl.deleteBuffer(this._glBuffer);\n this._gl = null;\n this._glBuffer = null;\n }\n\n private _getGLBufferUsage(gl: WebGLRenderingContext, bufferUsage: BufferUsage): number {\n switch (bufferUsage) {\n case BufferUsage.Static:\n return gl.STATIC_DRAW;\n case BufferUsage.Dynamic:\n return gl.DYNAMIC_DRAW;\n case BufferUsage.Stream:\n return gl.STREAM_DRAW;\n }\n }\n}\n","import { GLCapabilityType } from \"@galacean/engine-core\";\nimport { WebGLGraphicDevice } from \"./WebGLGraphicDevice\";\nimport { GLCompressedTextureInternalFormat } from \"./type\";\n\ntype extensionKey = string;\n\n/**\n * GL capability.\n */\nexport class GLCapability {\n private _maxDrawBuffers: number;\n private _maxAnisoLevel: number;\n private _maxAntiAliasing: number;\n\n _rhi: WebGLGraphicDevice;\n capabilityList: Map<GLCapabilityType, boolean>;\n\n get maxTextureSize(): boolean {\n return this.rhi.renderStates.getParameter(this.rhi.gl.MAX_TEXTURE_SIZE);\n }\n\n get canUseFloatTextureBlendShape(): boolean {\n return (\n this.canIUse(GLCapabilityType.shaderVertexID) &&\n this.canIUse(GLCapabilityType.textureFloat) &&\n this.rhi.renderStates.getParameter(this.rhi.gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS) > 0\n );\n }\n\n /**\n * Whether can use more joints.\n */\n get canIUseMoreJoints(): boolean {\n return (\n this.canIUse(GLCapabilityType.textureFloat) &&\n this.rhi.renderStates.getParameter(this.rhi.gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS) > 0\n );\n }\n\n get maxDrawBuffers() {\n if (!this._maxDrawBuffers) {\n if (this.canIUse(GLCapabilityType.drawBuffers)) {\n this._maxDrawBuffers = this._rhi.gl.getParameter(this._rhi.gl.MAX_DRAW_BUFFERS);\n } else {\n this._maxDrawBuffers = 1;\n }\n }\n return this._maxDrawBuffers;\n }\n\n /**\n * Max anisoLevel.\n */\n get maxAnisoLevel(): number {\n if (!this._maxAnisoLevel) {\n const ext = this._rhi.requireExtension(GLCapabilityType.textureFilterAnisotropic);\n this._maxAnisoLevel = ext ? this._rhi.gl.getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1;\n }\n return this._maxAnisoLevel;\n }\n\n /**\n * Max MSAA count.\n */\n get maxAntiAliasing(): number {\n if (!this._maxAntiAliasing) {\n const gl = this._rhi.gl;\n const canMSAA = this.canIUse(GLCapabilityType.multipleSample);\n\n this._maxAntiAliasing = canMSAA ? gl.getParameter(gl.MAX_SAMPLES) : 1;\n }\n return this._maxAntiAliasing;\n }\n\n get rhi() {\n return this._rhi;\n }\n\n constructor(rhi: WebGLGraphicDevice) {\n this._rhi = rhi;\n this.capabilityList = new Map();\n\n this._init();\n this._compatibleAllInterface();\n }\n\n /**\n * Check device capabilities.\n */\n canIUse(capabilityType: GLCapabilityType): boolean {\n return this.capabilityList.get(capabilityType);\n }\n\n /**\n * Check if can use some compressed texture format.\n */\n canIUseCompressedTextureInternalFormat(internalType: GLCompressedTextureInternalFormat): boolean {\n const {\n // astc\n RGBA_ASTC_4X4_KHR,\n RGBA_ASTC_12X12_KHR,\n SRGB8_ALPHA8_ASTC_4X4_KHR,\n SRGB8_ALPHA8_ASTC_12X12_KHR,\n // etc1\n RGB_ETC1_WEBGL,\n // etc\n R11_EAC,\n SRGB8_ALPHA8_ETC2_EAC,\n // pvrtc\n RGB_PVRTC_4BPPV1_IMG,\n RGBA_PVRTC_2BPPV1_IMG,\n // s3tc\n RGB_S3TC_DXT1_EXT,\n RGBA_S3TC_DXT5_EXT,\n\n // bptc\n RGBA_BPTC_UNORM_EXT,\n RGB_BPTC_UNSIGNED_FLOAT_EXT\n } = GLCompressedTextureInternalFormat;\n if (\n (internalType >= RGBA_ASTC_4X4_KHR && RGBA_ASTC_12X12_KHR <= RGBA_ASTC_12X12_KHR) ||\n (internalType >= SRGB8_ALPHA8_ASTC_4X4_KHR && internalType <= SRGB8_ALPHA8_ASTC_12X12_KHR)\n ) {\n return this.canIUse(GLCapabilityType.astc);\n } else if (internalType === RGB_ETC1_WEBGL) {\n return this.canIUse(GLCapabilityType.etc1);\n } else if (internalType >= R11_EAC && internalType <= SRGB8_ALPHA8_ETC2_EAC) {\n return this.canIUse(GLCapabilityType.etc);\n } else if (internalType >= RGB_PVRTC_4BPPV1_IMG && internalType <= RGBA_PVRTC_2BPPV1_IMG) {\n return this.canIUse(GLCapabilityType.pvrtc);\n } else if (internalType >= RGB_S3TC_DXT1_EXT && internalType <= RGBA_S3TC_DXT5_EXT) {\n return this.canIUse(GLCapabilityType.s3tc);\n } else if (internalType >= RGBA_BPTC_UNORM_EXT && internalType <= RGB_BPTC_UNSIGNED_FLOAT_EXT) {\n return this.canIUse(GLCapabilityType.bptc);\n }\n return false;\n }\n\n /**\n * Init capabilities.\n */\n private _init() {\n const cap = this.capabilityList;\n const { isWebGL2 } = this.rhi;\n const requireExtension = this.rhi.requireExtension.bind(this.rhi);\n\n const {\n shaderVertexID,\n standardDerivatives,\n shaderTextureLod,\n elementIndexUint,\n depthTexture,\n vertexArrayObject,\n instancedArrays,\n multipleSample,\n drawBuffers,\n blendMinMax,\n\n astc,\n astc_webkit,\n etc,\n etc_webkit,\n etc1,\n etc1_webkit,\n pvrtc,\n pvrtc_webkit,\n s3tc,\n s3tc_webkit,\n bptc,\n\n textureFloat,\n textureHalfFloat,\n textureFloatLinear,\n textureHalfFloatLinear,\n WEBGL_colorBufferFloat,\n colorBufferFloat,\n colorBufferHalfFloat,\n textureFilterAnisotropic,\n fragDepth\n } = GLCapabilityType;\n cap.set(shaderVertexID, isWebGL2);\n cap.set(standardDerivatives, isWebGL2 || !!requireExtension(standardDerivatives));\n cap.set(shaderTextureLod, isWebGL2 || !!requireExtension(shaderTextureLod));\n cap.set(elementIndexUint, isWebGL2 || !!requireExtension(elementIndexUint));\n cap.set(depthTexture, isWebGL2 || !!requireExtension(depthTexture));\n cap.set(vertexArrayObject, isWebGL2 || !!requireExtension(vertexArrayObject));\n cap.set(instancedArrays, isWebGL2 || !!requireExtension(instancedArrays));\n cap.set(multipleSample, isWebGL2);\n cap.set(drawBuffers, isWebGL2 || !!requireExtension(drawBuffers));\n cap.set(blendMinMax, isWebGL2 || !!requireExtension(blendMinMax));\n cap.set(textureFloat, isWebGL2 || !!requireExtension(textureFloat));\n cap.set(textureHalfFloat, isWebGL2 || !!requireExtension(textureHalfFloat));\n cap.set(textureFloatLinear, !!requireExtension(textureFloatLinear));\n cap.set(textureHalfFloatLinear, isWebGL2 || !!requireExtension(textureHalfFloatLinear));\n cap.set(\n colorBufferFloat,\n (isWebGL2 && !!requireExtension(colorBufferFloat)) || !!requireExtension(WEBGL_colorBufferFloat)\n );\n cap.set(\n colorBufferHalfFloat,\n (isWebGL2 && !!requireExtension(colorBufferFloat)) || !!requireExtension(colorBufferHalfFloat)\n );\n cap.set(textureFilterAnisotropic, !!requireExtension(textureFilterAnisotropic));\n cap.set(fragDepth, isWebGL2 || !!requireExtension(fragDepth));\n\n cap.set(astc, !!(requireExtension(astc) || requireExtension(astc_webkit)));\n cap.set(etc, !!(requireExtension(etc) || requireExtension(etc_webkit)));\n cap.set(etc1, !!(requireExtension(etc1) || requireExtension(etc1_webkit)));\n cap.set(pvrtc, !!(requireExtension(pvrtc) || requireExtension(pvrtc_webkit)));\n cap.set(s3tc, !!(requireExtension(s3tc) || requireExtension(s3tc_webkit)));\n cap.set(bptc, !!requireExtension(bptc));\n }\n\n /**\n * If there are extensions that can supplement this ability, smooth out the difference.\n * @example\n * compatible(GLCapabilityType.depthTexture,{\n * UNSIGNED_INT_24_8: \"UNSIGNED_INT_24_8_WEBGL\"\n * })\n * gl.UNSIGNED_INT_24_8 = ext.UNSIGNED_INT_24_8_WEBGL\n */\n private _compatibleInterface(capabilityType: GLCapabilityType, flatItem: { [glKey: string]: extensionKey }) {\n const rhi = this.rhi;\n const gl = rhi.gl;\n let ext = null;\n\n if ((ext = rhi.requireExtension(capabilityType))) {\n for (let glKey in flatItem) {\n const extensionKey = flatItem[glKey];\n const extensionVal = ext[extensionKey];\n\n // Mini game hack the native function,use “.bind” to smooth out if is “Funcion”.\n if (extensionVal?.bind) {\n gl[glKey] = extensionVal.bind(ext);\n } else {\n gl[glKey] = extensionVal;\n }\n }\n }\n }\n\n private _compatibleAllInterface() {\n const {\n depthTexture,\n vertexArrayObject,\n instancedArrays,\n drawBuffers,\n textureFilterAnisotropic,\n textureHalfFloat,\n colorBufferHalfFloat,\n WEBGL_colorBufferFloat,\n blendMinMax\n } = GLCapabilityType;\n const { isWebGL2 } = this.rhi;\n\n if (!isWebGL2) {\n this._compatibleInterface(blendMinMax, {\n MIN: \"MIN_EXT\",\n MAX: \"MAX_EXT\"\n });\n this._compatibleInterface(depthTexture, {\n UNSIGNED_INT_24_8: \"UNSIGNED_INT_24_8_WEBGL\"\n });\n this._compatibleInterface(vertexArrayObject, {\n createVertexArray: \"createVertexArrayOES\",\n deleteVertexArray: \"deleteVertexArrayOES\",\n isVertexArray: \"isVertexArrayOES\",\n bindVertexArray: \"bindVertexArrayOES\"\n });\n this._compatibleInterface(instancedArrays, {\n drawArraysInstanced: \"drawArraysInstancedANGLE\",\n drawElementsInstanced: \"drawElementsInstancedANGLE\",\n vertexAttribDivisor: \"vertexAttribDivisorANGLE\"\n });\n this._compatibleInterface(drawBuffers, {\n MAX_DRAW_BUFFERS: \"MAX_DRAW_BUFFERS_WEBGL\"\n });\n const items = {};\n if (this.canIUse(GLCapabilityType.drawBuffers)) {\n const maxDrawBuffers = this.maxDrawBuffers;\n for (let i = 0; i < maxDrawBuffers; i++) {\n i != 0 && (items[`COLOR_ATTACHMENT${i}`] = `COLOR_ATTACHMENT${i}_WEBGL`);\n items[`DRAW_BUFFER${i}`] = `DRAW_BUFFER${i}_WEBGL`;\n }\n this._compatibleInterface(drawBuffers, {\n drawBuffers: \"drawBuffersWEBGL\",\n ...items\n });\n }\n this._compatibleInterface(textureHalfFloat, {\n HALF_FLOAT: \"HALF_FLOAT_OES\"\n });\n this._compatibleInterface(colorBufferHalfFloat, {\n RGBA16F: \"RBGA16F_EXT\"\n });\n this._compatibleInterface(WEBGL_colorBufferFloat, {\n RGBA32F: \"RBGA32F_EXT\"\n });\n }\n\n this._compatibleInterface(textureFilterAnisotropic, {\n TEXTURE_MAX_ANISOTROPY_EXT: \"TEXTURE_MAX_ANISOTROPY_EXT\"\n });\n }\n}\n","import { WebGLGraphicDevice } from \"./WebGLGraphicDevice\";\nimport { GLCapabilityType } from \"@galacean/engine-core\";\n\n/**\n * GLContext extension.\n */\nexport class GLExtensions {\n private rhi: WebGLGraphicDevice;\n private _requireResult;\n\n constructor(rhi: WebGLGraphicDevice) {\n this.rhi = rhi;\n this._requireResult = {};\n }\n\n /**\n * Require an extension.\n */\n requireExtension(ext: GLCapabilityType) {\n if (this._requireResult[ext] !== undefined) {\n return this._requireResult[ext];\n }\n\n this._requireResult[ext] = this.rhi.gl.getExtension(ext);\n return this._requireResult[ext];\n }\n}\n","import { GLCapabilityType, Logger, Primitive } from \"@galacean/engine-core\";\nimport { SubPrimitive } from \"@galacean/engine-core/types/graphic/SubPrimitive\";\nimport { IPlatformPrimitive } from \"@galacean/engine-design\";\nimport { WebGLGraphicDevice } from \"./WebGLGraphicDevice\";\nimport { WebGLExtension } from \"./type\";\n\n/**\n * Improvement of VAO:\n * 1) WebGL2.0 must support VAO, almost all devices support vao extensions in webgl1.0, we can use PollyFill,only keep VAO mode.\n */\n\n/**\n * @internal\n * GL platform primitive.\n */\nexport class GLPrimitive implements IPlatformPrimitive {\n private _attribLocArray: number[] = [];\n private readonly _primitive: Primitive;\n private readonly _canUseInstancedArrays: boolean;\n\n private _gl: (WebGLRenderingContext & WebGLExtension) | WebGL2RenderingContext;\n private _vaoMap: Map<number, WebGLVertexArrayObject> = new Map();\n private readonly _isSupportVAO: boolean;\n\n constructor(rhi: WebGLGraphicDevice, primitive: Primitive) {\n this._primitive = primitive;\n this._canUseInstancedArrays = rhi.canIUse(GLCapabilityType.instancedArrays);\n this._isSupportVAO = rhi.canIUse(GLCapabilityType.vertexArrayObject);\n this._gl = rhi.gl;\n }\n\n /**\n * Draw the primitive.\n */\n draw(shaderProgram: any, subMesh: SubPrimitive): void {\n const gl = this._gl;\n const primitive = this._primitive;\n const useVao = this._isSupportVAO && primitive.enableVAO;\n\n if (useVao) {\n if (primitive._bufferStructChanged) {\n this._clearVAO();\n }\n if (!this._vaoMap.has(shaderProgram.id)) {\n this._registerVAO(shaderProgram);\n }\n const vao = this._vaoMap.get(shaderProgram.id);\n gl.bindVertexArray(vao);\n } else {\n this._bindBufferAndAttrib(shaderProgram);\n }\n\n const { indexBufferBinding, instanceCount, _glIndexType, _glIndexByteCount } = primitive;\n const { topology, start, count } = subMesh;\n\n if (!instanceCount) {\n if (indexBufferBinding) {\n if (useVao) {\n gl.drawElements(topology, count, _glIndexType, start * _glIndexByteCount);\n } else {\n const { _glBuffer } = indexBufferBinding.buffer._platformBuffer;\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, _glBuffer);\n gl.drawElements(topology, count, _glIndexType, start * _glIndexByteCount);\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);\n }\n } else {\n gl.drawArrays(topology, start, count);\n }\n } else {\n if (this._canUseInstancedArrays) {\n if (indexBufferBinding) {\n if (useVao) {\n gl.drawElementsInstanced(topology, count, _glIndexType, start * _glIndexByteCount, instanceCount);\n } else {\n const { _glBuffer } = indexBufferBinding.buffer._platformBuffer;\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, _glBuffer);\n gl.drawElementsInstanced(topology, count, _glIndexType, start * _glIndexByteCount, instanceCount);\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);\n }\n } else {\n gl.drawArraysInstanced(topology, start, count, instanceCount);\n }\n } else {\n Logger.error(\"ANGLE_instanced_arrays extension is not supported\");\n }\n }\n\n // Unbind\n if (useVao) {\n gl.bindVertexArray(null);\n } else {\n this._disableAttrib();\n }\n }\n\n destroy(): void {\n this._isSupportVAO && this._clearVAO();\n }\n\n /**\n * Bind buffer and attribute.\n */\n private _bindBufferAndAttrib(shaderProgram: any): void {\n const gl = this._gl;\n const primitive = this._primitive;\n const vertexBufferBindings = primitive.vertexBufferBindings;\n\n this._attribLocArray.length = 0;\n const attributeLocation = shaderProgram.attributeLocation;\n const attributes = primitive._vertexElementMap;\n\n let vbo: WebGLBuffer;\n let lastBoundVbo: WebGLBuffer;\n\n for (const name in attributeLocation) {\n const loc = attributeLocation[name];\n if (loc === -1) continue;\n\n const element = attributes[name];\n if (element) {\n const { buffer, stride } = vertexBufferBindings[element.bindingIndex];\n vbo = buffer._platformBuffer._glBuffer;\n // prevent binding the vbo which already bound at the last loop, e.g. a buffer with multiple attributes.\n if (lastBoundVbo !== vbo) {\n lastBoundVbo = vbo;\n gl.bindBuffer(gl.ARRAY_BUFFER, vbo);\n }\n\n gl.enableVertexAttribArray(loc);\n const elementInfo = element._formatMetaInfo;\n gl.vertexAttribPointer(loc, elementInfo.size, elementInfo.type, elementInfo.normalized, stride, element.offset);\n if (this._canUseInstancedArrays) {\n gl.vertexAttribDivisor(loc, element.instanceStepRate);\n }\n this._attribLocArray.push(loc);\n } else {\n Logger.warn(\"vertex attribute not found: \" + name);\n }\n }\n\n gl.bindBuffer(gl.ARRAY_BUFFER, null);\n }\n\n private _disableAttrib() {\n const gl = this._gl;\n for (let i = 0, l = this._attribLocArray.length; i < l; i++) {\n gl.disableVertexAttribArray(this._attribLocArray[i]);\n }\n }\n\n private _registerVAO(shaderProgram: any): void {\n const gl = this._gl;\n const vao = gl.createVertexArray();\n\n /** register VAO */\n gl.bindVertexArray(vao);\n\n const { indexBufferBinding } = this._primitive;\n if (indexBufferBinding) {\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBufferBinding.buffer._platformBuffer._glBuffer);\n }\n this._bindBufferAndAttrib(shaderProgram);\n\n /** unbind */\n gl.bindVertexArray(null);\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);\n this._disableAttrib();\n\n this._vaoMap.set(shaderProgram.id, vao);\n }\n\n private _clearVAO(): void {\n const gl = this._gl;\n this._vaoMap.forEach((vao) => {\n gl.deleteVertexArray(vao);\n });\n this._vaoMap.clear();\n }\n}\n","/**\n * @private\n */\nexport class GLRenderStates {\n private _gl: WebGLRenderingContext;\n private _parameters = {};\n /**\n * @param {WebGLRenderingContext} gl\n */\n constructor(gl: WebGLRenderingContext) {\n this._gl = gl;\n this._parameters = {}; // current gl state parameters\n\n /** cache */\n this._parameters[gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS] = gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS);\n this._parameters[gl.MAX_VERTEX_UNIFORM_VECTORS] = gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS);\n this._parameters[gl.MAX_VERTEX_ATTRIBS] = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n this._parameters[gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS] = gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS);\n this._parameters[gl.MAX_TEXTURE_SIZE] = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n\n // init blend state same as BlendState default value.\n gl.blendFuncSeparate(gl.ONE, gl.ZERO, gl.ONE, gl.ZERO);\n gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_ADD);\n gl.colorMask(true, true, true, true);\n gl.blendColor(0, 0, 0, 0);\n gl.disable(gl.SAMPLE_ALPHA_TO_COVERAGE);\n\n // init depth state same as DepthState default value.\n gl.enable(gl.DEPTH_TEST);\n gl.depthFunc(gl.LESS);\n gl.depthMask(true);\n\n // init stencil state same as StencilState default value.\n gl.disable(gl.STENCIL_TEST);\n gl.stencilFuncSeparate(gl.FRONT, gl.ALWAYS, 0, 0xff);\n gl.stencilFuncSeparate(gl.BACK, gl.ALWAYS, 0, 0xff);\n gl.stencilOpSeparate(gl.FRONT, gl.KEEP, gl.KEEP, gl.KEEP);\n gl.stencilOpSeparate(gl.BACK, gl.KEEP, gl.KEEP, gl.KEEP);\n gl.stencilMask(0xff);\n\n // init raster state same as RasterState default value.\n gl.enable(gl.CULL_FACE);\n gl.cullFace(gl.BACK);\n gl.disable(gl.POLYGON_OFFSET_FILL);\n gl.polygonOffset(0, 0);\n }\n\n /**\n * Get a parameter.\n */\n getParameter(pname) {\n return this._parameters[pname];\n }\n}\n","import {\n GLCapabilityType,\n IPlatformTexture,\n Logger,\n RenderBufferDepthFormat,\n Texture,\n TextureCubeFace,\n TextureDepthCompareFunction,\n TextureFilterMode,\n TextureFormat,\n TextureUsage,\n TextureWrapMode\n} from \"@galacean/engine-core\";\nimport { WebGLGraphicDevice } from \"./WebGLGraphicDevice\";\nimport { GLCompressedTextureInternalFormat, TextureFormatDetail } from \"./type\";\n\n/**\n * Texture in WebGL platform.\n */\nexport class GLTexture implements IPlatformTexture {\n /** @internal */\n static _isPowerOf2(v: number): boolean {\n return (v & (v - 1)) === 0;\n }\n\n /**\n * Get more texture info from TextureFormat.\n * @internal\n */\n static _getFormatDetail(\n format: TextureFormat,\n gl: WebGLRenderingContext & WebGL2RenderingContext,\n isWebGL2: boolean\n ): TextureFormatDetail {\n switch (format) {\n case TextureFormat.R8G8B8:\n return {\n internalFormat: isWebGL2 ? gl.RGB8 : gl.RGB,\n baseFormat: gl.RGB,\n dataType: gl.UNSIGNED_BYTE,\n isCompressed: false\n };\n case TextureFormat.R8G8B8A8:\n return {\n internalFormat: isWebGL2 ? gl.RGBA8 : gl.RGBA,\n baseFormat: gl.RGBA,\n dataType: gl.UNSIGNED_BYTE,\n isCompressed: false\n };\n case TextureFormat.R4G4B4A4:\n return {\n internalFormat: isWebGL2 ? gl.RGBA4 : gl.RGBA,\n baseFormat: gl.RGBA,\n dataType: gl.UNSIGNED_SHORT_4_4_4_4,\n isCompressed: false\n };\n case TextureFormat.R5G5B5A1:\n return {\n internalFormat: isWebGL2 ? gl.RGB5_A1 : gl.RGBA,\n baseFormat: gl.RGBA,\n dataType: gl.UNSIGNED_SHORT_5_5_5_1,\n isCompressed: false\n };\n case TextureFormat.R5G6B5:\n return {\n internalFormat: isWebGL2 ? gl.RGB565 : gl.RGB,\n baseFormat: gl.RGB,\n dataType: gl.UNSIGNED_SHORT_5_6_5,\n isCompressed: false\n };\n case TextureFormat.Alpha8:\n return {\n internalFormat: gl.ALPHA,\n baseFormat: gl.ALPHA,\n dataType: gl.UNSIGNED_BYTE,\n isCompressed: false\n };\n case TextureFormat.LuminanceAlpha:\n return {\n internalFormat: gl.LUMINANCE_ALPHA,\n baseFormat: gl.LUMINANCE_ALPHA,\n dataType: gl.UNSIGNED_BYTE,\n isCompressed: false\n };\n case TextureFormat.R16G16B16A16:\n return {\n internalFormat: isWebGL2 ? gl.RGBA16F : gl.RGBA,\n baseFormat: gl.RGBA,\n dataType: gl.HALF_FLOAT,\n isCompressed: false\n };\n case TextureFormat.R32G32B32A32:\n return {\n internalFormat: isWebGL2 ? gl.RGBA32F : gl.RGBA,\n baseFormat: gl.RGBA,\n dataType: gl.FLOAT,\n isCompressed: false\n };\n case TextureFormat.R32G32B32A32_UInt:\n return {\n internalFormat: isWebGL2 ? gl.RGBA32UI : gl.NONE,\n baseFormat: gl.RGBA_INTEGER,\n dataType: gl.UNSIGNED_INT,\n isCompressed: false\n };\n case TextureFormat.BC1:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGB_S3TC_DXT1_EXT,\n isCompressed: true\n };\n case TextureFormat.BC3:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGBA_S3TC_DXT5_EXT,\n isCompressed: true\n };\n case TextureFormat.BC7:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGBA_BPTC_UNORM_EXT,\n isCompressed: true\n };\n case TextureFormat.ETC1_RGB:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGB_ETC1_WEBGL,\n isCompressed: true\n };\n case TextureFormat.ETC2_RGB:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGB8_ETC2,\n isCompressed: true\n };\n case TextureFormat.ETC2_RGBA5:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGB8_PUNCHTHROUGH_ALPHA1_ETC2,\n isCompressed: true\n };\n case TextureFormat.ETC2_RGBA8:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGBA8_ETC2_EAC,\n isCompressed: true\n };\n case TextureFormat.PVRTC_RGB2:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGB_PVRTC_2BPPV1_IMG,\n isCompressed: true\n };\n case TextureFormat.PVRTC_RGBA2:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGBA_PVRTC_2BPPV1_IMG,\n isCompressed: true\n };\n case TextureFormat.PVRTC_RGB4:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGB_PVRTC_4BPPV1_IMG,\n isCompressed: true\n };\n case TextureFormat.PVRTC_RGBA4:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGBA_PVRTC_4BPPV1_IMG,\n isCompressed: true\n };\n case TextureFormat.ASTC_4x4:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGBA_ASTC_4X4_KHR,\n isCompressed: true\n };\n case TextureFormat.ASTC_5x5:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGBA_ASTC_5X5_KHR,\n isCompressed: true\n };\n case TextureFormat.ASTC_6x6:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGBA_ASTC_6X6_KHR,\n isCompressed: true\n };\n case TextureFormat.ASTC_8x8:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGBA_ASTC_8X8_KHR,\n isCompressed: true\n };\n case TextureFormat.ASTC_10x10:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGBA_ASTC_10X10_KHR,\n isCompressed: true\n };\n case TextureFormat.ASTC_12x12:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGBA_ASTC_12X12_KHR,\n isCompressed: true\n };\n\n case TextureFormat.Depth:\n return {\n internalFormat: isWebGL2 ? gl.DEPTH_COMPONENT32F : gl.DEPTH_COMPONENT,\n baseFormat: gl.DEPTH_COMPONENT,\n dataType: isWebGL2 ? gl.FLOAT : gl.UNSIGNED_SHORT,\n isCompressed: false,\n attachment: gl.DEPTH_ATTACHMENT\n };\n case TextureFormat.DepthStencil:\n return {\n internalFormat: isWebGL2 ? gl.DEPTH32F_STENCIL8 : gl.DEPTH_STENCIL,\n baseFormat: gl.DEPTH_STENCIL,\n dataType: isWebGL2 ? gl.FLOAT_32_UNSIGNED_INT_24_8_REV : gl.UNSIGNED_INT_24_8,\n isCompressed: false,\n attachment: gl.DEPTH_STENCIL_ATTACHMENT\n };\n case TextureFormat.Depth16:\n return {\n internalFormat: isWebGL2 ? gl.DEPTH_COMPONENT16 : gl.DEPTH_COMPONENT,\n baseFormat: gl.DEPTH_COMPONENT,\n dataType: gl.UNSIGNED_SHORT,\n isCompressed: false,\n attachment: gl.DEPTH_ATTACHMENT\n };\n case TextureFormat.Depth24Stencil8:\n return {\n internalFormat: isWebGL2 ? gl.DEPTH24_STENCIL8 : gl.DEPTH_STENCIL,\n baseFormat: gl.DEPTH_STENCIL,\n dataType: gl.UNSIGNED_INT_24_8,\n isCompressed: false,\n attachment: gl.DEPTH_STENCIL_ATTACHMENT\n };\n case TextureFormat.Depth24:\n return {\n internalFormat: gl.DEPTH_COMPONENT24,\n baseFormat: gl.DEPTH_COMPONENT,\n dataType: gl.UNSIGNED_INT,\n isCompressed: false,\n attachment: gl.DEPTH_ATTACHMENT\n };\n case TextureFormat.Depth32:\n return {\n internalFormat: gl.DEPTH_COMPONENT32F,\n baseFormat: gl.DEPTH_COMPONENT,\n dataType: gl.FLOAT,\n isCompressed: false,\n attachment: gl.DEPTH_ATTACHMENT\n };\n case TextureFormat.Depth32Stencil8:\n return {\n internalFormat: gl.DEPTH32F_STENCIL8,\n baseFormat: gl.DEPTH_STENCIL,\n dataType: gl.FLOAT_32_UNSIGNED_INT_24_8_REV,\n isCompressed: false,\n attachment: gl.DEPTH_STENCIL_ATTACHMENT\n };\n default:\n throw new Error(`this TextureFormat is not supported in Galacean Engine: ${format}`);\n }\n }\n\n /**\n * In WebGL 1, internalformat must be the same as baseFormat when call texImage2D.\n * @internal\n */\n static _getRenderBufferDepthFormatDetail(\n format: TextureFormat,\n gl: WebGLRenderingContext & WebGL2RenderingContext,\n isWebGL2: boolean\n ): TextureFormatDetail {\n switch (format) {\n case TextureFormat.Depth:\n return {\n internalFormat: isWebGL2 ? gl.DEPTH_COMPONENT32F : gl.DEPTH_COMPONENT16,\n baseFormat: gl.DEPTH_COMPONENT,\n dataType: isWebGL2 ? gl.FLOAT : gl.UNSIGNED_SHORT,\n isCompressed: false,\n attachment: gl.DEPTH_ATTACHMENT\n };\n case TextureFormat.DepthStencil:\n return {\n internalFormat: isWebGL2 ? gl.DEPTH32F_STENCIL8 : gl.DEPTH_STENCIL,\n baseFormat: gl.DEPTH_STENCIL,\n dataType: isWebGL2 ? gl.FLOAT_32_UNSIGNED_INT_24_8_REV : gl.UNSIGNED_INT_24_8,\n isCompressed: false,\n attachment: gl.DEPTH_STENCIL_ATTACHMENT\n };\n case TextureFormat.Stencil:\n return {\n internalFormat: gl.STENCIL_INDEX8,\n baseFormat: gl.STENCIL_ATTACHMENT,\n dataType: gl.UNSIGNED_BYTE,\n isCompressed: false,\n attachment: gl.STENCIL_ATTACHMENT\n };\n case TextureFormat.Depth16:\n return {\n internalFormat: gl.DEPTH_COMPONENT16,\n baseFormat: gl.DEPTH_COMPONENT,\n dataType: gl.UNSIGNED_SHORT,\n isCompressed: false,\n attachment: gl.DEPTH_ATTACHMENT\n };\n case TextureFormat.Depth24Stencil8:\n return {\n internalFormat: isWebGL2 ? gl.DEPTH24_STENCIL8 : gl.DEPTH_STENCIL,\n baseFormat: gl.DEPTH_STENCIL,\n dataType: gl.UNSIGNED_INT_24_8,\n isCompressed: false,\n attachment: gl.DEPTH_STENCIL_ATTACHMENT\n };\n case TextureFormat.Depth24:\n return {\n internalFormat: gl.DEPTH_COMPONENT24,\n baseFormat: gl.DEPTH_COMPONENT,\n dataType: gl.UNSIGNED_INT,\n isCompressed: false,\n attachment: gl.DEPTH_ATTACHMENT\n };\n case TextureFormat.Depth32:\n return {\n internalFormat: gl.DEPTH_COMPONENT32F,\n baseFormat: gl.DEPTH_COMPONENT,\n dataType: gl.FLOAT,\n isCompressed: false,\n attachment: gl.DEPTH_ATTACHMENT\n };\n\n case TextureFormat.Depth32Stencil8:\n return {\n internalFormat: gl.DEPTH32F_STENCIL8,\n baseFormat: gl.DEPTH_STENCIL,\n dataType: gl.FLOAT_32_UNSIGNED_INT_24_8_REV,\n isCompressed: false,\n attachment: gl.DEPTH_STENCIL_ATTACHMENT\n };\n default:\n throw new Error(`this TextureFormat is not supported in Galacean Engine: ${format}`);\n }\n }\n\n /**\n * Check whether the corresponding texture format is supported.\n * @internal\n */\n static _supportTextureFormat(format: TextureFormat, rhi: WebGLGraphicDevice): boolean {\n switch (format) {\n case TextureFormat.R16G16B16A16:\n if (!rhi.canIUse(GLCapabilityType.textureHalfFloat)) {\n return false;\n }\n break;\n case TextureFormat.R32G32B32A32:\n if (!rhi.canIUse(GLCapabilityType.textureFloat)) {\n return false;\n }\n break;\n case TextureFormat.Depth16:\n case TextureFormat.Depth24Stencil8:\n case TextureFormat.Depth:\n case TextureFormat.DepthStencil:\n if (!rhi.canIUse(GLCapabilityType.depthTexture)) {\n return false;\n }\n break;\n case TextureFormat.R32G32B32A32_UInt:\n case TextureFormat.Depth24:\n case TextureFormat.Depth32:\n case TextureFormat.Depth32Stencil8:\n return rhi.isWebGL2;\n }\n\n return true;\n }\n /**\n * @internal\n */\n static _supportRenderBufferColorFormat(format: TextureFormat, rhi: WebGLGraphicDevice): boolean {\n let isSupported = true;\n\n switch (format) {\n case TextureFormat.R16G16B16A16:\n {\n if (!rhi.canIUse(GLCapabilityType.colorBufferHalfFloat) || !rhi.canIUse(GLCapabilityType.textureHalfFloat)) {\n isSupported = false;\n }\n }\n break;\n case TextureFormat.R32G32B32A32:\n {\n if (!rhi.canIUse(GLCapabilityType.colorBufferFloat) || !rhi.canIUse(GLCapabilityType.textureFloat)) {\n isSupported = false;\n }\n }\n break;\n }\n\n return isSupported;\n }\n\n /**\n * @internal\n */\n static _supportRenderBufferDepthFormat(format: TextureFormat, rhi: WebGLGraphicDevice): boolean {\n if (!rhi.isWebGL2) {\n switch (format) {\n case TextureFormat.Depth24:\n case TextureFormat.Depth32:\n case TextureFormat.Depth32Stencil8:\n return false;\n }\n }\n\n return true;\n }\n\n /** @internal */\n _texture: Texture;\n /** @internal */\n _glTexture: WebGLTexture;\n /** @internal */\n _rhi: WebGLGraphicDevice;\n /** @internal */\n _gl: WebGLRenderingContext & WebGL2RenderingContext;\n /** @internal */\n _isWebGL2: boolean;\n /** @internal */\n _target: GLenum; // gl.TEXTURE_2D | gl.TEXTURE_CUBE_MAP\n /** @internal */\n _formatDetail: TextureFormatDetail;\n\n /**\n * Wrapping mode for texture coordinate S.\n */\n set wrapModeU(value: TextureWrapMode) {\n this._bind();\n this._setWrapMode(value, this._gl.TEXTURE_WRAP_S);\n }\n\n /**\n * Wrapping mode for texture coordinate T.\n */\n set wrapModeV(value: TextureWrapMode) {\n this._bind();\n this._setWrapMode(value, this._gl.TEXTURE_WRAP_T);\n }\n\n /**\n * Filter mode for texture.\n */\n set filterMode(value: TextureFilterMode) {\n const gl = this._gl;\n const target = this._target;\n /** @ts-ignore */\n const { _mipmap } = this._texture;\n\n this._bind();\n switch (value) {\n case TextureFilterMode.Point:\n gl.texParameteri(target, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(target, gl.TEXTURE_MIN_FILTER, _mipmap ? gl.NEAREST_MIPMAP_NEAREST : gl.NEAREST);\n break;\n case TextureFilterMode.Bilinear:\n gl.texParameteri(target, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(target, gl.TEXTURE_MIN_FILTER, _mipmap ? gl.LINEAR_MIPMAP_NEAREST : gl.LINEAR);\n break;\n case TextureFilterMode.Trilinear:\n gl.texParameteri(target, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(target, gl.TEXTURE_MIN_FILTER, _mipmap ? gl.LINEAR_MIPMAP_LINEAR : gl.LINEAR);\n break;\n }\n }\n\n /**\n * Anisotropic level for texture.\n */\n set anisoLevel(value: number) {\n const gl = this._gl as WebGLRenderingContext & WebGL2RenderingContext & EXT_texture_filter_anisotropic;\n\n this._bind();\n gl.texParameterf(this._target, gl.TEXTURE_MAX_ANISOTROPY_EXT, value);\n }\n\n set depthCompareFunction(value: TextureDepthCompareFunction) {\n this._bind();\n\n const gl = this._gl;\n switch (value) {\n case TextureDepthCompareFunction.Never:\n gl.texParameteri(this._target, gl.TEXTURE_COMPARE_FUNC, gl.NEVER);\n break;\n case TextureDepthCompareFunction.Less:\n gl.texParameteri(this._target, gl.TEXTURE_COMPARE_FUNC, gl.LESS);\n break;\n case TextureDepthCompareFunction.Equal:\n gl.texParameteri(this._target, gl.TEXTURE_COMPARE_FUNC, gl.EQUAL);\n break;\n case TextureDepthCompareFunction.LessEqual:\n gl.texParameteri(this._target, gl.TEXTURE_COMPARE_FUNC, gl.LEQUAL);\n break;\n case TextureDepthCompareFunction.Greater:\n gl.texParameteri(this._target, gl.TEXTURE_COMPARE_FUNC, gl.GREATER);\n break;\n case TextureDepthCompareFunction.NotEqual:\n gl.texParameteri(this._target, gl.TEXTURE_COMPARE_FUNC, gl.NOTEQUAL);\n break;\n case TextureDepthCompareFunction.GreaterEqual:\n gl.texParameteri(this._target, gl.TEXTURE_COMPARE_FUNC, gl.GEQUAL);\n break;\n case TextureDepthCompareFunction.Always:\n gl.texParameteri(this._target, gl.TEXTURE_COMPARE_FUNC, gl.ALWAYS);\n break;\n }\n }\n /**\n * Create texture in WebGL platform.\n */\n constructor(rhi: WebGLGraphicDevice, texture: Texture, target: GLenum) {\n this._texture = texture;\n this._rhi = rhi;\n this._gl = rhi.gl as WebGLRenderingContext & WebGL2RenderingContext;\n this._isWebGL2 = rhi.isWebGL2;\n this._target = target;\n this._glTexture = this._gl.createTexture();\n }\n\n /**\n * Destroy texture.\n */\n destroy() {\n this._gl.deleteTexture(this._glTexture);\n this._texture = null;\n this._glTexture = null;\n this._formatDetail = null;\n }\n\n /**\n * @internal\n */\n setUseDepthCompareMode(value: boolean): void {\n const gl = this._gl;\n gl.texParameteri(this._target, gl.TEXTURE_COMPARE_MODE, value ? gl.COMPARE_REF_TO_TEXTURE : gl.NONE);\n }\n\n /**\n * Generate multi-level textures based on the 0th level data.\n */\n generateMipmaps(): void {\n // @todo (1x1).generateMipmap() will flash back in uc.\n if (this._texture.width !== 1 || this._texture.height !== 1) {\n this._bind();\n this._gl.generateMipmap(this._target);\n }\n }\n\n protected _bind() {\n this._rhi.bindTexture(this);\n }\n\n /**\n * Pre-development mipmapping GPU memory.\n */\n protected _init(isCube: boolean): void {\n const gl = this._gl;\n const isWebGL2 = this._isWebGL2;\n let { internalFormat, baseFormat, dataType } = this._formatDetail;\n // @ts-ignore\n const { mipmapCount, width, height, usage, _isDepthTexture } = this._texture;\n\n this._bind();\n\n if (isWebGL2 && !(baseFormat === gl.LUMINANCE_ALPHA || baseFormat === gl.ALPHA) && usage !== TextureUsage.Dynamic) {\n gl.texStorage2D(this._target, mipmapCount, internalFormat, width, height);\n } else {\n if (!isCube) {\n if (_isDepthTexture) {\n gl.texImage2D(this._target, 0, internalFormat, width, height, 0, baseFormat, dataType, null);\n } else {\n for (let i = 0; i < mipmapCount; i++) {\n const mipWidth = Math.max(1, width >> i);\n const mipHeight = Math.max(1, height >> i);\n gl.texImage2D(this._target, i, internalFormat, mipWidth, mipHeight, 0, baseFormat, dataType, null);\n }\n }\n } else {\n for (let i = 0; i < mipmapCount; i++) {\n const size = Math.max(1, width >> i);\n for (let faceIndex = 0; faceIndex < 6; faceIndex++) {\n gl.texImage2D(\n gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex,\n i,\n internalFormat,\n size,\n size,\n 0,\n baseFormat,\n dataType,\n null\n );\n }\n }\n }\n }\n }\n\n /**\n * Get the pixel color buffer according to the specified cube face and area.\n * @param face - You can choose which cube face to read\n * @param x - X coordinate of area start\n * @param y - Y coordinate of area start\n * @param width - Area width\n * @param height - Area height\n * @param out - Color buffer\n * @param mipLevel - Set mip level the data want to get from\n */\n protected _getPixelBuffer(\n face: TextureCubeFace | null,\n x: number,\n y: number,\n width: number,\n height: number,\n mipLevel: number,\n out: ArrayBufferView\n ): void {\n const gl = this._gl;\n const { baseFormat, dataType } = this._formatDetail;\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, this._getReadFrameBuffer());\n\n if (mipLevel > 0 && !this._isWebGL2) {\n mipLevel = 0;\n Logger.error(\"mipLevel only take effect in WebGL2.0\");\n }\n\n if (face != null) {\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_CUBE_MAP_POSITIVE_X + face,\n this._glTexture,\n mipLevel\n );\n } else {\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this._glTexture, mipLevel);\n }\n gl.readPixels(x, y, width, height, baseFormat, dataType, out);\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n }\n\n private _setWrapMode(value: TextureWrapMode, pname: GLenum): void {\n const gl = this._gl;\n const isWebGL2 = this._isWebGL2;\n const target = this._target;\n const { width, height } = this._texture;\n\n if (\n !isWebGL2 &&\n value !== TextureWrapMode.Clamp &&\n (!GLTexture._isPowerOf2(width) || !GLTexture._isPowerOf2(height))\n ) {\n Logger.warn(\n \"non-power-2 texture is not supported for REPEAT or MIRRORED_REPEAT in WebGL1,and has automatically downgraded to CLAMP_TO_EDGE\"\n );\n value = TextureWrapMode.Clamp;\n }\n\n switch (value) {\n case TextureWrapMode.Clamp:\n gl.texParameteri(target, pname, gl.CLAMP_TO_EDGE);\n break;\n case TextureWrapMode.Repeat:\n gl.texParameteri(target, pname, gl.REPEAT);\n break;\n case TextureWrapMode.Mirror:\n gl.texParameteri(target, pname, gl.MIRRORED_REPEAT);\n break;\n }\n }\n\n protected _getReadFrameBuffer(): WebGLFramebuffer {\n let frameBuffer = this._rhi._readFrameBuffer;\n if (!frameBuffer) {\n this._rhi._readFrameBuffer = frameBuffer = this._gl.createFramebuffer();\n }\n return frameBuffer;\n }\n}\n","import {\n GLCapabilityType,\n IPlatformRenderTarget,\n Logger,\n RenderTarget,\n Texture,\n TextureCube,\n TextureCubeFace,\n TextureFormat\n} from \"@galacean/engine-core\";\nimport { GLTexture } from \"./GLTexture\";\nimport { WebGLGraphicDevice } from \"./WebGLGraphicDevice\";\n\n/**\n * The render target in WebGL platform is used for off-screen rendering.\n */\nexport class GLRenderTarget implements IPlatformRenderTarget {\n private _gl: WebGLRenderingContext & WebGL2RenderingContext;\n private _isWebGL2: boolean;\n private _target: RenderTarget;\n private _frameBuffer: WebGLFramebuffer;\n private _MSAAFrameBuffer: WebGLFramebuffer | null;\n private _depthRenderBuffer: WebGLRenderbuffer | null;\n private _MSAAColorRenderBuffers: WebGLRenderbuffer[] = [];\n private _MSAADepthRenderBuffer: WebGLRenderbuffer | null;\n private _oriDrawBuffers: GLenum[];\n private _blitDrawBuffers: GLenum[] | null;\n private _curMipLevel: number = 0;\n private _curFaceIndex: TextureCubeFace = undefined;\n\n /**\n * Create render target in WebGL platform.\n */\n constructor(rhi: WebGLGraphicDevice, target: RenderTarget) {\n this._gl = rhi.gl as WebGLRenderingContext & WebGL2RenderingContext;\n this._isWebGL2 = rhi.isWebGL2;\n this._target = target;\n\n /** @ts-ignore */\n const { _colorTextures, _depth, width, height } = target;\n const isDepthTexture = _depth instanceof Texture;\n\n /** todo\n * MRT + Cube + [,MSAA]\n * MRT + MSAA\n */\n\n for (let i = 0, n = _colorTextures.length; i < n; i++) {\n const format = _colorTextures[i]._format;\n if (!GLTexture._supportRenderBufferColorFormat(format, rhi)) {\n throw new Error(`TextureFormat is not supported:${TextureFormat[format]} in RenderTarget`);\n }\n }\n\n if (!isDepthTexture && !GLTexture._supportRenderBufferDepthFormat(_depth, rhi)) {\n throw new Error(`TextureFormat is not supported:${TextureFormat[_depth]} in RenderTarget`);\n }\n\n if (_colorTextures.length > 1 && !rhi.canIUse(GLCapabilityType.drawBuffers)) {\n throw new Error(\"MRT is not supported\");\n }\n\n if (_colorTextures.some((v: Texture) => v.width !== width || v.height !== height)) {\n throw new Error(\"ColorTexture's size must as same as RenderTarget\");\n }\n\n if (isDepthTexture && (_depth.width !== width || _depth.height !== height)) {\n throw new Error(\"DepthTexture's size must as same as RenderTarget\");\n }\n\n // todo: necessary to support MRT + Cube + [,MSAA] ?\n if (_colorTextures.length > 1 && _colorTextures.some((v: Texture) => v instanceof TextureCube)) {\n throw new Error(\"MRT+Cube+[,MSAA] is not supported\");\n }\n\n const maxAntiAliasing = rhi.capability.maxAntiAliasing;\n if (target.antiAliasing > maxAntiAliasing) {\n Logger.warn(`MSAA antiAliasing exceeds the limit and is automatically downgraded to:${maxAntiAliasing}`);\n\n /** @ts-ignore */\n target._antiAliasing = maxAntiAliasing;\n }\n\n this._frameBuffer = this._gl.createFramebuffer();\n\n // bind main FBO\n this._bindMainFBO();\n\n // bind MSAA FBO\n if (target.antiAliasing > 1) {\n this._MSAAFrameBuffer = this._gl.createFramebuffer();\n this._bindMSAAFBO();\n }\n }\n\n /**\n * Set which face and mipLevel of the cube texture to render to.\n * @param mipLevel - Set mip level the data want to write\n * @param faceIndex - Cube texture face\n */\n activeRenderTarget(mipLevel: number, faceIndex?: TextureCubeFace): void {\n // @todo: support MRT\n const { _gl: gl, _target: target } = this;\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, this._frameBuffer);\n\n const mipChanged = mipLevel !== this._curMipLevel;\n const faceChanged = faceIndex !== this._curFaceIndex;\n\n const colorTexture = target.getColorTexture(0);\n if (colorTexture) {\n const isCube = colorTexture instanceof TextureCube;\n if (mipChanged || (isCube && faceChanged)) {\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n isCube ? gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex : gl.TEXTURE_2D,\n // @ts-ignore\n (colorTexture._platformTexture as GLTexture)._glTexture,\n mipLevel\n );\n }\n }\n\n const { depthTexture } = target;\n if (depthTexture) {\n const isCube = depthTexture instanceof TextureCube;\n if (mipChanged || isCube) {\n // @ts-ignore\n const platformTexture = <GLTexture>depthTexture._platformTexture;\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n platformTexture._formatDetail.attachment,\n isCube ? gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex : gl.TEXTURE_2D,\n platformTexture._glTexture,\n mipLevel\n );\n }\n } else {\n if (mipChanged) {\n // @ts-ignore\n const { internalFormat } = GLTexture._getRenderBufferDepthFormatDetail(target._depth, gl, this._isWebGL2);\n gl.bindRenderbuffer(gl.RENDERBUFFER, this._depthRenderBuffer);\n gl.renderbufferStorage(gl.RENDERBUFFER, internalFormat, target.width >> mipLevel, target.height >> mipLevel);\n }\n }\n\n this._curMipLevel = mipLevel;\n this._curFaceIndex = faceIndex;\n\n if (this._MSAAFrameBuffer) {\n gl.bindFramebuffer(gl.FRAMEBUFFER, this._MSAAFrameBuffer);\n }\n }\n\n /**\n * Blit FBO.\n */\n blitRenderTarget(): void {\n if (!this._MSAAFrameBuffer) return;\n\n const gl = this._gl;\n const mask = gl.COLOR_BUFFER_BIT | (this._target.depthTexture ? gl.DEPTH_BUFFER_BIT : 0);\n const { colorTextureCount, width, height } = this._target;\n\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, this._MSAAFrameBuffer);\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this._frameBuffer);\n\n for (let textureIndex = 0; textureIndex < colorTextureCount; textureIndex++) {\n const attachment = gl.COLOR_ATTACHMENT0 + textureIndex;\n\n this._blitDrawBuffers[textureIndex] = attachment;\n\n gl.readBuffer(attachment);\n gl.drawBuffers(this._blitDrawBuffers);\n gl.blitFramebuffer(0, 0, width, height, 0, 0, width, height, mask, gl.NEAREST);\n\n this._blitDrawBuffers[textureIndex] = gl.NONE;\n }\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n }\n\n /**\n * Destroy render target.\n */\n destroy(): void {\n const gl = this._gl;\n\n this._frameBuffer && gl.deleteFramebuffer(this._frameBuffer);\n this._depthRenderBuffer && gl.deleteRenderbuffer(this._depthRenderBuffer);\n this._MSAAFrameBuffer && gl.deleteFramebuffer(this._MSAAFrameBuffer);\n this._MSAADepthRenderBuffer && gl.deleteRenderbuffer(this._MSAADepthRenderBuffer);\n\n for (let i = 0; i < this._MSAAColorRenderBuffers.length; i++) {\n gl.deleteRenderbuffer(this._MSAAColorRenderBuffers[i]);\n }\n\n this._frameBuffer = null;\n this._depthRenderBuffer = null;\n this._MSAAFrameBuffer = null;\n this._MSAAColorRenderBuffers.length = 0;\n this._MSAADepthRenderBuffer = null;\n }\n\n private _bindMainFBO(): void {\n const gl = this._gl;\n const isWebGL2: boolean = this._isWebGL2;\n\n /** @ts-ignore */\n const { _depth, colorTextureCount, width, height } = this._target;\n const drawBuffers = new Array(colorTextureCount);\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, this._frameBuffer);\n\n /** color render buffer */\n for (let i = 0; i < colorTextureCount; i++) {\n const colorTexture = this._target.getColorTexture(i);\n const attachment = gl.COLOR_ATTACHMENT0 + i;\n\n drawBuffers[i] = attachment;\n\n if (!(colorTexture instanceof TextureCube)) {\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n attachment,\n gl.TEXTURE_2D,\n /** @ts-ignore */\n (colorTexture._platformTexture as GLTexture)._glTexture,\n 0\n );\n }\n }\n\n if (colorTextureCount > 1) {\n gl.drawBuffers(drawBuffers);\n }\n this._oriDrawBuffers = drawBuffers;\n\n /** depth render buffer */\n if (_depth !== null) {\n if (_depth instanceof Texture && !(_depth instanceof TextureCube)) {\n // @ts-ignore\n const platformTexture = _depth._platformTexture as GLTexture;\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n platformTexture._formatDetail.attachment,\n gl.TEXTURE_2D,\n platformTexture._glTexture,\n 0\n );\n } else if (this._target.antiAliasing <= 1) {\n const { internalFormat, attachment } = GLTexture._getRenderBufferDepthFormatDetail(_depth, gl, isWebGL2);\n const depthRenderBuffer = gl.createRenderbuffer();\n\n this._depthRenderBuffer = depthRenderBuffer;\n\n gl.bindRenderbuffer(gl.RENDERBUFFER, depthRenderBuffer);\n gl.renderbufferStorage(gl.RENDERBUFFER, internalFormat, width, height);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachment, gl.RENDERBUFFER, depthRenderBuffer);\n }\n }\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n gl.bindRenderbuffer(gl.RENDERBUFFER, null);\n }\n\n private _bindMSAAFBO(): void {\n const gl = this._gl;\n const isWebGL2 = this._isWebGL2;\n const MSAADepthRenderBuffer = gl.createRenderbuffer();\n\n /** @ts-ignore */\n const { _depth, colorTextureCount, antiAliasing, width, height } = this._target;\n\n this._blitDrawBuffers = new Array(colorTextureCount);\n this._MSAADepthRenderBuffer = MSAADepthRenderBuffer;\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, this._MSAAFrameBuffer);\n\n // prepare MRT+MSAA color RBOs\n for (let i = 0; i < colorTextureCount; i++) {\n const MSAAColorRenderBuffer = gl.createRenderbuffer();\n\n this._MSAAColorRenderBuffers[i] = MSAAColorRenderBuffer;\n this._blitDrawBuffers[i] = gl.NONE;\n\n gl.bindRenderbuffer(gl.RENDERBUFFER, MSAAColorRenderBuffer);\n gl.renderbufferStorageMultisample(\n gl.RENDERBUFFER,\n antiAliasing,\n /** @ts-ignore */\n (this._target.getColorTexture(i)._platformTexture as GLTexture)._formatDetail.internalFormat,\n width,\n height\n );\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + i, gl.RENDERBUFFER, MSAAColorRenderBuffer);\n }\n gl.drawBuffers(this._oriDrawBuffers);\n\n // prepare MSAA depth RBO\n if (_depth !== null) {\n const { internalFormat, attachment } =\n _depth instanceof Texture\n ? /** @ts-ignore */\n (_depth._platformTexture as GLTexture)._formatDetail\n : GLTexture._getRenderBufferDepthFormatDetail(_depth, gl, isWebGL2);\n\n gl.bindRenderbuffer(gl.RENDERBUFFER, MSAADepthRenderBuffer);\n gl.renderbufferStorageMultisample(gl.RENDERBUFFER, antiAliasing, internalFormat, width, height);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachment, gl.RENDERBUFFER, MSAADepthRenderBuffer);\n }\n\n this._checkFrameBuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n gl.bindRenderbuffer(gl.RENDERBUFFER, null);\n }\n\n private _checkFrameBuffer(): void {\n const gl = this._gl;\n const isWebGL2 = this._isWebGL2;\n const e = gl.checkFramebufferStatus(gl.FRAMEBUFFER);\n\n switch (e) {\n case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:\n throw new Error(\n \"The attachment types are mismatched or not all framebuffer attachment points are framebuffer attachment complete\"\n );\n case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:\n throw new Error(\"There is no attachment\");\n case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:\n throw new Error(\" Height and width of the attachment are not the same.\");\n case gl.FRAMEBUFFER_UNSUPPORTED:\n throw new Error(\n \"The format of the attachment is not supported or if depth and stencil attachments are not the same renderbuffer\"\n );\n }\n\n if (isWebGL2 && e === gl.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE) {\n throw new Error(\n \"The values of gl.RENDERBUFFER_SAMPLES are different among attached renderbuffers, or are non-zero if the attached images are a mix of renderbuffers and textures.\"\n );\n }\n }\n}\n","import { IPlatformTexture2D, Logger, Texture2D, TextureFormat, TextureUsage } from \"@galacean/engine-core\";\nimport { GLTexture } from \"./GLTexture\";\nimport { WebGLGraphicDevice } from \"./WebGLGraphicDevice\";\n\n/**\n * Texture 2d in WebGL platform.\n */\nexport class GLTexture2D extends GLTexture implements IPlatformTexture2D {\n /** Backward compatible with WebGL1.0. */\n private _compressedMipFilled: number = 0;\n\n constructor(rhi: WebGLGraphicDevice, texture2D: Texture2D) {\n super(rhi, texture2D, rhi.gl.TEXTURE_2D);\n\n /** @ts-ignore */\n const { format, _mipmap, width, height } = texture2D;\n const isWebGL2 = this._isWebGL2;\n\n /** @ts-ignore */\n if (!GLTexture._supportTextureFormat(format, rhi)) {\n throw new Error(`Texture format is not supported:${TextureFormat[format]}`);\n }\n\n if (_mipmap && !isWebGL2 && (!GLTexture._isPowerOf2(width) || !GLTexture._isPowerOf2(height))) {\n Logger.warn(\n \"non-power-2 texture is not supported for mipmap in WebGL1,and has automatically downgraded to non-mipmap\"\n );\n\n /** @ts-ignore */\n texture2D._mipmap = false;\n /** @ts-ignore */\n texture2D._mipmapCount = texture2D._getMipmapCount();\n }\n\n this._formatDetail = GLTexture._getFormatDetail(format, this._gl, isWebGL2);\n (this._formatDetail.isCompressed && !isWebGL2) || this._init(false);\n }\n\n /**\n * {@inheritDoc IPlatformTexture2D.setPixelBuffer}\n */\n setPixelBuffer(\n colorBuffer: ArrayBufferView,\n mipLevel: number = 0,\n x: number,\n y: number,\n width?: number,\n height?: number\n ): void {\n const gl = this._gl;\n const isWebGL2: boolean = this._isWebGL2;\n const { internalFormat, baseFormat, dataType, isCompressed } = this._formatDetail;\n const mipWidth = Math.max(1, this._texture.width >> mipLevel);\n const mipHeight = Math.max(1, this._texture.height >> mipLevel);\n\n width = width || mipWidth - x;\n height = height || mipHeight - y;\n\n this._bind();\n\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 0);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 0);\n\n if (isCompressed) {\n const mipBit = 1 << mipLevel;\n if (isWebGL2 || this._compressedMipFilled & mipBit) {\n gl.compressedTexSubImage2D(this._target, mipLevel, x, y, width, height, internalFormat, colorBuffer);\n } else {\n gl.compressedTexImage2D(this._target, mipLevel, internalFormat, width, height, 0, colorBuffer);\n this._compressedMipFilled |= mipBit;\n }\n } else {\n gl.texSubImage2D(this._target, mipLevel, x, y, width, height, baseFormat, dataType, colorBuffer);\n }\n }\n\n /**\n * {@inheritDoc IPlatformTexture2D.setImageSource}\n */\n setImageSource(\n imageSource: TexImageSource,\n mipLevel: number,\n flipY: boolean,\n premultiplyAlpha: boolean,\n x: number,\n y: number\n ): void {\n const gl = this._gl;\n const { internalFormat, baseFormat, dataType } = this._formatDetail;\n\n this._bind();\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, +flipY);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, +premultiplyAlpha);\n\n if (this._texture.usage === TextureUsage.Dynamic) {\n gl.texImage2D(this._target, mipLevel, internalFormat, baseFormat, dataType, imageSource);\n } else {\n gl.texSubImage2D(this._target, mipLevel, x || 0, y || 0, baseFormat, dataType, imageSource);\n }\n }\n\n /**\n * {@inheritDoc IPlatformTexture2D.getPixelBuffer }\n */\n getPixelBuffer(x: number, y: number, width: number, height: number, mipLevel: number, out: ArrayBufferView): void {\n if (this._formatDetail.isCompressed) {\n throw new Error(\"Unable to read compressed texture\");\n }\n super._getPixelBuffer(null, x, y, width, height, mipLevel, out);\n }\n}\n","import { IPlatformTexture2DArray, Texture2DArray, TextureFormat } from \"@galacean/engine-core\";\nimport { GLTexture } from \"./GLTexture\";\nimport { WebGLGraphicDevice } from \"./WebGLGraphicDevice\";\n\n/**\n * Texture 2D array in WebGL platform.\n */\nexport class GLTexture2DArray extends GLTexture implements IPlatformTexture2DArray {\n constructor(rhi: WebGLGraphicDevice, texture2DArray: Texture2DArray) {\n super(rhi, texture2DArray, (<WebGL2RenderingContext>rhi.gl).TEXTURE_2D_ARRAY);\n\n const { format, width, height, length, mipmapCount } = texture2DArray;\n\n if (!this._isWebGL2) {\n throw new Error(`Texture2D Array is not supported in WebGL1.0`);\n }\n\n /** @ts-ignore */\n if (!GLTexture._supportTextureFormat(format, rhi)) {\n throw new Error(`Texture format is not supported:${TextureFormat[format]}`);\n }\n\n this._bind();\n this._formatDetail = GLTexture._getFormatDetail(format, this._gl, true);\n this._gl.texStorage3D(this._target, mipmapCount, this._formatDetail.internalFormat, width, height, length);\n }\n\n /**\n * {@inheritDoc IPlatformTexture2DArray.setPixelBuffer}\n */\n setPixelBuffer(\n offsetIndex: number,\n colorBuffer: ArrayBufferView,\n mipLevel: number,\n x: number,\n y: number,\n width?: number,\n height?: number,\n length?: number\n ): void {\n const { _target: target, _gl: gl } = this;\n const { internalFormat, baseFormat, dataType, isCompressed } = this._formatDetail;\n\n width = width || Math.max(1, this._texture.width >> mipLevel) - x;\n height = height || Math.max(1, this._texture.height >> mipLevel) - y;\n length = length || (<Texture2DArray>this._texture).length;\n\n this._bind();\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 0);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 0);\n\n if (isCompressed) {\n gl.compressedTexSubImage3D(\n target,\n mipLevel,\n x,\n y,\n offsetIndex,\n width,\n height,\n length,\n internalFormat,\n colorBuffer\n );\n } else {\n gl.texSubImage3D(target, mipLevel, x, y, offsetIndex, width, height, length, baseFormat, dataType, colorBuffer);\n }\n }\n\n /**\n * {@inheritDoc IPlatformTexture2DArray.setImageSource}\n */\n setImageSource(\n elementIndex: number,\n imageSource: TexImageSource,\n mipLevel: number,\n flipY: boolean,\n premultiplyAlpha: boolean,\n x: number,\n y: number\n ): void {\n const gl = this._gl;\n const { baseFormat, dataType } = this._formatDetail;\n\n this._bind();\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, +flipY);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, +premultiplyAlpha);\n gl.texSubImage3D(\n this._target,\n mipLevel,\n x,\n y,\n elementIndex,\n (<Exclude<TexImageSource, VideoFrame>>imageSource).width ?? (<VideoFrame>imageSource).codedWidth,\n (<Exclude<TexImageSource, VideoFrame>>imageSource).height ?? (<VideoFrame>imageSource).codedHeight,\n 1,\n baseFormat,\n dataType,\n imageSource\n );\n }\n\n /**\n * {@inheritDoc IPlatformTexture2DArray.getPixelBuffer}\n */\n getPixelBuffer(\n elementIndex: number,\n x: number,\n y: number,\n width: number,\n height: number,\n mipLevel: number,\n out: ArrayBufferView\n ): void {\n const { _gl: gl, _formatDetail: formatDetail } = this;\n\n if (formatDetail.isCompressed) {\n throw new Error(\"Unable to read compressed texture\");\n }\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, this._getReadFrameBuffer());\n gl.framebufferTextureLayer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, this._glTexture, mipLevel, elementIndex);\n gl.readPixels(x, y, width, height, formatDetail.baseFormat, formatDetail.dataType, out);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n }\n}\n","import { IPlatformTextureCube, Logger, TextureCube, TextureCubeFace, TextureFormat } from \"@galacean/engine-core\";\nimport { GLTexture } from \"./GLTexture\";\nimport { WebGLGraphicDevice } from \"./WebGLGraphicDevice\";\n\n/**\n * Cube texture in WebGL platform.\n */\nexport class GLTextureCube extends GLTexture implements IPlatformTextureCube {\n /** Backward compatible with WebGL1.0. */\n private _compressedFaceFilled: number[] = [0, 0, 0, 0, 0, 0];\n\n constructor(rhi: WebGLGraphicDevice, textureCube: TextureCube) {\n super(rhi, textureCube, rhi.gl.TEXTURE_CUBE_MAP);\n\n /** @ts-ignore */\n const { format, _mipmap, width: size } = textureCube;\n const isWebGL2 = this._isWebGL2;\n\n /** @ts-ignore */\n if (!GLTexture._supportTextureFormat(format, rhi)) {\n throw new Error(`Texture format is not supported:${TextureFormat[format]}`);\n }\n\n if (_mipmap && !isWebGL2 && !GLTexture._isPowerOf2(size)) {\n Logger.warn(\n \"non-power-2 texture is not supported for mipmap in WebGL1,and has automatically downgraded to non-mipmap\"\n );\n\n /** @ts-ignore */\n textureCube._mipmap = false;\n /** @ts-ignore */\n textureCube._mipmapCount = textureCube._getMipmapCount();\n }\n\n this._formatDetail = GLTexture._getFormatDetail(format, this._gl, isWebGL2);\n (this._formatDetail.isCompressed && !isWebGL2) || this._init(true);\n }\n\n /**\n * {@inheritDoc IPlatformTextureCube.setPixelBuffer}\n */\n setPixelBuffer(\n face: TextureCubeFace,\n colorBuffer: ArrayBufferView,\n mipLevel: number,\n x: number,\n y: number,\n width?: number,\n height?: number\n ): void {\n const gl = this._gl;\n const isWebGL2 = this._isWebGL2;\n const { internalFormat, baseFormat, dataType, isCompressed } = this._formatDetail;\n const mipSize = Math.max(1, this._texture.width >> mipLevel);\n\n width = width || mipSize - x;\n height = height || mipSize - y;\n\n this._bind();\n\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 0);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 0);\n\n if (isCompressed) {\n const mipBit = 1 << mipLevel;\n if (isWebGL2 || this._compressedFaceFilled[face] & mipBit) {\n gl.compressedTexSubImage2D(\n gl.TEXTURE_CUBE_MAP_POSITIVE_X + face,\n mipLevel,\n x,\n y,\n width,\n height,\n internalFormat,\n colorBuffer\n );\n } else {\n gl.compressedTexImage2D(\n gl.TEXTURE_CUBE_MAP_POSITIVE_X + face,\n mipLevel,\n internalFormat,\n width,\n height,\n 0,\n colorBuffer\n );\n this._compressedFaceFilled[face] |= mipBit;\n }\n } else {\n gl.texSubImage2D(\n gl.TEXTURE_CUBE_MAP_POSITIVE_X + face,\n mipLevel,\n x,\n y,\n width,\n height,\n baseFormat,\n dataType,\n colorBuffer\n );\n }\n }\n\n /**\n * {@inheritDoc IPlatformTextureCube.setImageSource}\n */\n setImageSource(\n face: TextureCubeFace,\n imageSource: TexImageSource,\n mipLevel: number,\n flipY: boolean,\n premultiplyAlpha: boolean,\n x: number,\n y: number\n ): void {\n const gl = this._gl;\n const { baseFormat, dataType } = this._formatDetail;\n\n this._bind();\n\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, +flipY);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, +premultiplyAlpha);\n gl.texSubImage2D(\n gl.TEXTURE_CUBE_MAP_POSITIVE_X + face,\n mipLevel,\n x || 0,\n y || 0,\n baseFormat,\n dataType,\n imageSource\n );\n }\n\n /**\n * {@inheritDoc IPlatformTextureCube.getPixelBuffer}\n */\n getPixelBuffer(\n face: TextureCubeFace,\n x: number,\n y: number,\n width: number,\n height: number,\n mipLevel: number,\n out: ArrayBufferView\n ): void {\n if (this._formatDetail.isCompressed) {\n throw new Error(\"Unable to read compressed texture\");\n }\n super._getPixelBuffer(face, x, y, width, height, mipLevel, out);\n }\n}\n","import {\n BufferBindFlag,\n BufferUsage,\n CameraClearFlags,\n Canvas,\n ColorWriteMask,\n Engine,\n GLCapabilityType,\n IPlatformBuffer,\n IPlatformRenderTarget,\n IPlatformTexture2D,\n IPlatformTextureCube,\n Logger,\n Mesh,\n Platform,\n RenderTarget,\n SubMesh,\n SystemInfo,\n Texture2D,\n Texture2DArray,\n TextureCube,\n TextureCubeFace\n} from \"@galacean/engine-core\";\nimport { IHardwareRenderer, IPlatformPrimitive } from \"@galacean/engine-design\";\nimport { Color, Vector4 } from \"@galacean/engine-math\";\nimport { GLBuffer } from \"./GLBuffer\";\nimport { GLCapability } from \"./GLCapability\";\nimport { GLExtensions } from \"./GLExtensions\";\nimport { GLPrimitive } from \"./GLPrimitive\";\nimport { GLRenderStates } from \"./GLRenderStates\";\nimport { GLRenderTarget } from \"./GLRenderTarget\";\nimport { GLTexture } from \"./GLTexture\";\nimport { GLTexture2D } from \"./GLTexture2D\";\nimport { GLTexture2DArray } from \"./GLTexture2DArray\";\nimport { GLTextureCube } from \"./GLTextureCube\";\nimport { WebCanvas } from \"./WebCanvas\";\nimport { WebGLExtension } from \"./type\";\n\n/**\n * WebGL mode.\n */\nexport enum WebGLMode {\n /** Auto, use WebGL2.0 if support, or will fallback to WebGL1.0. */\n Auto = 0,\n /** WebGL2.0. */\n WebGL2 = 1,\n /** WebGL1.0, */\n WebGL1 = 2\n}\n\n/**\n * WebGL graphic device options.\n */\nexport interface WebGLGraphicDeviceOptions extends WebGLContextAttributes {\n /** WebGL mode.*/\n webGLMode?: WebGLMode;\n\n /**\n * @internal\n * iOS 15 webgl implement has bug, maybe should force call flush command buffer, for example iPhone13(iOS 15.4.1).\n */\n _forceFlush?: boolean;\n\n /**\n * @internal\n * Max allow skin uniform vectors count, default is 256\n *\n * @remarks large count maybe cause performance issue.\n */\n _maxAllowSkinUniformVectorCount?: number;\n}\n\n/**\n * WebGL graphic device, including WebGL1.0 and WebGL2.0.\n */\nexport class WebGLGraphicDevice implements IHardwareRenderer {\n /** @internal */\n _readFrameBuffer: WebGLFramebuffer = null;\n /** @internal */\n _mainFrameBuffer: WebGLFramebuffer = null;\n /** @internal */\n _mainFrameWidth: number = 0;\n /** @internal */\n _mainFrameHeight: number = 0;\n /** @internal */\n _enableGlobalDepthBias: boolean = false;\n /** @internal */\n _currentBindShaderProgram: any;\n\n private _options: WebGLGraphicDeviceOptions;\n private _gl: (WebGLRenderingContext & WebGLExtension) | WebGL2RenderingContext;\n private _renderStates;\n private _extensions;\n private _capability: GLCapability;\n private _isWebGL2: boolean;\n private _renderer: string;\n private _webCanvas: HTMLCanvasElement | OffscreenCanvas;\n\n private _activeTextureID: number;\n private _activeTextures: GLTexture[] = new Array(32);\n\n private _lastViewport: Vector4 = new Vector4(null, null, null, null);\n private _lastScissor: Vector4 = new Vector4(null, null, null, null);\n private _lastClearColor: Color = new Color(null, null, null, null);\n private _scissorEnable: boolean = false;\n\n private _onDeviceLost: () => void;\n private _onDeviceRestored: () => void;\n\n get isWebGL2(): boolean {\n return this._isWebGL2;\n }\n\n get renderer(): string {\n return this._renderer;\n }\n\n /**\n * GL Context\n * @member {WebGLRenderingContext}\n */\n get gl() {\n return this._gl;\n }\n\n get renderStates(): GLRenderStates {\n return this._renderStates;\n }\n\n get capability(): GLCapability {\n return this._capability;\n }\n\n get canIUseMoreJoints() {\n return this.capability.canIUseMoreJoints;\n }\n\n constructor(initializeOptions: WebGLGraphicDeviceOptions = {}) {\n const options = {\n webGLMode: WebGLMode.Auto,\n stencil: true,\n _forceFlush: false,\n _maxAllowSkinUniformVectorCount: 256,\n ...initializeOptions\n };\n if (SystemInfo.platform === Platform.IPhone || SystemInfo.platform === Platform.IPad) {\n const version = SystemInfo.operatingSystem.match(/(\\d+).?(\\d+)?.?(\\d+)?/);\n if (version) {\n const majorVersion = parseInt(version[1]);\n const minorVersion = parseInt(version[2]);\n if (majorVersion === 15 && minorVersion >= 0 && minorVersion <= 4) {\n options._forceFlush = true;\n }\n }\n }\n this._options = options;\n\n this._onWebGLContextLost = this._onWebGLContextLost.bind(this);\n this._onWebGLContextRestored = this._onWebGLContextRestored.bind(this);\n }\n\n init(canvas: Canvas, onDeviceLost: () => void, onDeviceRestored: () => void): void {\n const options = this._options;\n const webCanvas = (canvas as WebCanvas)._webCanvas;\n const webGLMode = options.webGLMode;\n\n this._onDeviceLost = onDeviceLost;\n this._onDeviceRestored = onDeviceRestored;\n webCanvas.addEventListener(\"webglcontextlost\", this._onWebGLContextLost, false);\n webCanvas.addEventListener(\"webglcontextrestored\", this._onWebGLContextRestored, false);\n webCanvas.addEventListener(\"webglcontextcreationerror\", this._onContextCreationError, false);\n\n this._webCanvas = webCanvas;\n\n let gl: (WebGLRenderingContext & WebGLExtension) | WebGL2RenderingContext;\n if (webGLMode == WebGLMode.Auto || webGLMode == WebGLMode.WebGL2) {\n gl = webCanvas.getContext(\"webgl2\", options);\n if (!gl && (typeof OffscreenCanvas === \"undefined\" || !(webCanvas instanceof OffscreenCanvas))) {\n gl = <WebGL2RenderingContext>webCanvas.getContext(\"experimental-webgl2\", options);\n }\n this._isWebGL2 = true;\n\n // Prevent weird browsers to lie (such as safari!)\n if (gl && !(<WebGL2RenderingContext>gl).deleteQuery) {\n this._isWebGL2 = false;\n }\n }\n\n if (!gl) {\n if (webGLMode == WebGLMode.Auto || webGLMode == WebGLMode.WebGL1) {\n gl = <WebGLRenderingContext & WebGLExtension>webCanvas.getContext(\"webgl\", options);\n if (!gl && (typeof OffscreenCanvas === \"undefined\" || !(webCanvas instanceof OffscreenCanvas))) {\n gl = <WebGLRenderingContext & WebGLExtension>webCanvas.getContext(\"experimental-webgl\", options);\n }\n this._isWebGL2 = false;\n }\n }\n\n if (!gl) {\n throw new Error(\"Get GL Context FAILED.\");\n }\n\n this._gl = gl;\n this._initGLState(gl);\n }\n\n createPlatformPrimitive(primitive: Mesh): IPlatformPrimitive {\n return new GLPrimitive(this, primitive);\n }\n\n createPlatformTexture2D(texture2D: Texture2D): IPlatformTexture2D {\n return new GLTexture2D(this, texture2D);\n }\n\n createPlatformTexture2DArray(texture2D: Texture2DArray): GLTexture2DArray {\n return new GLTexture2DArray(this, texture2D);\n }\n\n createPlatformTextureCube(textureCube: TextureCube): IPlatformTextureCube {\n return new GLTextureCube(this, textureCube);\n }\n\n createPlatformRenderTarget(target: RenderTarget): IPlatformRenderTarget {\n return new GLRenderTarget(this, target);\n }\n\n createPlatformBuffer(\n type: BufferBindFlag,\n byteLength: number,\n bufferUsage: BufferUsage = BufferUsage.Static,\n data?: ArrayBuffer | ArrayBufferView\n ): IPlatformBuffer {\n return new GLBuffer(this, type, byteLength, bufferUsage, data);\n }\n\n requireExtension(ext) {\n return this._extensions.requireExtension(ext);\n }\n\n canIUse(capabilityType: GLCapabilityType) {\n return this.capability.canIUse(capabilityType);\n }\n\n canIUseCompressedTextureInternalFormat(type: number) {\n return this.capability.canIUseCompressedTextureInternalFormat(type);\n }\n\n viewport(x: number, y: number, width: number, height: number): void {\n const { _gl: gl, _lastViewport: lastViewport } = this;\n if (x !== lastViewport.x || y !== lastViewport.y || width !== lastViewport.z || height !== lastViewport.w) {\n gl.viewport(x, y, width, height);\n lastViewport.set(x, y, width, height);\n }\n }\n\n scissor(x: number, y: number, width: number, height: number): void {\n const { _gl: gl, _lastScissor: lastScissor } = this;\n if (x !== lastScissor.x || y !== lastScissor.y || width !== lastScissor.z || height !== lastScissor.w) {\n const { _webCanvas: webCanvas } = this;\n if (x === 0 && y === 0 && width === webCanvas.width && height === webCanvas.height) {\n if (this._scissorEnable) {\n gl.disable(gl.SCISSOR_TEST);\n this._scissorEnable = false;\n }\n } else {\n if (!this._scissorEnable) {\n gl.enable(gl.SCISSOR_TEST);\n this._scissorEnable = true;\n }\n gl.scissor(x, y, width, height);\n }\n lastScissor.set(x, y, width, height);\n }\n }\n\n colorMask(r: boolean, g: boolean, b: boolean, a: boolean): void {\n this._gl.colorMask(r, g, b, a);\n }\n\n clearRenderTarget(engine: Engine, clearFlags: CameraClearFlags, clearColor: Color) {\n const gl = this._gl;\n\n const {\n blendState: { targetBlendState },\n depthState,\n stencilState\n // @ts-ignore\n } = engine._lastRenderState;\n let clearFlag = 0;\n if (clearFlags & CameraClearFlags.Color) {\n clearFlag |= gl.COLOR_BUFFER_BIT;\n\n const lc = this._lastClearColor;\n const { r, g, b, a } = clearColor;\n if (clearColor && (r !== lc.r || g !== lc.g || b !== lc.b || a !== lc.a)) {\n gl.clearColor(r, g, b, a);\n lc.set(r, g, b, a);\n }\n\n if (targetBlendState.colorWriteMask !== ColorWriteMask.All) {\n gl.colorMask(true, true, true, true);\n targetBlendState.colorWriteMask = ColorWriteMask.All;\n }\n }\n if (clearFlags & CameraClearFlags.Depth) {\n clearFlag |= gl.DEPTH_BUFFER_BIT;\n if (depthState.writeEnabled !== true) {\n gl.depthMask(true);\n depthState.writeEnabled = true;\n }\n }\n if (clearFlags & CameraClearFlags.Stencil) {\n clearFlag |= gl.STENCIL_BUFFER_BIT;\n if (stencilState.writeMask !== 0xff) {\n gl.stencilMask(0xff);\n stencilState.writeMask = 0xff;\n }\n }\n gl.clear(clearFlag);\n }\n\n drawPrimitive(primitive: GLPrimitive, subPrimitive: SubMesh, shaderProgram: any) {\n // todo: VAO not support morph animation\n if (primitive) {\n primitive.draw(shaderProgram, subPrimitive);\n } else {\n Logger.error(\"draw primitive failed.\");\n }\n }\n\n getMainFrameBufferWidth(): number {\n return this._mainFrameWidth || this._gl.drawingBufferWidth;\n }\n\n getMainFrameBufferHeight(): number {\n return this._mainFrameHeight || this._gl.drawingBufferHeight;\n }\n\n activeRenderTarget(\n renderTarget: RenderTarget,\n viewport: Vector4,\n isFlipProjection: boolean,\n mipLevel: number,\n faceIndex?: TextureCubeFace\n ) {\n let bufferWidth: number, bufferHeight: number;\n if (renderTarget) {\n /** @ts-ignore */\n renderTarget._isContentLost = false;\n\n /** @ts-ignore */\n const platformRenderTarget = renderTarget._platformRenderTarget as GLRenderTarget;\n platformRenderTarget.activeRenderTarget(mipLevel, faceIndex);\n\n bufferWidth = renderTarget.width >> mipLevel;\n bufferHeight = renderTarget.height >> mipLevel;\n } else {\n const gl = this._gl;\n gl.bindFramebuffer(gl.FRAMEBUFFER, this._mainFrameBuffer);\n bufferWidth = this.getMainFrameBufferWidth();\n bufferHeight = this.getMainFrameBufferHeight();\n }\n\n const width = bufferWidth * viewport.z;\n const height = bufferHeight * viewport.w;\n const x = viewport.x * bufferWidth;\n const y = isFlipProjection ? viewport.y * bufferHeight : bufferHeight - viewport.y * bufferHeight - height;\n this.viewport(x, y, width, height);\n this.scissor(x, y, width, height);\n }\n\n activeTexture(textureID: number): void {\n if (this._activeTextureID !== textureID) {\n this._gl.activeTexture(textureID);\n this._activeTextureID = textureID;\n }\n }\n\n bindTexture(texture: GLTexture): void {\n const index = this._activeTextureID - this._gl.TEXTURE0;\n if (this._activeTextures[index] !== texture) {\n this._gl.bindTexture(texture._target, texture._glTexture);\n this._activeTextures[index] = texture;\n }\n }\n\n setGlobalDepthBias(bias: number, slopeBias: number): void {\n const gl = this._gl;\n const enable = bias !== 0 || slopeBias !== 0;\n if (enable) {\n gl.enable(gl.POLYGON_OFFSET_FILL);\n gl.polygonOffset(slopeBias, bias);\n } else {\n gl.disable(gl.POLYGON_OFFSET_FILL);\n }\n this._enableGlobalDepthBias = enable;\n }\n\n flush(): void {\n this._gl.flush();\n }\n\n forceLoseDevice(): void {\n const extension = this.requireExtension(GLCapabilityType.WEBGL_lose_context);\n extension.loseContext();\n }\n\n forceRestoreDevice(): void {\n const extension = this.requireExtension(GLCapabilityType.WEBGL_lose_context);\n extension.restoreContext();\n }\n\n resetState(): void {\n this._readFrameBuffer = null;\n this._enableGlobalDepthBias = false;\n this._currentBindShaderProgram = null;\n\n const activeTextures = this._activeTextures;\n for (let i = 0, n = activeTextures.length; i < n; i++) {\n activeTextures[i] = null;\n }\n\n this._lastViewport.set(null, null, null, null);\n this._lastScissor.set(null, null, null, null);\n this._lastClearColor.set(null, null, null, null);\n this._scissorEnable = false;\n\n this._initGLState(this._gl);\n }\n\n protected _initGLState(gl: (WebGLRenderingContext & WebGLExtension) | WebGL2RenderingContext): void {\n this._activeTextureID = gl.TEXTURE0;\n this._renderStates = new GLRenderStates(gl);\n this._extensions = new GLExtensions(this);\n this._capability = new GLCapability(this);\n // Make sure the active texture in gl context is on default, because gl context may be used in other webgl renderer.\n gl.activeTexture(gl.TEXTURE0);\n\n const debugRenderInfo = gl.getExtension(\"WEBGL_debug_renderer_info\");\n if (debugRenderInfo != null) {\n this._renderer = gl.getParameter(debugRenderInfo.UNMASKED_RENDERER_WEBGL);\n }\n }\n\n destroy(): void {\n const webCanvas = this._webCanvas;\n webCanvas.removeEventListener(\"webglcontextcreationerror\", this._onContextCreationError, false);\n webCanvas.removeEventListener(\"webglcontextlost\", this._onWebGLContextLost, false);\n webCanvas.removeEventListener(\"webglcontextrestored\", this._onWebGLContextRestored, false);\n }\n\n private _onContextCreationError(event: WebGLContextEvent) {\n console.error(\"WebGLRenderer: WebGL context could not be created. Reason: \", event.statusMessage);\n }\n\n private _onWebGLContextLost(event: WebGLContextEvent) {\n event.preventDefault();\n this._onDeviceLost();\n }\n\n private _onWebGLContextRestored(event: WebGLContextEvent) {\n this._onDeviceRestored();\n }\n}\n"],"names":["GLCompressedTextureInternalFormat","RGBA_ASTC_4X4_KHR","RGBA_ASTC_5X4_KHR","RGBA_ASTC_5X5_KHR","RGBA_ASTC_6X5_KHR","RGBA_ASTC_6X6_KHR","RGBA_ASTC_8X5_KHR","RGBA_ASTC_8X6_KHR","RGBA_ASTC_8X8_KHR","RGBA_ASTC_10X5_KHR","RGBA_ASTC_10X6_KHR","RGBA_ASTC_10X8_KHR","RGBA_ASTC_10X10_KHR","RGBA_ASTC_12X10_KHR","RGBA_ASTC_12X12_KHR","SRGB8_ALPHA8_ASTC_4X4_KHR","SRGB8_ALPHA8_ASTC_5X4_KHR","SRGB8_ALPHA8_ASTC_5X5_KHR","SRGB8_ALPHA8_ASTC_6X5_KHR","SRGB8_ALPHA8_ASTC_6X6_KHR","SRGB8_ALPHA8_ASTC_8X5_KHR","SRGB8_ALPHA8_ASTC_8X6_KHR","SRGB8_ALPHA8_ASTC_8X8_KHR","SRGB8_ALPHA8_ASTC_10X5_KHR","SRGB8_ALPHA8_ASTC_10X6_KHR","SRGB8_ALPHA8_ASTC_10X8_KHR","SRGB8_ALPHA8_ASTC_10X10_KHR","SRGB8_ALPHA8_ASTC_12X10_KHR","SRGB8_ALPHA8_ASTC_12X12_KHR","RGB_ETC1_WEBGL","R11_EAC","SIGNED_R11_EAC","RG11_EAC","SIGNED_RG11_EAC","RGB8_ETC2","SRGB8_ETC2","RGB8_PUNCHTHROUGH_ALPHA1_ETC2","SRGB8_PUNCHTHROUGH_ALPHA1_ETC2","RGBA8_ETC2_EAC","SRGB8_ALPHA8_ETC2_EAC","RGB_PVRTC_4BPPV1_IMG","RGB_PVRTC_2BPPV1_IMG","RGBA_PVRTC_4BPPV1_IMG","RGBA_PVRTC_2BPPV1_IMG","RGB_S3TC_DXT1_EXT","RGBA_S3TC_DXT1_EXT","RGBA_S3TC_DXT3_EXT","RGBA_S3TC_DXT5_EXT","RGBA_BPTC_UNORM_EXT","SRGB_ALPHA_BPTC_UNORM_EXT","RGB_BPTC_SIGNED_FLOAT_EXT","RGB_BPTC_UNSIGNED_FLOAT_EXT","WebCanvas","webCanvas","_scale","Vector2","width","height","_webCanvas","resizeByClientSize","pixelRatio","window","devicePixelRatio","OffscreenCanvas","exportWidth","clientWidth","exportHeight","clientHeight","setScale","x","y","set","scale","_onWidthChanged","value","_onHeightChange","style","transformOrigin","transform","Canvas","WebGLEngine","create","configuration","canvas","document","getElementById","webGLGraphicDevice","WebGLGraphicDevice","graphicDeviceOptions","engine","promise","_initialize","then","sceneManager","addScene","Scene","_canvas","Engine","GLBuffer","rhi","type","byteLength","bufferUsage","data","BufferUsage","Static","gl","glBuffer","createBuffer","glBufferUsage","_getGLBufferUsage","glBindTarget","BufferBindFlag","VertexBuffer","ARRAY_BUFFER","ELEMENT_ARRAY_BUFFER","_gl","_glBuffer","_glBufferUsage","_glBindTarget","_isWebGL2","isWebGL2","bind","bufferData","bindBuffer","setData","bufferByteOffset","dataOffset","dataLength","options","SetDataOptions","Discard","byteSize","BYTES_PER_ELEMENT","dataByteLength","isArrayBufferView","byteOffset","undefined","bufferSubData","subData","Uint8Array","buffer","getData","getBufferSubData","destroy","deleteBuffer","STATIC_DRAW","Dynamic","DYNAMIC_DRAW","Stream","STREAM_DRAW","GLCapability","_rhi","capabilityList","Map","_init","_compatibleAllInterface","canIUse","capabilityType","get","canIUseCompressedTextureInternalFormat","internalType","GLCapabilityType","astc","etc1","etc","pvrtc","s3tc","bptc","cap","requireExtension","shaderVertexID","standardDerivatives","shaderTextureLod","elementIndexUint","depthTexture","vertexArrayObject","instancedArrays","multipleSample","drawBuffers","blendMinMax","astc_webkit","etc_webkit","etc1_webkit","pvrtc_webkit","s3tc_webkit","textureFloat","textureHalfFloat","textureFloatLinear","textureHalfFloatLinear","WEBGL_colorBufferFloat","colorBufferFloat","colorBufferHalfFloat","textureFilterAnisotropic","fragDepth","_compatibleInterface","flatItem","ext","glKey","extensionVal","extensionKey","MIN","MAX","UNSIGNED_INT_24_8","createVertexArray","deleteVertexArray","isVertexArray","bindVertexArray","drawArraysInstanced","drawElementsInstanced","vertexAttribDivisor","MAX_DRAW_BUFFERS","items","maxDrawBuffers","i","HALF_FLOAT","RGBA16F","RGBA32F","TEXTURE_MAX_ANISOTROPY_EXT","maxTextureSize","renderStates","getParameter","MAX_TEXTURE_SIZE","canUseFloatTextureBlendShape","MAX_VERTEX_TEXTURE_IMAGE_UNITS","canIUseMoreJoints","_maxDrawBuffers","maxAnisoLevel","_maxAnisoLevel","MAX_TEXTURE_MAX_ANISOTROPY_EXT","maxAntiAliasing","_maxAntiAliasing","canMSAA","MAX_SAMPLES","GLExtensions","_requireResult","getExtension","GLPrimitive","primitive","_attribLocArray","_vaoMap","_primitive","_canUseInstancedArrays","_isSupportVAO","draw","shaderProgram","subMesh","useVao","enableVAO","_bufferStructChanged","_clearVAO","has","id","_registerVAO","vao","_bindBufferAndAttrib","indexBufferBinding","instanceCount","_glIndexType","_glIndexByteCount","topology","start","count","drawElements","_platformBuffer","drawArrays","Logger","error","_disableAttrib","vertexBufferBindings","length","attributeLocation","attributes","_vertexElementMap","vbo","lastBoundVbo","name","loc","element","bindingIndex","stride","enableVertexAttribArray","elementInfo","_formatMetaInfo","vertexAttribPointer","size","normalized","offset","instanceStepRate","push","warn","l","disableVertexAttribArray","forEach","clear","GLRenderStates","_parameters","MAX_COMBINED_TEXTURE_IMAGE_UNITS","MAX_VERTEX_UNIFORM_VECTORS","MAX_VERTEX_ATTRIBS","blendFuncSeparate","ONE","ZERO","blendEquationSeparate","FUNC_ADD","colorMask","blendColor","disable","SAMPLE_ALPHA_TO_COVERAGE","enable","DEPTH_TEST","depthFunc","LESS","depthMask","STENCIL_TEST","stencilFuncSeparate","FRONT","ALWAYS","BACK","stencilOpSeparate","KEEP","stencilMask","CULL_FACE","cullFace","POLYGON_OFFSET_FILL","polygonOffset","pname","GLTexture","texture","target","_texture","_target","_glTexture","createTexture","deleteTexture","_formatDetail","setUseDepthCompareMode","texParameteri","TEXTURE_COMPARE_MODE","COMPARE_REF_TO_TEXTURE","NONE","generateMipmaps","_bind","generateMipmap","bindTexture","isCube","internalFormat","baseFormat","dataType","mipmapCount","usage","_isDepthTexture","LUMINANCE_ALPHA","ALPHA","TextureUsage","texStorage2D","texImage2D","mipWidth","Math","max","mipHeight","faceIndex","TEXTURE_CUBE_MAP_POSITIVE_X","_getPixelBuffer","face","mipLevel","out","bindFramebuffer","FRAMEBUFFER","_getReadFrameBuffer","framebufferTexture2D","COLOR_ATTACHMENT0","TEXTURE_2D","readPixels","_setWrapMode","TextureWrapMode","Clamp","_isPowerOf2","CLAMP_TO_EDGE","Repeat","REPEAT","Mirror","MIRRORED_REPEAT","frameBuffer","_readFrameBuffer","createFramebuffer","v","_getFormatDetail","format","TextureFormat","R8G8B8","RGB8","RGB","UNSIGNED_BYTE","isCompressed","R8G8B8A8","RGBA8","RGBA","R4G4B4A4","RGBA4","UNSIGNED_SHORT_4_4_4_4","R5G5B5A1","RGB5_A1","UNSIGNED_SHORT_5_5_5_1","R5G6B5","RGB565","UNSIGNED_SHORT_5_6_5","Alpha8","LuminanceAlpha","R16G16B16A16","R32G32B32A32","FLOAT","R32G32B32A32_UInt","RGBA32UI","RGBA_INTEGER","UNSIGNED_INT","BC1","BC3","BC7","ETC1_RGB","ETC2_RGB","ETC2_RGBA5","ETC2_RGBA8","PVRTC_RGB2","PVRTC_RGBA2","PVRTC_RGB4","PVRTC_RGBA4","ASTC_4x4","ASTC_5x5","ASTC_6x6","ASTC_8x8","ASTC_10x10","ASTC_12x12","Depth","DEPTH_COMPONENT32F","DEPTH_COMPONENT","UNSIGNED_SHORT","attachment","DEPTH_ATTACHMENT","DepthStencil","DEPTH32F_STENCIL8","DEPTH_STENCIL","FLOAT_32_UNSIGNED_INT_24_8_REV","DEPTH_STENCIL_ATTACHMENT","Depth16","DEPTH_COMPONENT16","Depth24Stencil8","DEPTH24_STENCIL8","Depth24","DEPTH_COMPONENT24","Depth32","Depth32Stencil8","Error","_getRenderBufferDepthFormatDetail","Stencil","STENCIL_INDEX8","STENCIL_ATTACHMENT","_supportTextureFormat","_supportRenderBufferColorFormat","isSupported","_supportRenderBufferDepthFormat","wrapModeU","TEXTURE_WRAP_S","wrapModeV","TEXTURE_WRAP_T","filterMode","_mipmap","TextureFilterMode","Point","TEXTURE_MAG_FILTER","NEAREST","TEXTURE_MIN_FILTER","NEAREST_MIPMAP_NEAREST","Bilinear","LINEAR","LINEAR_MIPMAP_NEAREST","Trilinear","LINEAR_MIPMAP_LINEAR","anisoLevel","texParameterf","depthCompareFunction","TextureDepthCompareFunction","Never","TEXTURE_COMPARE_FUNC","NEVER","Less","Equal","EQUAL","LessEqual","LEQUAL","Greater","GREATER","NotEqual","NOTEQUAL","GreaterEqual","GEQUAL","Always","GLRenderTarget","_MSAAColorRenderBuffers","_curMipLevel","_curFaceIndex","_colorTextures","_depth","isDepthTexture","Texture","n","_format","some","TextureCube","capability","antiAliasing","_antiAliasing","_frameBuffer","_bindMainFBO","_MSAAFrameBuffer","_bindMSAAFBO","activeRenderTarget","mipChanged","faceChanged","colorTexture","getColorTexture","_platformTexture","platformTexture","bindRenderbuffer","RENDERBUFFER","_depthRenderBuffer","renderbufferStorage","blitRenderTarget","mask","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","colorTextureCount","READ_FRAMEBUFFER","DRAW_FRAMEBUFFER","textureIndex","_blitDrawBuffers","readBuffer","blitFramebuffer","deleteFramebuffer","deleteRenderbuffer","_MSAADepthRenderBuffer","Array","_oriDrawBuffers","depthRenderBuffer","createRenderbuffer","framebufferRenderbuffer","MSAADepthRenderBuffer","MSAAColorRenderBuffer","renderbufferStorageMultisample","_checkFrameBuffer","e","checkFramebufferStatus","FRAMEBUFFER_INCOMPLETE_ATTACHMENT","FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT","FRAMEBUFFER_INCOMPLETE_DIMENSIONS","FRAMEBUFFER_UNSUPPORTED","FRAMEBUFFER_INCOMPLETE_MULTISAMPLE","GLTexture2D","texture2D","_compressedMipFilled","_mipmapCount","_getMipmapCount","setPixelBuffer","colorBuffer","pixelStorei","UNPACK_FLIP_Y_WEBGL","UNPACK_PREMULTIPLY_ALPHA_WEBGL","mipBit","compressedTexSubImage2D","compressedTexImage2D","texSubImage2D","setImageSource","imageSource","flipY","premultiplyAlpha","getPixelBuffer","GLTexture2DArray","texture2DArray","TEXTURE_2D_ARRAY","texStorage3D","offsetIndex","compressedTexSubImage3D","texSubImage3D","elementIndex","codedWidth","codedHeight","formatDetail","framebufferTextureLayer","GLTextureCube","textureCube","TEXTURE_CUBE_MAP","_compressedFaceFilled","mipSize","WebGLMode","Auto","WebGL2","WebGL1","initializeOptions","_mainFrameBuffer","_mainFrameWidth","_mainFrameHeight","_enableGlobalDepthBias","_activeTextures","_lastViewport","Vector4","_lastScissor","_lastClearColor","Color","_scissorEnable","webGLMode","stencil","_forceFlush","_maxAllowSkinUniformVectorCount","SystemInfo","platform","Platform","IPhone","IPad","version","operatingSystem","match","majorVersion","parseInt","minorVersion","_options","_onWebGLContextLost","_onWebGLContextRestored","init","onDeviceLost","onDeviceRestored","_onDeviceLost","_onDeviceRestored","addEventListener","_onContextCreationError","getContext","deleteQuery","_initGLState","createPlatformPrimitive","createPlatformTexture2D","createPlatformTexture2DArray","createPlatformTextureCube","createPlatformRenderTarget","createPlatformBuffer","_extensions","viewport","lastViewport","z","w","scissor","lastScissor","SCISSOR_TEST","r","g","b","a","clearRenderTarget","clearFlags","clearColor","_lastRenderState","blendState","targetBlendState","depthState","stencilState","clearFlag","CameraClearFlags","lc","colorWriteMask","ColorWriteMask","All","writeEnabled","STENCIL_BUFFER_BIT","writeMask","drawPrimitive","subPrimitive","getMainFrameBufferWidth","drawingBufferWidth","getMainFrameBufferHeight","drawingBufferHeight","renderTarget","isFlipProjection","bufferWidth","bufferHeight","_isContentLost","platformRenderTarget","_platformRenderTarget","activeTexture","textureID","_activeTextureID","index","TEXTURE0","setGlobalDepthBias","bias","slopeBias","flush","forceLoseDevice","extension","WEBGL_lose_context","loseContext","forceRestoreDevice","restoreContext","resetState","_currentBindShaderProgram","activeTextures","_renderStates","_capability","debugRenderInfo","_renderer","UNMASKED_RENDERER_WEBGL","removeEventListener","event","console","statusMessage","preventDefault","renderer"],"mappings":"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"}
|