@antv/l7-renderer 2.9.13 → 2.9.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/es/regl/index.js +3 -0
- package/es/regl/index.js.map +1 -1
- package/lib/regl/index.js +3 -0
- package/lib/regl/index.js.map +1 -1
- package/package.json +3 -3
package/es/regl/index.js
CHANGED
|
@@ -143,7 +143,10 @@ var ReglRendererService = (_dec = injectable(), _dec(_class = function () {
|
|
|
143
143
|
});
|
|
144
144
|
|
|
145
145
|
_defineProperty(this, "destroy", function () {
|
|
146
|
+
var _this$gl2, _this$gl2$_gl, _this$gl2$_gl$getExte;
|
|
147
|
+
|
|
146
148
|
_this.canvas = null;
|
|
149
|
+
(_this$gl2 = _this.gl) === null || _this$gl2 === void 0 ? void 0 : (_this$gl2$_gl = _this$gl2._gl) === null || _this$gl2$_gl === void 0 ? void 0 : (_this$gl2$_gl$getExte = _this$gl2$_gl.getExtension('WEBGL_lose_context')) === null || _this$gl2$_gl$getExte === void 0 ? void 0 : _this$gl2$_gl$getExte.loseContext();
|
|
147
150
|
|
|
148
151
|
_this.gl.destroy();
|
|
149
152
|
|
package/es/regl/index.js.map
CHANGED
|
@@ -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 // 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"}
|
|
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","getExtension","loseContext","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","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\n // make sure release webgl context\n this.gl?._gl?.getExtension('WEBGL_lose_context')?.loseContext();\n\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/lib/regl/index.js
CHANGED
|
@@ -144,7 +144,10 @@ var ReglRendererService = (_dec = (0, _inversify.injectable)(), _dec(_class = fu
|
|
|
144
144
|
return _this.gl._gl;
|
|
145
145
|
});
|
|
146
146
|
(0, _defineProperty2.default)(this, "destroy", function () {
|
|
147
|
+
var _this$gl2, _this$gl2$_gl, _this$gl2$_gl$getExte;
|
|
148
|
+
|
|
147
149
|
_this.canvas = null;
|
|
150
|
+
(_this$gl2 = _this.gl) === null || _this$gl2 === void 0 ? void 0 : (_this$gl2$_gl = _this$gl2._gl) === null || _this$gl2$_gl === void 0 ? void 0 : (_this$gl2$_gl$getExte = _this$gl2$_gl.getExtension('WEBGL_lose_context')) === null || _this$gl2$_gl$getExte === void 0 ? void 0 : _this$gl2$_gl$getExte.loseContext();
|
|
148
151
|
|
|
149
152
|
_this.gl.destroy();
|
|
150
153
|
|
package/lib/regl/index.js.map
CHANGED
|
@@ -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 // 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"}
|
|
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","getExtension","loseContext","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","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\n // make sure release webgl context\n this.gl?._gl?.getExtension('WEBGL_lose_context')?.loseContext();\n\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.9.
|
|
3
|
+
"version": "2.9.16",
|
|
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.9.
|
|
29
|
+
"@antv/l7-core": "2.9.16",
|
|
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": "
|
|
36
|
+
"gitHead": "7a4758195bb4d33cfb40e50536768e097b359022",
|
|
37
37
|
"publishConfig": {
|
|
38
38
|
"access": "public"
|
|
39
39
|
}
|