@galacean/engine-rhi-webgl 2.0.0-alpha.2 → 2.0.0-alpha.21
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 +220 -30
- package/dist/main.js.map +1 -1
- package/dist/module.js +220 -30
- package/dist/module.js.map +1 -1
- package/package.json +4 -4
- package/types/GLBuffer.d.ts +1 -1
- package/types/GLRenderTarget.d.ts +1 -0
- package/types/GLTransformFeedback.d.ts +1 -0
- package/types/GLTransformFeedbackPrimitive.d.ts +1 -0
- package/types/WebGLGraphicDevice.d.ts +16 -1
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sources":["../src/type.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../src/WebCanvas.ts","../src/WebGLEngine.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/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 readFormat?: GLenum; // Read format are different in readPixels at some cases\n alignment?: number; // Uncompressed texture data alignment\n}\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 // s3tc sRGB\n SRGB_S3TC_DXT1_EXT = 0x8c4c,\n SRGB_ALPHA_S3TC_DXT1_EXT = 0x8c4d,\n SRGB_ALPHA_S3TC_DXT3_EXT = 0x8c4e,\n SRGB_ALPHA_S3TC_DXT5_EXT = 0x8c4f,\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}\nfunction _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","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 { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _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","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","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 isFragmentHighPrecision(): boolean {\n const gl = this._rhi.gl;\n return gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT).precision !== 0;\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 astc_hdr,\n etc,\n etc_webkit,\n etc1,\n etc1_webkit,\n pvrtc,\n pvrtc_webkit,\n s3tc,\n s3tc_webkit,\n bptc,\n s3tc_srgb,\n\n textureFloat,\n textureHalfFloat,\n textureFloatLinear,\n textureHalfFloatLinear,\n WEBGL_colorBufferFloat,\n colorBufferFloat,\n colorBufferHalfFloat,\n textureFilterAnisotropic,\n fragDepth,\n\n sRGB\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(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(s3tc_srgb, !!requireExtension(s3tc_srgb));\n cap.set(bptc, !!requireExtension(bptc));\n\n const astcExtension = requireExtension(astc) || requireExtension(astc_webkit);\n cap.set(astc, !!astcExtension);\n cap.set(astc_hdr, !!astcExtension?.getSupportedProfiles().includes(\"hdr\"));\n\n cap.set(sRGB, isWebGL2 || !!requireExtension(sRGB));\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 sRGB\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 this._compatibleInterface(sRGB, {\n SRGB8: \"SRGB_EXT\",\n SRGB8_ALPHA8: \"SRGB_ALPHA_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, IPlatformShaderProgram } 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: IPlatformShaderProgram, 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: IPlatformShaderProgram): 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: IPlatformShaderProgram): 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 Texture,\n TextureCubeFace,\n TextureDepthCompareFunction,\n TextureFilterMode,\n TextureFormat,\n TextureUsage,\n TextureUtils,\n TextureWrapMode\n} from \"@galacean/engine-core\";\nimport { MathUtil } from \"@galacean/engine-math\";\nimport { WebGLGraphicDevice } from \"./WebGLGraphicDevice\";\nimport { GLCompressedTextureInternalFormat, TextureFormatDetail } from \"./type\";\n\n/**\n * Texture in WebGL platform.\n */\nexport class GLTexture implements IPlatformTexture {\n /**\n * Get more texture info from TextureFormat.\n * @internal\n */\n static _getFormatDetail(\n format: TextureFormat,\n isSRGBColorSpace: boolean,\n gl: WebGLRenderingContext & WebGL2RenderingContext,\n isWebGL2: boolean\n ): TextureFormatDetail {\n switch (format) {\n case TextureFormat.R8G8B8:\n return {\n internalFormat: isSRGBColorSpace ? gl.SRGB8 : isWebGL2 ? gl.RGB8 : gl.RGB,\n baseFormat: isSRGBColorSpace ? (isWebGL2 ? gl.RGB : gl.SRGB8) : gl.RGB,\n readFormat: gl.RGB,\n dataType: gl.UNSIGNED_BYTE,\n isCompressed: false,\n alignment: 1\n };\n case TextureFormat.R8G8B8A8:\n return {\n internalFormat: isSRGBColorSpace ? gl.SRGB8_ALPHA8 : isWebGL2 ? gl.RGBA8 : gl.RGBA,\n baseFormat: isSRGBColorSpace ? (isWebGL2 ? gl.RGBA : gl.SRGB8_ALPHA8) : gl.RGBA,\n readFormat: gl.RGBA,\n dataType: gl.UNSIGNED_BYTE,\n isCompressed: false,\n alignment: 4\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 alignment: 2\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 alignment: 2\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 alignment: 2\n };\n case TextureFormat.Alpha8:\n return {\n internalFormat: gl.ALPHA,\n baseFormat: gl.ALPHA,\n dataType: gl.UNSIGNED_BYTE,\n isCompressed: false,\n alignment: 1\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 alignment: 2\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 alignment: 8\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 alignment: 8\n };\n // Only WebGL2 support\n case TextureFormat.R11G11B10_UFloat:\n return {\n internalFormat: gl.R11F_G11F_B10F,\n baseFormat: gl.RGB,\n dataType: gl.FLOAT,\n isCompressed: false,\n alignment: 4\n };\n // Only WebGL2 support\n case TextureFormat.R32G32B32A32_UInt:\n return {\n internalFormat: gl.RGBA32UI,\n baseFormat: gl.RGBA_INTEGER,\n dataType: gl.UNSIGNED_INT,\n isCompressed: false,\n alignment: 8\n };\n // Only WebGL2 support\n case TextureFormat.R8:\n return {\n internalFormat: gl.R8,\n baseFormat: gl.RED,\n dataType: gl.UNSIGNED_BYTE,\n isCompressed: false,\n alignment: 1\n };\n // Only WebGL2 support\n case TextureFormat.R8G8:\n return {\n internalFormat: gl.RG8,\n baseFormat: gl.RG,\n dataType: gl.UNSIGNED_BYTE,\n isCompressed: false,\n alignment: 2\n };\n case TextureFormat.BC1:\n return {\n internalFormat: isSRGBColorSpace\n ? GLCompressedTextureInternalFormat.SRGB_S3TC_DXT1_EXT\n : GLCompressedTextureInternalFormat.RGB_S3TC_DXT1_EXT,\n isCompressed: true\n };\n case TextureFormat.BC3:\n return {\n internalFormat: isSRGBColorSpace\n ? GLCompressedTextureInternalFormat.SRGB_ALPHA_S3TC_DXT5_EXT\n : GLCompressedTextureInternalFormat.RGBA_S3TC_DXT5_EXT,\n isCompressed: true\n };\n case TextureFormat.BC7:\n return {\n internalFormat: isSRGBColorSpace\n ? GLCompressedTextureInternalFormat.SRGB_ALPHA_BPTC_UNORM_EXT\n : GLCompressedTextureInternalFormat.RGBA_BPTC_UNORM_EXT,\n isCompressed: true\n };\n case TextureFormat.BC6H:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGB_BPTC_UNSIGNED_FLOAT_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: isSRGBColorSpace\n ? GLCompressedTextureInternalFormat.SRGB8_ETC2\n : 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: isSRGBColorSpace\n ? GLCompressedTextureInternalFormat.SRGB8_ALPHA8_ETC2_EAC\n : 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: isSRGBColorSpace\n ? GLCompressedTextureInternalFormat.SRGB8_ALPHA8_ASTC_4X4_KHR\n : 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 // Only WebGL2 support\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 // Only WebGL2 support\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 // Only WebGL2 support\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 * @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 case TextureFormat.R11G11B10_UFloat:\n {\n isSupported = rhi.isWebGL2;\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 const texture = this._texture;\n //@ts-ignore\n const mipmap = texture._mipmap;\n\n if (!TextureUtils.supportGenerateMipmaps(texture.format, mipmap, texture.isSRGBColorSpace, this._isWebGL2)) {\n Logger.warn(\n \"Auto-generating mipmaps for sRGB textures is only supported in [WebGL2 + R8G8B8A8], you must generate mipmaps manually.\"\n );\n return;\n }\n\n // @todo (1x1).generateMipmap() will flash back in uc.\n if (texture.width !== 1 || 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, readFormat, alignment } = 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\n gl.pixelStorei(gl.PACK_ALIGNMENT, alignment);\n // Base format is different from read format in webgl1.0 with sRGB\n gl.readPixels(x, y, width, height, readFormat ?? baseFormat, dataType, out);\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\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 protected _validate(texture: Texture, rhi: WebGLGraphicDevice): void {\n const { format, width, height } = texture;\n\n // Validate sRGB format\n // @ts-ignore\n const isSRGBColorSpace = texture._isSRGBColorSpace;\n if (isSRGBColorSpace && !TextureUtils.supportSRGB(format)) {\n Logger.warn(\"Only support sRGB color space in RGB8 or RGBA8 or some compressed texture format\");\n // @ts-ignore\n texture._isSRGBColorSpace = false;\n }\n\n const isWebGL2 = rhi.isWebGL2;\n\n // Validate mipmap\n // @ts-ignore\n const mipmap = texture._mipmap;\n if (mipmap && !TextureUtils.supportMipmaps(width, height, isWebGL2)) {\n Logger.warn(\n \"Non-power-2 texture is not supported for mipmap in WebGL1, and has automatically downgraded to non-mipmap\"\n );\n /** @ts-ignore */\n texture._mipmap = false;\n /** @ts-ignore */\n texture._mipmapCount = texture._getMipmapCount();\n }\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 (!isWebGL2 && value !== TextureWrapMode.Clamp && (!MathUtil.isPowerOf2(width) || !MathUtil.isPowerOf2(height))) {\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","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, isSRGBColorSpace } = _colorTextures[i];\n if (!GLTexture._supportRenderBufferColorFormat(format, rhi)) {\n throw new Error(`TextureFormat is not supported:${TextureFormat[format]} in RenderTarget`);\n }\n if (isSRGBColorSpace && format === TextureFormat.R8G8B8) {\n throw new Error(`If you want to use sRGB color space, only R8G8B8A8 format is supported 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 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 // #5.14.3 Event Types in https://registry.khronos.org/webgl/specs/1.0.0/\n if (!gl.isContextLost()) {\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 break;\n case gl.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: // Only for WebGL2\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, Texture2D, 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 this._validate(texture2D, rhi);\n\n const { format, isSRGBColorSpace } = texture2D;\n const isWebGL2 = this._isWebGL2;\n this._formatDetail = GLTexture._getFormatDetail(format, isSRGBColorSpace, 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\n const formatDetail = 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 if (formatDetail.isCompressed) {\n const isWebGL2 = this._isWebGL2;\n const { internalFormat } = formatDetail;\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 const { baseFormat, dataType } = formatDetail;\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 0);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 0);\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, formatDetail.alignment);\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, Logger, Texture2DArray, TextureUtils } 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 this._validate(texture2DArray, rhi);\n\n const { format, width, height, length, mipmapCount, isSRGBColorSpace } = texture2DArray;\n this._bind();\n this._formatDetail = GLTexture._getFormatDetail(format, isSRGBColorSpace, 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 formatDetail = this._formatDetail;\n const { internalFormat, baseFormat, dataType, isCompressed } = 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 gl.pixelStorei(gl.UNPACK_ALIGNMENT, formatDetail.alignment);\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 ?? (imageSource as unknown as VideoFrame).codedWidth,\n (<Exclude<TexImageSource, VideoFrame>>imageSource).height ?? (imageSource as unknown as VideoFrame).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.pixelStorei(gl.PACK_ALIGNMENT, formatDetail.alignment);\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 protected override _validate(texture: Texture2DArray, rhi: WebGLGraphicDevice): void {\n const { format } = texture;\n\n // Validate sRGB format\n // @ts-ignore\n const isSRGBColorSpace = texture._isSRGBColorSpace;\n if (isSRGBColorSpace && !TextureUtils.supportSRGB(format)) {\n Logger.warn(\"Only support sRGB color space in RGB8 or RGBA8 or some compressed texture format\");\n // @ts-ignore\n texture._isSRGBColorSpace = false;\n }\n }\n}\n","import { IPlatformTextureCube, TextureCube, TextureCubeFace } 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 this._validate(textureCube, rhi);\n\n const { format, isSRGBColorSpace } = textureCube;\n const isWebGL2 = this._isWebGL2;\n this._formatDetail = GLTexture._getFormatDetail(format, isSRGBColorSpace, 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 formatDetail = this._formatDetail;\n const { internalFormat, baseFormat, dataType, isCompressed } = 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 gl.pixelStorei(gl.UNPACK_ALIGNMENT, formatDetail.alignment);\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 TextureFormat\n} from \"@galacean/engine-core\";\nimport { IHardwareRenderer, IPlatformPrimitive, IPlatformShaderProgram } 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 {\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 alpha?: boolean;\n depth?: boolean;\n desynchronized?: boolean;\n failIfMajorPerformanceCaveat?: boolean;\n powerPreference?: WebGLPowerPreference;\n premultipliedAlpha?: boolean;\n preserveDrawingBuffer?: boolean;\n stencil?: boolean;\n xrCompatible?: boolean;\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 _webGLOptions: WebGLContextAttributes;\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 = <WebGLGraphicDeviceOptions>{\n webGLMode: WebGLMode.Auto,\n _forceFlush: false,\n _maxAllowSkinUniformVectorCount: 256,\n alpha: true,\n depth: true,\n stencil: true,\n failIfMajorPerformanceCaveat: false,\n powerPreference: \"default\",\n premultipliedAlpha: true,\n preserveDrawingBuffer: false,\n desynchronized: false,\n xrCompatible: false,\n ...initializeOptions\n };\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 // Force disable stencil, antialias and depth, we configure them in internal render target\n this._webGLOptions = {\n antialias: false,\n depth: false,\n stencil: false,\n alpha: options.alpha,\n failIfMajorPerformanceCaveat: options.failIfMajorPerformanceCaveat,\n powerPreference: options.powerPreference,\n premultipliedAlpha: options.premultipliedAlpha,\n preserveDrawingBuffer: options.preserveDrawingBuffer,\n desynchronized: options.desynchronized,\n xrCompatible: options.xrCompatible\n };\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 webCanvas = (canvas as WebCanvas)._webCanvas;\n const webGLMode = this._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 const webGLOptions = this._webGLOptions;\n let gl: (WebGLRenderingContext & WebGLExtension) | WebGL2RenderingContext;\n if (webGLMode == WebGLMode.Auto || webGLMode == WebGLMode.WebGL2) {\n gl = webCanvas.getContext(\"webgl2\", webGLOptions);\n if (!gl && (typeof OffscreenCanvas === \"undefined\" || !(webCanvas instanceof OffscreenCanvas))) {\n gl = <WebGL2RenderingContext>webCanvas.getContext(\"experimental-webgl2\", webGLOptions);\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\", webGLOptions);\n if (!gl && (typeof OffscreenCanvas === \"undefined\" || !(webCanvas instanceof OffscreenCanvas))) {\n gl = <WebGLRenderingContext & WebGLExtension>webCanvas.getContext(\"experimental-webgl\", webGLOptions);\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 && clearColor) {\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: IPlatformShaderProgram) {\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 blitInternalRTByBlitFrameBuffer(\n srcRT: RenderTarget,\n destRT: RenderTarget,\n clearFlags: CameraClearFlags,\n viewport: Vector4\n ) {\n if (!this._isWebGL2) {\n Logger.warn(\"WebGL1.0 not support blit frame buffer.\");\n return;\n }\n const gl = this._gl;\n // @ts-ignore\n const srcFrameBuffer = srcRT ? srcRT._platformRenderTarget._frameBuffer : null;\n // @ts-ignore\n const destFrameBuffer = destRT ? destRT._platformRenderTarget._frameBuffer : null;\n const bufferWidth = this.getMainFrameBufferWidth();\n const bufferHeight = this.getMainFrameBufferHeight();\n const srcWidth = srcRT ? srcRT.width : bufferWidth;\n const srcHeight = srcRT ? srcRT.height : bufferHeight;\n const blitWidth = destRT.width;\n const blitHeight = destRT.height;\n const needFlipY = !srcRT;\n const needBlitColor = (clearFlags & CameraClearFlags.Color) === 0;\n const needBlitDepth = (clearFlags & CameraClearFlags.Depth) === 0;\n const needBlitStencil = (clearFlags & CameraClearFlags.Stencil) === 0;\n\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, srcFrameBuffer);\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, destFrameBuffer);\n\n let blitMask = needBlitColor ? gl.COLOR_BUFFER_BIT : 0;\n\n if (needBlitDepth || needBlitStencil) {\n // @ts-ignore\n const depthFormat = destRT._depthFormat;\n\n if (needBlitDepth) {\n if (\n depthFormat === TextureFormat.Depth ||\n (depthFormat >= TextureFormat.DepthStencil && depthFormat <= TextureFormat.Depth32Stencil8)\n ) {\n blitMask |= gl.DEPTH_BUFFER_BIT;\n } else {\n Logger.warn(`Do not clear depth, or set depth format of target which is ${TextureFormat[depthFormat]} now.`);\n }\n }\n\n if (needBlitStencil) {\n if (\n depthFormat === TextureFormat.Stencil ||\n depthFormat === TextureFormat.DepthStencil ||\n depthFormat >= TextureFormat.Depth24Stencil8 ||\n depthFormat >= TextureFormat.Depth32Stencil8\n ) {\n blitMask |= gl.STENCIL_BUFFER_BIT;\n } else {\n Logger.warn(\n `Do not clear stencil, or set stencil format of target which is ${TextureFormat[depthFormat]} now.`\n );\n }\n }\n }\n\n const xStart = viewport.x * srcWidth;\n const xEnd = xStart + blitWidth;\n const yStart = needFlipY ? srcHeight - viewport.y * srcHeight : srcHeight - viewport.y * srcHeight - blitHeight;\n const yEnd = needFlipY ? yStart - blitHeight : yStart + blitHeight;\n\n gl.blitFramebuffer(xStart, yStart, xEnd, yEnd, 0, 0, blitWidth, blitHeight, blitMask, gl.NEAREST);\n }\n\n copyRenderTargetToSubTexture(srcRT: RenderTarget, grabTexture: Texture2D, viewport: Vector4) {\n const gl = this._gl;\n const bufferWidth = this.getMainFrameBufferWidth();\n const bufferHeight = this.getMainFrameBufferHeight();\n const srcWidth = srcRT ? srcRT.width : bufferWidth;\n const srcHeight = srcRT ? srcRT.height : bufferHeight;\n const copyWidth = grabTexture.width;\n const copyHeight = grabTexture.height;\n const flipY = !srcRT;\n\n const xStart = viewport.x * srcWidth;\n const yStart = flipY ? srcHeight - viewport.y * srcHeight - copyHeight : viewport.y * srcHeight;\n\n // @ts-ignore\n const frameBuffer = srcRT?._platformRenderTarget._frameBuffer ?? this._mainFrameBuffer;\n\n // @ts-ignore\n gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer);\n\n // @ts-ignore\n const glTexture = grabTexture._platformTexture;\n\n glTexture._bind();\n\n gl.copyTexSubImage2D(glTexture._target, 0, 0, 0, xStart, yStart, copyWidth, copyHeight);\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 /**\n * @remarks\n * WebGL context loss and restore can happen at any GPU execution point. refs to: https://www.khronos.org/webgl/wiki/HandlingContextLost\n */\n isContextLost() {\n return this.gl.isContextLost();\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","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","RGBA_ASTC_4X4_KHR","RGBA_ASTC_12X12_KHR","SRGB8_ALPHA8_ASTC_4X4_KHR","SRGB8_ALPHA8_ASTC_12X12_KHR","RGB_ETC1_WEBGL","R11_EAC","SRGB8_ALPHA8_ETC2_EAC","RGB_PVRTC_4BPPV1_IMG","RGBA_PVRTC_2BPPV1_IMG","RGB_S3TC_DXT1_EXT","RGBA_S3TC_DXT5_EXT","RGBA_BPTC_UNORM_EXT","RGB_BPTC_UNSIGNED_FLOAT_EXT","GLCapabilityType","astc","etc1","etc","pvrtc","s3tc","bptc","cap","requireExtension","shaderVertexID","standardDerivatives","shaderTextureLod","elementIndexUint","depthTexture","vertexArrayObject","instancedArrays","multipleSample","drawBuffers","blendMinMax","astc_webkit","astc_hdr","etc_webkit","etc1_webkit","pvrtc_webkit","s3tc_webkit","s3tc_srgb","textureFloat","textureHalfFloat","textureFloatLinear","textureHalfFloatLinear","WEBGL_colorBufferFloat","colorBufferFloat","colorBufferHalfFloat","textureFilterAnisotropic","fragDepth","sRGB","astcExtension","getSupportedProfiles","includes","_compatibleInterface","flatItem","ext","glKey","extensionKey","extensionVal","MIN","MAX","UNSIGNED_INT_24_8","createVertexArray","deleteVertexArray","isVertexArray","bindVertexArray","drawArraysInstanced","drawElementsInstanced","vertexAttribDivisor","MAX_DRAW_BUFFERS","items","maxDrawBuffers","i","HALF_FLOAT","RGBA16F","RGBA32F","SRGB8","SRGB8_ALPHA8","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","isFragmentHighPrecision","getShaderPrecisionFormat","FRAGMENT_SHADER","HIGH_FLOAT","precision","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","mipmap","_mipmap","TextureUtils","supportGenerateMipmaps","format","isSRGBColorSpace","_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","readFormat","alignment","bindFramebuffer","FRAMEBUFFER","_getReadFrameBuffer","framebufferTexture2D","COLOR_ATTACHMENT0","TEXTURE_2D","pixelStorei","PACK_ALIGNMENT","readPixels","frameBuffer","_readFrameBuffer","createFramebuffer","_validate","_isSRGBColorSpace","supportSRGB","supportMipmaps","_mipmapCount","_getMipmapCount","_setWrapMode","TextureWrapMode","Clamp","MathUtil","isPowerOf2","CLAMP_TO_EDGE","Repeat","REPEAT","Mirror","MIRRORED_REPEAT","_getFormatDetail","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","R11G11B10_UFloat","R11F_G11F_B10F","R32G32B32A32_UInt","RGBA32UI","RGBA_INTEGER","UNSIGNED_INT","R8","RED","R8G8","RG8","RG","BC1","SRGB_S3TC_DXT1_EXT","BC3","SRGB_ALPHA_S3TC_DXT5_EXT","BC7","SRGB_ALPHA_BPTC_UNORM_EXT","BC6H","ETC1_RGB","ETC2_RGB","SRGB8_ETC2","RGB8_ETC2","ETC2_RGBA5","RGB8_PUNCHTHROUGH_ALPHA1_ETC2","ETC2_RGBA8","RGBA8_ETC2_EAC","PVRTC_RGB2","RGB_PVRTC_2BPPV1_IMG","PVRTC_RGBA2","PVRTC_RGB4","PVRTC_RGBA4","RGBA_PVRTC_4BPPV1_IMG","ASTC_4x4","ASTC_5x5","RGBA_ASTC_5X5_KHR","ASTC_6x6","RGBA_ASTC_6X6_KHR","ASTC_8x8","RGBA_ASTC_8X8_KHR","ASTC_10x10","RGBA_ASTC_10X10_KHR","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","_supportRenderBufferColorFormat","isSupported","_supportRenderBufferDepthFormat","wrapModeU","TEXTURE_WRAP_S","wrapModeV","TEXTURE_WRAP_T","filterMode","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","some","v","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","isContextLost","FRAMEBUFFER_INCOMPLETE_MULTISAMPLE","GLTexture2D","texture2D","_compressedMipFilled","setPixelBuffer","colorBuffer","formatDetail","mipBit","compressedTexSubImage2D","compressedTexImage2D","UNPACK_FLIP_Y_WEBGL","UNPACK_PREMULTIPLY_ALPHA_WEBGL","UNPACK_ALIGNMENT","texSubImage2D","setImageSource","imageSource","flipY","premultiplyAlpha","getPixelBuffer","GLTexture2DArray","texture2DArray","TEXTURE_2D_ARRAY","texStorage3D","offsetIndex","compressedTexSubImage3D","texSubImage3D","elementIndex","codedWidth","codedHeight","framebufferTextureLayer","GLTextureCube","textureCube","TEXTURE_CUBE_MAP","_compressedFaceFilled","mipSize","WebGLMode","initializeOptions","_mainFrameBuffer","_mainFrameWidth","_mainFrameHeight","_enableGlobalDepthBias","_activeTextures","_lastViewport","Vector4","_lastScissor","_lastClearColor","Color","_scissorEnable","webGLMode","_forceFlush","_maxAllowSkinUniformVectorCount","alpha","depth","stencil","failIfMajorPerformanceCaveat","powerPreference","premultipliedAlpha","preserveDrawingBuffer","desynchronized","xrCompatible","SystemInfo","platform","Platform","IPhone","IPad","version","operatingSystem","match","majorVersion","parseInt","minorVersion","_options","_webGLOptions","antialias","_onWebGLContextLost","_onWebGLContextRestored","init","onDeviceLost","onDeviceRestored","_onDeviceLost","_onDeviceRestored","addEventListener","_onContextCreationError","webGLOptions","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","blitInternalRTByBlitFrameBuffer","srcRT","destRT","srcFrameBuffer","destFrameBuffer","srcWidth","srcHeight","blitWidth","blitHeight","needFlipY","needBlitColor","needBlitDepth","needBlitStencil","blitMask","depthFormat","_depthFormat","xStart","xEnd","yStart","yEnd","copyRenderTargetToSubTexture","grabTexture","copyWidth","copyHeight","glTexture","copyTexSubImage2D","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":"module.js","sources":["../src/type.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../src/WebCanvas.ts","../src/WebGLEngine.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/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/GLTransformFeedback.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../src/GLTransformFeedbackPrimitive.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 readFormat?: GLenum; // Read format are different in readPixels at some cases\n alignment?: number; // Uncompressed texture data alignment\n}\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 // s3tc sRGB\n SRGB_S3TC_DXT1_EXT = 0x8c4c,\n SRGB_ALPHA_S3TC_DXT1_EXT = 0x8c4d,\n SRGB_ALPHA_S3TC_DXT3_EXT = 0x8c4e,\n SRGB_ALPHA_S3TC_DXT5_EXT = 0x8c4f,\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}\nfunction _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","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 { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _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","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","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 /** @internal */\n _glBuffer: WebGLBuffer;\n\n private _gl: (WebGLRenderingContext & WebGLExtension) | WebGL2RenderingContext;\n private _glBindTarget: number;\n private _glBufferUsage: number;\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 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 copyFromBuffer(srcBuffer: IPlatformBuffer, srcByteOffset: number, dstByteOffset: number, byteLength: number): void {\n const gl = <WebGL2RenderingContext>this._gl;\n gl.bindBuffer(gl.COPY_READ_BUFFER, (<GLBuffer>srcBuffer)._glBuffer);\n gl.bindBuffer(gl.COPY_WRITE_BUFFER, this._glBuffer);\n gl.copyBufferSubData(gl.COPY_READ_BUFFER, gl.COPY_WRITE_BUFFER, srcByteOffset, dstByteOffset, byteLength);\n gl.bindBuffer(gl.COPY_READ_BUFFER, null);\n gl.bindBuffer(gl.COPY_WRITE_BUFFER, null);\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 isFragmentHighPrecision(): boolean {\n const gl = this._rhi.gl;\n return gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT).precision !== 0;\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 astc_hdr,\n etc,\n etc_webkit,\n etc1,\n etc1_webkit,\n pvrtc,\n pvrtc_webkit,\n s3tc,\n s3tc_webkit,\n bptc,\n s3tc_srgb,\n\n textureFloat,\n textureHalfFloat,\n textureFloatLinear,\n textureHalfFloatLinear,\n WEBGL_colorBufferFloat,\n colorBufferFloat,\n colorBufferHalfFloat,\n textureFilterAnisotropic,\n fragDepth,\n\n sRGB\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(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(s3tc_srgb, !!requireExtension(s3tc_srgb));\n cap.set(bptc, !!requireExtension(bptc));\n\n const astcExtension = requireExtension(astc) || requireExtension(astc_webkit);\n cap.set(astc, !!astcExtension);\n cap.set(astc_hdr, !!astcExtension?.getSupportedProfiles().includes(\"hdr\"));\n\n cap.set(sRGB, isWebGL2 || !!requireExtension(sRGB));\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 sRGB\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 this._compatibleInterface(sRGB, {\n SRGB8: \"SRGB_EXT\",\n SRGB8_ALPHA8: \"SRGB_ALPHA_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, IPlatformShaderProgram } 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: IPlatformShaderProgram, 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: IPlatformShaderProgram): 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: IPlatformShaderProgram): 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 Texture,\n TextureCubeFace,\n TextureDepthCompareFunction,\n TextureFilterMode,\n TextureFormat,\n TextureUsage,\n TextureUtils,\n TextureWrapMode\n} from \"@galacean/engine-core\";\nimport { MathUtil } from \"@galacean/engine-math\";\nimport { WebGLGraphicDevice } from \"./WebGLGraphicDevice\";\nimport { GLCompressedTextureInternalFormat, TextureFormatDetail } from \"./type\";\n\n/**\n * Texture in WebGL platform.\n */\nexport class GLTexture implements IPlatformTexture {\n /**\n * Get more texture info from TextureFormat.\n * @internal\n */\n static _getFormatDetail(\n format: TextureFormat,\n isSRGBColorSpace: boolean,\n gl: WebGLRenderingContext & WebGL2RenderingContext,\n isWebGL2: boolean\n ): TextureFormatDetail {\n switch (format) {\n case TextureFormat.R8G8B8:\n return {\n internalFormat: isSRGBColorSpace ? gl.SRGB8 : isWebGL2 ? gl.RGB8 : gl.RGB,\n baseFormat: isSRGBColorSpace ? (isWebGL2 ? gl.RGB : gl.SRGB8) : gl.RGB,\n readFormat: isWebGL2 ? gl.RGBA : gl.RGB,\n dataType: gl.UNSIGNED_BYTE,\n isCompressed: false,\n alignment: 1\n };\n case TextureFormat.R8G8B8A8:\n return {\n internalFormat: isSRGBColorSpace ? gl.SRGB8_ALPHA8 : isWebGL2 ? gl.RGBA8 : gl.RGBA,\n baseFormat: isSRGBColorSpace ? (isWebGL2 ? gl.RGBA : gl.SRGB8_ALPHA8) : gl.RGBA,\n readFormat: gl.RGBA,\n dataType: gl.UNSIGNED_BYTE,\n isCompressed: false,\n alignment: 4\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 alignment: 2\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 alignment: 2\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 alignment: 2\n };\n case TextureFormat.Alpha8:\n return {\n internalFormat: gl.ALPHA,\n baseFormat: gl.ALPHA,\n dataType: gl.UNSIGNED_BYTE,\n isCompressed: false,\n alignment: 1\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 alignment: 2\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 alignment: 8\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 alignment: 8\n };\n // Only WebGL2 support\n case TextureFormat.R11G11B10_UFloat:\n return {\n internalFormat: gl.R11F_G11F_B10F,\n baseFormat: gl.RGB,\n readFormat: gl.RGBA,\n dataType: gl.FLOAT,\n isCompressed: false,\n alignment: 4\n };\n // Only WebGL2 support\n case TextureFormat.R32G32B32A32_UInt:\n return {\n internalFormat: gl.RGBA32UI,\n baseFormat: gl.RGBA_INTEGER,\n dataType: gl.UNSIGNED_INT,\n isCompressed: false,\n alignment: 8\n };\n // Only WebGL2 support\n case TextureFormat.R8:\n return {\n internalFormat: gl.R8,\n baseFormat: gl.RED,\n dataType: gl.UNSIGNED_BYTE,\n isCompressed: false,\n alignment: 1\n };\n // Only WebGL2 support\n case TextureFormat.R8G8:\n return {\n internalFormat: gl.RG8,\n baseFormat: gl.RG,\n dataType: gl.UNSIGNED_BYTE,\n isCompressed: false,\n alignment: 2\n };\n case TextureFormat.BC1:\n return {\n internalFormat: isSRGBColorSpace\n ? GLCompressedTextureInternalFormat.SRGB_S3TC_DXT1_EXT\n : GLCompressedTextureInternalFormat.RGB_S3TC_DXT1_EXT,\n isCompressed: true\n };\n case TextureFormat.BC3:\n return {\n internalFormat: isSRGBColorSpace\n ? GLCompressedTextureInternalFormat.SRGB_ALPHA_S3TC_DXT5_EXT\n : GLCompressedTextureInternalFormat.RGBA_S3TC_DXT5_EXT,\n isCompressed: true\n };\n case TextureFormat.BC7:\n return {\n internalFormat: isSRGBColorSpace\n ? GLCompressedTextureInternalFormat.SRGB_ALPHA_BPTC_UNORM_EXT\n : GLCompressedTextureInternalFormat.RGBA_BPTC_UNORM_EXT,\n isCompressed: true\n };\n case TextureFormat.BC6H:\n return {\n internalFormat: GLCompressedTextureInternalFormat.RGB_BPTC_UNSIGNED_FLOAT_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: isSRGBColorSpace\n ? GLCompressedTextureInternalFormat.SRGB8_ETC2\n : 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: isSRGBColorSpace\n ? GLCompressedTextureInternalFormat.SRGB8_ALPHA8_ETC2_EAC\n : 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: isSRGBColorSpace\n ? GLCompressedTextureInternalFormat.SRGB8_ALPHA8_ASTC_4X4_KHR\n : 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 // Only WebGL2 support\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 // Only WebGL2 support\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 // Only WebGL2 support\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 * @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 case TextureFormat.R11G11B10_UFloat:\n {\n isSupported = rhi.isWebGL2;\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 const texture = this._texture;\n //@ts-ignore\n const mipmap = texture._mipmap;\n\n if (!TextureUtils.supportGenerateMipmaps(texture.format, mipmap, texture.isSRGBColorSpace, this._isWebGL2)) {\n Logger.warn(\n \"Auto-generating mipmaps for sRGB textures is only supported in [WebGL2 + R8G8B8A8], you must generate mipmaps manually.\"\n );\n return;\n }\n\n // @todo (1x1).generateMipmap() will flash back in uc.\n if (texture.width !== 1 || 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, readFormat, alignment } = 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\n gl.pixelStorei(gl.PACK_ALIGNMENT, alignment);\n // Base format is different from read format in webgl1.0 with sRGB\n gl.readPixels(x, y, width, height, readFormat ?? baseFormat, dataType, out);\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\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 protected _validate(texture: Texture, rhi: WebGLGraphicDevice): void {\n const { format, width, height } = texture;\n\n // Validate sRGB format\n // @ts-ignore\n const isSRGBColorSpace = texture._isSRGBColorSpace;\n if (isSRGBColorSpace && !TextureUtils.supportSRGB(format)) {\n Logger.warn(\"Only support sRGB color space in RGB8 or RGBA8 or some compressed texture format\");\n // @ts-ignore\n texture._isSRGBColorSpace = false;\n }\n\n const isWebGL2 = rhi.isWebGL2;\n\n // Validate mipmap\n // @ts-ignore\n const mipmap = texture._mipmap;\n if (mipmap && !TextureUtils.supportMipmaps(width, height, isWebGL2)) {\n Logger.warn(\n \"Non-power-2 texture is not supported for mipmap in WebGL1, and has automatically downgraded to non-mipmap\"\n );\n /** @ts-ignore */\n texture._mipmap = false;\n /** @ts-ignore */\n texture._mipmapCount = texture._getMipmapCount();\n }\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 (!isWebGL2 && value !== TextureWrapMode.Clamp && (!MathUtil.isPowerOf2(width) || !MathUtil.isPowerOf2(height))) {\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","import {\n GLCapabilityType,\n IPlatformRenderTarget,\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, isSRGBColorSpace } = _colorTextures[i];\n if (!GLTexture._supportRenderBufferColorFormat(format, rhi)) {\n throw new Error(`TextureFormat is not supported:${TextureFormat[format]} in RenderTarget`);\n }\n if (isSRGBColorSpace && format === TextureFormat.R8G8B8) {\n throw new Error(`If you want to use sRGB color space, only R8G8B8A8 format is supported 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 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 this._depthRenderBuffer = this._createRenderBuffer(internalFormat, attachment);\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\n /** @ts-ignore */\n const { _depth, colorTextureCount } = this._target;\n\n this._blitDrawBuffers = new Array(colorTextureCount);\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, this._MSAAFrameBuffer);\n\n // prepare MRT+MSAA color RBOs\n for (let i = 0; i < colorTextureCount; i++) {\n this._blitDrawBuffers[i] = gl.NONE;\n\n const internalFormat =\n /** @ts-ignore */\n (this._target.getColorTexture(i)._platformTexture as GLTexture)._formatDetail.internalFormat;\n\n this._MSAAColorRenderBuffers[i] = this._createRenderBuffer(internalFormat, gl.COLOR_ATTACHMENT0 + i);\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 this._MSAADepthRenderBuffer = this._createRenderBuffer(internalFormat, attachment);\n }\n\n this._checkFrameBuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n gl.bindRenderbuffer(gl.RENDERBUFFER, null);\n }\n\n private _createRenderBuffer(internalFormat: GLenum, attachment: GLenum): WebGLRenderbuffer {\n const gl = this._gl;\n const { width, height, antiAliasing } = this._target;\n const renderBuffer = gl.createRenderbuffer();\n\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderBuffer);\n\n if (antiAliasing > 1) {\n gl.renderbufferStorageMultisample(gl.RENDERBUFFER, antiAliasing, internalFormat, width, height);\n } else {\n gl.renderbufferStorage(gl.RENDERBUFFER, internalFormat, width, height);\n }\n\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachment, gl.RENDERBUFFER, renderBuffer);\n\n return renderBuffer;\n }\n\n private _checkFrameBuffer(): void {\n const gl = this._gl;\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 // #5.14.3 Event Types in https://registry.khronos.org/webgl/specs/1.0.0/\n if (!gl.isContextLost()) {\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 break;\n case gl.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: // Only for WebGL2\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, Texture2D, 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 this._validate(texture2D, rhi);\n\n const { format, isSRGBColorSpace } = texture2D;\n const isWebGL2 = this._isWebGL2;\n this._formatDetail = GLTexture._getFormatDetail(format, isSRGBColorSpace, 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\n const formatDetail = 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 if (formatDetail.isCompressed) {\n const isWebGL2 = this._isWebGL2;\n const { internalFormat } = formatDetail;\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 const { baseFormat, dataType } = formatDetail;\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 0);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 0);\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, formatDetail.alignment);\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, Logger, Texture2DArray, TextureUtils } 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 this._validate(texture2DArray, rhi);\n\n const { format, width, height, length, mipmapCount, isSRGBColorSpace } = texture2DArray;\n this._bind();\n this._formatDetail = GLTexture._getFormatDetail(format, isSRGBColorSpace, 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 formatDetail = this._formatDetail;\n const { internalFormat, baseFormat, dataType, isCompressed } = 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\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.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 0);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 0);\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, formatDetail.alignment);\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 ?? (imageSource as unknown as VideoFrame).codedWidth,\n (<Exclude<TexImageSource, VideoFrame>>imageSource).height ?? (imageSource as unknown as VideoFrame).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.pixelStorei(gl.PACK_ALIGNMENT, formatDetail.alignment);\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 protected override _validate(texture: Texture2DArray, rhi: WebGLGraphicDevice): void {\n const { format } = texture;\n\n // Validate sRGB format\n // @ts-ignore\n const isSRGBColorSpace = texture._isSRGBColorSpace;\n if (isSRGBColorSpace && !TextureUtils.supportSRGB(format)) {\n Logger.warn(\"Only support sRGB color space in RGB8 or RGBA8 or some compressed texture format\");\n // @ts-ignore\n texture._isSRGBColorSpace = false;\n }\n }\n}\n","import { IPlatformTextureCube, TextureCube, TextureCubeFace } 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 this._validate(textureCube, rhi);\n\n const { format, isSRGBColorSpace } = textureCube;\n const isWebGL2 = this._isWebGL2;\n this._formatDetail = GLTexture._getFormatDetail(format, isSRGBColorSpace, 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 formatDetail = this._formatDetail;\n const { internalFormat, baseFormat, dataType, isCompressed } = 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 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.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 0);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 0);\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, formatDetail.alignment);\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 { IPlatformTransformFeedback, IPlatformBuffer } from \"@galacean/engine-core\";\nimport { WebGLGraphicDevice } from \"./WebGLGraphicDevice\";\nimport { GLBuffer } from \"./GLBuffer\";\n\n/**\n * @internal\n * WebGL2 implementation of Transform Feedback.\n */\nexport class GLTransformFeedback implements IPlatformTransformFeedback {\n private _gl: WebGL2RenderingContext;\n private _glTransformFeedback: WebGLTransformFeedback;\n\n constructor(rhi: WebGLGraphicDevice) {\n const gl = <WebGL2RenderingContext>rhi.gl;\n this._gl = gl;\n this._glTransformFeedback = gl.createTransformFeedback();\n }\n\n bindBufferRange(index: number, buffer: IPlatformBuffer, byteOffset: number, byteSize: number): void {\n const gl = this._gl;\n gl.bindBufferRange(gl.TRANSFORM_FEEDBACK_BUFFER, index, (<GLBuffer>buffer)._glBuffer, byteOffset, byteSize);\n }\n\n unbindBuffer(index: number): void {\n const gl = this._gl;\n gl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, index, null);\n }\n\n begin(primitiveMode: number): void {\n this._gl.beginTransformFeedback(primitiveMode);\n }\n\n end(): void {\n this._gl.endTransformFeedback();\n }\n\n bind(): void {\n const gl = this._gl;\n gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, this._glTransformFeedback);\n }\n\n unbind(): void {\n const gl = this._gl;\n gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, null);\n }\n\n destroy(): void {\n if (this._glTransformFeedback) {\n this._gl.deleteTransformFeedback(this._glTransformFeedback);\n this._glTransformFeedback = null;\n }\n }\n}\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","import { IPlatformTransformFeedbackPrimitive, VertexElement, VertexBufferBinding } from \"@galacean/engine-core\";\nimport { GLBuffer } from \"./GLBuffer\";\n\n/**\n * @internal\n * WebGL2 implementation of Transform Feedback primitive.\n * Maintains two VAOs (one per read direction), auto-rebuilds when program changes.\n */\nexport class GLTransformFeedbackPrimitive implements IPlatformTransformFeedbackPrimitive {\n private _gl: WebGL2RenderingContext;\n private _vaoA: WebGLVertexArrayObject;\n private _vaoB: WebGLVertexArrayObject;\n private _lastProgramId = -1;\n\n constructor(gl: WebGL2RenderingContext) {\n this._gl = gl;\n }\n\n updateVertexLayout(\n program: any,\n readBinding: VertexBufferBinding,\n writeBinding: VertexBufferBinding,\n feedbackElements: VertexElement[],\n inputBinding: VertexBufferBinding,\n inputElements: VertexElement[]\n ): void {\n if (program.id === this._lastProgramId) return;\n\n this._deleteVAOs();\n\n const attribs = program.attributeLocation;\n this._vaoA = this._createVAO(attribs, readBinding, feedbackElements, inputBinding, inputElements);\n this._vaoB = this._createVAO(attribs, writeBinding, feedbackElements, inputBinding, inputElements);\n this._lastProgramId = program.id;\n\n this._gl.bindVertexArray(null);\n }\n\n bind(readIsA: boolean): void {\n this._gl.bindVertexArray(readIsA ? this._vaoA : this._vaoB);\n }\n\n unbind(): void {\n this._gl.bindVertexArray(null);\n }\n\n draw(mode: number, first: number, count: number): void {\n this._gl.drawArrays(mode, first, count);\n }\n\n invalidate(): void {\n this._deleteVAOs();\n }\n\n destroy(): void {\n this._deleteVAOs();\n }\n\n private _deleteVAOs(): void {\n const gl = this._gl;\n if (this._vaoA) {\n gl.deleteVertexArray(this._vaoA);\n this._vaoA = null;\n }\n if (this._vaoB) {\n gl.deleteVertexArray(this._vaoB);\n this._vaoB = null;\n }\n this._lastProgramId = -1;\n }\n\n private _createVAO(\n attribs: Record<string, number>,\n feedbackBinding: VertexBufferBinding,\n feedbackElements: VertexElement[],\n inputBinding: VertexBufferBinding,\n inputElements: VertexElement[]\n ): WebGLVertexArrayObject {\n const gl = this._gl;\n const vao = gl.createVertexArray();\n gl.bindVertexArray(vao);\n\n // @ts-ignore: Access internal _platformBuffer across packages\n gl.bindBuffer(gl.ARRAY_BUFFER, (<GLBuffer>feedbackBinding.buffer._platformBuffer)._glBuffer);\n this._bindElements(gl, attribs, feedbackElements, feedbackBinding.stride);\n\n // @ts-ignore: Access internal _platformBuffer across packages\n gl.bindBuffer(gl.ARRAY_BUFFER, (<GLBuffer>inputBinding.buffer._platformBuffer)._glBuffer);\n this._bindElements(gl, attribs, inputElements, inputBinding.stride);\n\n gl.bindBuffer(gl.ARRAY_BUFFER, null);\n return vao;\n }\n\n private _bindElements(\n gl: WebGL2RenderingContext,\n attribs: Record<string, number>,\n elements: VertexElement[],\n stride: number\n ): void {\n for (const element of elements) {\n const loc = attribs[element.attribute];\n if (loc !== undefined && loc !== -1) {\n const info = element._formatMetaInfo;\n gl.enableVertexAttribArray(loc);\n gl.vertexAttribPointer(loc, info.size, info.type, info.normalized, stride, element.offset);\n }\n }\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 IPlatformTransformFeedback,\n IPlatformTransformFeedbackPrimitive,\n Logger,\n Mesh,\n Platform,\n RenderTarget,\n SubMesh,\n SystemInfo,\n Texture2D,\n Texture2DArray,\n TextureCube,\n TextureCubeFace,\n TextureFormat\n} from \"@galacean/engine-core\";\nimport { IHardwareRenderer, IPlatformPrimitive, IPlatformShaderProgram } 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 { GLTransformFeedback } from \"./GLTransformFeedback\";\nimport { GLTransformFeedbackPrimitive } from \"./GLTransformFeedbackPrimitive\";\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 {\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 alpha?: boolean;\n depth?: boolean;\n desynchronized?: boolean;\n failIfMajorPerformanceCaveat?: boolean;\n powerPreference?: WebGLPowerPreference;\n premultipliedAlpha?: boolean;\n preserveDrawingBuffer?: boolean;\n stencil?: boolean;\n xrCompatible?: boolean;\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 _webGLOptions: WebGLContextAttributes;\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 = <WebGLGraphicDeviceOptions>{\n webGLMode: WebGLMode.Auto,\n _forceFlush: false,\n _maxAllowSkinUniformVectorCount: 256,\n alpha: true,\n depth: true,\n stencil: true,\n failIfMajorPerformanceCaveat: false,\n powerPreference: \"default\",\n premultipliedAlpha: true,\n preserveDrawingBuffer: false,\n desynchronized: false,\n xrCompatible: false,\n ...initializeOptions\n };\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 // Force disable stencil, antialias and depth, we configure them in internal render target\n this._webGLOptions = {\n antialias: false,\n depth: false,\n stencil: false,\n alpha: options.alpha,\n failIfMajorPerformanceCaveat: options.failIfMajorPerformanceCaveat,\n powerPreference: options.powerPreference,\n premultipliedAlpha: options.premultipliedAlpha,\n preserveDrawingBuffer: options.preserveDrawingBuffer,\n desynchronized: options.desynchronized,\n xrCompatible: options.xrCompatible\n };\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 webCanvas = (canvas as WebCanvas)._webCanvas;\n const webGLMode = this._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 const webGLOptions = this._webGLOptions;\n let gl: (WebGLRenderingContext & WebGLExtension) | WebGL2RenderingContext;\n if (webGLMode == WebGLMode.Auto || webGLMode == WebGLMode.WebGL2) {\n gl = webCanvas.getContext(\"webgl2\", webGLOptions);\n if (!gl && (typeof OffscreenCanvas === \"undefined\" || !(webCanvas instanceof OffscreenCanvas))) {\n gl = <WebGL2RenderingContext>webCanvas.getContext(\"experimental-webgl2\", webGLOptions);\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\", webGLOptions);\n if (!gl && (typeof OffscreenCanvas === \"undefined\" || !(webCanvas instanceof OffscreenCanvas))) {\n gl = <WebGLRenderingContext & WebGLExtension>webCanvas.getContext(\"experimental-webgl\", webGLOptions);\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 createPlatformTransformFeedback(): IPlatformTransformFeedback {\n return new GLTransformFeedback(this);\n }\n\n createPlatformTransformFeedbackPrimitive(): IPlatformTransformFeedbackPrimitive {\n return new GLTransformFeedbackPrimitive(<WebGL2RenderingContext>this._gl);\n }\n\n /**\n * Enable GL_RASTERIZER_DISCARD (WebGL2 only).\n */\n enableRasterizerDiscard(): void {\n if (this._isWebGL2) {\n const gl = <WebGL2RenderingContext>this._gl;\n gl.enable(gl.RASTERIZER_DISCARD);\n }\n }\n\n /**\n * Disable GL_RASTERIZER_DISCARD (WebGL2 only).\n */\n disableRasterizerDiscard(): void {\n if (this._isWebGL2) {\n const gl = <WebGL2RenderingContext>this._gl;\n gl.disable(gl.RASTERIZER_DISCARD);\n }\n }\n\n /**\n * Invalidate the cached shader program state.\n * Call this after using a custom program (e.g., Transform Feedback) outside the engine's pipeline.\n */\n invalidateShaderProgramState(): void {\n if (this._currentBindShaderProgram) {\n this._gl.useProgram(null);\n this._currentBindShaderProgram = null;\n }\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 && clearColor) {\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: IPlatformShaderProgram) {\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 blitInternalRTByBlitFrameBuffer(\n srcRT: RenderTarget,\n destRT: RenderTarget,\n clearFlags: CameraClearFlags,\n viewport: Vector4\n ) {\n if (!this._isWebGL2) {\n Logger.warn(\"WebGL1.0 not support blit frame buffer.\");\n return;\n }\n const gl = this._gl;\n // @ts-ignore\n const srcFrameBuffer = srcRT ? srcRT._platformRenderTarget._frameBuffer : null;\n // @ts-ignore\n const destFrameBuffer = destRT ? destRT._platformRenderTarget._frameBuffer : null;\n const bufferWidth = this.getMainFrameBufferWidth();\n const bufferHeight = this.getMainFrameBufferHeight();\n const srcWidth = srcRT ? srcRT.width : bufferWidth;\n const srcHeight = srcRT ? srcRT.height : bufferHeight;\n const blitWidth = destRT.width;\n const blitHeight = destRT.height;\n const needFlipY = !srcRT;\n const needBlitColor = (clearFlags & CameraClearFlags.Color) === 0;\n const needBlitDepth = (clearFlags & CameraClearFlags.Depth) === 0;\n const needBlitStencil = (clearFlags & CameraClearFlags.Stencil) === 0;\n\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, srcFrameBuffer);\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, destFrameBuffer);\n\n let blitMask = needBlitColor ? gl.COLOR_BUFFER_BIT : 0;\n\n if (needBlitDepth || needBlitStencil) {\n // @ts-ignore\n const depthFormat = destRT._depthFormat;\n\n if (needBlitDepth) {\n if (\n depthFormat === TextureFormat.Depth ||\n (depthFormat >= TextureFormat.DepthStencil && depthFormat <= TextureFormat.Depth32Stencil8)\n ) {\n blitMask |= gl.DEPTH_BUFFER_BIT;\n } else {\n Logger.warn(`Do not clear depth, or set depth format of target which is ${TextureFormat[depthFormat]} now.`);\n }\n }\n\n if (needBlitStencil) {\n if (\n depthFormat === TextureFormat.Stencil ||\n depthFormat === TextureFormat.DepthStencil ||\n depthFormat >= TextureFormat.Depth24Stencil8 ||\n depthFormat >= TextureFormat.Depth32Stencil8\n ) {\n blitMask |= gl.STENCIL_BUFFER_BIT;\n } else {\n Logger.warn(\n `Do not clear stencil, or set stencil format of target which is ${TextureFormat[depthFormat]} now.`\n );\n }\n }\n }\n\n const xStart = viewport.x * srcWidth;\n const xEnd = xStart + blitWidth;\n const yStart = needFlipY ? srcHeight - viewport.y * srcHeight : srcHeight - viewport.y * srcHeight - blitHeight;\n const yEnd = needFlipY ? yStart - blitHeight : yStart + blitHeight;\n\n gl.blitFramebuffer(xStart, yStart, xEnd, yEnd, 0, 0, blitWidth, blitHeight, blitMask, gl.NEAREST);\n }\n\n copyRenderTargetToSubTexture(srcRT: RenderTarget, grabTexture: Texture2D, viewport: Vector4) {\n const gl = this._gl;\n const bufferWidth = this.getMainFrameBufferWidth();\n const bufferHeight = this.getMainFrameBufferHeight();\n const srcWidth = srcRT ? srcRT.width : bufferWidth;\n const srcHeight = srcRT ? srcRT.height : bufferHeight;\n const copyWidth = grabTexture.width;\n const copyHeight = grabTexture.height;\n const flipY = !srcRT;\n\n const xStart = viewport.x * srcWidth;\n const yStart = flipY ? srcHeight - viewport.y * srcHeight - copyHeight : viewport.y * srcHeight;\n\n // @ts-ignore\n const frameBuffer = srcRT?._platformRenderTarget._frameBuffer ?? this._mainFrameBuffer;\n\n // @ts-ignore\n gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer);\n\n // @ts-ignore\n const glTexture = grabTexture._platformTexture;\n\n glTexture._bind();\n\n gl.copyTexSubImage2D(glTexture._target, 0, 0, 0, xStart, yStart, copyWidth, copyHeight);\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 /**\n * @remarks\n * WebGL context loss and restore can happen at any GPU execution point. refs to: https://www.khronos.org/webgl/wiki/HandlingContextLost\n */\n isContextLost() {\n return this.gl.isContextLost();\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","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","copyFromBuffer","srcBuffer","srcByteOffset","dstByteOffset","COPY_READ_BUFFER","COPY_WRITE_BUFFER","copyBufferSubData","destroy","deleteBuffer","STATIC_DRAW","Dynamic","DYNAMIC_DRAW","Stream","STREAM_DRAW","GLCapability","_rhi","capabilityList","Map","_init","_compatibleAllInterface","canIUse","capabilityType","get","canIUseCompressedTextureInternalFormat","internalType","RGBA_ASTC_4X4_KHR","RGBA_ASTC_12X12_KHR","SRGB8_ALPHA8_ASTC_4X4_KHR","SRGB8_ALPHA8_ASTC_12X12_KHR","RGB_ETC1_WEBGL","R11_EAC","SRGB8_ALPHA8_ETC2_EAC","RGB_PVRTC_4BPPV1_IMG","RGBA_PVRTC_2BPPV1_IMG","RGB_S3TC_DXT1_EXT","RGBA_S3TC_DXT5_EXT","RGBA_BPTC_UNORM_EXT","RGB_BPTC_UNSIGNED_FLOAT_EXT","GLCapabilityType","astc","etc1","etc","pvrtc","s3tc","bptc","cap","requireExtension","shaderVertexID","standardDerivatives","shaderTextureLod","elementIndexUint","depthTexture","vertexArrayObject","instancedArrays","multipleSample","drawBuffers","blendMinMax","astc_webkit","astc_hdr","etc_webkit","etc1_webkit","pvrtc_webkit","s3tc_webkit","s3tc_srgb","textureFloat","textureHalfFloat","textureFloatLinear","textureHalfFloatLinear","WEBGL_colorBufferFloat","colorBufferFloat","colorBufferHalfFloat","textureFilterAnisotropic","fragDepth","sRGB","astcExtension","getSupportedProfiles","includes","_compatibleInterface","flatItem","ext","glKey","extensionKey","extensionVal","MIN","MAX","UNSIGNED_INT_24_8","createVertexArray","deleteVertexArray","isVertexArray","bindVertexArray","drawArraysInstanced","drawElementsInstanced","vertexAttribDivisor","MAX_DRAW_BUFFERS","items","maxDrawBuffers","i","HALF_FLOAT","RGBA16F","RGBA32F","SRGB8","SRGB8_ALPHA8","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","isFragmentHighPrecision","getShaderPrecisionFormat","FRAGMENT_SHADER","HIGH_FLOAT","precision","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","mipmap","_mipmap","TextureUtils","supportGenerateMipmaps","format","isSRGBColorSpace","_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","readFormat","alignment","bindFramebuffer","FRAMEBUFFER","_getReadFrameBuffer","framebufferTexture2D","COLOR_ATTACHMENT0","TEXTURE_2D","pixelStorei","PACK_ALIGNMENT","readPixels","frameBuffer","_readFrameBuffer","createFramebuffer","_validate","_isSRGBColorSpace","supportSRGB","supportMipmaps","_mipmapCount","_getMipmapCount","_setWrapMode","TextureWrapMode","Clamp","MathUtil","isPowerOf2","CLAMP_TO_EDGE","Repeat","REPEAT","Mirror","MIRRORED_REPEAT","_getFormatDetail","TextureFormat","R8G8B8","RGB8","RGB","RGBA","UNSIGNED_BYTE","isCompressed","R8G8B8A8","RGBA8","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","R11G11B10_UFloat","R11F_G11F_B10F","R32G32B32A32_UInt","RGBA32UI","RGBA_INTEGER","UNSIGNED_INT","R8","RED","R8G8","RG8","RG","BC1","SRGB_S3TC_DXT1_EXT","BC3","SRGB_ALPHA_S3TC_DXT5_EXT","BC7","SRGB_ALPHA_BPTC_UNORM_EXT","BC6H","ETC1_RGB","ETC2_RGB","SRGB8_ETC2","RGB8_ETC2","ETC2_RGBA5","RGB8_PUNCHTHROUGH_ALPHA1_ETC2","ETC2_RGBA8","RGBA8_ETC2_EAC","PVRTC_RGB2","RGB_PVRTC_2BPPV1_IMG","PVRTC_RGBA2","PVRTC_RGB4","PVRTC_RGBA4","RGBA_PVRTC_4BPPV1_IMG","ASTC_4x4","ASTC_5x5","RGBA_ASTC_5X5_KHR","ASTC_6x6","RGBA_ASTC_6X6_KHR","ASTC_8x8","RGBA_ASTC_8X8_KHR","ASTC_10x10","RGBA_ASTC_10X10_KHR","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","_supportRenderBufferColorFormat","isSupported","_supportRenderBufferDepthFormat","wrapModeU","TEXTURE_WRAP_S","wrapModeV","TEXTURE_WRAP_T","filterMode","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","some","v","TextureCube","_frameBuffer","_bindMainFBO","antiAliasing","_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","_createRenderBuffer","_checkFrameBuffer","renderBuffer","createRenderbuffer","renderbufferStorageMultisample","framebufferRenderbuffer","e","checkFramebufferStatus","FRAMEBUFFER_INCOMPLETE_ATTACHMENT","FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT","FRAMEBUFFER_INCOMPLETE_DIMENSIONS","FRAMEBUFFER_UNSUPPORTED","isContextLost","FRAMEBUFFER_INCOMPLETE_MULTISAMPLE","GLTexture2D","texture2D","_compressedMipFilled","setPixelBuffer","colorBuffer","formatDetail","mipBit","compressedTexSubImage2D","compressedTexImage2D","UNPACK_FLIP_Y_WEBGL","UNPACK_PREMULTIPLY_ALPHA_WEBGL","UNPACK_ALIGNMENT","texSubImage2D","setImageSource","imageSource","flipY","premultiplyAlpha","getPixelBuffer","GLTexture2DArray","texture2DArray","TEXTURE_2D_ARRAY","texStorage3D","offsetIndex","compressedTexSubImage3D","texSubImage3D","elementIndex","codedWidth","codedHeight","framebufferTextureLayer","GLTextureCube","textureCube","TEXTURE_CUBE_MAP","_compressedFaceFilled","mipSize","GLTransformFeedback","_glTransformFeedback","createTransformFeedback","bindBufferRange","index","TRANSFORM_FEEDBACK_BUFFER","unbindBuffer","bindBufferBase","begin","primitiveMode","beginTransformFeedback","end","endTransformFeedback","bindTransformFeedback","TRANSFORM_FEEDBACK","unbind","deleteTransformFeedback","GLTransformFeedbackPrimitive","_lastProgramId","updateVertexLayout","program","readBinding","writeBinding","feedbackElements","inputBinding","inputElements","_deleteVAOs","attribs","_vaoA","_createVAO","_vaoB","readIsA","mode","first","invalidate","feedbackBinding","_bindElements","elements","attribute","info","WebGLMode","initializeOptions","_mainFrameBuffer","_mainFrameWidth","_mainFrameHeight","_enableGlobalDepthBias","_activeTextures","_lastViewport","Vector4","_lastScissor","_lastClearColor","Color","_scissorEnable","webGLMode","_forceFlush","_maxAllowSkinUniformVectorCount","alpha","depth","stencil","failIfMajorPerformanceCaveat","powerPreference","premultipliedAlpha","preserveDrawingBuffer","desynchronized","xrCompatible","SystemInfo","platform","Platform","IPhone","IPad","version","operatingSystem","match","majorVersion","parseInt","minorVersion","_options","_webGLOptions","antialias","_onWebGLContextLost","_onWebGLContextRestored","init","onDeviceLost","onDeviceRestored","_onDeviceLost","_onDeviceRestored","addEventListener","_onContextCreationError","webGLOptions","getContext","deleteQuery","_initGLState","createPlatformPrimitive","createPlatformTexture2D","createPlatformTexture2DArray","createPlatformTextureCube","createPlatformRenderTarget","createPlatformBuffer","createPlatformTransformFeedback","createPlatformTransformFeedbackPrimitive","enableRasterizerDiscard","RASTERIZER_DISCARD","disableRasterizerDiscard","invalidateShaderProgramState","_currentBindShaderProgram","useProgram","_extensions","capability","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","blitInternalRTByBlitFrameBuffer","srcRT","destRT","srcFrameBuffer","destFrameBuffer","srcWidth","srcHeight","blitWidth","blitHeight","needFlipY","needBlitColor","needBlitDepth","needBlitStencil","blitMask","depthFormat","_depthFormat","xStart","xEnd","yStart","yEnd","copyRenderTargetToSubTexture","grabTexture","copyWidth","copyHeight","glTexture","copyTexSubImage2D","activeTexture","textureID","_activeTextureID","TEXTURE0","setGlobalDepthBias","bias","slopeBias","flush","forceLoseDevice","extension","WEBGL_lose_context","loseContext","forceRestoreDevice","restoreContext","resetState","activeTextures","_renderStates","_capability","debugRenderInfo","_renderer","UNMASKED_RENDERER_WEBGL","removeEventListener","event","console","statusMessage","preventDefault","renderer"],"mappings":"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"}
|