@antv/l7-renderer 2.8.16 → 2.8.19

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.
@@ -112,7 +112,9 @@ var ReglTexture2D = function () {
112
112
  key: "destroy",
113
113
  value: function destroy() {
114
114
  if (!this.isDistroy) {
115
- this.texture.destroy();
115
+ var _this$texture;
116
+
117
+ (_this$texture = this.texture) === null || _this$texture === void 0 ? void 0 : _this$texture.destroy();
116
118
  }
117
119
 
118
120
  this.isDistroy = true;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/regl/ReglTexture2D.ts"],"names":["gl","colorSpaceMap","dataTypeMap","filterMap","formatMap","mipmapMap","wrapModeMap","ReglTexture2D","reGl","options","data","type","UNSIGNED_BYTE","width","height","flipY","format","RGBA","mipmap","wrapS","CLAMP_TO_EDGE","wrapT","aniso","alignment","premultiplyAlpha","mag","NEAREST","min","colorSpace","BROWSER_DEFAULT_WEBGL","x","y","copy","textureOptions","texture","props","_texture","bind","resize","isDistroy","destroy"],"mappings":"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","sourcesContent":["import { gl, ITexture2D, ITexture2DInitializationOptions } from '@antv/l7-core';\nimport regl from 'l7regl';\nimport {\n colorSpaceMap,\n dataTypeMap,\n filterMap,\n formatMap,\n mipmapMap,\n wrapModeMap,\n} from './constants';\n\n/**\n * adaptor for regl.Buffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#buffers\n */\nexport default class ReglTexture2D implements ITexture2D {\n private texture: regl.Texture2D;\n private width: number;\n private height: number;\n private isDistroy: boolean = false;\n\n constructor(reGl: regl.Regl, options: ITexture2DInitializationOptions) {\n const {\n data,\n type = gl.UNSIGNED_BYTE,\n width,\n height,\n flipY = false,\n format = gl.RGBA,\n mipmap = false,\n wrapS = gl.CLAMP_TO_EDGE,\n wrapT = gl.CLAMP_TO_EDGE,\n aniso = 0,\n alignment = 1,\n premultiplyAlpha = false,\n mag = gl.NEAREST,\n min = gl.NEAREST,\n colorSpace = gl.BROWSER_DEFAULT_WEBGL,\n x = 0,\n y = 0,\n copy = false,\n } = options;\n this.width = width;\n this.height = height;\n\n const textureOptions: regl.Texture2DOptions = {\n width,\n height,\n // @ts-ignore\n type: dataTypeMap[type],\n format: formatMap[format],\n wrapS: wrapModeMap[wrapS],\n wrapT: wrapModeMap[wrapT],\n // @ts-ignore\n mag: filterMap[mag],\n min: filterMap[min],\n alignment,\n flipY,\n colorSpace: colorSpaceMap[colorSpace],\n premultiplyAlpha,\n aniso,\n\n // copy pixels from current bind framebuffer\n x,\n y,\n copy,\n };\n\n if (data) {\n textureOptions.data = data;\n }\n\n if (typeof mipmap === 'number') {\n textureOptions.mipmap = mipmapMap[mipmap];\n } else if (typeof mipmap === 'boolean') {\n textureOptions.mipmap = mipmap;\n }\n\n this.texture = reGl.texture(textureOptions);\n }\n\n public get() {\n return this.texture;\n }\n public update(props: regl.Texture2DOptions = {}) {\n this.texture(props);\n }\n\n public bind() {\n // @ts-ignore\n this.texture._texture.bind();\n }\n\n public resize({ width, height }: { width: number; height: number }): void {\n this.texture.resize(width, height);\n this.width = width;\n this.height = height;\n }\n\n public destroy() {\n if (!this.isDistroy) {\n this.texture.destroy();\n }\n this.isDistroy = true;\n }\n}\n"],"file":"ReglTexture2D.js"}
1
+ {"version":3,"sources":["../../src/regl/ReglTexture2D.ts"],"names":["gl","colorSpaceMap","dataTypeMap","filterMap","formatMap","mipmapMap","wrapModeMap","ReglTexture2D","reGl","options","data","type","UNSIGNED_BYTE","width","height","flipY","format","RGBA","mipmap","wrapS","CLAMP_TO_EDGE","wrapT","aniso","alignment","premultiplyAlpha","mag","NEAREST","min","colorSpace","BROWSER_DEFAULT_WEBGL","x","y","copy","textureOptions","texture","props","_texture","bind","resize","isDistroy","destroy"],"mappings":"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","sourcesContent":["import { gl, ITexture2D, ITexture2DInitializationOptions } from '@antv/l7-core';\nimport regl from 'l7regl';\nimport {\n colorSpaceMap,\n dataTypeMap,\n filterMap,\n formatMap,\n mipmapMap,\n wrapModeMap,\n} from './constants';\n\n/**\n * adaptor for regl.Buffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#buffers\n */\nexport default class ReglTexture2D implements ITexture2D {\n private texture: regl.Texture2D;\n private width: number;\n private height: number;\n private isDistroy: boolean = false;\n\n constructor(reGl: regl.Regl, options: ITexture2DInitializationOptions) {\n const {\n data,\n type = gl.UNSIGNED_BYTE,\n width,\n height,\n flipY = false,\n format = gl.RGBA,\n mipmap = false,\n wrapS = gl.CLAMP_TO_EDGE,\n wrapT = gl.CLAMP_TO_EDGE,\n aniso = 0,\n alignment = 1,\n premultiplyAlpha = false,\n mag = gl.NEAREST,\n min = gl.NEAREST,\n colorSpace = gl.BROWSER_DEFAULT_WEBGL,\n x = 0,\n y = 0,\n copy = false,\n } = options;\n this.width = width;\n this.height = height;\n\n const textureOptions: regl.Texture2DOptions = {\n width,\n height,\n // @ts-ignore\n type: dataTypeMap[type],\n format: formatMap[format],\n wrapS: wrapModeMap[wrapS],\n wrapT: wrapModeMap[wrapT],\n // @ts-ignore\n mag: filterMap[mag],\n min: filterMap[min],\n alignment,\n flipY,\n colorSpace: colorSpaceMap[colorSpace],\n premultiplyAlpha,\n aniso,\n\n // copy pixels from current bind framebuffer\n x,\n y,\n copy,\n };\n\n if (data) {\n textureOptions.data = data;\n }\n\n if (typeof mipmap === 'number') {\n textureOptions.mipmap = mipmapMap[mipmap];\n } else if (typeof mipmap === 'boolean') {\n textureOptions.mipmap = mipmap;\n }\n\n this.texture = reGl.texture(textureOptions);\n }\n\n public get() {\n return this.texture;\n }\n public update(props: regl.Texture2DOptions = {}) {\n this.texture(props);\n }\n\n public bind() {\n // @ts-ignore\n this.texture._texture.bind();\n }\n\n public resize({ width, height }: { width: number; height: number }): void {\n this.texture.resize(width, height);\n this.width = width;\n this.height = height;\n }\n\n public destroy() {\n if (!this.isDistroy) {\n this.texture?.destroy();\n }\n this.isDistroy = true;\n }\n}\n"],"file":"ReglTexture2D.js"}
package/es/regl/index.js CHANGED
@@ -142,7 +142,11 @@ var ReglRendererService = (_dec = injectable(), _dec(_class = function () {
142
142
  });
143
143
 
144
144
  _defineProperty(this, "destroy", function () {
145
+ _this.canvas = null;
146
+
145
147
  _this.gl.destroy();
148
+
149
+ _this.gl = null;
146
150
  });
147
151
  }
148
152
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/regl/index.ts"],"names":["isMini","injectable","regl","ReglAttribute","ReglBuffer","ReglElements","ReglFramebuffer","ReglModel","ReglTexture2D","ReglRendererService","options","gl","framebuffer","drawCommands","get","color","depth","stencil","reglClearOptions","clear","x","y","width","height","_gl","viewport","_refresh","readPixelsOptions","read","drawingBufferWidth","drawingBufferHeight","canvas","parentElement","destroy","cfg","Promise","resolve","reject","attributes","alpha","antialias","premultipliedAlpha","preserveDrawingBuffer","extensions","optionalExtensions","profile","onDone","err","r","extensionObject","OES_texture_float","testExtension","getParameter","ALIASED_POINT_SIZE_RANGE","name","getGLContext","getExtension","cull","enable","face","blend","equation","disable","CULL_FACE","flag","isDirty"],"mappings":"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","sourcesContent":["/**\n * render w/ regl\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md\n */\nimport {\n IAttribute,\n IAttributeInitializationOptions,\n IBuffer,\n IBufferInitializationOptions,\n IClearOptions,\n IElements,\n IElementsInitializationOptions,\n IExtensions,\n IFramebuffer,\n IFramebufferInitializationOptions,\n IModel,\n IModelInitializationOptions,\n IReadPixelsOptions,\n IRenderConfig,\n IRendererService,\n ITexture2D,\n ITexture2DInitializationOptions,\n} from '@antv/l7-core';\nimport { isMini } from '@antv/l7-utils';\nimport { injectable } from 'inversify';\nimport regl from 'l7regl';\nimport 'reflect-metadata';\nimport ReglAttribute from './ReglAttribute';\nimport ReglBuffer from './ReglBuffer';\nimport ReglElements from './ReglElements';\nimport ReglFramebuffer from './ReglFramebuffer';\nimport ReglModel from './ReglModel';\nimport ReglTexture2D from './ReglTexture2D';\n\n/**\n * regl renderer\n */\n@injectable()\nexport default class ReglRendererService implements IRendererService {\n public extensionObject: IExtensions;\n private gl: regl.Regl;\n private $container: HTMLDivElement | null;\n private canvas: HTMLCanvasElement;\n private width: number;\n private height: number;\n private isDirty: boolean;\n\n public async init(\n canvas: HTMLCanvasElement,\n cfg: IRenderConfig,\n ): Promise<void> {\n // this.$container = $container;\n this.canvas = canvas;\n // tslint:disable-next-line:typedef\n this.gl = await new Promise((resolve, reject) => {\n regl({\n canvas: this.canvas,\n attributes: {\n alpha: true,\n // use TAA instead of MSAA\n // @see https://www.khronos.org/registry/webgl/specs/1.0/#5.2.1\n antialias: cfg.antialias,\n premultipliedAlpha: true,\n preserveDrawingBuffer: cfg.preserveDrawingBuffer,\n\n stencil: cfg.stencil,\n },\n // TODO: use extensions\n extensions: [\n 'OES_element_index_uint',\n 'OES_standard_derivatives', // wireframe\n 'ANGLE_instanced_arrays', // VSM shadow map\n ],\n optionalExtensions: [\n 'oes_texture_float_linear',\n 'OES_texture_float',\n 'EXT_texture_filter_anisotropic',\n 'EXT_blend_minmax',\n 'WEBGL_depth_texture',\n ],\n profile: true,\n onDone: (err: Error | null, r?: regl.Regl | undefined): void => {\n if (err || !r) {\n reject(err);\n }\n // @ts-ignore\n resolve(r);\n },\n });\n });\n\n this.extensionObject = {\n OES_texture_float: this.testExtension('OES_texture_float'),\n };\n }\n\n public getPointSizeRange() {\n return this.gl._gl.getParameter(this.gl._gl.ALIASED_POINT_SIZE_RANGE);\n }\n\n public testExtension(name: string) {\n // OES_texture_float\n return !!this.getGLContext().getExtension(name);\n }\n\n public createModel = (options: IModelInitializationOptions): IModel =>\n new ReglModel(this.gl, options);\n\n public createAttribute = (\n options: IAttributeInitializationOptions,\n ): IAttribute => new ReglAttribute(this.gl, options);\n\n public createBuffer = (options: IBufferInitializationOptions): IBuffer =>\n new ReglBuffer(this.gl, options);\n\n public createElements = (\n options: IElementsInitializationOptions,\n ): IElements => new ReglElements(this.gl, options);\n\n public createTexture2D = (\n options: ITexture2DInitializationOptions,\n ): ITexture2D => new ReglTexture2D(this.gl, options);\n\n public createFramebuffer = (options: IFramebufferInitializationOptions) =>\n new ReglFramebuffer(this.gl, options);\n\n public useFramebuffer = (\n framebuffer: IFramebuffer | null,\n drawCommands: () => void,\n ) => {\n this.gl({\n framebuffer: framebuffer ? (framebuffer as ReglFramebuffer).get() : null,\n })(drawCommands);\n };\n\n public clear = (options: IClearOptions) => {\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#clear-the-draw-buffer\n const { color, depth, stencil, framebuffer = null } = options;\n const reglClearOptions: regl.ClearOptions = {\n color,\n depth,\n stencil,\n };\n\n reglClearOptions.framebuffer =\n framebuffer === null\n ? framebuffer\n : (framebuffer as ReglFramebuffer).get();\n\n this.gl.clear(reglClearOptions);\n };\n\n public viewport = ({\n x,\n y,\n width,\n height,\n }: {\n x: number;\n y: number;\n width: number;\n height: number;\n }) => {\n // use WebGL context directly\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#unsafe-escape-hatch\n this.gl._gl.viewport(x, y, width, height);\n this.width = width;\n this.height = height;\n this.gl._refresh();\n };\n\n public readPixels = (options: IReadPixelsOptions) => {\n const { framebuffer, x, y, width, height } = options;\n const readPixelsOptions: regl.ReadOptions = {\n x,\n y,\n width,\n height,\n };\n if (framebuffer) {\n readPixelsOptions.framebuffer = (framebuffer as ReglFramebuffer).get();\n }\n return this.gl.read(readPixelsOptions);\n };\n\n public getViewportSize = () => {\n return {\n width: this.gl._gl.drawingBufferWidth,\n height: this.gl._gl.drawingBufferHeight,\n };\n };\n\n public getContainer = () => {\n if (isMini) {\n return this.canvas;\n } else {\n return this.canvas?.parentElement;\n }\n };\n\n public getCanvas = () => {\n // return this.$container?.getElementsByTagName('canvas')[0] || null;\n return this.canvas;\n };\n\n public getGLContext = () => {\n return this.gl._gl;\n };\n\n // TODO: 临时方法\n public setState() {\n this.gl({\n cull: {\n enable: false,\n face: 'back',\n },\n viewport: {\n x: 0,\n y: 0,\n height: this.width,\n width: this.height,\n },\n blend: {\n enable: true,\n equation: 'add',\n },\n framebuffer: null,\n });\n this.gl._refresh();\n }\n\n public setBaseState() {\n this.gl({\n cull: {\n enable: false,\n face: 'back',\n },\n viewport: {\n x: 0,\n y: 0,\n height: this.width,\n width: this.height,\n },\n blend: {\n enable: false,\n equation: 'add',\n },\n framebuffer: null,\n });\n this.gl._refresh();\n }\n public setCustomLayerDefaults() {\n const gl = this.getGLContext();\n gl.disable(gl.CULL_FACE);\n }\n\n public setDirty(flag: boolean): void {\n this.isDirty = flag;\n }\n\n public getDirty(): boolean {\n return this.isDirty;\n }\n\n public destroy = () => {\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#clean-up\n this.gl.destroy();\n };\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/regl/index.ts"],"names":["isMini","injectable","regl","ReglAttribute","ReglBuffer","ReglElements","ReglFramebuffer","ReglModel","ReglTexture2D","ReglRendererService","options","gl","framebuffer","drawCommands","get","color","depth","stencil","reglClearOptions","clear","x","y","width","height","_gl","viewport","_refresh","readPixelsOptions","read","drawingBufferWidth","drawingBufferHeight","canvas","parentElement","destroy","cfg","Promise","resolve","reject","attributes","alpha","antialias","premultipliedAlpha","preserveDrawingBuffer","extensions","optionalExtensions","profile","onDone","err","r","extensionObject","OES_texture_float","testExtension","getParameter","ALIASED_POINT_SIZE_RANGE","name","getGLContext","getExtension","cull","enable","face","blend","equation","disable","CULL_FACE","flag","isDirty"],"mappings":"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","sourcesContent":["/**\n * render w/ regl\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md\n */\nimport {\n IAttribute,\n IAttributeInitializationOptions,\n IBuffer,\n IBufferInitializationOptions,\n IClearOptions,\n IElements,\n IElementsInitializationOptions,\n IExtensions,\n IFramebuffer,\n IFramebufferInitializationOptions,\n IModel,\n IModelInitializationOptions,\n IReadPixelsOptions,\n IRenderConfig,\n IRendererService,\n ITexture2D,\n ITexture2DInitializationOptions,\n} from '@antv/l7-core';\nimport { isMini } from '@antv/l7-utils';\nimport { injectable } from 'inversify';\nimport regl from 'l7regl';\nimport 'reflect-metadata';\nimport ReglAttribute from './ReglAttribute';\nimport ReglBuffer from './ReglBuffer';\nimport ReglElements from './ReglElements';\nimport ReglFramebuffer from './ReglFramebuffer';\nimport ReglModel from './ReglModel';\nimport ReglTexture2D from './ReglTexture2D';\n\n/**\n * regl renderer\n */\n@injectable()\nexport default class ReglRendererService implements IRendererService {\n public extensionObject: IExtensions;\n private gl: regl.Regl;\n private $container: HTMLDivElement | null;\n private canvas: HTMLCanvasElement;\n private width: number;\n private height: number;\n private isDirty: boolean;\n\n public async init(\n canvas: HTMLCanvasElement,\n cfg: IRenderConfig,\n ): Promise<void> {\n // this.$container = $container;\n this.canvas = canvas;\n // tslint:disable-next-line:typedef\n this.gl = await new Promise((resolve, reject) => {\n regl({\n canvas: this.canvas,\n attributes: {\n alpha: true,\n // use TAA instead of MSAA\n // @see https://www.khronos.org/registry/webgl/specs/1.0/#5.2.1\n antialias: cfg.antialias,\n premultipliedAlpha: true,\n preserveDrawingBuffer: cfg.preserveDrawingBuffer,\n\n stencil: cfg.stencil,\n },\n // TODO: use extensions\n extensions: [\n 'OES_element_index_uint',\n 'OES_standard_derivatives', // wireframe\n 'ANGLE_instanced_arrays', // VSM shadow map\n ],\n optionalExtensions: [\n 'oes_texture_float_linear',\n 'OES_texture_float',\n 'EXT_texture_filter_anisotropic',\n 'EXT_blend_minmax',\n 'WEBGL_depth_texture',\n ],\n profile: true,\n onDone: (err: Error | null, r?: regl.Regl | undefined): void => {\n if (err || !r) {\n reject(err);\n }\n // @ts-ignore\n resolve(r);\n },\n });\n });\n\n this.extensionObject = {\n OES_texture_float: this.testExtension('OES_texture_float'),\n };\n }\n\n public getPointSizeRange() {\n return this.gl._gl.getParameter(this.gl._gl.ALIASED_POINT_SIZE_RANGE);\n }\n\n public testExtension(name: string) {\n // OES_texture_float\n return !!this.getGLContext().getExtension(name);\n }\n\n public createModel = (options: IModelInitializationOptions): IModel =>\n new ReglModel(this.gl, options);\n\n public createAttribute = (\n options: IAttributeInitializationOptions,\n ): IAttribute => new ReglAttribute(this.gl, options);\n\n public createBuffer = (options: IBufferInitializationOptions): IBuffer =>\n new ReglBuffer(this.gl, options);\n\n public createElements = (\n options: IElementsInitializationOptions,\n ): IElements => new ReglElements(this.gl, options);\n\n public createTexture2D = (\n options: ITexture2DInitializationOptions,\n ): ITexture2D => new ReglTexture2D(this.gl, options);\n\n public createFramebuffer = (options: IFramebufferInitializationOptions) =>\n new ReglFramebuffer(this.gl, options);\n\n public useFramebuffer = (\n framebuffer: IFramebuffer | null,\n drawCommands: () => void,\n ) => {\n this.gl({\n framebuffer: framebuffer ? (framebuffer as ReglFramebuffer).get() : null,\n })(drawCommands);\n };\n\n public clear = (options: IClearOptions) => {\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#clear-the-draw-buffer\n const { color, depth, stencil, framebuffer = null } = options;\n const reglClearOptions: regl.ClearOptions = {\n color,\n depth,\n stencil,\n };\n\n reglClearOptions.framebuffer =\n framebuffer === null\n ? framebuffer\n : (framebuffer as ReglFramebuffer).get();\n\n this.gl.clear(reglClearOptions);\n };\n\n public viewport = ({\n x,\n y,\n width,\n height,\n }: {\n x: number;\n y: number;\n width: number;\n height: number;\n }) => {\n // use WebGL context directly\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#unsafe-escape-hatch\n this.gl._gl.viewport(x, y, width, height);\n this.width = width;\n this.height = height;\n this.gl._refresh();\n };\n\n public readPixels = (options: IReadPixelsOptions) => {\n const { framebuffer, x, y, width, height } = options;\n const readPixelsOptions: regl.ReadOptions = {\n x,\n y,\n width,\n height,\n };\n if (framebuffer) {\n readPixelsOptions.framebuffer = (framebuffer as ReglFramebuffer).get();\n }\n return this.gl.read(readPixelsOptions);\n };\n\n public getViewportSize = () => {\n return {\n width: this.gl._gl.drawingBufferWidth,\n height: this.gl._gl.drawingBufferHeight,\n };\n };\n\n public getContainer = () => {\n if (isMini) {\n return this.canvas;\n } else {\n return this.canvas?.parentElement;\n }\n };\n\n public getCanvas = () => {\n // return this.$container?.getElementsByTagName('canvas')[0] || null;\n return this.canvas;\n };\n\n public getGLContext = () => {\n return this.gl._gl;\n };\n\n // TODO: 临时方法\n public setState() {\n this.gl({\n cull: {\n enable: false,\n face: 'back',\n },\n viewport: {\n x: 0,\n y: 0,\n height: this.width,\n width: this.height,\n },\n blend: {\n enable: true,\n equation: 'add',\n },\n framebuffer: null,\n });\n this.gl._refresh();\n }\n\n public setBaseState() {\n this.gl({\n cull: {\n enable: false,\n face: 'back',\n },\n viewport: {\n x: 0,\n y: 0,\n height: this.width,\n width: this.height,\n },\n blend: {\n enable: false,\n equation: 'add',\n },\n framebuffer: null,\n });\n this.gl._refresh();\n }\n public setCustomLayerDefaults() {\n const gl = this.getGLContext();\n gl.disable(gl.CULL_FACE);\n }\n\n public setDirty(flag: boolean): void {\n this.isDirty = flag;\n }\n\n public getDirty(): boolean {\n return this.isDirty;\n }\n\n public destroy = () => {\n // this.canvas = null 清除对 webgl 实例的引用\n // @ts-ignore\n this.canvas = null;\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#clean-up\n this.gl.destroy();\n\n // @ts-ignore\n this.gl = null;\n };\n}\n"],"file":"index.js"}
@@ -120,7 +120,9 @@ var ReglTexture2D = function () {
120
120
  key: "destroy",
121
121
  value: function destroy() {
122
122
  if (!this.isDistroy) {
123
- this.texture.destroy();
123
+ var _this$texture;
124
+
125
+ (_this$texture = this.texture) === null || _this$texture === void 0 ? void 0 : _this$texture.destroy();
124
126
  }
125
127
 
126
128
  this.isDistroy = true;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/regl/ReglTexture2D.ts"],"names":["ReglTexture2D","reGl","options","data","type","gl","UNSIGNED_BYTE","width","height","flipY","format","RGBA","mipmap","wrapS","CLAMP_TO_EDGE","wrapT","aniso","alignment","premultiplyAlpha","mag","NEAREST","min","colorSpace","BROWSER_DEFAULT_WEBGL","x","y","copy","textureOptions","dataTypeMap","formatMap","wrapModeMap","filterMap","colorSpaceMap","mipmapMap","texture","props","_texture","bind","resize","isDistroy","destroy"],"mappings":"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","sourcesContent":["import { gl, ITexture2D, ITexture2DInitializationOptions } from '@antv/l7-core';\nimport regl from 'l7regl';\nimport {\n colorSpaceMap,\n dataTypeMap,\n filterMap,\n formatMap,\n mipmapMap,\n wrapModeMap,\n} from './constants';\n\n/**\n * adaptor for regl.Buffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#buffers\n */\nexport default class ReglTexture2D implements ITexture2D {\n private texture: regl.Texture2D;\n private width: number;\n private height: number;\n private isDistroy: boolean = false;\n\n constructor(reGl: regl.Regl, options: ITexture2DInitializationOptions) {\n const {\n data,\n type = gl.UNSIGNED_BYTE,\n width,\n height,\n flipY = false,\n format = gl.RGBA,\n mipmap = false,\n wrapS = gl.CLAMP_TO_EDGE,\n wrapT = gl.CLAMP_TO_EDGE,\n aniso = 0,\n alignment = 1,\n premultiplyAlpha = false,\n mag = gl.NEAREST,\n min = gl.NEAREST,\n colorSpace = gl.BROWSER_DEFAULT_WEBGL,\n x = 0,\n y = 0,\n copy = false,\n } = options;\n this.width = width;\n this.height = height;\n\n const textureOptions: regl.Texture2DOptions = {\n width,\n height,\n // @ts-ignore\n type: dataTypeMap[type],\n format: formatMap[format],\n wrapS: wrapModeMap[wrapS],\n wrapT: wrapModeMap[wrapT],\n // @ts-ignore\n mag: filterMap[mag],\n min: filterMap[min],\n alignment,\n flipY,\n colorSpace: colorSpaceMap[colorSpace],\n premultiplyAlpha,\n aniso,\n\n // copy pixels from current bind framebuffer\n x,\n y,\n copy,\n };\n\n if (data) {\n textureOptions.data = data;\n }\n\n if (typeof mipmap === 'number') {\n textureOptions.mipmap = mipmapMap[mipmap];\n } else if (typeof mipmap === 'boolean') {\n textureOptions.mipmap = mipmap;\n }\n\n this.texture = reGl.texture(textureOptions);\n }\n\n public get() {\n return this.texture;\n }\n public update(props: regl.Texture2DOptions = {}) {\n this.texture(props);\n }\n\n public bind() {\n // @ts-ignore\n this.texture._texture.bind();\n }\n\n public resize({ width, height }: { width: number; height: number }): void {\n this.texture.resize(width, height);\n this.width = width;\n this.height = height;\n }\n\n public destroy() {\n if (!this.isDistroy) {\n this.texture.destroy();\n }\n this.isDistroy = true;\n }\n}\n"],"file":"ReglTexture2D.js"}
1
+ {"version":3,"sources":["../../src/regl/ReglTexture2D.ts"],"names":["ReglTexture2D","reGl","options","data","type","gl","UNSIGNED_BYTE","width","height","flipY","format","RGBA","mipmap","wrapS","CLAMP_TO_EDGE","wrapT","aniso","alignment","premultiplyAlpha","mag","NEAREST","min","colorSpace","BROWSER_DEFAULT_WEBGL","x","y","copy","textureOptions","dataTypeMap","formatMap","wrapModeMap","filterMap","colorSpaceMap","mipmapMap","texture","props","_texture","bind","resize","isDistroy","destroy"],"mappings":"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","sourcesContent":["import { gl, ITexture2D, ITexture2DInitializationOptions } from '@antv/l7-core';\nimport regl from 'l7regl';\nimport {\n colorSpaceMap,\n dataTypeMap,\n filterMap,\n formatMap,\n mipmapMap,\n wrapModeMap,\n} from './constants';\n\n/**\n * adaptor for regl.Buffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#buffers\n */\nexport default class ReglTexture2D implements ITexture2D {\n private texture: regl.Texture2D;\n private width: number;\n private height: number;\n private isDistroy: boolean = false;\n\n constructor(reGl: regl.Regl, options: ITexture2DInitializationOptions) {\n const {\n data,\n type = gl.UNSIGNED_BYTE,\n width,\n height,\n flipY = false,\n format = gl.RGBA,\n mipmap = false,\n wrapS = gl.CLAMP_TO_EDGE,\n wrapT = gl.CLAMP_TO_EDGE,\n aniso = 0,\n alignment = 1,\n premultiplyAlpha = false,\n mag = gl.NEAREST,\n min = gl.NEAREST,\n colorSpace = gl.BROWSER_DEFAULT_WEBGL,\n x = 0,\n y = 0,\n copy = false,\n } = options;\n this.width = width;\n this.height = height;\n\n const textureOptions: regl.Texture2DOptions = {\n width,\n height,\n // @ts-ignore\n type: dataTypeMap[type],\n format: formatMap[format],\n wrapS: wrapModeMap[wrapS],\n wrapT: wrapModeMap[wrapT],\n // @ts-ignore\n mag: filterMap[mag],\n min: filterMap[min],\n alignment,\n flipY,\n colorSpace: colorSpaceMap[colorSpace],\n premultiplyAlpha,\n aniso,\n\n // copy pixels from current bind framebuffer\n x,\n y,\n copy,\n };\n\n if (data) {\n textureOptions.data = data;\n }\n\n if (typeof mipmap === 'number') {\n textureOptions.mipmap = mipmapMap[mipmap];\n } else if (typeof mipmap === 'boolean') {\n textureOptions.mipmap = mipmap;\n }\n\n this.texture = reGl.texture(textureOptions);\n }\n\n public get() {\n return this.texture;\n }\n public update(props: regl.Texture2DOptions = {}) {\n this.texture(props);\n }\n\n public bind() {\n // @ts-ignore\n this.texture._texture.bind();\n }\n\n public resize({ width, height }: { width: number; height: number }): void {\n this.texture.resize(width, height);\n this.width = width;\n this.height = height;\n }\n\n public destroy() {\n if (!this.isDistroy) {\n this.texture?.destroy();\n }\n this.isDistroy = true;\n }\n}\n"],"file":"ReglTexture2D.js"}
package/lib/regl/index.js CHANGED
@@ -143,7 +143,11 @@ var ReglRendererService = (_dec = (0, _inversify.injectable)(), _dec(_class = fu
143
143
  return _this.gl._gl;
144
144
  });
145
145
  (0, _defineProperty2.default)(this, "destroy", function () {
146
+ _this.canvas = null;
147
+
146
148
  _this.gl.destroy();
149
+
150
+ _this.gl = null;
147
151
  });
148
152
  }
149
153
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/regl/index.ts"],"names":["ReglRendererService","options","ReglModel","gl","ReglAttribute","ReglBuffer","ReglElements","ReglTexture2D","ReglFramebuffer","framebuffer","drawCommands","get","color","depth","stencil","reglClearOptions","clear","x","y","width","height","_gl","viewport","_refresh","readPixelsOptions","read","drawingBufferWidth","drawingBufferHeight","isMini","canvas","parentElement","destroy","cfg","Promise","resolve","reject","attributes","alpha","antialias","premultipliedAlpha","preserveDrawingBuffer","extensions","optionalExtensions","profile","onDone","err","r","extensionObject","OES_texture_float","testExtension","getParameter","ALIASED_POINT_SIZE_RANGE","name","getGLContext","getExtension","cull","enable","face","blend","equation","disable","CULL_FACE","flag","isDirty"],"mappings":"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","sourcesContent":["/**\n * render w/ regl\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md\n */\nimport {\n IAttribute,\n IAttributeInitializationOptions,\n IBuffer,\n IBufferInitializationOptions,\n IClearOptions,\n IElements,\n IElementsInitializationOptions,\n IExtensions,\n IFramebuffer,\n IFramebufferInitializationOptions,\n IModel,\n IModelInitializationOptions,\n IReadPixelsOptions,\n IRenderConfig,\n IRendererService,\n ITexture2D,\n ITexture2DInitializationOptions,\n} from '@antv/l7-core';\nimport { isMini } from '@antv/l7-utils';\nimport { injectable } from 'inversify';\nimport regl from 'l7regl';\nimport 'reflect-metadata';\nimport ReglAttribute from './ReglAttribute';\nimport ReglBuffer from './ReglBuffer';\nimport ReglElements from './ReglElements';\nimport ReglFramebuffer from './ReglFramebuffer';\nimport ReglModel from './ReglModel';\nimport ReglTexture2D from './ReglTexture2D';\n\n/**\n * regl renderer\n */\n@injectable()\nexport default class ReglRendererService implements IRendererService {\n public extensionObject: IExtensions;\n private gl: regl.Regl;\n private $container: HTMLDivElement | null;\n private canvas: HTMLCanvasElement;\n private width: number;\n private height: number;\n private isDirty: boolean;\n\n public async init(\n canvas: HTMLCanvasElement,\n cfg: IRenderConfig,\n ): Promise<void> {\n // this.$container = $container;\n this.canvas = canvas;\n // tslint:disable-next-line:typedef\n this.gl = await new Promise((resolve, reject) => {\n regl({\n canvas: this.canvas,\n attributes: {\n alpha: true,\n // use TAA instead of MSAA\n // @see https://www.khronos.org/registry/webgl/specs/1.0/#5.2.1\n antialias: cfg.antialias,\n premultipliedAlpha: true,\n preserveDrawingBuffer: cfg.preserveDrawingBuffer,\n\n stencil: cfg.stencil,\n },\n // TODO: use extensions\n extensions: [\n 'OES_element_index_uint',\n 'OES_standard_derivatives', // wireframe\n 'ANGLE_instanced_arrays', // VSM shadow map\n ],\n optionalExtensions: [\n 'oes_texture_float_linear',\n 'OES_texture_float',\n 'EXT_texture_filter_anisotropic',\n 'EXT_blend_minmax',\n 'WEBGL_depth_texture',\n ],\n profile: true,\n onDone: (err: Error | null, r?: regl.Regl | undefined): void => {\n if (err || !r) {\n reject(err);\n }\n // @ts-ignore\n resolve(r);\n },\n });\n });\n\n this.extensionObject = {\n OES_texture_float: this.testExtension('OES_texture_float'),\n };\n }\n\n public getPointSizeRange() {\n return this.gl._gl.getParameter(this.gl._gl.ALIASED_POINT_SIZE_RANGE);\n }\n\n public testExtension(name: string) {\n // OES_texture_float\n return !!this.getGLContext().getExtension(name);\n }\n\n public createModel = (options: IModelInitializationOptions): IModel =>\n new ReglModel(this.gl, options);\n\n public createAttribute = (\n options: IAttributeInitializationOptions,\n ): IAttribute => new ReglAttribute(this.gl, options);\n\n public createBuffer = (options: IBufferInitializationOptions): IBuffer =>\n new ReglBuffer(this.gl, options);\n\n public createElements = (\n options: IElementsInitializationOptions,\n ): IElements => new ReglElements(this.gl, options);\n\n public createTexture2D = (\n options: ITexture2DInitializationOptions,\n ): ITexture2D => new ReglTexture2D(this.gl, options);\n\n public createFramebuffer = (options: IFramebufferInitializationOptions) =>\n new ReglFramebuffer(this.gl, options);\n\n public useFramebuffer = (\n framebuffer: IFramebuffer | null,\n drawCommands: () => void,\n ) => {\n this.gl({\n framebuffer: framebuffer ? (framebuffer as ReglFramebuffer).get() : null,\n })(drawCommands);\n };\n\n public clear = (options: IClearOptions) => {\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#clear-the-draw-buffer\n const { color, depth, stencil, framebuffer = null } = options;\n const reglClearOptions: regl.ClearOptions = {\n color,\n depth,\n stencil,\n };\n\n reglClearOptions.framebuffer =\n framebuffer === null\n ? framebuffer\n : (framebuffer as ReglFramebuffer).get();\n\n this.gl.clear(reglClearOptions);\n };\n\n public viewport = ({\n x,\n y,\n width,\n height,\n }: {\n x: number;\n y: number;\n width: number;\n height: number;\n }) => {\n // use WebGL context directly\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#unsafe-escape-hatch\n this.gl._gl.viewport(x, y, width, height);\n this.width = width;\n this.height = height;\n this.gl._refresh();\n };\n\n public readPixels = (options: IReadPixelsOptions) => {\n const { framebuffer, x, y, width, height } = options;\n const readPixelsOptions: regl.ReadOptions = {\n x,\n y,\n width,\n height,\n };\n if (framebuffer) {\n readPixelsOptions.framebuffer = (framebuffer as ReglFramebuffer).get();\n }\n return this.gl.read(readPixelsOptions);\n };\n\n public getViewportSize = () => {\n return {\n width: this.gl._gl.drawingBufferWidth,\n height: this.gl._gl.drawingBufferHeight,\n };\n };\n\n public getContainer = () => {\n if (isMini) {\n return this.canvas;\n } else {\n return this.canvas?.parentElement;\n }\n };\n\n public getCanvas = () => {\n // return this.$container?.getElementsByTagName('canvas')[0] || null;\n return this.canvas;\n };\n\n public getGLContext = () => {\n return this.gl._gl;\n };\n\n // TODO: 临时方法\n public setState() {\n this.gl({\n cull: {\n enable: false,\n face: 'back',\n },\n viewport: {\n x: 0,\n y: 0,\n height: this.width,\n width: this.height,\n },\n blend: {\n enable: true,\n equation: 'add',\n },\n framebuffer: null,\n });\n this.gl._refresh();\n }\n\n public setBaseState() {\n this.gl({\n cull: {\n enable: false,\n face: 'back',\n },\n viewport: {\n x: 0,\n y: 0,\n height: this.width,\n width: this.height,\n },\n blend: {\n enable: false,\n equation: 'add',\n },\n framebuffer: null,\n });\n this.gl._refresh();\n }\n public setCustomLayerDefaults() {\n const gl = this.getGLContext();\n gl.disable(gl.CULL_FACE);\n }\n\n public setDirty(flag: boolean): void {\n this.isDirty = flag;\n }\n\n public getDirty(): boolean {\n return this.isDirty;\n }\n\n public destroy = () => {\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#clean-up\n this.gl.destroy();\n };\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/regl/index.ts"],"names":["ReglRendererService","options","ReglModel","gl","ReglAttribute","ReglBuffer","ReglElements","ReglTexture2D","ReglFramebuffer","framebuffer","drawCommands","get","color","depth","stencil","reglClearOptions","clear","x","y","width","height","_gl","viewport","_refresh","readPixelsOptions","read","drawingBufferWidth","drawingBufferHeight","isMini","canvas","parentElement","destroy","cfg","Promise","resolve","reject","attributes","alpha","antialias","premultipliedAlpha","preserveDrawingBuffer","extensions","optionalExtensions","profile","onDone","err","r","extensionObject","OES_texture_float","testExtension","getParameter","ALIASED_POINT_SIZE_RANGE","name","getGLContext","getExtension","cull","enable","face","blend","equation","disable","CULL_FACE","flag","isDirty"],"mappings":"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","sourcesContent":["/**\n * render w/ regl\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md\n */\nimport {\n IAttribute,\n IAttributeInitializationOptions,\n IBuffer,\n IBufferInitializationOptions,\n IClearOptions,\n IElements,\n IElementsInitializationOptions,\n IExtensions,\n IFramebuffer,\n IFramebufferInitializationOptions,\n IModel,\n IModelInitializationOptions,\n IReadPixelsOptions,\n IRenderConfig,\n IRendererService,\n ITexture2D,\n ITexture2DInitializationOptions,\n} from '@antv/l7-core';\nimport { isMini } from '@antv/l7-utils';\nimport { injectable } from 'inversify';\nimport regl from 'l7regl';\nimport 'reflect-metadata';\nimport ReglAttribute from './ReglAttribute';\nimport ReglBuffer from './ReglBuffer';\nimport ReglElements from './ReglElements';\nimport ReglFramebuffer from './ReglFramebuffer';\nimport ReglModel from './ReglModel';\nimport ReglTexture2D from './ReglTexture2D';\n\n/**\n * regl renderer\n */\n@injectable()\nexport default class ReglRendererService implements IRendererService {\n public extensionObject: IExtensions;\n private gl: regl.Regl;\n private $container: HTMLDivElement | null;\n private canvas: HTMLCanvasElement;\n private width: number;\n private height: number;\n private isDirty: boolean;\n\n public async init(\n canvas: HTMLCanvasElement,\n cfg: IRenderConfig,\n ): Promise<void> {\n // this.$container = $container;\n this.canvas = canvas;\n // tslint:disable-next-line:typedef\n this.gl = await new Promise((resolve, reject) => {\n regl({\n canvas: this.canvas,\n attributes: {\n alpha: true,\n // use TAA instead of MSAA\n // @see https://www.khronos.org/registry/webgl/specs/1.0/#5.2.1\n antialias: cfg.antialias,\n premultipliedAlpha: true,\n preserveDrawingBuffer: cfg.preserveDrawingBuffer,\n\n stencil: cfg.stencil,\n },\n // TODO: use extensions\n extensions: [\n 'OES_element_index_uint',\n 'OES_standard_derivatives', // wireframe\n 'ANGLE_instanced_arrays', // VSM shadow map\n ],\n optionalExtensions: [\n 'oes_texture_float_linear',\n 'OES_texture_float',\n 'EXT_texture_filter_anisotropic',\n 'EXT_blend_minmax',\n 'WEBGL_depth_texture',\n ],\n profile: true,\n onDone: (err: Error | null, r?: regl.Regl | undefined): void => {\n if (err || !r) {\n reject(err);\n }\n // @ts-ignore\n resolve(r);\n },\n });\n });\n\n this.extensionObject = {\n OES_texture_float: this.testExtension('OES_texture_float'),\n };\n }\n\n public getPointSizeRange() {\n return this.gl._gl.getParameter(this.gl._gl.ALIASED_POINT_SIZE_RANGE);\n }\n\n public testExtension(name: string) {\n // OES_texture_float\n return !!this.getGLContext().getExtension(name);\n }\n\n public createModel = (options: IModelInitializationOptions): IModel =>\n new ReglModel(this.gl, options);\n\n public createAttribute = (\n options: IAttributeInitializationOptions,\n ): IAttribute => new ReglAttribute(this.gl, options);\n\n public createBuffer = (options: IBufferInitializationOptions): IBuffer =>\n new ReglBuffer(this.gl, options);\n\n public createElements = (\n options: IElementsInitializationOptions,\n ): IElements => new ReglElements(this.gl, options);\n\n public createTexture2D = (\n options: ITexture2DInitializationOptions,\n ): ITexture2D => new ReglTexture2D(this.gl, options);\n\n public createFramebuffer = (options: IFramebufferInitializationOptions) =>\n new ReglFramebuffer(this.gl, options);\n\n public useFramebuffer = (\n framebuffer: IFramebuffer | null,\n drawCommands: () => void,\n ) => {\n this.gl({\n framebuffer: framebuffer ? (framebuffer as ReglFramebuffer).get() : null,\n })(drawCommands);\n };\n\n public clear = (options: IClearOptions) => {\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#clear-the-draw-buffer\n const { color, depth, stencil, framebuffer = null } = options;\n const reglClearOptions: regl.ClearOptions = {\n color,\n depth,\n stencil,\n };\n\n reglClearOptions.framebuffer =\n framebuffer === null\n ? framebuffer\n : (framebuffer as ReglFramebuffer).get();\n\n this.gl.clear(reglClearOptions);\n };\n\n public viewport = ({\n x,\n y,\n width,\n height,\n }: {\n x: number;\n y: number;\n width: number;\n height: number;\n }) => {\n // use WebGL context directly\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#unsafe-escape-hatch\n this.gl._gl.viewport(x, y, width, height);\n this.width = width;\n this.height = height;\n this.gl._refresh();\n };\n\n public readPixels = (options: IReadPixelsOptions) => {\n const { framebuffer, x, y, width, height } = options;\n const readPixelsOptions: regl.ReadOptions = {\n x,\n y,\n width,\n height,\n };\n if (framebuffer) {\n readPixelsOptions.framebuffer = (framebuffer as ReglFramebuffer).get();\n }\n return this.gl.read(readPixelsOptions);\n };\n\n public getViewportSize = () => {\n return {\n width: this.gl._gl.drawingBufferWidth,\n height: this.gl._gl.drawingBufferHeight,\n };\n };\n\n public getContainer = () => {\n if (isMini) {\n return this.canvas;\n } else {\n return this.canvas?.parentElement;\n }\n };\n\n public getCanvas = () => {\n // return this.$container?.getElementsByTagName('canvas')[0] || null;\n return this.canvas;\n };\n\n public getGLContext = () => {\n return this.gl._gl;\n };\n\n // TODO: 临时方法\n public setState() {\n this.gl({\n cull: {\n enable: false,\n face: 'back',\n },\n viewport: {\n x: 0,\n y: 0,\n height: this.width,\n width: this.height,\n },\n blend: {\n enable: true,\n equation: 'add',\n },\n framebuffer: null,\n });\n this.gl._refresh();\n }\n\n public setBaseState() {\n this.gl({\n cull: {\n enable: false,\n face: 'back',\n },\n viewport: {\n x: 0,\n y: 0,\n height: this.width,\n width: this.height,\n },\n blend: {\n enable: false,\n equation: 'add',\n },\n framebuffer: null,\n });\n this.gl._refresh();\n }\n public setCustomLayerDefaults() {\n const gl = this.getGLContext();\n gl.disable(gl.CULL_FACE);\n }\n\n public setDirty(flag: boolean): void {\n this.isDirty = flag;\n }\n\n public getDirty(): boolean {\n return this.isDirty;\n }\n\n public destroy = () => {\n // this.canvas = null 清除对 webgl 实例的引用\n // @ts-ignore\n this.canvas = null;\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#clean-up\n this.gl.destroy();\n\n // @ts-ignore\n this.gl = null;\n };\n}\n"],"file":"index.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antv/l7-renderer",
3
- "version": "2.8.16",
3
+ "version": "2.8.19",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -26,14 +26,14 @@
26
26
  "gl": "^4.4.0"
27
27
  },
28
28
  "dependencies": {
29
- "@antv/l7-core": "^2.8.16",
29
+ "@antv/l7-core": "^2.8.19",
30
30
  "@babel/runtime": "^7.7.7",
31
31
  "inversify": "^5.0.1",
32
32
  "l7regl": "^0.0.20",
33
33
  "lodash": "^4.17.15",
34
34
  "reflect-metadata": "^0.1.13"
35
35
  },
36
- "gitHead": "83e1bc375b5540c688c1a660e6864acc6a6763ce",
36
+ "gitHead": "8e628c346491006dc60c727ad21da2e5e22aa5fc",
37
37
  "publishConfig": {
38
38
  "access": "public"
39
39
  }