@luma.gl/webgl 8.5.15 → 8.5.16
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/dist.js +732 -848
- package/dist/dist.min.js +1 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/classes/accessor.js +31 -33
- package/dist/es5/classes/accessor.js.map +1 -1
- package/dist/es5/classes/buffer.js +24 -26
- package/dist/es5/classes/buffer.js.map +1 -1
- package/dist/es5/classes/clear.js.map +1 -1
- package/dist/es5/classes/copy-and-blit.js +3 -3
- package/dist/es5/classes/copy-and-blit.js.map +1 -1
- package/dist/es5/classes/framebuffer.js +70 -72
- package/dist/es5/classes/framebuffer.js.map +1 -1
- package/dist/es5/classes/program-configuration.js.map +1 -1
- package/dist/es5/classes/program.js +11 -13
- package/dist/es5/classes/program.js.map +1 -1
- package/dist/es5/classes/query.js +47 -49
- package/dist/es5/classes/query.js.map +1 -1
- package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
- package/dist/es5/classes/renderbuffer.js +37 -39
- package/dist/es5/classes/renderbuffer.js.map +1 -1
- package/dist/es5/classes/resource.js +13 -15
- package/dist/es5/classes/resource.js.map +1 -1
- package/dist/es5/classes/shader.js +38 -44
- package/dist/es5/classes/shader.js.map +1 -1
- package/dist/es5/classes/texture-2d.js +16 -17
- package/dist/es5/classes/texture-2d.js.map +1 -1
- package/dist/es5/classes/texture-3d.js +15 -17
- package/dist/es5/classes/texture-3d.js.map +1 -1
- package/dist/es5/classes/texture-cube.js +10 -12
- package/dist/es5/classes/texture-cube.js.map +1 -1
- package/dist/es5/classes/texture-formats.js +1 -1
- package/dist/es5/classes/texture-formats.js.map +1 -1
- package/dist/es5/classes/texture.js +24 -26
- package/dist/es5/classes/texture.js.map +1 -1
- package/dist/es5/classes/transform-feedback.js +16 -22
- package/dist/es5/classes/transform-feedback.js.map +1 -1
- package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
- package/dist/es5/classes/uniforms.js +2 -2
- package/dist/es5/classes/uniforms.js.map +1 -1
- package/dist/es5/classes/vertex-array-object.js +69 -71
- package/dist/es5/classes/vertex-array-object.js.map +1 -1
- package/dist/es5/classes/vertex-array.js.map +1 -1
- package/dist/es5/debug/debug-program-configuration.js +1 -1
- package/dist/es5/debug/debug-program-configuration.js.map +1 -1
- package/dist/es5/debug/debug-uniforms.js +1 -1
- package/dist/es5/debug/debug-uniforms.js.map +1 -1
- package/dist/es5/debug/debug-vertex-array.js.map +1 -1
- package/dist/es5/features/check-glsl-extension.js.map +1 -1
- package/dist/es5/features/check-old-ie.js.map +1 -1
- package/dist/es5/features/features.js +2 -2
- package/dist/es5/features/features.js.map +1 -1
- package/dist/es5/features/index.js +16 -16
- package/dist/es5/features/index.js.map +1 -1
- package/dist/es5/features/limits.js +1 -1
- package/dist/es5/features/limits.js.map +1 -1
- package/dist/es5/features/webgl-features-table.js.map +1 -1
- package/dist/es5/features/webgl-limits-table.js.map +1 -1
- package/dist/es5/glsl-utils/format-glsl-error.js.map +1 -1
- package/dist/es5/glsl-utils/get-shader-name.js.map +1 -1
- package/dist/es5/glsl-utils/get-shader-type-name.js.map +1 -1
- package/dist/es5/glsl-utils/get-shader-version.js.map +1 -1
- package/dist/es5/glsl-utils/index.js +11 -7
- package/dist/es5/glsl-utils/index.js.map +1 -1
- package/dist/es5/index.js +104 -104
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/init.d.ts +1 -1
- package/dist/es5/init.js +4 -4
- package/dist/es5/init.js.map +1 -1
- package/dist/es5/utils/array-utils-flat.js +2 -2
- package/dist/es5/utils/array-utils-flat.js.map +1 -1
- package/dist/es5/utils/assert.js.map +1 -1
- package/dist/es5/utils/check-props.js.map +1 -1
- package/dist/es5/utils/format-value.js.map +1 -1
- package/dist/es5/utils/is-old-ie.js.map +1 -1
- package/dist/es5/utils/load-file.js +1 -1
- package/dist/es5/utils/load-file.js.map +1 -1
- package/dist/es5/utils/stub-methods.js.map +1 -1
- package/dist/es5/utils/utils.js +2 -2
- package/dist/es5/utils/utils.js.map +1 -1
- package/dist/es5/webgl-utils/attribute-utils.js +3 -3
- package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
- package/dist/es5/webgl-utils/constants-to-keys.js +1 -1
- package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
- package/dist/es5/webgl-utils/format-utils.js.map +1 -1
- package/dist/es5/webgl-utils/get-error.js +1 -1
- package/dist/es5/webgl-utils/get-error.js.map +1 -1
- package/dist/es5/webgl-utils/request-animation-frame.js +1 -1
- package/dist/es5/webgl-utils/request-animation-frame.js.map +1 -1
- package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
- package/dist/es5/webgl-utils/typed-array-utils.js +1 -1
- package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/classes/accessor.js +12 -3
- package/dist/esm/classes/accessor.js.map +1 -1
- package/dist/esm/classes/buffer.js +41 -28
- package/dist/esm/classes/buffer.js.map +1 -1
- package/dist/esm/classes/clear.js +14 -12
- package/dist/esm/classes/clear.js.map +1 -1
- package/dist/esm/classes/copy-and-blit.js +27 -21
- package/dist/esm/classes/copy-and-blit.js.map +1 -1
- package/dist/esm/classes/framebuffer.js +89 -64
- package/dist/esm/classes/framebuffer.js.map +1 -1
- package/dist/esm/classes/program-configuration.js.map +1 -1
- package/dist/esm/classes/program.js +40 -32
- package/dist/esm/classes/program.js.map +1 -1
- package/dist/esm/classes/query.js +11 -6
- package/dist/esm/classes/query.js.map +1 -1
- package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
- package/dist/esm/classes/renderbuffer.js +25 -19
- package/dist/esm/classes/renderbuffer.js.map +1 -1
- package/dist/esm/classes/resource.js +34 -19
- package/dist/esm/classes/resource.js.map +1 -1
- package/dist/esm/classes/shader.js +13 -10
- package/dist/esm/classes/shader.js.map +1 -1
- package/dist/esm/classes/texture-2d.js +2 -1
- package/dist/esm/classes/texture-2d.js.map +1 -1
- package/dist/esm/classes/texture-3d.js +17 -14
- package/dist/esm/classes/texture-3d.js.map +1 -1
- package/dist/esm/classes/texture-cube.js +23 -19
- package/dist/esm/classes/texture-cube.js.map +1 -1
- package/dist/esm/classes/texture-formats.js.map +1 -1
- package/dist/esm/classes/texture.js +47 -35
- package/dist/esm/classes/texture.js.map +1 -1
- package/dist/esm/classes/transform-feedback.js +12 -6
- package/dist/esm/classes/transform-feedback.js.map +1 -1
- package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
- package/dist/esm/classes/uniforms.js +6 -6
- package/dist/esm/classes/uniforms.js.map +1 -1
- package/dist/esm/classes/vertex-array-object.js +17 -9
- package/dist/esm/classes/vertex-array-object.js.map +1 -1
- package/dist/esm/classes/vertex-array.js +17 -7
- package/dist/esm/classes/vertex-array.js.map +1 -1
- package/dist/esm/debug/debug-program-configuration.js +4 -4
- package/dist/esm/debug/debug-program-configuration.js.map +1 -1
- package/dist/esm/debug/debug-uniforms.js +16 -14
- package/dist/esm/debug/debug-uniforms.js.map +1 -1
- package/dist/esm/debug/debug-vertex-array.js +16 -14
- package/dist/esm/debug/debug-vertex-array.js.map +1 -1
- package/dist/esm/features/check-glsl-extension.js +3 -2
- package/dist/esm/features/check-glsl-extension.js.map +1 -1
- package/dist/esm/features/check-old-ie.js +2 -1
- package/dist/esm/features/check-old-ie.js.map +1 -1
- package/dist/esm/features/features.js +1 -1
- package/dist/esm/features/features.js.map +1 -1
- package/dist/esm/features/index.js.map +1 -1
- package/dist/esm/features/limits.js.map +1 -1
- package/dist/esm/features/webgl-features-table.js +1 -1
- package/dist/esm/features/webgl-features-table.js.map +1 -1
- package/dist/esm/features/webgl-limits-table.js.map +1 -1
- package/dist/esm/glsl-utils/format-glsl-error.js +9 -7
- package/dist/esm/glsl-utils/format-glsl-error.js.map +1 -1
- package/dist/esm/glsl-utils/get-shader-name.js +2 -1
- package/dist/esm/glsl-utils/get-shader-name.js.map +1 -1
- package/dist/esm/glsl-utils/get-shader-type-name.js.map +1 -1
- package/dist/esm/glsl-utils/get-shader-version.js.map +1 -1
- package/dist/esm/glsl-utils/index.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/init.d.ts +1 -1
- package/dist/esm/init.js +4 -4
- package/dist/esm/init.js.map +1 -1
- package/dist/esm/utils/array-utils-flat.js +7 -6
- package/dist/esm/utils/array-utils-flat.js.map +1 -1
- package/dist/esm/utils/assert.js.map +1 -1
- package/dist/esm/utils/check-props.js +4 -4
- package/dist/esm/utils/check-props.js.map +1 -1
- package/dist/esm/utils/format-value.js +4 -3
- package/dist/esm/utils/format-value.js.map +1 -1
- package/dist/esm/utils/is-old-ie.js +2 -1
- package/dist/esm/utils/is-old-ie.js.map +1 -1
- package/dist/esm/utils/load-file.js +3 -2
- package/dist/esm/utils/load-file.js.map +1 -1
- package/dist/esm/utils/stub-methods.js +2 -3
- package/dist/esm/utils/stub-methods.js.map +1 -1
- package/dist/esm/utils/utils.js +3 -2
- package/dist/esm/utils/utils.js.map +1 -1
- package/dist/esm/webgl-utils/attribute-utils.js +11 -8
- package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
- package/dist/esm/webgl-utils/constants-to-keys.js +3 -3
- package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
- package/dist/esm/webgl-utils/format-utils.js.map +1 -1
- package/dist/esm/webgl-utils/get-error.js +1 -1
- package/dist/esm/webgl-utils/get-error.js.map +1 -1
- package/dist/esm/webgl-utils/request-animation-frame.js.map +1 -1
- package/dist/esm/webgl-utils/texture-utils.js +1 -1
- package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
- package/dist/esm/webgl-utils/typed-array-utils.js +19 -15
- package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
- package/package.json +5 -5
- package/src/classes/framebuffer.js +1 -0
- package/src/classes/transform-feedback.js +1 -1
- package/src/classes/vertex-array-object.js +1 -1
- package/src/init.d.ts +1 -1
- package/src/init.js +1 -1
- package/src/webgl-utils/texture-utils.js +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/webgl-utils/attribute-utils.js"],"names":["GL_BYTE","GL_UNSIGNED_BYTE","GL_SHORT","GL_UNSIGNED_SHORT","GL_POINTS","GL_LINES","GL_LINE_LOOP","GL_LINE_STRIP","GL_TRIANGLES","GL_TRIANGLE_STRIP","GL_TRIANGLE_FAN","GL_FLOAT","GL_FLOAT_VEC2","GL_FLOAT_VEC3","GL_FLOAT_VEC4","GL_INT","GL_INT_VEC2","GL_INT_VEC3","GL_INT_VEC4","GL_UNSIGNED_INT","GL_UNSIGNED_INT_VEC2","GL_UNSIGNED_INT_VEC3","GL_UNSIGNED_INT_VEC4","GL_BOOL","GL_BOOL_VEC2","GL_BOOL_VEC3","GL_BOOL_VEC4","GL_FLOAT_MAT2","GL_FLOAT_MAT3","GL_FLOAT_MAT4","GL_FLOAT_MAT2x3","GL_FLOAT_MAT2x4","GL_FLOAT_MAT3x2","GL_FLOAT_MAT3x4","GL_FLOAT_MAT4x2","GL_FLOAT_MAT4x3","COMPOSITE_GL_TYPES","getPrimitiveDrawMode","drawMode","getPrimitiveCount","vertexCount","getVertexCount","primitiveCount","decomposeCompositeGLType","compositeGLType","typeAndSize","type","components","getCompositeGLType","glType","compType","compComponents","name"],"mappings":"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","sourcesContent":["/* eslint-disable camelcase */\nimport {assert} from '../utils/assert';\n\nconst GL_BYTE = 0x1400;\nconst GL_UNSIGNED_BYTE = 0x1401;\nconst GL_SHORT = 0x1402;\nconst GL_UNSIGNED_SHORT = 0x1403;\n\nconst GL_POINTS = 0x0;\nconst GL_LINES = 0x1;\nconst GL_LINE_LOOP = 0x2;\nconst GL_LINE_STRIP = 0x3;\nconst GL_TRIANGLES = 0x4;\nconst GL_TRIANGLE_STRIP = 0x5;\nconst GL_TRIANGLE_FAN = 0x6;\n\n// Local constants - these will \"collapse\" during minification\nconst GL_FLOAT = 0x1406;\nconst GL_FLOAT_VEC2 = 0x8b50;\nconst GL_FLOAT_VEC3 = 0x8b51;\nconst GL_FLOAT_VEC4 = 0x8b52;\n\nconst GL_INT = 0x1404;\nconst GL_INT_VEC2 = 0x8b53;\nconst GL_INT_VEC3 = 0x8b54;\nconst GL_INT_VEC4 = 0x8b55;\n\nconst GL_UNSIGNED_INT = 0x1405;\nconst GL_UNSIGNED_INT_VEC2 = 0x8dc6;\nconst GL_UNSIGNED_INT_VEC3 = 0x8dc7;\nconst GL_UNSIGNED_INT_VEC4 = 0x8dc8;\n\nconst GL_BOOL = 0x8b56;\nconst GL_BOOL_VEC2 = 0x8b57;\nconst GL_BOOL_VEC3 = 0x8b58;\nconst GL_BOOL_VEC4 = 0x8b59;\n\nconst GL_FLOAT_MAT2 = 0x8b5a;\nconst GL_FLOAT_MAT3 = 0x8b5b;\nconst GL_FLOAT_MAT4 = 0x8b5c;\n\nconst GL_FLOAT_MAT2x3 = 0x8b65;\nconst GL_FLOAT_MAT2x4 = 0x8b66;\nconst GL_FLOAT_MAT3x2 = 0x8b67;\nconst GL_FLOAT_MAT3x4 = 0x8b68;\nconst GL_FLOAT_MAT4x2 = 0x8b69;\nconst GL_FLOAT_MAT4x3 = 0x8b6a;\n\n// Composite types table\nconst COMPOSITE_GL_TYPES = {\n [GL_FLOAT]: [GL_FLOAT, 1, 'float'],\n [GL_FLOAT_VEC2]: [GL_FLOAT, 2, 'vec2'],\n [GL_FLOAT_VEC3]: [GL_FLOAT, 3, 'vec3'],\n [GL_FLOAT_VEC4]: [GL_FLOAT, 4, 'vec4'],\n\n [GL_INT]: [GL_INT, 1, 'int'],\n [GL_INT_VEC2]: [GL_INT, 2, 'ivec2'],\n [GL_INT_VEC3]: [GL_INT, 3, 'ivec3'],\n [GL_INT_VEC4]: [GL_INT, 4, 'ivec4'],\n\n [GL_UNSIGNED_INT]: [GL_UNSIGNED_INT, 1, 'uint'],\n [GL_UNSIGNED_INT_VEC2]: [GL_UNSIGNED_INT, 2, 'uvec2'],\n [GL_UNSIGNED_INT_VEC3]: [GL_UNSIGNED_INT, 3, 'uvec3'],\n [GL_UNSIGNED_INT_VEC4]: [GL_UNSIGNED_INT, 4, 'uvec4'],\n\n [GL_BOOL]: [GL_FLOAT, 1, 'bool'],\n [GL_BOOL_VEC2]: [GL_FLOAT, 2, 'bvec2'],\n [GL_BOOL_VEC3]: [GL_FLOAT, 3, 'bvec3'],\n [GL_BOOL_VEC4]: [GL_FLOAT, 4, 'bvec4'],\n\n [GL_FLOAT_MAT2]: [GL_FLOAT, 8, 'mat2'], // 4\n [GL_FLOAT_MAT2x3]: [GL_FLOAT, 8, 'mat2x3'], // 6\n [GL_FLOAT_MAT2x4]: [GL_FLOAT, 8, 'mat2x4'], // 8\n\n [GL_FLOAT_MAT3]: [GL_FLOAT, 12, 'mat3'], // 9\n [GL_FLOAT_MAT3x2]: [GL_FLOAT, 12, 'mat3x2'], // 6\n [GL_FLOAT_MAT3x4]: [GL_FLOAT, 12, 'mat3x4'], // 12\n\n [GL_FLOAT_MAT4]: [GL_FLOAT, 16, 'mat4'], // 16\n [GL_FLOAT_MAT4x2]: [GL_FLOAT, 16, 'mat4x2'], // 8\n [GL_FLOAT_MAT4x3]: [GL_FLOAT, 16, 'mat4x3'] // 12\n};\n\n// Counts the number of complete primitives given a number of vertices and a drawMode\nexport function getPrimitiveDrawMode(drawMode) {\n switch (drawMode) {\n case GL_POINTS:\n return GL_POINTS;\n case GL_LINES:\n return GL_LINES;\n case GL_LINE_STRIP:\n return GL_LINES;\n case GL_LINE_LOOP:\n return GL_LINES;\n case GL_TRIANGLES:\n return GL_TRIANGLES;\n case GL_TRIANGLE_STRIP:\n return GL_TRIANGLES;\n case GL_TRIANGLE_FAN:\n return GL_TRIANGLES;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Counts the number of complete \"primitives\" given a number of vertices and a drawMode\nexport function getPrimitiveCount({drawMode, vertexCount}) {\n switch (drawMode) {\n case GL_POINTS:\n case GL_LINE_LOOP:\n return vertexCount;\n case GL_LINES:\n return vertexCount / 2;\n case GL_LINE_STRIP:\n return vertexCount - 1;\n case GL_TRIANGLES:\n return vertexCount / 3;\n case GL_TRIANGLE_STRIP:\n case GL_TRIANGLE_FAN:\n return vertexCount - 2;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Counts the number of vertices after splitting the vertex stream into separate \"primitives\"\nexport function getVertexCount({drawMode, vertexCount}) {\n const primitiveCount = getPrimitiveCount({drawMode, vertexCount});\n switch (getPrimitiveDrawMode(drawMode)) {\n case GL_POINTS:\n return primitiveCount;\n case GL_LINES:\n return primitiveCount * 2;\n case GL_TRIANGLES:\n return primitiveCount * 3;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Decomposes a composite type GL.VEC3 into a basic type (GL.FLOAT) and components (3)\nexport function decomposeCompositeGLType(compositeGLType) {\n const typeAndSize = COMPOSITE_GL_TYPES[compositeGLType];\n if (!typeAndSize) {\n return null;\n }\n const [type, components] = typeAndSize;\n return {type, components};\n}\n\nexport function getCompositeGLType(type, components) {\n switch (type) {\n case GL_BYTE:\n case GL_UNSIGNED_BYTE:\n case GL_SHORT:\n case GL_UNSIGNED_SHORT:\n type = GL_FLOAT;\n break;\n default:\n }\n\n for (const glType in COMPOSITE_GL_TYPES) {\n const [compType, compComponents, name] = COMPOSITE_GL_TYPES[glType];\n if (compType === type && compComponents === components) {\n return {glType, name};\n }\n }\n return null;\n}\n"],"file":"attribute-utils.js"}
|
|
1
|
+
{"version":3,"file":"attribute-utils.js","names":["GL_BYTE","GL_UNSIGNED_BYTE","GL_SHORT","GL_UNSIGNED_SHORT","GL_POINTS","GL_LINES","GL_LINE_LOOP","GL_LINE_STRIP","GL_TRIANGLES","GL_TRIANGLE_STRIP","GL_TRIANGLE_FAN","GL_FLOAT","GL_FLOAT_VEC2","GL_FLOAT_VEC3","GL_FLOAT_VEC4","GL_INT","GL_INT_VEC2","GL_INT_VEC3","GL_INT_VEC4","GL_UNSIGNED_INT","GL_UNSIGNED_INT_VEC2","GL_UNSIGNED_INT_VEC3","GL_UNSIGNED_INT_VEC4","GL_BOOL","GL_BOOL_VEC2","GL_BOOL_VEC3","GL_BOOL_VEC4","GL_FLOAT_MAT2","GL_FLOAT_MAT3","GL_FLOAT_MAT4","GL_FLOAT_MAT2x3","GL_FLOAT_MAT2x4","GL_FLOAT_MAT3x2","GL_FLOAT_MAT3x4","GL_FLOAT_MAT4x2","GL_FLOAT_MAT4x3","COMPOSITE_GL_TYPES","getPrimitiveDrawMode","drawMode","assert","getPrimitiveCount","vertexCount","getVertexCount","primitiveCount","decomposeCompositeGLType","compositeGLType","typeAndSize","type","components","getCompositeGLType","glType","compType","compComponents","name"],"sources":["../../../src/webgl-utils/attribute-utils.js"],"sourcesContent":["/* eslint-disable camelcase */\nimport {assert} from '../utils/assert';\n\nconst GL_BYTE = 0x1400;\nconst GL_UNSIGNED_BYTE = 0x1401;\nconst GL_SHORT = 0x1402;\nconst GL_UNSIGNED_SHORT = 0x1403;\n\nconst GL_POINTS = 0x0;\nconst GL_LINES = 0x1;\nconst GL_LINE_LOOP = 0x2;\nconst GL_LINE_STRIP = 0x3;\nconst GL_TRIANGLES = 0x4;\nconst GL_TRIANGLE_STRIP = 0x5;\nconst GL_TRIANGLE_FAN = 0x6;\n\n// Local constants - these will \"collapse\" during minification\nconst GL_FLOAT = 0x1406;\nconst GL_FLOAT_VEC2 = 0x8b50;\nconst GL_FLOAT_VEC3 = 0x8b51;\nconst GL_FLOAT_VEC4 = 0x8b52;\n\nconst GL_INT = 0x1404;\nconst GL_INT_VEC2 = 0x8b53;\nconst GL_INT_VEC3 = 0x8b54;\nconst GL_INT_VEC4 = 0x8b55;\n\nconst GL_UNSIGNED_INT = 0x1405;\nconst GL_UNSIGNED_INT_VEC2 = 0x8dc6;\nconst GL_UNSIGNED_INT_VEC3 = 0x8dc7;\nconst GL_UNSIGNED_INT_VEC4 = 0x8dc8;\n\nconst GL_BOOL = 0x8b56;\nconst GL_BOOL_VEC2 = 0x8b57;\nconst GL_BOOL_VEC3 = 0x8b58;\nconst GL_BOOL_VEC4 = 0x8b59;\n\nconst GL_FLOAT_MAT2 = 0x8b5a;\nconst GL_FLOAT_MAT3 = 0x8b5b;\nconst GL_FLOAT_MAT4 = 0x8b5c;\n\nconst GL_FLOAT_MAT2x3 = 0x8b65;\nconst GL_FLOAT_MAT2x4 = 0x8b66;\nconst GL_FLOAT_MAT3x2 = 0x8b67;\nconst GL_FLOAT_MAT3x4 = 0x8b68;\nconst GL_FLOAT_MAT4x2 = 0x8b69;\nconst GL_FLOAT_MAT4x3 = 0x8b6a;\n\n// Composite types table\nconst COMPOSITE_GL_TYPES = {\n [GL_FLOAT]: [GL_FLOAT, 1, 'float'],\n [GL_FLOAT_VEC2]: [GL_FLOAT, 2, 'vec2'],\n [GL_FLOAT_VEC3]: [GL_FLOAT, 3, 'vec3'],\n [GL_FLOAT_VEC4]: [GL_FLOAT, 4, 'vec4'],\n\n [GL_INT]: [GL_INT, 1, 'int'],\n [GL_INT_VEC2]: [GL_INT, 2, 'ivec2'],\n [GL_INT_VEC3]: [GL_INT, 3, 'ivec3'],\n [GL_INT_VEC4]: [GL_INT, 4, 'ivec4'],\n\n [GL_UNSIGNED_INT]: [GL_UNSIGNED_INT, 1, 'uint'],\n [GL_UNSIGNED_INT_VEC2]: [GL_UNSIGNED_INT, 2, 'uvec2'],\n [GL_UNSIGNED_INT_VEC3]: [GL_UNSIGNED_INT, 3, 'uvec3'],\n [GL_UNSIGNED_INT_VEC4]: [GL_UNSIGNED_INT, 4, 'uvec4'],\n\n [GL_BOOL]: [GL_FLOAT, 1, 'bool'],\n [GL_BOOL_VEC2]: [GL_FLOAT, 2, 'bvec2'],\n [GL_BOOL_VEC3]: [GL_FLOAT, 3, 'bvec3'],\n [GL_BOOL_VEC4]: [GL_FLOAT, 4, 'bvec4'],\n\n [GL_FLOAT_MAT2]: [GL_FLOAT, 8, 'mat2'], // 4\n [GL_FLOAT_MAT2x3]: [GL_FLOAT, 8, 'mat2x3'], // 6\n [GL_FLOAT_MAT2x4]: [GL_FLOAT, 8, 'mat2x4'], // 8\n\n [GL_FLOAT_MAT3]: [GL_FLOAT, 12, 'mat3'], // 9\n [GL_FLOAT_MAT3x2]: [GL_FLOAT, 12, 'mat3x2'], // 6\n [GL_FLOAT_MAT3x4]: [GL_FLOAT, 12, 'mat3x4'], // 12\n\n [GL_FLOAT_MAT4]: [GL_FLOAT, 16, 'mat4'], // 16\n [GL_FLOAT_MAT4x2]: [GL_FLOAT, 16, 'mat4x2'], // 8\n [GL_FLOAT_MAT4x3]: [GL_FLOAT, 16, 'mat4x3'] // 12\n};\n\n// Counts the number of complete primitives given a number of vertices and a drawMode\nexport function getPrimitiveDrawMode(drawMode) {\n switch (drawMode) {\n case GL_POINTS:\n return GL_POINTS;\n case GL_LINES:\n return GL_LINES;\n case GL_LINE_STRIP:\n return GL_LINES;\n case GL_LINE_LOOP:\n return GL_LINES;\n case GL_TRIANGLES:\n return GL_TRIANGLES;\n case GL_TRIANGLE_STRIP:\n return GL_TRIANGLES;\n case GL_TRIANGLE_FAN:\n return GL_TRIANGLES;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Counts the number of complete \"primitives\" given a number of vertices and a drawMode\nexport function getPrimitiveCount({drawMode, vertexCount}) {\n switch (drawMode) {\n case GL_POINTS:\n case GL_LINE_LOOP:\n return vertexCount;\n case GL_LINES:\n return vertexCount / 2;\n case GL_LINE_STRIP:\n return vertexCount - 1;\n case GL_TRIANGLES:\n return vertexCount / 3;\n case GL_TRIANGLE_STRIP:\n case GL_TRIANGLE_FAN:\n return vertexCount - 2;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Counts the number of vertices after splitting the vertex stream into separate \"primitives\"\nexport function getVertexCount({drawMode, vertexCount}) {\n const primitiveCount = getPrimitiveCount({drawMode, vertexCount});\n switch (getPrimitiveDrawMode(drawMode)) {\n case GL_POINTS:\n return primitiveCount;\n case GL_LINES:\n return primitiveCount * 2;\n case GL_TRIANGLES:\n return primitiveCount * 3;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Decomposes a composite type GL.VEC3 into a basic type (GL.FLOAT) and components (3)\nexport function decomposeCompositeGLType(compositeGLType) {\n const typeAndSize = COMPOSITE_GL_TYPES[compositeGLType];\n if (!typeAndSize) {\n return null;\n }\n const [type, components] = typeAndSize;\n return {type, components};\n}\n\nexport function getCompositeGLType(type, components) {\n switch (type) {\n case GL_BYTE:\n case GL_UNSIGNED_BYTE:\n case GL_SHORT:\n case GL_UNSIGNED_SHORT:\n type = GL_FLOAT;\n break;\n default:\n }\n\n for (const glType in COMPOSITE_GL_TYPES) {\n const [compType, compComponents, name] = COMPOSITE_GL_TYPES[glType];\n if (compType === type && compComponents === components) {\n return {glType, name};\n }\n }\n return null;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"constants-to-keys.js","names":["getKeyValue","gl","name","number","Number","isNaN","replace","value","assert","undefined","getKey","key","String","getKeyType"],"sources":["../../../src/webgl-utils/constants-to-keys.js"],"sourcesContent":["import {assert} from '../utils/assert';\n\n// Resolve a WebGL enumeration name (returns itself if already a number)\nexport function getKeyValue(gl, name) {\n // If not a string, return (assume number)\n if (typeof name !== 'string') {\n return name;\n }\n\n // If string converts to number, return number\n const number = Number(name);\n if (!isNaN(number)) {\n return number;\n }\n\n // Look up string, after removing any 'GL.' or 'gl.' prefix\n name = name.replace(/^.*\\./, '');\n const value = gl[name];\n assert(value !== undefined, `Accessing undefined constant GL.${name}`);\n return value;\n}\n\nexport function getKey(gl, value) {\n value = Number(value);\n for (const key in gl) {\n if (gl[key] === value) {\n return `GL.${key}`;\n }\n }\n return String(value);\n}\n\nexport function getKeyType(gl, value) {\n assert(value !== undefined, 'undefined key');\n value = Number(value);\n for (const key in gl) {\n if (gl[key] === value) {\n return `GL.${key}`;\n }\n }\n return String(value);\n}\n"],"mappings":";;;;;;;;;AAAA;;AAGO,SAASA,WAAT,CAAqBC,EAArB,EAAyBC,IAAzB,EAA+B;EAEpC,IAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;IAC5B,OAAOA,IAAP;EACD;;EAGD,IAAMC,MAAM,GAAGC,MAAM,CAACF,IAAD,CAArB;;EACA,IAAI,CAACG,KAAK,CAACF,MAAD,CAAV,EAAoB;IAClB,OAAOA,MAAP;EACD;;EAGDD,IAAI,GAAGA,IAAI,CAACI,OAAL,CAAa,OAAb,EAAsB,EAAtB,CAAP;EACA,IAAMC,KAAK,GAAGN,EAAE,CAACC,IAAD,CAAhB;EACA,IAAAM,cAAA,EAAOD,KAAK,KAAKE,SAAjB,4CAA+DP,IAA/D;EACA,OAAOK,KAAP;AACD;;AAEM,SAASG,MAAT,CAAgBT,EAAhB,EAAoBM,KAApB,EAA2B;EAChCA,KAAK,GAAGH,MAAM,CAACG,KAAD,CAAd;;EACA,KAAK,IAAMI,GAAX,IAAkBV,EAAlB,EAAsB;IACpB,IAAIA,EAAE,CAACU,GAAD,CAAF,KAAYJ,KAAhB,EAAuB;MACrB,oBAAaI,GAAb;IACD;EACF;;EACD,OAAOC,MAAM,CAACL,KAAD,CAAb;AACD;;AAEM,SAASM,UAAT,CAAoBZ,EAApB,EAAwBM,KAAxB,EAA+B;EACpC,IAAAC,cAAA,EAAOD,KAAK,KAAKE,SAAjB,EAA4B,eAA5B;EACAF,KAAK,GAAGH,MAAM,CAACG,KAAD,CAAd;;EACA,KAAK,IAAMI,GAAX,IAAkBV,EAAlB,EAAsB;IACpB,IAAIA,EAAE,CAACU,GAAD,CAAF,KAAYJ,KAAhB,EAAuB;MACrB,oBAAaI,GAAb;IACD;EACF;;EACD,OAAOC,MAAM,CAACL,KAAD,CAAb;AACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"format-utils.js","names":["glFormatToComponents","format","assert","glTypeToBytes","type"],"sources":["../../../src/webgl-utils/format-utils.js"],"sourcesContent":["import GL from '@luma.gl/constants';\nimport {assert} from '../utils/assert';\n\n// Returns number of components in a specific readPixels WebGL format\nexport function glFormatToComponents(format) {\n switch (format) {\n case GL.ALPHA:\n case GL.R32F:\n case GL.RED:\n return 1;\n case GL.RG32F:\n case GL.RG:\n return 2;\n case GL.RGB:\n case GL.RGB32F:\n return 3;\n case GL.RGBA:\n case GL.RGBA32F:\n return 4;\n // TODO: Add support for additional WebGL2 formats\n default:\n assert(false);\n return 0;\n }\n}\n\n// Return byte count for given readPixels WebGL type\nexport function glTypeToBytes(type) {\n switch (type) {\n case GL.UNSIGNED_BYTE:\n return 1;\n case GL.UNSIGNED_SHORT_5_6_5:\n case GL.UNSIGNED_SHORT_4_4_4_4:\n case GL.UNSIGNED_SHORT_5_5_5_1:\n return 2;\n case GL.FLOAT:\n return 4;\n // TODO: Add support for additional WebGL2 types\n default:\n assert(false);\n return 0;\n }\n}\n"],"mappings":";;;;;;;;AACA;;AAGO,SAASA,oBAAT,CAA8BC,MAA9B,EAAsC;EAC3C,QAAQA,MAAR;IACE;IACA;IACA;MACE,OAAO,CAAP;;IACF;IACA;MACE,OAAO,CAAP;;IACF;IACA;MACE,OAAO,CAAP;;IACF;IACA;MACE,OAAO,CAAP;;IAEF;MACE,IAAAC,cAAA,EAAO,KAAP;MACA,OAAO,CAAP;EAjBJ;AAmBD;;AAGM,SAASC,aAAT,CAAuBC,IAAvB,EAA6B;EAClC,QAAQA,IAAR;IACE;MACE,OAAO,CAAP;;IACF;IACA;IACA;MACE,OAAO,CAAP;;IACF;MACE,OAAO,CAAP;;IAEF;MACE,IAAAF,cAAA,EAAO,KAAP;MACA,OAAO,CAAP;EAZJ;AAcD"}
|
|
@@ -5,8 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.glGetError = glGetError;
|
|
9
8
|
exports.glCheckError = glCheckError;
|
|
9
|
+
exports.glGetError = glGetError;
|
|
10
10
|
|
|
11
11
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
12
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"get-error.js","names":["GL_NO_ERROR","GL_INVALID_ENUM","GL_INVALID_VALUE","GL_INVALID_OPERATION","GL_OUT_OF_MEMORY","GL_CONTEXT_LOST_WEBGL","GL_INVALID_FRAMEBUFFER_OPERATION","GL_ERROR_MESSAGES","glGetErrorMessage","gl","glError","glGetError","errorStack","getError","push","length","Error","join","glCheckError","debug","error"],"sources":["../../../src/webgl-utils/get-error.js"],"sourcesContent":["// Helper definitions for validation of webgl parameters\n/* eslint-disable no-inline-comments, max-len */\n\n// Errors - Constants returned from getError().\nconst GL_NO_ERROR = 0; // Returned from getError.\nconst GL_INVALID_ENUM = 0x0500; // Returned from getError.\nconst GL_INVALID_VALUE = 0x0501; // Returned from getError.\nconst GL_INVALID_OPERATION = 0x0502; // Returned from getError.\nconst GL_OUT_OF_MEMORY = 0x0505; // Returned from getError.\nconst GL_CONTEXT_LOST_WEBGL = 0x9242; // Returned from getError.\nconst GL_INVALID_FRAMEBUFFER_OPERATION = 0x0506;\n\n// GL errors\n\nconst GL_ERROR_MESSAGES = {\n // If the WebGL context is lost, this error is returned on the\n // first call to getError. Afterwards and until the context has been\n // restored, it returns gl.NO_ERROR.\n [GL_CONTEXT_LOST_WEBGL]: 'WebGL context lost',\n // An unacceptable value has been specified for an enumerated argument.\n [GL_INVALID_ENUM]: 'WebGL invalid enumerated argument',\n // A numeric argument is out of range.\n [GL_INVALID_VALUE]: 'WebGL invalid value',\n // The specified command is not allowed for the current state.\n [GL_INVALID_OPERATION]: 'WebGL invalid operation',\n // The currently bound framebuffer is not framebuffer complete\n // when trying to render to or to read from it.\n [GL_INVALID_FRAMEBUFFER_OPERATION]: 'WebGL invalid framebuffer operation',\n // Not enough memory is left to execute the command.\n [GL_OUT_OF_MEMORY]: 'WebGL out of memory'\n};\n\nfunction glGetErrorMessage(gl, glError) {\n return GL_ERROR_MESSAGES[glError] || `WebGL unknown error ${glError}`;\n}\n\n// Returns an Error representing the Latest webGl error or null\nexport function glGetError(gl) {\n // Loop to ensure all errors are cleared\n const errorStack = [];\n let glError = gl.getError();\n while (glError !== GL_NO_ERROR) {\n errorStack.push(glGetErrorMessage(gl, glError));\n glError = gl.getError();\n }\n return errorStack.length ? new Error(errorStack.join('\\n')) : null;\n}\n\nexport function glCheckError(gl) {\n if (gl.debug) {\n const error = glGetError(gl);\n if (error) {\n throw error;\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAIA,IAAMA,WAAW,GAAG,CAApB;AACA,IAAMC,eAAe,GAAG,MAAxB;AACA,IAAMC,gBAAgB,GAAG,MAAzB;AACA,IAAMC,oBAAoB,GAAG,MAA7B;AACA,IAAMC,gBAAgB,GAAG,MAAzB;AACA,IAAMC,qBAAqB,GAAG,MAA9B;AACA,IAAMC,gCAAgC,GAAG,MAAzC;AAIA,IAAMC,iBAAiB,+EAIpBF,qBAJoB,EAII,oBAJJ,qDAMpBJ,eANoB,EAMF,mCANE,qDAQpBC,gBARoB,EAQD,qBARC,qDAUpBC,oBAVoB,EAUG,yBAVH,qDAapBG,gCAboB,EAae,qCAbf,qDAepBF,gBAfoB,EAeD,qBAfC,sBAAvB;;AAkBA,SAASI,iBAAT,CAA2BC,EAA3B,EAA+BC,OAA/B,EAAwC;EACtC,OAAOH,iBAAiB,CAACG,OAAD,CAAjB,kCAAqDA,OAArD,CAAP;AACD;;AAGM,SAASC,UAAT,CAAoBF,EAApB,EAAwB;EAE7B,IAAMG,UAAU,GAAG,EAAnB;EACA,IAAIF,OAAO,GAAGD,EAAE,CAACI,QAAH,EAAd;;EACA,OAAOH,OAAO,KAAKV,WAAnB,EAAgC;IAC9BY,UAAU,CAACE,IAAX,CAAgBN,iBAAiB,CAACC,EAAD,EAAKC,OAAL,CAAjC;IACAA,OAAO,GAAGD,EAAE,CAACI,QAAH,EAAV;EACD;;EACD,OAAOD,UAAU,CAACG,MAAX,GAAoB,IAAIC,KAAJ,CAAUJ,UAAU,CAACK,IAAX,CAAgB,IAAhB,CAAV,CAApB,GAAuD,IAA9D;AACD;;AAEM,SAASC,YAAT,CAAsBT,EAAtB,EAA0B;EAC/B,IAAIA,EAAE,CAACU,KAAP,EAAc;IACZ,IAAMC,KAAK,GAAGT,UAAU,CAACF,EAAD,CAAxB;;IACA,IAAIW,KAAJ,EAAW;MACT,MAAMA,KAAN;IACD;EACF;AACF"}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.requestAnimationFrame = requestAnimationFrame;
|
|
7
6
|
exports.cancelAnimationFrame = cancelAnimationFrame;
|
|
7
|
+
exports.requestAnimationFrame = requestAnimationFrame;
|
|
8
8
|
|
|
9
9
|
function requestAnimationFrame(callback) {
|
|
10
10
|
return typeof window !== 'undefined' && window.requestAnimationFrame ? window.requestAnimationFrame(callback) : setTimeout(callback, 1000 / 60);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"request-animation-frame.js","names":["requestAnimationFrame","callback","window","setTimeout","cancelAnimationFrame","timerId","clearTimeout"],"sources":["../../../src/webgl-utils/request-animation-frame.js"],"sourcesContent":["// Node.js polyfills for requestAnimationFrame and cancelAnimationFrame\n\nexport function requestAnimationFrame(callback) {\n return typeof window !== 'undefined' && window.requestAnimationFrame\n ? window.requestAnimationFrame(callback)\n : setTimeout(callback, 1000 / 60);\n}\n\nexport function cancelAnimationFrame(timerId) {\n return typeof window !== 'undefined' && window.cancelAnimationFrame\n ? window.cancelAnimationFrame(timerId)\n : clearTimeout(timerId);\n}\n"],"mappings":";;;;;;;;AAEO,SAASA,qBAAT,CAA+BC,QAA/B,EAAyC;EAC9C,OAAO,OAAOC,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAACF,qBAAxC,GACHE,MAAM,CAACF,qBAAP,CAA6BC,QAA7B,CADG,GAEHE,UAAU,CAACF,QAAD,EAAW,OAAO,EAAlB,CAFd;AAGD;;AAEM,SAASG,oBAAT,CAA8BC,OAA9B,EAAuC;EAC5C,OAAO,OAAOH,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAACE,oBAAxC,GACHF,MAAM,CAACE,oBAAP,CAA4BC,OAA5B,CADG,GAEHC,YAAY,CAACD,OAAD,CAFhB;AAGD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"texture-utils.js","names":["cloneTextureFrom","refTexture","overrides","assert","Texture2D","TextureCube","Texture3D","TextureType","constructor","gl","width","height","format","type","dataFormat","border","mipmaps","textureOptions","Object","assign","toFramebuffer","texture","opts","id","framebuffer","Framebuffer","attachments"],"sources":["../../../src/webgl-utils/texture-utils.js"],"sourcesContent":["// TODO: Two subdirectories must not depend on each other (classes vs utils)!\nimport Texture2D from '../classes/texture-2d';\nimport TextureCube from '../classes/texture-cube';\nimport Texture3D from '../classes/texture-3d';\nimport Framebuffer from '../classes/framebuffer';\nimport GL from '@luma.gl/constants';\nimport {assert} from '../utils/assert';\n\n// Clone a new texture object from a reference texture object.\n/** @type {import('./texture-utils').cloneTextureFrom} */\nexport function cloneTextureFrom(refTexture, overrides) {\n assert(\n refTexture instanceof Texture2D ||\n refTexture instanceof TextureCube ||\n refTexture instanceof Texture3D\n );\n\n const TextureType = refTexture.constructor;\n\n // @ts-expect-error\n const {gl, width, height, format, type, dataFormat, border, mipmaps} = refTexture;\n\n const textureOptions = Object.assign(\n {\n width,\n height,\n format,\n type,\n dataFormat,\n border,\n mipmaps\n },\n overrides\n );\n\n // TODO: move this to `Texture` class as instance method and use this.constructor\n // @ts-expect-error\n return new TextureType(gl, textureOptions);\n}\n\n// Wraps a given texture into a framebuffer object, that can be further used\n// to read data from the texture object.\n/** @type {import('./texture-utils').toFramebuffer} */\nexport function toFramebuffer(texture, opts) {\n const {gl, width, height, id} = texture;\n const framebuffer = new Framebuffer(\n gl,\n Object.assign({}, opts, {\n id: `framebuffer-for-${id}`,\n width,\n height,\n attachments: {\n [GL.COLOR_ATTACHMENT0]: texture\n }\n })\n );\n return framebuffer;\n}\n"],"mappings":";;;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAIO,SAASA,gBAAT,CAA0BC,UAA1B,EAAsCC,SAAtC,EAAiD;EACtD,IAAAC,cAAA,EACEF,UAAU,YAAYG,kBAAtB,IACEH,UAAU,YAAYI,oBADxB,IAEEJ,UAAU,YAAYK,kBAH1B;EAMA,IAAMC,WAAW,GAAGN,UAAU,CAACO,WAA/B;EAGA,IAAOC,EAAP,GAAuER,UAAvE,CAAOQ,EAAP;EAAA,IAAWC,KAAX,GAAuET,UAAvE,CAAWS,KAAX;EAAA,IAAkBC,MAAlB,GAAuEV,UAAvE,CAAkBU,MAAlB;EAAA,IAA0BC,MAA1B,GAAuEX,UAAvE,CAA0BW,MAA1B;EAAA,IAAkCC,IAAlC,GAAuEZ,UAAvE,CAAkCY,IAAlC;EAAA,IAAwCC,UAAxC,GAAuEb,UAAvE,CAAwCa,UAAxC;EAAA,IAAoDC,MAApD,GAAuEd,UAAvE,CAAoDc,MAApD;EAAA,IAA4DC,OAA5D,GAAuEf,UAAvE,CAA4De,OAA5D;EAEA,IAAMC,cAAc,GAAGC,MAAM,CAACC,MAAP,CACrB;IACET,KAAK,EAALA,KADF;IAEEC,MAAM,EAANA,MAFF;IAGEC,MAAM,EAANA,MAHF;IAIEC,IAAI,EAAJA,IAJF;IAKEC,UAAU,EAAVA,UALF;IAMEC,MAAM,EAANA,MANF;IAOEC,OAAO,EAAPA;EAPF,CADqB,EAUrBd,SAVqB,CAAvB;EAeA,OAAO,IAAIK,WAAJ,CAAgBE,EAAhB,EAAoBQ,cAApB,CAAP;AACD;;AAKM,SAASG,aAAT,CAAuBC,OAAvB,EAAgCC,IAAhC,EAAsC;EAC3C,IAAOb,EAAP,GAAgCY,OAAhC,CAAOZ,EAAP;EAAA,IAAWC,KAAX,GAAgCW,OAAhC,CAAWX,KAAX;EAAA,IAAkBC,MAAlB,GAAgCU,OAAhC,CAAkBV,MAAlB;EAAA,IAA0BY,EAA1B,GAAgCF,OAAhC,CAA0BE,EAA1B;EACA,IAAMC,WAAW,GAAG,IAAIC,oBAAJ,CAClBhB,EADkB,EAElBS,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBG,IAAlB,EAAwB;IACtBC,EAAE,4BAAqBA,EAArB,CADoB;IAEtBb,KAAK,EAALA,KAFsB;IAGtBC,MAAM,EAANA,MAHsB;IAItBe,WAAW,2CACeL,OADf;EAJW,CAAxB,CAFkB,CAApB;EAWA,OAAOG,WAAP;AACD"}
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.flipRows = flipRows;
|
|
6
7
|
exports.getGLTypeFromTypedArray = getGLTypeFromTypedArray;
|
|
7
8
|
exports.getTypedArrayFromGLType = getTypedArrayFromGLType;
|
|
8
|
-
exports.flipRows = flipRows;
|
|
9
9
|
exports.scalePixels = scalePixels;
|
|
10
10
|
var ERR_TYPE_DEDUCTION = 'Failed to deduce GL constant from typed array';
|
|
11
11
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"typed-array-utils.js","names":["ERR_TYPE_DEDUCTION","getGLTypeFromTypedArray","arrayOrType","type","ArrayBuffer","isView","constructor","Float32Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray","Int8Array","Int16Array","Int32Array","Error","getTypedArrayFromGLType","glType","clamped","flipRows","data","width","height","bytesPerPixel","temp","bytesPerRow","y","topOffset","bottomOffset","set","subarray","copyWithin","scalePixels","newWidth","Math","round","newHeight","newData","x","c"],"sources":["../../../src/webgl-utils/typed-array-utils.js"],"sourcesContent":["import GL from '@luma.gl/constants';\n\nconst ERR_TYPE_DEDUCTION = 'Failed to deduce GL constant from typed array';\n\n// Converts TYPED ARRAYS to corresponding GL constant\n// Used to auto deduce gl parameter types\nexport function getGLTypeFromTypedArray(arrayOrType) {\n // If typed array, look up constructor\n const type = ArrayBuffer.isView(arrayOrType) ? arrayOrType.constructor : arrayOrType;\n switch (type) {\n case Float32Array:\n return GL.FLOAT;\n case Uint16Array:\n return GL.UNSIGNED_SHORT;\n case Uint32Array:\n return GL.UNSIGNED_INT;\n case Uint8Array:\n return GL.UNSIGNED_BYTE;\n case Uint8ClampedArray:\n return GL.UNSIGNED_BYTE;\n case Int8Array:\n return GL.BYTE;\n case Int16Array:\n return GL.SHORT;\n case Int32Array:\n return GL.INT;\n default:\n throw new Error(ERR_TYPE_DEDUCTION);\n }\n}\n\n// Converts GL constant to corresponding TYPED ARRAY\n// Used to auto deduce gl parameter types\n\n/* eslint-disable complexity */\nexport function getTypedArrayFromGLType(glType, {clamped = true} = {}) {\n // Sorted in some order of likelihood to reduce amount of comparisons\n switch (glType) {\n case GL.FLOAT:\n return Float32Array;\n case GL.UNSIGNED_SHORT:\n case GL.UNSIGNED_SHORT_5_6_5:\n case GL.UNSIGNED_SHORT_4_4_4_4:\n case GL.UNSIGNED_SHORT_5_5_5_1:\n return Uint16Array;\n case GL.UNSIGNED_INT:\n return Uint32Array;\n case GL.UNSIGNED_BYTE:\n return clamped ? Uint8ClampedArray : Uint8Array;\n case GL.BYTE:\n return Int8Array;\n case GL.SHORT:\n return Int16Array;\n case GL.INT:\n return Int32Array;\n default:\n throw new Error('Failed to deduce typed array type from GL constant');\n }\n}\n/* eslint-enable complexity */\n\n// Flip rows (can be used on arrays returned from `Framebuffer.readPixels`)\n// https://stackoverflow.com/questions/41969562/\n// how-can-i-flip-the-result-of-webglrenderingcontext-readpixels\nexport function flipRows({data, width, height, bytesPerPixel = 4, temp}) {\n const bytesPerRow = width * bytesPerPixel;\n\n // make a temp buffer to hold one row\n temp = temp || new Uint8Array(bytesPerRow);\n for (let y = 0; y < height / 2; ++y) {\n const topOffset = y * bytesPerRow;\n const bottomOffset = (height - y - 1) * bytesPerRow;\n // make copy of a row on the top half\n temp.set(data.subarray(topOffset, topOffset + bytesPerRow));\n // copy a row from the bottom half to the top\n data.copyWithin(topOffset, bottomOffset, bottomOffset + bytesPerRow);\n // copy the copy of the top half row to the bottom half\n data.set(temp, bottomOffset);\n }\n}\n\nexport function scalePixels({data, width, height}) {\n const newWidth = Math.round(width / 2);\n const newHeight = Math.round(height / 2);\n const newData = new Uint8Array(newWidth * newHeight * 4);\n for (let y = 0; y < newHeight; y++) {\n for (let x = 0; x < newWidth; x++) {\n for (let c = 0; c < 4; c++) {\n newData[(y * newWidth + x) * 4 + c] = data[(y * 2 * width + x * 2) * 4 + c];\n }\n }\n }\n return {data: newData, width: newWidth, height: newHeight};\n}\n"],"mappings":"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"}
|
package/dist/esm/bundle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","luma","module","exports","Object","assign"],"sources":["../../src/bundle.js"],"sourcesContent":["const moduleExports = require('./index');\n\n// @ts-ignore\nglobalThis.luma = globalThis.luma || {};\n\n// @ts-ignore\nmodule.exports = Object.assign(globalThis.luma, moduleExports);\n"],"mappings":"AAAA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AAGAC,UAAU,CAACC,IAAX,GAAkBD,UAAU,CAACC,IAAX,IAAmB,EAArC;AAGAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,IAAzB,EAA+BH,aAA/B,CAAjB"}
|
|
@@ -28,11 +28,19 @@ export default class Accessor {
|
|
|
28
28
|
return ArrayType.BYTES_PER_ELEMENT * accessor.size;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
static resolve(
|
|
31
|
+
static resolve() {
|
|
32
|
+
for (var _len = arguments.length, accessors = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
33
|
+
accessors[_key] = arguments[_key];
|
|
34
|
+
}
|
|
35
|
+
|
|
32
36
|
return new Accessor(...[DEFAULT_ACCESSOR_VALUES, ...accessors]);
|
|
33
37
|
}
|
|
34
38
|
|
|
35
|
-
constructor(
|
|
39
|
+
constructor() {
|
|
40
|
+
for (var _len2 = arguments.length, accessors = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
41
|
+
accessors[_key2] = arguments[_key2];
|
|
42
|
+
}
|
|
43
|
+
|
|
36
44
|
accessors.forEach(accessor => this._assign(accessor));
|
|
37
45
|
Object.freeze(this);
|
|
38
46
|
}
|
|
@@ -49,7 +57,8 @@ export default class Accessor {
|
|
|
49
57
|
return Accessor.getBytesPerVertex(this);
|
|
50
58
|
}
|
|
51
59
|
|
|
52
|
-
_assign(
|
|
60
|
+
_assign() {
|
|
61
|
+
let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
53
62
|
props = checkProps('Accessor', props, PROP_CHECKS);
|
|
54
63
|
|
|
55
64
|
if (props.type !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"accessor.js","names":["getTypedArrayFromGLType","assert","checkProps","DEFAULT_ACCESSOR_VALUES","offset","stride","type","size","divisor","normalized","integer","PROP_CHECKS","deprecatedProps","instanced","isInstanced","Accessor","getBytesPerElement","accessor","ArrayType","BYTES_PER_ELEMENT","getBytesPerVertex","resolve","accessors","constructor","forEach","_assign","Object","freeze","toString","JSON","stringify","BYTES_PER_VERTEX","props","undefined","buffer","index"],"sources":["../../../src/classes/accessor.js"],"sourcesContent":["import GL from '@luma.gl/constants';\nimport {getTypedArrayFromGLType} from '../webgl-utils/typed-array-utils';\nimport {assert} from '../utils/assert';\nimport {checkProps} from '../utils/check-props';\n\nconst DEFAULT_ACCESSOR_VALUES = {\n offset: 0,\n stride: 0,\n type: GL.FLOAT,\n size: 1,\n divisor: 0,\n normalized: false,\n integer: false\n};\n\nconst PROP_CHECKS = {\n deprecatedProps: {\n instanced: 'divisor',\n isInstanced: 'divisor'\n }\n};\n\nexport default class Accessor {\n static getBytesPerElement(accessor) {\n // TODO: using `FLOAT` when type is not specified,\n // ensure this assumption is valid or force API to specify type.\n const ArrayType = getTypedArrayFromGLType(accessor.type || GL.FLOAT);\n return ArrayType.BYTES_PER_ELEMENT;\n }\n\n static getBytesPerVertex(accessor) {\n assert(accessor.size);\n // TODO: using `FLOAT` when type is not specified,\n // ensure this assumption is valid or force API to specify type.\n const ArrayType = getTypedArrayFromGLType(accessor.type || GL.FLOAT);\n return ArrayType.BYTES_PER_ELEMENT * accessor.size;\n }\n\n // Combines (merges) a list of accessors. On top of default values\n // Usually [programAccessor, bufferAccessor, appAccessor]\n // All props will be set in the returned object.\n // TODO check for conflicts between values in the supplied accessors\n static resolve(...accessors) {\n return new Accessor(...[DEFAULT_ACCESSOR_VALUES, ...accessors]); // Default values\n }\n\n constructor(...accessors) {\n accessors.forEach(accessor => this._assign(accessor)); // Merge in sequence\n Object.freeze(this);\n }\n\n toString() {\n return JSON.stringify(this);\n }\n\n // ACCESSORS\n\n // TODO - remove>\n get BYTES_PER_ELEMENT() {\n return Accessor.getBytesPerElement(this);\n }\n\n get BYTES_PER_VERTEX() {\n return Accessor.getBytesPerVertex(this);\n }\n\n // PRIVATE\n\n // eslint-disable-next-line complexity, max-statements\n _assign(props = {}) {\n props = checkProps('Accessor', props, PROP_CHECKS);\n\n if (props.type !== undefined) {\n this.type = props.type;\n\n // Auto-deduce integer type?\n if (props.type === GL.INT || props.type === GL.UNSIGNED_INT) {\n this.integer = true;\n }\n }\n if (props.size !== undefined) {\n this.size = props.size;\n }\n if (props.offset !== undefined) {\n this.offset = props.offset;\n }\n if (props.stride !== undefined) {\n this.stride = props.stride;\n }\n if (props.normalized !== undefined) {\n this.normalized = props.normalized;\n }\n if (props.integer !== undefined) {\n this.integer = props.integer;\n }\n\n // INSTANCE DIVISOR\n if (props.divisor !== undefined) {\n this.divisor = props.divisor;\n }\n\n // Buffer is optional\n if (props.buffer !== undefined) {\n this.buffer = props.buffer;\n }\n\n // The binding index (for binding e.g. Transform feedbacks and Uniform buffers)\n // TODO - should this be part of accessor?\n if (props.index !== undefined) {\n if (typeof props.index === 'boolean') {\n this.index = props.index ? 1 : 0;\n } else {\n this.index = props.index;\n }\n }\n\n // DEPRECATED\n if (props.instanced !== undefined) {\n this.divisor = props.instanced ? 1 : 0;\n }\n if (props.isInstanced !== undefined) {\n this.divisor = props.isInstanced ? 1 : 0;\n }\n\n return this;\n }\n}\n\n// TEST EXPORTS\nexport {DEFAULT_ACCESSOR_VALUES};\n"],"mappings":"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"}
|
|
@@ -31,7 +31,8 @@ export default class Buffer extends Resource {
|
|
|
31
31
|
return 'Buffer';
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
constructor(gl
|
|
34
|
+
constructor(gl) {
|
|
35
|
+
let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
35
36
|
super(gl, props);
|
|
36
37
|
this.stubRemovedMethods('Buffer', 'v6.0', ['layout', 'setLayout', 'getIndexedParameter']);
|
|
37
38
|
this.target = props.target || (this.gl.webgl2 ? 36662 : 34962);
|
|
@@ -39,15 +40,19 @@ export default class Buffer extends Resource {
|
|
|
39
40
|
Object.seal(this);
|
|
40
41
|
}
|
|
41
42
|
|
|
42
|
-
getElementCount(
|
|
43
|
+
getElementCount() {
|
|
44
|
+
let accessor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.accessor;
|
|
43
45
|
return Math.round(this.byteLength / Accessor.getBytesPerElement(accessor));
|
|
44
46
|
}
|
|
45
47
|
|
|
46
|
-
getVertexCount(
|
|
48
|
+
getVertexCount() {
|
|
49
|
+
let accessor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.accessor;
|
|
47
50
|
return Math.round(this.byteLength / Accessor.getBytesPerVertex(accessor));
|
|
48
51
|
}
|
|
49
52
|
|
|
50
|
-
initialize(
|
|
53
|
+
initialize() {
|
|
54
|
+
let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
55
|
+
|
|
51
56
|
if (ArrayBuffer.isView(props)) {
|
|
52
57
|
props = {
|
|
53
58
|
data: props
|
|
@@ -138,12 +143,13 @@ export default class Buffer extends Resource {
|
|
|
138
143
|
return this;
|
|
139
144
|
}
|
|
140
145
|
|
|
141
|
-
copyData({
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
146
|
+
copyData(_ref) {
|
|
147
|
+
let {
|
|
148
|
+
sourceBuffer,
|
|
149
|
+
readOffset = 0,
|
|
150
|
+
writeOffset = 0,
|
|
151
|
+
size
|
|
152
|
+
} = _ref;
|
|
147
153
|
const {
|
|
148
154
|
gl
|
|
149
155
|
} = this;
|
|
@@ -157,12 +163,13 @@ export default class Buffer extends Resource {
|
|
|
157
163
|
return this;
|
|
158
164
|
}
|
|
159
165
|
|
|
160
|
-
getData({
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
+
getData() {
|
|
167
|
+
let {
|
|
168
|
+
dstData = null,
|
|
169
|
+
srcByteOffset = 0,
|
|
170
|
+
dstOffset = 0,
|
|
171
|
+
length = 0
|
|
172
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
166
173
|
assertWebGL2Context(this.gl);
|
|
167
174
|
const ArrayType = getTypedArrayFromGLType(this.accessor.type || 5126, {
|
|
168
175
|
clamped: false
|
|
@@ -192,12 +199,14 @@ export default class Buffer extends Resource {
|
|
|
192
199
|
return dstData;
|
|
193
200
|
}
|
|
194
201
|
|
|
195
|
-
bind({
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
202
|
+
bind() {
|
|
203
|
+
let {
|
|
204
|
+
target = this.target,
|
|
205
|
+
index = this.accessor && this.accessor.index,
|
|
206
|
+
offset = 0,
|
|
207
|
+
size
|
|
208
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
209
|
+
|
|
201
210
|
if (target === 35345 || target === 35982) {
|
|
202
211
|
if (size !== undefined) {
|
|
203
212
|
this.gl.bindBufferRange(target, index, this.handle, offset, size);
|
|
@@ -212,10 +221,11 @@ export default class Buffer extends Resource {
|
|
|
212
221
|
return this;
|
|
213
222
|
}
|
|
214
223
|
|
|
215
|
-
unbind({
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
224
|
+
unbind() {
|
|
225
|
+
let {
|
|
226
|
+
target = this.target,
|
|
227
|
+
index = this.accessor && this.accessor.index
|
|
228
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
219
229
|
const isIndexedBuffer = target === 35345 || target === 35982;
|
|
220
230
|
|
|
221
231
|
if (isIndexedBuffer) {
|
|
@@ -248,7 +258,9 @@ export default class Buffer extends Resource {
|
|
|
248
258
|
this.debugData = null;
|
|
249
259
|
}
|
|
250
260
|
|
|
251
|
-
_setData(data
|
|
261
|
+
_setData(data) {
|
|
262
|
+
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
263
|
+
let byteLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : data.byteLength + offset;
|
|
252
264
|
assert(ArrayBuffer.isView(data));
|
|
253
265
|
|
|
254
266
|
this._trackDeallocatedMemory();
|
|
@@ -272,7 +284,8 @@ export default class Buffer extends Resource {
|
|
|
272
284
|
return this;
|
|
273
285
|
}
|
|
274
286
|
|
|
275
|
-
_setByteLength(byteLength
|
|
287
|
+
_setByteLength(byteLength) {
|
|
288
|
+
let usage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.usage;
|
|
276
289
|
assert(byteLength >= 0);
|
|
277
290
|
|
|
278
291
|
this._trackDeallocatedMemory();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/classes/buffer.js"],"names":["Resource","Accessor","getGLTypeFromTypedArray","getTypedArrayFromGLType","assertWebGL2Context","log","assert","checkProps","DEBUG_DATA_LENGTH","DEPRECATED_PROPS","offset","stride","type","size","divisor","normalized","integer","instanced","isInstanced","PROP_CHECKS_INITIALIZE","removedProps","replacedProps","bytes","deprecatedProps","PROP_CHECKS_SET_PROPS","Buffer","Symbol","toStringTag","constructor","gl","props","stubRemovedMethods","target","webgl2","initialize","Object","seal","getElementCount","accessor","Math","round","byteLength","getBytesPerElement","getVertexCount","getBytesPerVertex","ArrayBuffer","isView","data","Number","isFinite","usage","debugData","setAccessor","assign","_setData","_setByteLength","setProps","buffer","reallocate","bytesUsed","setData","subData","srcOffset","length","bindBuffer","handle","undefined","bufferSubData","_inferType","copyData","sourceBuffer","readOffset","writeOffset","copyBufferSubData","getData","dstData","srcByteOffset","dstOffset","ArrayType","clamped","sourceAvailableElementCount","_getAvailableElementCount","dstElementOffset","dstAvailableElementCount","dstElementCount","min","copyElementCount","getBufferSubData","bind","index","bindBufferRange","bindBufferBase","unbind","isIndexedBuffer","getDebugData","changed","invalidateDebugData","_trackDeallocatedMemory","_getTarget","bufferData","slice","_trackAllocatedMemory","Float32Array","sourceElementOffset","BYTES_PER_ELEMENT","_createHandle","createBuffer","_deleteHandle","deleteBuffer","_getParameter","pname","value","getBufferParameter","deprecated","setByteLength","updateAccessor","opts"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport Resource from './resource';\nimport Accessor from './accessor';\nimport {getGLTypeFromTypedArray, getTypedArrayFromGLType} from '../webgl-utils/typed-array-utils';\nimport {assertWebGL2Context, log} from '@luma.gl/gltools';\nimport {assert} from '../utils/assert';\nimport {checkProps} from '../utils/check-props';\n\nconst DEBUG_DATA_LENGTH = 10;\n\n// Shared prop checks for constructor and setProps\nconst DEPRECATED_PROPS = {\n offset: 'accessor.offset',\n stride: 'accessor.stride',\n type: 'accessor.type',\n size: 'accessor.size',\n divisor: 'accessor.divisor',\n normalized: 'accessor.normalized',\n integer: 'accessor.integer',\n instanced: 'accessor.divisor',\n isInstanced: 'accessor.divisor'\n};\n\n// Prop checks for constructor\nconst PROP_CHECKS_INITIALIZE = {\n removedProps: {},\n replacedProps: {\n bytes: 'byteLength'\n },\n // new Buffer() with individual accessor props is still used in apps, emit warnings\n deprecatedProps: DEPRECATED_PROPS\n};\n\n// Prop checks for setProps\nconst PROP_CHECKS_SET_PROPS = {\n // Buffer.setProps() with individual accessor props is rare => emit errors\n removedProps: DEPRECATED_PROPS\n};\n\nexport default class Buffer extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Buffer';\n }\n constructor(gl, props = {}) {\n super(gl, props);\n\n this.stubRemovedMethods('Buffer', 'v6.0', ['layout', 'setLayout', 'getIndexedParameter']);\n // this.stubRemovedMethods('Buffer', 'v7.0', ['updateAccessor']);\n\n // In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers\n // otherwise buffer type will lock to generic (non-element) buffer\n // In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here\n this.target = props.target || (this.gl.webgl2 ? GL.COPY_READ_BUFFER : GL.ARRAY_BUFFER);\n\n this.initialize(props);\n\n Object.seal(this);\n }\n\n // returns number of elements in the buffer (assuming that the full buffer is used)\n getElementCount(accessor = this.accessor) {\n return Math.round(this.byteLength / Accessor.getBytesPerElement(accessor));\n }\n\n // returns number of vertices in the buffer (assuming that the full buffer is used)\n getVertexCount(accessor = this.accessor) {\n return Math.round(this.byteLength / Accessor.getBytesPerVertex(accessor));\n }\n\n // Creates and initializes the buffer object's data store.\n // Signature: `new Buffer(gl, {data: new Float32Array(...)})`\n // Signature: `new Buffer(gl, new Float32Array(...))`\n // Signature: `new Buffer(gl, 100)`\n initialize(props = {}) {\n // Signature `new Buffer(gl, new Float32Array(...)`\n if (ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n // Signature: `new Buffer(gl, 100)`\n if (Number.isFinite(props)) {\n props = {byteLength: props};\n }\n\n props = checkProps('Buffer', props, PROP_CHECKS_INITIALIZE);\n\n // Initialize member fields\n this.usage = props.usage || GL.STATIC_DRAW;\n this.debugData = null;\n\n // Deprecated: Merge main props and accessor\n this.setAccessor(Object.assign({}, props, props.accessor));\n\n // Set data: (re)initializes the buffer\n if (props.data) {\n this._setData(props.data, props.offset, props.byteLength);\n } else {\n this._setByteLength(props.byteLength || 0);\n }\n\n return this;\n }\n\n setProps(props) {\n props = checkProps('Buffer', props, PROP_CHECKS_SET_PROPS);\n\n if ('accessor' in props) {\n this.setAccessor(props.accessor);\n }\n\n return this;\n }\n\n // Optionally stores an accessor with the buffer, makes it easier to use it as an attribute later\n // {type, size = 1, offset = 0, stride = 0, normalized = false, integer = false, divisor = 0}\n setAccessor(accessor) {\n // NOTE: From luma.gl v7.0, Accessors have an optional `buffer `field\n // (mainly to support \"interleaving\")\n // To avoid confusion, ensure `buffer.accessor` does not have a `buffer.accessor.buffer` field:\n accessor = Object.assign({}, accessor);\n delete accessor.buffer;\n\n // This new statement ensures that an \"accessor object\" is re-packaged as an Accessor instance\n this.accessor = new Accessor(accessor);\n return this;\n }\n\n // Allocate a bigger GPU buffer (if the current buffer is not big enough).\n // If a reallocation is triggered it clears the buffer\n // Returns:\n // `true`: buffer was reallocated, data was cleared\n // `false`: buffer was big enough, data is intact\n reallocate(byteLength) {\n if (byteLength > this.byteLength) {\n this._setByteLength(byteLength);\n return true;\n }\n this.bytesUsed = byteLength;\n return false;\n }\n\n // Update with new data. Reinitializes the buffer\n setData(props) {\n return this.initialize(props);\n }\n\n // Updates a subset of a buffer object's data store.\n // Data (Typed Array or ArrayBuffer), length is inferred unless provided\n // Offset into buffer\n // WebGL2 only: Offset into srcData\n // WebGL2 only: Number of bytes to be copied\n subData(props) {\n // Signature: buffer.subData(new Float32Array([...]))\n if (ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n const {data, offset = 0, srcOffset = 0} = props;\n const byteLength = props.byteLength || props.length;\n\n assert(data);\n\n // Create the buffer - binding it here for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n const target = this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n this.gl.bindBuffer(target, this.handle);\n // WebGL2: subData supports additional srcOffset and length parameters\n if (srcOffset !== 0 || byteLength !== undefined) {\n assertWebGL2Context(this.gl);\n this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);\n } else {\n this.gl.bufferSubData(target, offset, data);\n }\n this.gl.bindBuffer(target, null);\n\n // TODO - update local `data` if offsets are right\n this.debugData = null;\n\n this._inferType(data);\n\n return this;\n }\n\n // WEBGL2 ONLY: Copies part of the data of another buffer into this buffer\n copyData({sourceBuffer, readOffset = 0, writeOffset = 0, size}) {\n const {gl} = this;\n assertWebGL2Context(gl);\n\n // Use GL.COPY_READ_BUFFER+GL.COPY_WRITE_BUFFER avoid disturbing other targets and locking type\n gl.bindBuffer(GL.COPY_READ_BUFFER, sourceBuffer.handle);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, this.handle);\n gl.copyBufferSubData(GL.COPY_READ_BUFFER, GL.COPY_WRITE_BUFFER, readOffset, writeOffset, size);\n gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n this.debugData = null;\n\n return this;\n }\n\n // WEBGL2 ONLY: Reads data from buffer into an ArrayBufferView or SharedArrayBuffer.\n getData({dstData = null, srcByteOffset = 0, dstOffset = 0, length = 0} = {}) {\n assertWebGL2Context(this.gl);\n\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceAvailableElementCount = this._getAvailableElementCount(srcByteOffset);\n\n const dstElementOffset = dstOffset;\n\n let dstAvailableElementCount;\n let dstElementCount;\n if (dstData) {\n dstElementCount = dstData.length;\n dstAvailableElementCount = dstElementCount - dstElementOffset;\n } else {\n // Allocate ArrayBufferView with enough size to copy all eligible data.\n dstAvailableElementCount = Math.min(\n sourceAvailableElementCount,\n length || sourceAvailableElementCount\n );\n dstElementCount = dstElementOffset + dstAvailableElementCount;\n }\n\n const copyElementCount = Math.min(sourceAvailableElementCount, dstAvailableElementCount);\n length = length || copyElementCount;\n assert(length <= copyElementCount);\n dstData = dstData || new ArrayType(dstElementCount);\n\n // Use GL.COPY_READ_BUFFER to avoid disturbing other targets and locking type\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);\n this.gl.getBufferSubData(GL.COPY_READ_BUFFER, srcByteOffset, dstData, dstOffset, length);\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n return dstData;\n }\n\n /**\n * Binds a buffer to a given binding point (target).\n * GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER take an index, and optionally a range.\n * - GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER need an index to affect state\n * - GL.UNIFORM_BUFFER: `offset` must be aligned to GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT.\n * - GL.UNIFORM_BUFFER: `size` must be a minimum of GL.UNIFORM_BLOCK_SIZE_DATA.\n */\n bind({\n target = this.target, // target for the bind operation\n index = this.accessor && this.accessor.index, // index = index of target (indexed bind point)\n offset = 0,\n size\n } = {}) {\n // NOTE: While GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER could\n // be used as direct binding points, they will not affect transform feedback or\n // uniform buffer state. Instead indexed bindings need to be made.\n if (target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER) {\n if (size !== undefined) {\n this.gl.bindBufferRange(target, index, this.handle, offset, size);\n } else {\n assert(offset === 0); // Make sure offset wasn't supplied\n this.gl.bindBufferBase(target, index, this.handle);\n }\n } else {\n this.gl.bindBuffer(target, this.handle);\n }\n\n return this;\n }\n\n unbind({target = this.target, index = this.accessor && this.accessor.index} = {}) {\n const isIndexedBuffer = target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER;\n if (isIndexedBuffer) {\n this.gl.bindBufferBase(target, index, null);\n } else {\n this.gl.bindBuffer(target, null);\n }\n return this;\n }\n\n // PROTECTED METHODS (INTENDED FOR USE BY OTHER FRAMEWORK CODE ONLY)\n\n // Returns a short initial data array\n getDebugData() {\n if (!this.debugData) {\n this.debugData = this.getData({length: Math.min(DEBUG_DATA_LENGTH, this.byteLength)});\n return {data: this.debugData, changed: true};\n }\n return {data: this.debugData, changed: false};\n }\n\n invalidateDebugData() {\n this.debugData = null;\n }\n\n // PRIVATE METHODS\n\n // Allocate a new buffer and initialize to contents of typed array\n _setData(data, offset = 0, byteLength = data.byteLength + offset) {\n assert(ArrayBuffer.isView(data));\n\n this._trackDeallocatedMemory();\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, byteLength, this.usage);\n this.gl.bufferSubData(target, offset, data);\n this.gl.bindBuffer(target, null);\n\n this.debugData = data.slice(0, DEBUG_DATA_LENGTH);\n this.bytesUsed = byteLength;\n\n this._trackAllocatedMemory(byteLength);\n\n // infer GL type from supplied typed array\n const type = getGLTypeFromTypedArray(data);\n assert(type);\n this.setAccessor(new Accessor(this.accessor, {type}));\n return this;\n }\n\n // Allocate a GPU buffer of specified size.\n _setByteLength(byteLength, usage = this.usage) {\n assert(byteLength >= 0);\n\n this._trackDeallocatedMemory();\n\n // Workaround needed for Safari (#291):\n // gl.bufferData with size equal to 0 crashes. Instead create zero sized array.\n let data = byteLength;\n if (byteLength === 0) {\n data = new Float32Array(0);\n }\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, data, usage);\n this.gl.bindBuffer(target, null);\n\n this.usage = usage;\n this.debugData = null;\n this.bytesUsed = byteLength;\n\n this._trackAllocatedMemory(byteLength);\n\n return this;\n }\n\n // Binding a buffer for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n _getTarget() {\n return this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n }\n\n _getAvailableElementCount(srcByteOffset) {\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceElementOffset = srcByteOffset / ArrayType.BYTES_PER_ELEMENT;\n return this.getElementCount() - sourceElementOffset;\n }\n\n // Automatically infers type from typed array passed to setData\n // Note: No longer that useful, since type is now autodeduced from the compiled shaders\n _inferType(data) {\n if (!this.accessor.type) {\n this.setAccessor(new Accessor(this.accessor, {type: getGLTypeFromTypedArray(data)}));\n }\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createBuffer();\n }\n\n _deleteHandle() {\n this.gl.deleteBuffer(this.handle);\n this._trackDeallocatedMemory();\n }\n\n _getParameter(pname) {\n this.gl.bindBuffer(this.target, this.handle);\n const value = this.gl.getBufferParameter(this.target, pname);\n this.gl.bindBuffer(this.target, null);\n return value;\n }\n\n // DEPRECATIONS - v7.0\n get type() {\n log.deprecated('Buffer.type', 'Buffer.accessor.type')();\n return this.accessor.type;\n }\n\n get bytes() {\n log.deprecated('Buffer.bytes', 'Buffer.byteLength')();\n return this.byteLength;\n }\n\n // DEPRECATIONS - v6.0\n // Deprecated in v6.x, but not warnings not properly implemented\n setByteLength(byteLength) {\n log.deprecated('setByteLength', 'reallocate')();\n return this.reallocate(byteLength);\n }\n\n // Deprecated in v6.x, but not warnings not properly implemented\n updateAccessor(opts) {\n log.deprecated('updateAccessor(...)', 'setAccessor(new Accessor(buffer.accessor, ...)')();\n this.accessor = new Accessor(this.accessor, opts);\n return this;\n }\n}\n"],"file":"buffer.js"}
|
|
1
|
+
{"version":3,"file":"buffer.js","names":["Resource","Accessor","getGLTypeFromTypedArray","getTypedArrayFromGLType","assertWebGL2Context","log","assert","checkProps","DEBUG_DATA_LENGTH","DEPRECATED_PROPS","offset","stride","type","size","divisor","normalized","integer","instanced","isInstanced","PROP_CHECKS_INITIALIZE","removedProps","replacedProps","bytes","deprecatedProps","PROP_CHECKS_SET_PROPS","Buffer","Symbol","toStringTag","constructor","gl","props","stubRemovedMethods","target","webgl2","initialize","Object","seal","getElementCount","accessor","Math","round","byteLength","getBytesPerElement","getVertexCount","getBytesPerVertex","ArrayBuffer","isView","data","Number","isFinite","usage","debugData","setAccessor","assign","_setData","_setByteLength","setProps","buffer","reallocate","bytesUsed","setData","subData","srcOffset","length","bindBuffer","handle","undefined","bufferSubData","_inferType","copyData","sourceBuffer","readOffset","writeOffset","copyBufferSubData","getData","dstData","srcByteOffset","dstOffset","ArrayType","clamped","sourceAvailableElementCount","_getAvailableElementCount","dstElementOffset","dstAvailableElementCount","dstElementCount","min","copyElementCount","getBufferSubData","bind","index","bindBufferRange","bindBufferBase","unbind","isIndexedBuffer","getDebugData","changed","invalidateDebugData","_trackDeallocatedMemory","_getTarget","bufferData","slice","_trackAllocatedMemory","Float32Array","sourceElementOffset","BYTES_PER_ELEMENT","_createHandle","createBuffer","_deleteHandle","deleteBuffer","_getParameter","pname","value","getBufferParameter","deprecated","setByteLength","updateAccessor","opts"],"sources":["../../../src/classes/buffer.js"],"sourcesContent":["import GL from '@luma.gl/constants';\nimport Resource from './resource';\nimport Accessor from './accessor';\nimport {getGLTypeFromTypedArray, getTypedArrayFromGLType} from '../webgl-utils/typed-array-utils';\nimport {assertWebGL2Context, log} from '@luma.gl/gltools';\nimport {assert} from '../utils/assert';\nimport {checkProps} from '../utils/check-props';\n\nconst DEBUG_DATA_LENGTH = 10;\n\n// Shared prop checks for constructor and setProps\nconst DEPRECATED_PROPS = {\n offset: 'accessor.offset',\n stride: 'accessor.stride',\n type: 'accessor.type',\n size: 'accessor.size',\n divisor: 'accessor.divisor',\n normalized: 'accessor.normalized',\n integer: 'accessor.integer',\n instanced: 'accessor.divisor',\n isInstanced: 'accessor.divisor'\n};\n\n// Prop checks for constructor\nconst PROP_CHECKS_INITIALIZE = {\n removedProps: {},\n replacedProps: {\n bytes: 'byteLength'\n },\n // new Buffer() with individual accessor props is still used in apps, emit warnings\n deprecatedProps: DEPRECATED_PROPS\n};\n\n// Prop checks for setProps\nconst PROP_CHECKS_SET_PROPS = {\n // Buffer.setProps() with individual accessor props is rare => emit errors\n removedProps: DEPRECATED_PROPS\n};\n\nexport default class Buffer extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Buffer';\n }\n constructor(gl, props = {}) {\n super(gl, props);\n\n this.stubRemovedMethods('Buffer', 'v6.0', ['layout', 'setLayout', 'getIndexedParameter']);\n // this.stubRemovedMethods('Buffer', 'v7.0', ['updateAccessor']);\n\n // In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers\n // otherwise buffer type will lock to generic (non-element) buffer\n // In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here\n this.target = props.target || (this.gl.webgl2 ? GL.COPY_READ_BUFFER : GL.ARRAY_BUFFER);\n\n this.initialize(props);\n\n Object.seal(this);\n }\n\n // returns number of elements in the buffer (assuming that the full buffer is used)\n getElementCount(accessor = this.accessor) {\n return Math.round(this.byteLength / Accessor.getBytesPerElement(accessor));\n }\n\n // returns number of vertices in the buffer (assuming that the full buffer is used)\n getVertexCount(accessor = this.accessor) {\n return Math.round(this.byteLength / Accessor.getBytesPerVertex(accessor));\n }\n\n // Creates and initializes the buffer object's data store.\n // Signature: `new Buffer(gl, {data: new Float32Array(...)})`\n // Signature: `new Buffer(gl, new Float32Array(...))`\n // Signature: `new Buffer(gl, 100)`\n initialize(props = {}) {\n // Signature `new Buffer(gl, new Float32Array(...)`\n if (ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n // Signature: `new Buffer(gl, 100)`\n if (Number.isFinite(props)) {\n props = {byteLength: props};\n }\n\n props = checkProps('Buffer', props, PROP_CHECKS_INITIALIZE);\n\n // Initialize member fields\n this.usage = props.usage || GL.STATIC_DRAW;\n this.debugData = null;\n\n // Deprecated: Merge main props and accessor\n this.setAccessor(Object.assign({}, props, props.accessor));\n\n // Set data: (re)initializes the buffer\n if (props.data) {\n this._setData(props.data, props.offset, props.byteLength);\n } else {\n this._setByteLength(props.byteLength || 0);\n }\n\n return this;\n }\n\n setProps(props) {\n props = checkProps('Buffer', props, PROP_CHECKS_SET_PROPS);\n\n if ('accessor' in props) {\n this.setAccessor(props.accessor);\n }\n\n return this;\n }\n\n // Optionally stores an accessor with the buffer, makes it easier to use it as an attribute later\n // {type, size = 1, offset = 0, stride = 0, normalized = false, integer = false, divisor = 0}\n setAccessor(accessor) {\n // NOTE: From luma.gl v7.0, Accessors have an optional `buffer `field\n // (mainly to support \"interleaving\")\n // To avoid confusion, ensure `buffer.accessor` does not have a `buffer.accessor.buffer` field:\n accessor = Object.assign({}, accessor);\n delete accessor.buffer;\n\n // This new statement ensures that an \"accessor object\" is re-packaged as an Accessor instance\n this.accessor = new Accessor(accessor);\n return this;\n }\n\n // Allocate a bigger GPU buffer (if the current buffer is not big enough).\n // If a reallocation is triggered it clears the buffer\n // Returns:\n // `true`: buffer was reallocated, data was cleared\n // `false`: buffer was big enough, data is intact\n reallocate(byteLength) {\n if (byteLength > this.byteLength) {\n this._setByteLength(byteLength);\n return true;\n }\n this.bytesUsed = byteLength;\n return false;\n }\n\n // Update with new data. Reinitializes the buffer\n setData(props) {\n return this.initialize(props);\n }\n\n // Updates a subset of a buffer object's data store.\n // Data (Typed Array or ArrayBuffer), length is inferred unless provided\n // Offset into buffer\n // WebGL2 only: Offset into srcData\n // WebGL2 only: Number of bytes to be copied\n subData(props) {\n // Signature: buffer.subData(new Float32Array([...]))\n if (ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n const {data, offset = 0, srcOffset = 0} = props;\n const byteLength = props.byteLength || props.length;\n\n assert(data);\n\n // Create the buffer - binding it here for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n const target = this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n this.gl.bindBuffer(target, this.handle);\n // WebGL2: subData supports additional srcOffset and length parameters\n if (srcOffset !== 0 || byteLength !== undefined) {\n assertWebGL2Context(this.gl);\n this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);\n } else {\n this.gl.bufferSubData(target, offset, data);\n }\n this.gl.bindBuffer(target, null);\n\n // TODO - update local `data` if offsets are right\n this.debugData = null;\n\n this._inferType(data);\n\n return this;\n }\n\n // WEBGL2 ONLY: Copies part of the data of another buffer into this buffer\n copyData({sourceBuffer, readOffset = 0, writeOffset = 0, size}) {\n const {gl} = this;\n assertWebGL2Context(gl);\n\n // Use GL.COPY_READ_BUFFER+GL.COPY_WRITE_BUFFER avoid disturbing other targets and locking type\n gl.bindBuffer(GL.COPY_READ_BUFFER, sourceBuffer.handle);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, this.handle);\n gl.copyBufferSubData(GL.COPY_READ_BUFFER, GL.COPY_WRITE_BUFFER, readOffset, writeOffset, size);\n gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n this.debugData = null;\n\n return this;\n }\n\n // WEBGL2 ONLY: Reads data from buffer into an ArrayBufferView or SharedArrayBuffer.\n getData({dstData = null, srcByteOffset = 0, dstOffset = 0, length = 0} = {}) {\n assertWebGL2Context(this.gl);\n\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceAvailableElementCount = this._getAvailableElementCount(srcByteOffset);\n\n const dstElementOffset = dstOffset;\n\n let dstAvailableElementCount;\n let dstElementCount;\n if (dstData) {\n dstElementCount = dstData.length;\n dstAvailableElementCount = dstElementCount - dstElementOffset;\n } else {\n // Allocate ArrayBufferView with enough size to copy all eligible data.\n dstAvailableElementCount = Math.min(\n sourceAvailableElementCount,\n length || sourceAvailableElementCount\n );\n dstElementCount = dstElementOffset + dstAvailableElementCount;\n }\n\n const copyElementCount = Math.min(sourceAvailableElementCount, dstAvailableElementCount);\n length = length || copyElementCount;\n assert(length <= copyElementCount);\n dstData = dstData || new ArrayType(dstElementCount);\n\n // Use GL.COPY_READ_BUFFER to avoid disturbing other targets and locking type\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);\n this.gl.getBufferSubData(GL.COPY_READ_BUFFER, srcByteOffset, dstData, dstOffset, length);\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n return dstData;\n }\n\n /**\n * Binds a buffer to a given binding point (target).\n * GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER take an index, and optionally a range.\n * - GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER need an index to affect state\n * - GL.UNIFORM_BUFFER: `offset` must be aligned to GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT.\n * - GL.UNIFORM_BUFFER: `size` must be a minimum of GL.UNIFORM_BLOCK_SIZE_DATA.\n */\n bind({\n target = this.target, // target for the bind operation\n index = this.accessor && this.accessor.index, // index = index of target (indexed bind point)\n offset = 0,\n size\n } = {}) {\n // NOTE: While GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER could\n // be used as direct binding points, they will not affect transform feedback or\n // uniform buffer state. Instead indexed bindings need to be made.\n if (target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER) {\n if (size !== undefined) {\n this.gl.bindBufferRange(target, index, this.handle, offset, size);\n } else {\n assert(offset === 0); // Make sure offset wasn't supplied\n this.gl.bindBufferBase(target, index, this.handle);\n }\n } else {\n this.gl.bindBuffer(target, this.handle);\n }\n\n return this;\n }\n\n unbind({target = this.target, index = this.accessor && this.accessor.index} = {}) {\n const isIndexedBuffer = target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER;\n if (isIndexedBuffer) {\n this.gl.bindBufferBase(target, index, null);\n } else {\n this.gl.bindBuffer(target, null);\n }\n return this;\n }\n\n // PROTECTED METHODS (INTENDED FOR USE BY OTHER FRAMEWORK CODE ONLY)\n\n // Returns a short initial data array\n getDebugData() {\n if (!this.debugData) {\n this.debugData = this.getData({length: Math.min(DEBUG_DATA_LENGTH, this.byteLength)});\n return {data: this.debugData, changed: true};\n }\n return {data: this.debugData, changed: false};\n }\n\n invalidateDebugData() {\n this.debugData = null;\n }\n\n // PRIVATE METHODS\n\n // Allocate a new buffer and initialize to contents of typed array\n _setData(data, offset = 0, byteLength = data.byteLength + offset) {\n assert(ArrayBuffer.isView(data));\n\n this._trackDeallocatedMemory();\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, byteLength, this.usage);\n this.gl.bufferSubData(target, offset, data);\n this.gl.bindBuffer(target, null);\n\n this.debugData = data.slice(0, DEBUG_DATA_LENGTH);\n this.bytesUsed = byteLength;\n\n this._trackAllocatedMemory(byteLength);\n\n // infer GL type from supplied typed array\n const type = getGLTypeFromTypedArray(data);\n assert(type);\n this.setAccessor(new Accessor(this.accessor, {type}));\n return this;\n }\n\n // Allocate a GPU buffer of specified size.\n _setByteLength(byteLength, usage = this.usage) {\n assert(byteLength >= 0);\n\n this._trackDeallocatedMemory();\n\n // Workaround needed for Safari (#291):\n // gl.bufferData with size equal to 0 crashes. Instead create zero sized array.\n let data = byteLength;\n if (byteLength === 0) {\n data = new Float32Array(0);\n }\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, data, usage);\n this.gl.bindBuffer(target, null);\n\n this.usage = usage;\n this.debugData = null;\n this.bytesUsed = byteLength;\n\n this._trackAllocatedMemory(byteLength);\n\n return this;\n }\n\n // Binding a buffer for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n _getTarget() {\n return this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n }\n\n _getAvailableElementCount(srcByteOffset) {\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceElementOffset = srcByteOffset / ArrayType.BYTES_PER_ELEMENT;\n return this.getElementCount() - sourceElementOffset;\n }\n\n // Automatically infers type from typed array passed to setData\n // Note: No longer that useful, since type is now autodeduced from the compiled shaders\n _inferType(data) {\n if (!this.accessor.type) {\n this.setAccessor(new Accessor(this.accessor, {type: getGLTypeFromTypedArray(data)}));\n }\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createBuffer();\n }\n\n _deleteHandle() {\n this.gl.deleteBuffer(this.handle);\n this._trackDeallocatedMemory();\n }\n\n _getParameter(pname) {\n this.gl.bindBuffer(this.target, this.handle);\n const value = this.gl.getBufferParameter(this.target, pname);\n this.gl.bindBuffer(this.target, null);\n return value;\n }\n\n // DEPRECATIONS - v7.0\n get type() {\n log.deprecated('Buffer.type', 'Buffer.accessor.type')();\n return this.accessor.type;\n }\n\n get bytes() {\n log.deprecated('Buffer.bytes', 'Buffer.byteLength')();\n return this.byteLength;\n }\n\n // DEPRECATIONS - v6.0\n // Deprecated in v6.x, but not warnings not properly implemented\n setByteLength(byteLength) {\n log.deprecated('setByteLength', 'reallocate')();\n return this.reallocate(byteLength);\n }\n\n // Deprecated in v6.x, but not warnings not properly implemented\n updateAccessor(opts) {\n log.deprecated('updateAccessor(...)', 'setAccessor(new Accessor(buffer.accessor, ...)')();\n this.accessor = new Accessor(this.accessor, opts);\n return this;\n }\n}\n"],"mappings":"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"}
|
|
@@ -8,12 +8,13 @@ const GL_DEPTH = 0x1801;
|
|
|
8
8
|
const GL_STENCIL = 0x1802;
|
|
9
9
|
const GL_DEPTH_STENCIL = 0x84f9;
|
|
10
10
|
const ERR_ARGUMENTS = 'clear: bad arguments';
|
|
11
|
-
export function clear(gl
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
export function clear(gl) {
|
|
12
|
+
let {
|
|
13
|
+
framebuffer = null,
|
|
14
|
+
color = null,
|
|
15
|
+
depth = null,
|
|
16
|
+
stencil = null
|
|
17
|
+
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
17
18
|
const parameters = {};
|
|
18
19
|
|
|
19
20
|
if (framebuffer) {
|
|
@@ -51,12 +52,13 @@ export function clear(gl, {
|
|
|
51
52
|
gl.clear(clearFlags);
|
|
52
53
|
});
|
|
53
54
|
}
|
|
54
|
-
export function clearBuffer(gl
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
55
|
+
export function clearBuffer(gl) {
|
|
56
|
+
let {
|
|
57
|
+
framebuffer = null,
|
|
58
|
+
buffer = GL_COLOR,
|
|
59
|
+
drawBuffer = 0,
|
|
60
|
+
value = [0, 0, 0, 0]
|
|
61
|
+
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
60
62
|
assertWebGL2Context(gl);
|
|
61
63
|
withParameters(gl, {
|
|
62
64
|
framebuffer
|