/**************************************************************************** Copyright (c) 2018 Xiamen Yaji Software Co., Ltd. http://www.cocos.com Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************************************************************/ const gl = window.__gl; const GL_NEAREST = 9728; // gl.NEAREST const GL_LINEAR = 9729; // gl.LINEAR const GL_NEAREST_MIPMAP_NEAREST = 9984; // gl.NEAREST_MIPMAP_NEAREST const GL_LINEAR_MIPMAP_NEAREST = 9985; // gl.LINEAR_MIPMAP_NEAREST const GL_NEAREST_MIPMAP_LINEAR = 9986; // gl.NEAREST_MIPMAP_LINEAR const GL_LINEAR_MIPMAP_LINEAR = 9987; // gl.LINEAR_MIPMAP_LINEAR // const GL_BYTE = 5120; // gl.BYTE const GL_UNSIGNED_BYTE = 5121; // gl.UNSIGNED_BYTE // const GL_SHORT = 5122; // gl.SHORT const GL_UNSIGNED_SHORT = 5123; // gl.UNSIGNED_SHORT const GL_UNSIGNED_INT = 5125; // gl.UNSIGNED_INT const GL_FLOAT = 5126; // gl.FLOAT const GL_UNSIGNED_SHORT_5_6_5 = 33635; // gl.UNSIGNED_SHORT_5_6_5 const GL_UNSIGNED_SHORT_4_4_4_4 = 32819; // gl.UNSIGNED_SHORT_4_4_4_4 const GL_UNSIGNED_SHORT_5_5_5_1 = 32820; // gl.UNSIGNED_SHORT_5_5_5_1 const GL_HALF_FLOAT_OES = 36193; // gl.HALF_FLOAT_OES const GL_DEPTH_COMPONENT = 6402; // gl.DEPTH_COMPONENT const GL_ALPHA = 6406; // gl.ALPHA const GL_RGB = 6407; // gl.RGB const GL_RGBA = 6408; // gl.RGBA const GL_LUMINANCE = 6409; // gl.LUMINANCE const GL_LUMINANCE_ALPHA = 6410; // gl.LUMINANCE_ALPHA // https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_float.txt // for native GL_ARB_texture_float extension const GL_RGBA32F = 0x8814; const GL_RGB32F = 0x8815; const GL_RGBA16F = 0x881A; const GL_RGB16F = 0x881B; const GL_COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0; // ext.COMPRESSED_RGB_S3TC_DXT1_EXT const GL_COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1; // ext.COMPRESSED_RGBA_S3TC_DXT1_EXT const GL_COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2; // ext.COMPRESSED_RGBA_S3TC_DXT3_EXT const GL_COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3; // ext.COMPRESSED_RGBA_S3TC_DXT5_EXT const GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8C00; // ext.COMPRESSED_RGB_PVRTC_4BPPV1_IMG const GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 0x8C01; // ext.COMPRESSED_RGB_PVRTC_2BPPV1_IMG const GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02; // ext.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG const GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03; // ext.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG const GL_COMPRESSED_RGB_ETC1_WEBGL = 0x8D64; // ext.COMPRESSED_RGB_ETC1_WEBGL const GL_COMPRESSED_RGB8_ETC2 = 0x9274; // ext.COMPRESSED_RGB8_ETC2 const GL_COMPRESSED_RGBA8_ETC2_EAC = 0x9278; // ext.COMPRESSED_RGBA8_ETC2_EAC const GL_COMPRESSED_RGBA_ASTC_4x4_KHR = 0x93B0; const GL_COMPRESSED_RGBA_ASTC_5x4_KHR = 0x93B1; const GL_COMPRESSED_RGBA_ASTC_5x5_KHR = 0x93B2; const GL_COMPRESSED_RGBA_ASTC_6x5_KHR = 0x93B3; const GL_COMPRESSED_RGBA_ASTC_6x6_KHR = 0x93B4; const GL_COMPRESSED_RGBA_ASTC_8x5_KHR = 0x93B5; const GL_COMPRESSED_RGBA_ASTC_8x6_KHR = 0x93B6; const GL_COMPRESSED_RGBA_ASTC_8x8_KHR = 0x93B7; const GL_COMPRESSED_RGBA_ASTC_10x5_KHR = 0x93B8; const GL_COMPRESSED_RGBA_ASTC_10x6_KHR = 0x93B9; const GL_COMPRESSED_RGBA_ASTC_10x8_KHR = 0x93BA; const GL_COMPRESSED_RGBA_ASTC_10x10_KHR = 0x93BB; const GL_COMPRESSED_RGBA_ASTC_12x10_KHR = 0x93BC; const GL_COMPRESSED_RGBA_ASTC_12x12_KHR = 0x93BD; const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR = 0x93D0; const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR = 0x93D1; const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR = 0x93D2; const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR = 0x93D3; const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR = 0x93D4; const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR = 0x93D5; const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR = 0x93D6; const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR = 0x93D7; const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR = 0x93D8; const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR = 0x93D9; const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR = 0x93DA; const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR = 0x93DB; const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = 0x93DC; const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = 0x93DD; const _filterGL = [ [ GL_NEAREST, GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST_MIPMAP_LINEAR ], [ GL_LINEAR, GL_LINEAR_MIPMAP_NEAREST, GL_LINEAR_MIPMAP_LINEAR ], ]; const _textureFmtGL = [ // TEXTURE_FMT_RGB_DXT1: 0 { format: GL_RGB, internalFormat: GL_COMPRESSED_RGB_S3TC_DXT1_EXT, pixelType: null }, // TEXTURE_FMT_RGBA_DXT1: 1 { format: GL_RGBA, internalFormat: GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixelType: null }, // TEXTURE_FMT_RGBA_DXT3: 2 { format: GL_RGBA, internalFormat: GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, pixelType: null }, // TEXTURE_FMT_RGBA_DXT5: 3 { format: GL_RGBA, internalFormat: GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, pixelType: null }, // TEXTURE_FMT_RGB_ETC1: 4 { format: GL_RGB, internalFormat: GL_COMPRESSED_RGB_ETC1_WEBGL, pixelType: null }, // TEXTURE_FMT_RGB_PVRTC_2BPPV1: 5 { format: GL_RGB, internalFormat: GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG, pixelType: null }, // TEXTURE_FMT_RGBA_PVRTC_2BPPV1: 6 { format: GL_RGBA, internalFormat: GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG, pixelType: null }, // TEXTURE_FMT_RGB_PVRTC_4BPPV1: 7 { format: GL_RGB, internalFormat: GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG, pixelType: null }, // TEXTURE_FMT_RGBA_PVRTC_4BPPV1: 8 { format: GL_RGBA, internalFormat: GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, pixelType: null }, // TEXTURE_FMT_A8: 9 { format: GL_ALPHA, internalFormat: GL_ALPHA, pixelType: GL_UNSIGNED_BYTE }, // TEXTURE_FMT_L8: 10 { format: GL_LUMINANCE, internalFormat: GL_LUMINANCE, pixelType: GL_UNSIGNED_BYTE }, // TEXTURE_FMT_L8_A8: 11 { format: GL_LUMINANCE_ALPHA, internalFormat: GL_LUMINANCE_ALPHA, pixelType: GL_UNSIGNED_BYTE }, // TEXTURE_FMT_R5_G6_B5: 12 { format: GL_RGB, internalFormat: GL_RGB, pixelType: GL_UNSIGNED_SHORT_5_6_5 }, // TEXTURE_FMT_R5_G5_B5_A1: 13 { format: GL_RGBA, internalFormat: GL_RGBA, pixelType: GL_UNSIGNED_SHORT_5_5_5_1 }, // TEXTURE_FMT_R4_G4_B4_A4: 14 { format: GL_RGBA, internalFormat: GL_RGBA, pixelType: GL_UNSIGNED_SHORT_4_4_4_4 }, // TEXTURE_FMT_RGB8: 15 { format: GL_RGB, internalFormat: GL_RGB, pixelType: GL_UNSIGNED_BYTE }, // TEXTURE_FMT_RGBA8: 16 { format: GL_RGBA, internalFormat: GL_RGBA, pixelType: GL_UNSIGNED_BYTE }, // TEXTURE_FMT_RGB16F: 17 { format: GL_RGB, internalFormat: GL_RGB16F, pixelType: GL_HALF_FLOAT_OES }, // TEXTURE_FMT_RGBA16F: 18 { format: GL_RGBA, internalFormat: GL_RGBA16F, pixelType: GL_HALF_FLOAT_OES }, // TEXTURE_FMT_RGB32F: 19 { format: GL_RGB, internalFormat: GL_RGB32F, pixelType: GL_FLOAT }, // TEXTURE_FMT_RGBA32F: 20 { format: GL_RGBA, internalFormat: GL_RGBA32F, pixelType: GL_FLOAT }, // TEXTURE_FMT_R32F: 21 { format: null, internalFormat: null, pixelType: null }, // TEXTURE_FMT_111110F: 22 { format: null, internalFormat: null, pixelType: null }, // TEXTURE_FMT_SRGB: 23 { format: null, internalFormat: null, pixelType: null }, // TEXTURE_FMT_SRGBA: 24 { format: null, internalFormat: null, pixelType: null }, // TEXTURE_FMT_D16: 25 { format: GL_DEPTH_COMPONENT, internalFormat: GL_DEPTH_COMPONENT, pixelType: GL_UNSIGNED_SHORT }, // TEXTURE_FMT_D32: 26 { format: GL_DEPTH_COMPONENT, internalFormat: GL_DEPTH_COMPONENT, pixelType: GL_UNSIGNED_INT }, // TEXTURE_FMT_D24S8: 27 { format: GL_DEPTH_COMPONENT, internalFormat: GL_DEPTH_COMPONENT, pixelType: GL_UNSIGNED_INT }, // TEXTURE_FMT_RGB_ETC2: 28 { format: GL_RGB, internalFormat: GL_COMPRESSED_RGB8_ETC2, pixelType: null }, // TEXTURE_FMT_RGBA_ETC2: 29 { format: GL_RGBA, internalFormat: GL_COMPRESSED_RGBA8_ETC2_EAC, pixelType: null }, // TEXTURE_FMT_RGBA_ASTC_4X4: 30 { format: GL_RGBA, internalFormat: GL_COMPRESSED_RGBA_ASTC_4x4_KHR, pixelType: null }, // TEXTURE_FMT_RGBA_ASTC_5X4: 31 { format: GL_RGBA, internalFormat: GL_COMPRESSED_RGBA_ASTC_5x4_KHR, pixelType: null }, // TEXTURE_FMT_RGBA_ASTC_5X5: 32 { format: GL_RGBA, internalFormat: GL_COMPRESSED_RGBA_ASTC_5x5_KHR, pixelType: null }, // TEXTURE_FMT_RGBA_ASTC_6X5: 33 { format: GL_RGBA, internalFormat: GL_COMPRESSED_RGBA_ASTC_6x5_KHR, pixelType: null }, // TEXTURE_FMT_RGBA_ASTC_6X6: 34 { format: GL_RGBA, internalFormat: GL_COMPRESSED_RGBA_ASTC_6x6_KHR, pixelType: null }, // TEXTURE_FMT_RGBA_ASTC_8X5: 35 { format: GL_RGBA, internalFormat: GL_COMPRESSED_RGBA_ASTC_8x5_KHR, pixelType: null }, // TEXTURE_FMT_RGBA_ASTC_8X6: 36 { format: GL_RGBA, internalFormat: GL_COMPRESSED_RGBA_ASTC_8x6_KHR, pixelType: null }, // TEXTURE_FMT_RGBA_ASTC_8X8: 37 { format: GL_RGBA, internalFormat: GL_COMPRESSED_RGBA_ASTC_8x8_KHR, pixelType: null }, // TEXTURE_FMT_RGBA_ASTC_10X5: 38 { format: GL_RGBA, internalFormat: GL_COMPRESSED_RGBA_ASTC_10x5_KHR, pixelType: null }, // TEXTURE_FMT_RGBA_ASTC_10X6: 39 { format: GL_RGBA, internalFormat: GL_COMPRESSED_RGBA_ASTC_10x6_KHR, pixelType: null }, // TEXTURE_FMT_RGBA_ASTC_10X8: 40 { format: GL_RGBA, internalFormat: GL_COMPRESSED_RGBA_ASTC_10x8_KHR, pixelType: null }, // TEXTURE_FMT_RGBA_ASTC_10X10: 41 { format: GL_RGBA, internalFormat: GL_COMPRESSED_RGBA_ASTC_10x10_KHR, pixelType: null }, // TEXTURE_FMT_RGBA_ASTC_12X10: 42 { format: GL_RGBA, internalFormat: GL_COMPRESSED_RGBA_ASTC_12x10_KHR, pixelType: null }, // TEXTURE_FMT_RGBA_ASTC_12X12: 43 { format: GL_RGBA, internalFormat: GL_COMPRESSED_RGBA_ASTC_12x12_KHR, pixelType: null }, // TEXTURE_FMT_SRGBA_ASTC_4X4: 44 { format: GL_RGBA, internalFormat: GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR, pixelType: null }, // TEXTURE_FMT_SRGBA_ASTC_5X4: 45 { format: GL_RGBA, internalFormat: GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR, pixelType: null }, // TEXTURE_FMT_SRGBA_ASTC_5X5: 46 { format: GL_RGBA, internalFormat: GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR, pixelType: null }, // TEXTURE_FMT_SRGBA_ASTC_6X5: 47 { format: GL_RGBA, internalFormat: GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR, pixelType: null }, // TEXTURE_FMT_SRGBA_ASTC_6X6: 48 { format: GL_RGBA, internalFormat: GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR, pixelType: null }, // TEXTURE_FMT_SRGBA_ASTC_8X5: 49 { format: GL_RGBA, internalFormat: GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR, pixelType: null }, // TEXTURE_FMT_SRGBA_ASTC_8X6: 50 { format: GL_RGBA, internalFormat: GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR, pixelType: null }, // TEXTURE_FMT_SRGBA_ASTC_8X8: 51 { format: GL_RGBA, internalFormat: GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR, pixelType: null }, // TEXTURE_FMT_SRGBA_ASTC_10X5: 52 { format: GL_RGBA, internalFormat: GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR, pixelType: null }, // TEXTURE_FMT_SRGBA_ASTC_10X6: 53 { format: GL_RGBA, internalFormat: GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR, pixelType: null }, // TEXTURE_FMT_SRGBA_ASTC_10X8: 54 { format: GL_RGBA, internalFormat: GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR, pixelType: null }, // TEXTURE_FMT_SRGBA_ASTC_10X10: 55 { format: GL_RGBA, internalFormat: GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, pixelType: null }, // TEXTURE_FMT_SRGBA_ASTC_12X10: 56 { format: GL_RGBA, internalFormat: GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR, pixelType: null }, // TEXTURE_FMT_SRGBA_ASTC_12X12: 57 { format: GL_RGBA, internalFormat: GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR, pixelType: null }, ]; /** * enums */ export const enums = { // buffer usage USAGE_STATIC: 35044, // gl.STATIC_DRAW USAGE_DYNAMIC: 35048, // gl.DYNAMIC_DRAW USAGE_STREAM: 35040, // gl.STREAM_DRAW // index buffer format INDEX_FMT_UINT8: 5121, // gl.UNSIGNED_BYTE INDEX_FMT_UINT16: 5123, // gl.UNSIGNED_SHORT INDEX_FMT_UINT32: 5125, // gl.UNSIGNED_INT (OES_element_index_uint) // vertex attribute semantic ATTR_POSITION: 'a_position', ATTR_NORMAL: 'a_normal', ATTR_TANGENT: 'a_tangent', ATTR_BITANGENT: 'a_bitangent', ATTR_WEIGHTS: 'a_weights', ATTR_JOINTS: 'a_joints', ATTR_COLOR: 'a_color', ATTR_COLOR0: 'a_color0', ATTR_COLOR1: 'a_color1', ATTR_UV: 'a_uv', ATTR_UV0: 'a_uv0', ATTR_UV1: 'a_uv1', ATTR_UV2: 'a_uv2', ATTR_UV3: 'a_uv3', ATTR_UV4: 'a_uv4', ATTR_UV5: 'a_uv5', ATTR_UV6: 'a_uv6', ATTR_UV7: 'a_uv7', ATTR_TEX_COORD: 'a_texCoord', ATTR_TEX_COORD1: 'a_texCoord1', ATTR_TEX_COORD2: 'a_texCoord2', ATTR_TEX_COORD3: 'a_texCoord3', ATTR_TEX_COORD4: 'a_texCoord4', ATTR_TEX_COORD5: 'a_texCoord5', ATTR_TEX_COORD6: 'a_texCoord6', ATTR_TEX_COORD7: 'a_texCoord7', ATTR_TEX_COORD8: 'a_texCoord8', ATTR_TEX_ID: 'a_texId', // vertex attribute type ATTR_TYPE_INT8: 5120, // gl.BYTE ATTR_TYPE_UINT8: 5121, // gl.UNSIGNED_BYTE ATTR_TYPE_INT16: 5122, // gl.SHORT ATTR_TYPE_UINT16: 5123, // gl.UNSIGNED_SHORT ATTR_TYPE_INT32: 5124, // gl.INT ATTR_TYPE_UINT32: 5125, // gl.UNSIGNED_INT ATTR_TYPE_FLOAT32: 5126, // gl.FLOAT // texture filter FILTER_NEAREST: 0, FILTER_LINEAR: 1, // texture wrap mode WRAP_REPEAT: 10497, // gl.REPEAT WRAP_CLAMP: 33071, // gl.CLAMP_TO_EDGE WRAP_MIRROR: 33648, // gl.MIRRORED_REPEAT // texture format // compress formats TEXTURE_FMT_RGB_DXT1: 0, TEXTURE_FMT_RGBA_DXT1: 1, TEXTURE_FMT_RGBA_DXT3: 2, TEXTURE_FMT_RGBA_DXT5: 3, TEXTURE_FMT_RGB_ETC1: 4, TEXTURE_FMT_RGB_PVRTC_2BPPV1: 5, TEXTURE_FMT_RGBA_PVRTC_2BPPV1: 6, TEXTURE_FMT_RGB_PVRTC_4BPPV1: 7, TEXTURE_FMT_RGBA_PVRTC_4BPPV1: 8, // normal formats TEXTURE_FMT_A8: 9, TEXTURE_FMT_L8: 10, TEXTURE_FMT_L8_A8: 11, TEXTURE_FMT_R5_G6_B5: 12, TEXTURE_FMT_R5_G5_B5_A1: 13, TEXTURE_FMT_R4_G4_B4_A4: 14, TEXTURE_FMT_RGB8: 15, TEXTURE_FMT_RGBA8: 16, TEXTURE_FMT_RGB16F: 17, TEXTURE_FMT_RGBA16F: 18, TEXTURE_FMT_RGB32F: 19, TEXTURE_FMT_RGBA32F: 20, TEXTURE_FMT_R32F: 21, TEXTURE_FMT_111110F: 22, TEXTURE_FMT_SRGB: 23, TEXTURE_FMT_SRGBA: 24, // depth formats TEXTURE_FMT_D16: 25, TEXTURE_FMT_D32: 26, TEXTURE_FMT_D24S8: 27, // etc2 format TEXTURE_FMT_RGB_ETC2: 28, TEXTURE_FMT_RGBA_ETC2: 29, // astc format (Adaptive Scalable Texture Compression) TEXTURE_FMT_RGBA_ASTC_4X4: 30, TEXTURE_FMT_RGBA_ASTC_5X4: 31, TEXTURE_FMT_RGBA_ASTC_5X5: 32, TEXTURE_FMT_RGBA_ASTC_6X5: 33, TEXTURE_FMT_RGBA_ASTC_6X6: 34, TEXTURE_FMT_RGBA_ASTC_8X5: 35, TEXTURE_FMT_RGBA_ASTC_8X6: 36, TEXTURE_FMT_RGBA_ASTC_8X8: 37, TEXTURE_FMT_RGBA_ASTC_10X5: 38, TEXTURE_FMT_RGBA_ASTC_10X6: 39, TEXTURE_FMT_RGBA_ASTC_10X8: 40, TEXTURE_FMT_RGBA_ASTC_10X10: 41, TEXTURE_FMT_RGBA_ASTC_12X10: 42, TEXTURE_FMT_RGBA_ASTC_12X12: 43, // astc format (Adaptive Scalable Texture Compression) SRGB TEXTURE_FMT_SRGBA_ASTC_4X4: 44, TEXTURE_FMT_SRGBA_ASTC_5X4: 45, TEXTURE_FMT_SRGBA_ASTC_5X5: 46, TEXTURE_FMT_SRGBA_ASTC_6X5: 47, TEXTURE_FMT_SRGBA_ASTC_6X6: 48, TEXTURE_FMT_SRGBA_ASTC_8X5: 49, TEXTURE_FMT_SRGBA_ASTC_8X6: 50, TEXTURE_FMT_SRGBA_ASTC_8X8: 51, TEXTURE_FMT_SRGBA_ASTC_10X5: 52, TEXTURE_FMT_SRGBA_ASTC_10X6: 53, TEXTURE_FMT_SRGBA_ASTC_10X8: 54, TEXTURE_FMT_SRGBA_ASTC_10X10: 55, TEXTURE_FMT_SRGBA_ASTC_12X10: 56, TEXTURE_FMT_SRGBA_ASTC_12X12: 57, // depth and stencil function DS_FUNC_NEVER: 512, // gl.NEVER DS_FUNC_LESS: 513, // gl.LESS DS_FUNC_EQUAL: 514, // gl.EQUAL DS_FUNC_LEQUAL: 515, // gl.LEQUAL DS_FUNC_GREATER: 516, // gl.GREATER DS_FUNC_NOTEQUAL: 517, // gl.NOTEQUAL DS_FUNC_GEQUAL: 518, // gl.GEQUAL DS_FUNC_ALWAYS: 519, // gl.ALWAYS // render-buffer format RB_FMT_RGBA4: 32854, // gl.RGBA4 RB_FMT_RGB5_A1: 32855, // gl.RGB5_A1 RB_FMT_RGB565: 36194, // gl.RGB565 RB_FMT_D16: 33189, // gl.DEPTH_COMPONENT16 RB_FMT_S8: 36168, // gl.STENCIL_INDEX8 RB_FMT_D24S8: 34041, // gl.DEPTH_STENCIL // blend-equation BLEND_FUNC_ADD: 32774, // gl.FUNC_ADD BLEND_FUNC_SUBTRACT: 32778, // gl.FUNC_SUBTRACT BLEND_FUNC_REVERSE_SUBTRACT: 32779, // gl.FUNC_REVERSE_SUBTRACT // blend BLEND_ZERO: 0, // gl.ZERO BLEND_ONE: 1, // gl.ONE BLEND_SRC_COLOR: 768, // gl.SRC_COLOR BLEND_ONE_MINUS_SRC_COLOR: 769, // gl.ONE_MINUS_SRC_COLOR BLEND_DST_COLOR: 774, // gl.DST_COLOR BLEND_ONE_MINUS_DST_COLOR: 775, // gl.ONE_MINUS_DST_COLOR BLEND_SRC_ALPHA: 770, // gl.SRC_ALPHA BLEND_ONE_MINUS_SRC_ALPHA: 771, // gl.ONE_MINUS_SRC_ALPHA BLEND_DST_ALPHA: 772, // gl.DST_ALPHA BLEND_ONE_MINUS_DST_ALPHA: 773, // gl.ONE_MINUS_DST_ALPHA BLEND_CONSTANT_COLOR: 32769, // gl.CONSTANT_COLOR BLEND_ONE_MINUS_CONSTANT_COLOR: 32770, // gl.ONE_MINUS_CONSTANT_COLOR BLEND_CONSTANT_ALPHA: 32771, // gl.CONSTANT_ALPHA BLEND_ONE_MINUS_CONSTANT_ALPHA: 32772, // gl.ONE_MINUS_CONSTANT_ALPHA BLEND_SRC_ALPHA_SATURATE: 776, // gl.SRC_ALPHA_SATURATE // stencil operation STENCIL_DISABLE: 0, // disable stencil STENCIL_ENABLE: 1, // enable stencil STENCIL_INHERIT: 2, // inherit stencil states STENCIL_OP_KEEP: 7680, // gl.KEEP STENCIL_OP_ZERO: 0, // gl.ZERO STENCIL_OP_REPLACE: 7681, // gl.REPLACE STENCIL_OP_INCR: 7682, // gl.INCR STENCIL_OP_INCR_WRAP: 34055, // gl.INCR_WRAP STENCIL_OP_DECR: 7683, // gl.DECR STENCIL_OP_DECR_WRAP: 34056, // gl.DECR_WRAP STENCIL_OP_INVERT: 5386, // gl.INVERT // cull CULL_NONE: 0, CULL_FRONT: 1028, CULL_BACK: 1029, CULL_FRONT_AND_BACK: 1032, // primitive type PT_POINTS: 0, // gl.POINTS PT_LINES: 1, // gl.LINES PT_LINE_LOOP: 2, // gl.LINE_LOOP PT_LINE_STRIP: 3, // gl.LINE_STRIP PT_TRIANGLES: 4, // gl.TRIANGLES PT_TRIANGLE_STRIP: 5, // gl.TRIANGLE_STRIP PT_TRIANGLE_FAN: 6, // gl.TRIANGLE_FAN }; /** * @method attrTypeBytes * @param {ATTR_TYPE_*} attrType */ export function attrTypeBytes(attrType) { if (attrType === enums.ATTR_TYPE_INT8) { return 1; } else if (attrType === enums.ATTR_TYPE_UINT8) { return 1; } else if (attrType === enums.ATTR_TYPE_INT16) { return 2; } else if (attrType === enums.ATTR_TYPE_UINT16) { return 2; } else if (attrType === enums.ATTR_TYPE_INT32) { return 4; } else if (attrType === enums.ATTR_TYPE_UINT32) { return 4; } else if (attrType === enums.ATTR_TYPE_FLOAT32) { return 4; } console.warn(`Unknown ATTR_TYPE: ${attrType}`); return 0; } /** * @method glFilter * @param {WebGLContext} gl * @param {FILTER_*} filter * @param {FILTER_*} mipFilter */ export function glFilter(gl, filter, mipFilter = -1) { let result = _filterGL[filter][mipFilter+1]; if (result === undefined) { console.warn(`Unknown FILTER: ${filter}`); return mipFilter === -1 ? gl.LINEAR : gl.LINEAR_MIPMAP_LINEAR; } return result; } /** * @method glTextureFmt * @param {TEXTURE_FMT_*} fmt */ export function glTextureFmt(fmt) { let result = _textureFmtGL[fmt]; if (result === undefined) { console.warn(`Unknown TEXTURE_FMT: ${fmt}`); return _textureFmtGL[enums.TEXTURE_FMT_RGBA8]; } return result; }