@antv/l7-renderer 2.6.10 → 2.6.11

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.
@@ -7,6 +7,7 @@ export default class ReglModel implements IModel {
7
7
  private reGl;
8
8
  private destroyed;
9
9
  private drawCommand;
10
+ private drawPickCommand;
10
11
  private drawParams;
11
12
  private options;
12
13
  private uniforms;
@@ -14,7 +15,7 @@ export default class ReglModel implements IModel {
14
15
  addUniforms(uniforms: {
15
16
  [key: string]: IUniform;
16
17
  }): void;
17
- draw(options: IModelDrawOptions): void;
18
+ draw(options: IModelDrawOptions, pick?: boolean): void;
18
19
  destroy(): void;
19
20
  /**
20
21
  * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#depth-buffer
@@ -4,6 +4,7 @@ import _createClass from "@babel/runtime/helpers/createClass";
4
4
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
5
5
  import _isTypedArray from "lodash/isTypedArray";
6
6
  import _isPlainObject from "lodash/isPlainObject";
7
+ import _cloneDeep from "lodash/cloneDeep";
7
8
 
8
9
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
9
10
 
@@ -22,6 +23,8 @@ var ReglModel = function () {
22
23
 
23
24
  _defineProperty(this, "drawCommand", void 0);
24
25
 
26
+ _defineProperty(this, "drawPickCommand", void 0);
27
+
25
28
  _defineProperty(this, "drawParams", void 0);
26
29
 
27
30
  _defineProperty(this, "options", void 0);
@@ -88,6 +91,17 @@ var ReglModel = function () {
88
91
  cull: cull
89
92
  }, drawParams);
90
93
  this.drawCommand = reGl(drawParams);
94
+
95
+ var pickDrawParams = _cloneDeep(drawParams);
96
+
97
+ pickDrawParams.blend.enable = true;
98
+ pickDrawParams.blend.func = {
99
+ dstAlpha: 'one',
100
+ dstRGB: 'one minus src alpha',
101
+ srcAlpha: 'one',
102
+ srcRGB: 'src alpha'
103
+ };
104
+ this.drawPickCommand = reGl(pickDrawParams);
91
105
  this.drawParams = drawParams;
92
106
  }
93
107
 
@@ -98,7 +112,7 @@ var ReglModel = function () {
98
112
  }
99
113
  }, {
100
114
  key: "draw",
101
- value: function draw(options) {
115
+ value: function draw(options, pick) {
102
116
  if (this.drawParams.attributes && Object.keys(this.drawParams.attributes).length === 0) {
103
117
  return;
104
118
  }
@@ -115,7 +129,12 @@ var ReglModel = function () {
115
129
  reglDrawProps[uniformName] = uniforms[uniformName].get();
116
130
  }
117
131
  });
118
- this.drawCommand(reglDrawProps);
132
+
133
+ if (!pick) {
134
+ this.drawCommand(reglDrawProps);
135
+ } else {
136
+ this.drawPickCommand(reglDrawProps);
137
+ }
119
138
  }
120
139
  }, {
121
140
  key: "destroy",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/regl/ReglModel.ts"],"names":["gl","blendEquationMap","blendFuncMap","cullFaceMap","depthFuncMap","primitiveMap","stencilFuncMap","stencilOpMap","ReglModel","reGl","options","vs","fs","attributes","uniforms","primitive","count","elements","depth","blend","stencil","cull","instances","reglUniforms","extractUniforms","Object","keys","forEach","uniformName","prop","reglAttributes","name","get","drawParams","frag","vert","undefined","TRIANGLES","initDepthDrawParams","initBlendDrawParams","initStencilDrawParams","initCullDrawParams","drawCommand","length","reglDrawProps","type","Array","isArray","BYTES_PER_ELEMENT","destroy","values","attr","destroyed","enable","mask","func","LESS","range","equation","color","srcRGB","SRC_ALPHA","srcAlpha","dstRGB","ONE_MINUS_SRC_ALPHA","dstAlpha","rgb","FUNC_ADD","alpha","cmp","ALWAYS","ref","opFront","fail","KEEP","zfail","zpass","opBack","face","BACK","extractedUniforms","extractUniformsRecursively","uniformValue","prefix","childName","child","idx"],"mappings":"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","sourcesContent":["import {\n gl,\n IAttribute,\n IModel,\n IModelDrawOptions,\n IModelInitializationOptions,\n IUniform,\n} from '@antv/l7-core';\nimport regl from 'l7regl';\nimport { isPlainObject, isTypedArray } from 'lodash';\nimport {\n blendEquationMap,\n blendFuncMap,\n cullFaceMap,\n depthFuncMap,\n primitiveMap,\n stencilFuncMap,\n stencilOpMap,\n} from './constants';\nimport ReglAttribute from './ReglAttribute';\nimport ReglElements from './ReglElements';\nimport ReglFramebuffer from './ReglFramebuffer';\nimport ReglTexture2D from './ReglTexture2D';\n\n/**\n * adaptor for regl.DrawCommand\n */\nexport default class ReglModel implements IModel {\n private reGl: regl.Regl;\n private destroyed: boolean = false;\n private drawCommand: regl.DrawCommand;\n private drawParams: regl.DrawConfig;\n private options: IModelInitializationOptions;\n private uniforms: {\n [key: string]: IUniform;\n } = {};\n\n constructor(reGl: regl.Regl, options: IModelInitializationOptions) {\n this.reGl = reGl;\n const {\n vs,\n fs,\n attributes,\n uniforms,\n primitive,\n count,\n elements,\n depth,\n blend,\n stencil,\n cull,\n instances,\n } = options;\n const reglUniforms: { [key: string]: IUniform } = {};\n this.options = options;\n if (uniforms) {\n this.uniforms = this.extractUniforms(uniforms);\n Object.keys(uniforms).forEach((uniformName) => {\n // use regl prop API\n // @ts-ignore\n reglUniforms[uniformName] = reGl.prop(uniformName);\n });\n }\n\n const reglAttributes: { [key: string]: regl.Attribute } = {};\n Object.keys(attributes).forEach((name: string) => {\n reglAttributes[name] = (attributes[name] as ReglAttribute).get();\n });\n const drawParams: regl.DrawConfig = {\n attributes: reglAttributes,\n frag: fs,\n uniforms: reglUniforms,\n vert: vs,\n primitive:\n primitiveMap[primitive === undefined ? gl.TRIANGLES : primitive],\n };\n if (instances) {\n drawParams.instances = instances;\n }\n\n // elements 中可能包含 count,此时不应传入\n if (count) {\n drawParams.count = count;\n }\n\n if (elements) {\n drawParams.elements = (elements as ReglElements).get();\n }\n\n this.initDepthDrawParams({ depth }, drawParams);\n this.initBlendDrawParams({ blend }, drawParams);\n this.initStencilDrawParams({ stencil }, drawParams);\n this.initCullDrawParams({ cull }, drawParams);\n\n this.drawCommand = reGl(drawParams);\n this.drawParams = drawParams;\n }\n\n public addUniforms(uniforms: { [key: string]: IUniform }) {\n this.uniforms = {\n ...this.uniforms,\n ...this.extractUniforms(uniforms),\n };\n }\n\n public draw(options: IModelDrawOptions) {\n if (\n this.drawParams.attributes &&\n Object.keys(this.drawParams.attributes).length === 0\n ) {\n return;\n }\n const uniforms: {\n [key: string]: IUniform;\n } = {\n ...this.uniforms,\n ...this.extractUniforms(options.uniforms || {}),\n };\n const reglDrawProps: {\n [key: string]:\n | regl.Framebuffer\n | regl.Texture2D\n | number\n | number[]\n | boolean;\n } = {};\n Object.keys(uniforms).forEach((uniformName: string) => {\n const type = typeof uniforms[uniformName];\n if (\n type === 'boolean' ||\n type === 'number' ||\n Array.isArray(uniforms[uniformName]) ||\n // @ts-ignore\n uniforms[uniformName].BYTES_PER_ELEMENT\n ) {\n reglDrawProps[uniformName] = uniforms[uniformName] as\n | number\n | number[]\n | boolean;\n } else {\n reglDrawProps[uniformName] = (uniforms[uniformName] as\n | ReglFramebuffer\n | ReglTexture2D).get();\n }\n });\n this.drawCommand(reglDrawProps);\n }\n\n public destroy() {\n // @ts-ignore\n this.drawParams.elements.destroy();\n if (this.options.attributes) {\n Object.values(this.options.attributes).forEach((attr: any) => {\n // @ts-ignore\n (attr as ReglAttribute).destroy();\n });\n }\n this.destroyed = true;\n }\n\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#depth-buffer\n */\n private initDepthDrawParams(\n { depth }: Pick<IModelInitializationOptions, 'depth'>,\n drawParams: regl.DrawConfig,\n ) {\n if (depth) {\n drawParams.depth = {\n enable: depth.enable === undefined ? true : !!depth.enable,\n mask: depth.mask === undefined ? true : !!depth.mask,\n func: depthFuncMap[depth.func || gl.LESS],\n range: depth.range || [0, 1],\n };\n }\n }\n\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#blending\n */\n private initBlendDrawParams(\n { blend }: Pick<IModelInitializationOptions, 'blend'>,\n drawParams: regl.DrawConfig,\n ) {\n if (blend) {\n const { enable, func, equation, color = [0, 0, 0, 0] } = blend;\n // @ts-ignore\n drawParams.blend = {\n enable: !!enable,\n func: {\n srcRGB: blendFuncMap[(func && func.srcRGB) || gl.SRC_ALPHA],\n srcAlpha: blendFuncMap[(func && func.srcAlpha) || gl.SRC_ALPHA],\n dstRGB: blendFuncMap[(func && func.dstRGB) || gl.ONE_MINUS_SRC_ALPHA],\n dstAlpha:\n blendFuncMap[(func && func.dstAlpha) || gl.ONE_MINUS_SRC_ALPHA],\n },\n equation: {\n rgb: blendEquationMap[(equation && equation.rgb) || gl.FUNC_ADD],\n alpha: blendEquationMap[(equation && equation.alpha) || gl.FUNC_ADD],\n },\n color,\n };\n }\n }\n\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#stencil\n */\n private initStencilDrawParams(\n { stencil }: Pick<IModelInitializationOptions, 'stencil'>,\n drawParams: regl.DrawConfig,\n ) {\n if (stencil) {\n const {\n enable,\n mask = -1,\n func = {\n cmp: gl.ALWAYS,\n ref: 0,\n mask: -1,\n },\n opFront = {\n fail: gl.KEEP,\n zfail: gl.KEEP,\n zpass: gl.KEEP,\n },\n opBack = {\n fail: gl.KEEP,\n zfail: gl.KEEP,\n zpass: gl.KEEP,\n },\n } = stencil;\n drawParams.stencil = {\n enable: !!enable,\n mask,\n func: {\n ...func,\n cmp: stencilFuncMap[func.cmp],\n },\n opFront: {\n fail: stencilOpMap[opFront.fail],\n zfail: stencilOpMap[opFront.zfail],\n zpass: stencilOpMap[opFront.zpass],\n },\n opBack: {\n fail: stencilOpMap[opBack.fail],\n zfail: stencilOpMap[opBack.zfail],\n zpass: stencilOpMap[opBack.zpass],\n },\n };\n }\n }\n\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#culling\n */\n private initCullDrawParams(\n { cull }: Pick<IModelInitializationOptions, 'cull'>,\n drawParams: regl.DrawConfig,\n ) {\n if (cull) {\n const { enable, face = gl.BACK } = cull;\n drawParams.cull = {\n enable: !!enable,\n face: cullFaceMap[face],\n };\n }\n }\n\n /**\n * 考虑结构体命名, eg:\n * a: { b: 1 } -> 'a.b'\n * a: [ { b: 1 } ] -> 'a[0].b'\n */\n private extractUniforms(uniforms: {\n [key: string]: IUniform;\n }): {\n [key: string]: IUniform;\n } {\n const extractedUniforms = {};\n Object.keys(uniforms).forEach((uniformName) => {\n this.extractUniformsRecursively(\n uniformName,\n uniforms[uniformName],\n extractedUniforms,\n '',\n );\n });\n\n return extractedUniforms;\n }\n\n private extractUniformsRecursively(\n uniformName: string,\n uniformValue: IUniform,\n uniforms: {\n [key: string]: IUniform;\n },\n prefix: string,\n ) {\n if (\n uniformValue === null ||\n typeof uniformValue === 'number' || // u_A: 1\n typeof uniformValue === 'boolean' || // u_A: false\n (Array.isArray(uniformValue) && typeof uniformValue[0] === 'number') || // u_A: [1, 2, 3]\n isTypedArray(uniformValue) || // u_A: Float32Array\n // @ts-ignore\n uniformValue === '' ||\n 'resize' in uniformValue\n ) {\n uniforms[`${prefix && prefix + '.'}${uniformName}`] = uniformValue;\n return;\n }\n\n // u_Struct.a.b.c\n if (isPlainObject(uniformValue)) {\n Object.keys(uniformValue).forEach((childName) => {\n this.extractUniformsRecursively(\n childName,\n // @ts-ignore\n uniformValue[childName],\n uniforms,\n `${prefix && prefix + '.'}${uniformName}`,\n );\n });\n }\n\n // u_Struct[0].a\n if (Array.isArray(uniformValue)) {\n uniformValue.forEach((child, idx) => {\n Object.keys(child).forEach((childName) => {\n this.extractUniformsRecursively(\n childName,\n // @ts-ignore\n child[childName],\n uniforms,\n `${prefix && prefix + '.'}${uniformName}[${idx}]`,\n );\n });\n });\n }\n }\n}\n"],"file":"ReglModel.js"}
1
+ {"version":3,"sources":["../../src/regl/ReglModel.ts"],"names":["gl","blendEquationMap","blendFuncMap","cullFaceMap","depthFuncMap","primitiveMap","stencilFuncMap","stencilOpMap","ReglModel","reGl","options","vs","fs","attributes","uniforms","primitive","count","elements","depth","blend","stencil","cull","instances","reglUniforms","extractUniforms","Object","keys","forEach","uniformName","prop","reglAttributes","name","get","drawParams","frag","vert","undefined","TRIANGLES","initDepthDrawParams","initBlendDrawParams","initStencilDrawParams","initCullDrawParams","drawCommand","pickDrawParams","enable","func","dstAlpha","dstRGB","srcAlpha","srcRGB","drawPickCommand","pick","length","reglDrawProps","type","Array","isArray","BYTES_PER_ELEMENT","destroy","values","attr","destroyed","mask","LESS","range","equation","color","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","rgb","FUNC_ADD","alpha","cmp","ALWAYS","ref","opFront","fail","KEEP","zfail","zpass","opBack","face","BACK","extractedUniforms","extractUniformsRecursively","uniformValue","prefix","childName","child","idx"],"mappings":"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","sourcesContent":["import {\n gl,\n IAttribute,\n IModel,\n IModelDrawOptions,\n IModelInitializationOptions,\n IUniform,\n} from '@antv/l7-core';\nimport regl from 'l7regl';\nimport { cloneDeep, isPlainObject, isTypedArray } from 'lodash';\nimport {\n blendEquationMap,\n blendFuncMap,\n cullFaceMap,\n depthFuncMap,\n primitiveMap,\n stencilFuncMap,\n stencilOpMap,\n} from './constants';\nimport ReglAttribute from './ReglAttribute';\nimport ReglElements from './ReglElements';\nimport ReglFramebuffer from './ReglFramebuffer';\nimport ReglTexture2D from './ReglTexture2D';\n\n/**\n * adaptor for regl.DrawCommand\n */\nexport default class ReglModel implements IModel {\n private reGl: regl.Regl;\n private destroyed: boolean = false;\n private drawCommand: regl.DrawCommand;\n private drawPickCommand: regl.DrawCommand;\n private drawParams: regl.DrawConfig;\n private options: IModelInitializationOptions;\n private uniforms: {\n [key: string]: IUniform;\n } = {};\n\n constructor(reGl: regl.Regl, options: IModelInitializationOptions) {\n this.reGl = reGl;\n const {\n vs,\n fs,\n attributes,\n uniforms,\n primitive,\n count,\n elements,\n depth,\n blend,\n stencil,\n cull,\n instances,\n } = options;\n const reglUniforms: { [key: string]: IUniform } = {};\n this.options = options;\n if (uniforms) {\n this.uniforms = this.extractUniforms(uniforms);\n Object.keys(uniforms).forEach((uniformName) => {\n // use regl prop API\n // @ts-ignore\n reglUniforms[uniformName] = reGl.prop(uniformName);\n });\n }\n\n const reglAttributes: { [key: string]: regl.Attribute } = {};\n Object.keys(attributes).forEach((name: string) => {\n reglAttributes[name] = (attributes[name] as ReglAttribute).get();\n });\n const drawParams: regl.DrawConfig = {\n attributes: reglAttributes,\n frag: fs,\n uniforms: reglUniforms,\n vert: vs,\n primitive:\n primitiveMap[primitive === undefined ? gl.TRIANGLES : primitive],\n };\n if (instances) {\n drawParams.instances = instances;\n }\n\n // elements 中可能包含 count,此时不应传入\n if (count) {\n drawParams.count = count;\n }\n\n if (elements) {\n drawParams.elements = (elements as ReglElements).get();\n }\n\n this.initDepthDrawParams({ depth }, drawParams);\n this.initBlendDrawParams({ blend }, drawParams);\n this.initStencilDrawParams({ stencil }, drawParams);\n this.initCullDrawParams({ cull }, drawParams);\n\n this.drawCommand = reGl(drawParams);\n\n const pickDrawParams = cloneDeep(drawParams);\n // @ts-ignore\n pickDrawParams.blend.enable = true;\n // @ts-ignore\n pickDrawParams.blend.func = {\n dstAlpha: 'one',\n dstRGB: 'one minus src alpha',\n srcAlpha: 'one',\n srcRGB: 'src alpha',\n };\n this.drawPickCommand = reGl(pickDrawParams);\n this.drawParams = drawParams;\n }\n\n public addUniforms(uniforms: { [key: string]: IUniform }) {\n this.uniforms = {\n ...this.uniforms,\n ...this.extractUniforms(uniforms),\n };\n }\n\n public draw(options: IModelDrawOptions, pick?: boolean) {\n // console.log('options', this.drawParams)\n if (\n this.drawParams.attributes &&\n Object.keys(this.drawParams.attributes).length === 0\n ) {\n return;\n }\n const uniforms: {\n [key: string]: IUniform;\n } = {\n ...this.uniforms,\n ...this.extractUniforms(options.uniforms || {}),\n };\n const reglDrawProps: {\n [key: string]:\n | regl.Framebuffer\n | regl.Texture2D\n | number\n | number[]\n | boolean;\n } = {};\n Object.keys(uniforms).forEach((uniformName: string) => {\n const type = typeof uniforms[uniformName];\n if (\n type === 'boolean' ||\n type === 'number' ||\n Array.isArray(uniforms[uniformName]) ||\n // @ts-ignore\n uniforms[uniformName].BYTES_PER_ELEMENT\n ) {\n reglDrawProps[uniformName] = uniforms[uniformName] as\n | number\n | number[]\n | boolean;\n } else {\n reglDrawProps[uniformName] = (uniforms[uniformName] as\n | ReglFramebuffer\n | ReglTexture2D).get();\n }\n });\n // TODO: 在进行拾取操作的绘制中,不应该使用叠加模式 - picking 根据拾取的颜色作为判断的输入,而叠加模式会产生新的,在 id 序列中不存在的颜色\n if (!pick) {\n this.drawCommand(reglDrawProps);\n } else {\n this.drawPickCommand(reglDrawProps);\n }\n // this.drawCommand(reglDrawProps);\n // this.drawPickCommand(reglDrawProps);\n }\n\n public destroy() {\n // @ts-ignore\n this.drawParams.elements.destroy();\n if (this.options.attributes) {\n Object.values(this.options.attributes).forEach((attr: any) => {\n // @ts-ignore\n (attr as ReglAttribute).destroy();\n });\n }\n this.destroyed = true;\n }\n\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#depth-buffer\n */\n private initDepthDrawParams(\n { depth }: Pick<IModelInitializationOptions, 'depth'>,\n drawParams: regl.DrawConfig,\n ) {\n if (depth) {\n drawParams.depth = {\n enable: depth.enable === undefined ? true : !!depth.enable,\n mask: depth.mask === undefined ? true : !!depth.mask,\n func: depthFuncMap[depth.func || gl.LESS],\n range: depth.range || [0, 1],\n };\n }\n }\n\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#blending\n */\n private initBlendDrawParams(\n { blend }: Pick<IModelInitializationOptions, 'blend'>,\n drawParams: regl.DrawConfig,\n ) {\n if (blend) {\n const { enable, func, equation, color = [0, 0, 0, 0] } = blend;\n // @ts-ignore\n drawParams.blend = {\n enable: !!enable,\n func: {\n srcRGB: blendFuncMap[(func && func.srcRGB) || gl.SRC_ALPHA],\n srcAlpha: blendFuncMap[(func && func.srcAlpha) || gl.SRC_ALPHA],\n dstRGB: blendFuncMap[(func && func.dstRGB) || gl.ONE_MINUS_SRC_ALPHA],\n dstAlpha:\n blendFuncMap[(func && func.dstAlpha) || gl.ONE_MINUS_SRC_ALPHA],\n },\n equation: {\n rgb: blendEquationMap[(equation && equation.rgb) || gl.FUNC_ADD],\n alpha: blendEquationMap[(equation && equation.alpha) || gl.FUNC_ADD],\n },\n color,\n };\n }\n }\n\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#stencil\n */\n private initStencilDrawParams(\n { stencil }: Pick<IModelInitializationOptions, 'stencil'>,\n drawParams: regl.DrawConfig,\n ) {\n if (stencil) {\n const {\n enable,\n mask = -1,\n func = {\n cmp: gl.ALWAYS,\n ref: 0,\n mask: -1,\n },\n opFront = {\n fail: gl.KEEP,\n zfail: gl.KEEP,\n zpass: gl.KEEP,\n },\n opBack = {\n fail: gl.KEEP,\n zfail: gl.KEEP,\n zpass: gl.KEEP,\n },\n } = stencil;\n drawParams.stencil = {\n enable: !!enable,\n mask,\n func: {\n ...func,\n cmp: stencilFuncMap[func.cmp],\n },\n opFront: {\n fail: stencilOpMap[opFront.fail],\n zfail: stencilOpMap[opFront.zfail],\n zpass: stencilOpMap[opFront.zpass],\n },\n opBack: {\n fail: stencilOpMap[opBack.fail],\n zfail: stencilOpMap[opBack.zfail],\n zpass: stencilOpMap[opBack.zpass],\n },\n };\n }\n }\n\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#culling\n */\n private initCullDrawParams(\n { cull }: Pick<IModelInitializationOptions, 'cull'>,\n drawParams: regl.DrawConfig,\n ) {\n if (cull) {\n const { enable, face = gl.BACK } = cull;\n drawParams.cull = {\n enable: !!enable,\n face: cullFaceMap[face],\n };\n }\n }\n\n /**\n * 考虑结构体命名, eg:\n * a: { b: 1 } -> 'a.b'\n * a: [ { b: 1 } ] -> 'a[0].b'\n */\n private extractUniforms(uniforms: {\n [key: string]: IUniform;\n }): {\n [key: string]: IUniform;\n } {\n const extractedUniforms = {};\n Object.keys(uniforms).forEach((uniformName) => {\n this.extractUniformsRecursively(\n uniformName,\n uniforms[uniformName],\n extractedUniforms,\n '',\n );\n });\n\n return extractedUniforms;\n }\n\n private extractUniformsRecursively(\n uniformName: string,\n uniformValue: IUniform,\n uniforms: {\n [key: string]: IUniform;\n },\n prefix: string,\n ) {\n if (\n uniformValue === null ||\n typeof uniformValue === 'number' || // u_A: 1\n typeof uniformValue === 'boolean' || // u_A: false\n (Array.isArray(uniformValue) && typeof uniformValue[0] === 'number') || // u_A: [1, 2, 3]\n isTypedArray(uniformValue) || // u_A: Float32Array\n // @ts-ignore\n uniformValue === '' ||\n 'resize' in uniformValue\n ) {\n uniforms[`${prefix && prefix + '.'}${uniformName}`] = uniformValue;\n return;\n }\n\n // u_Struct.a.b.c\n if (isPlainObject(uniformValue)) {\n Object.keys(uniformValue).forEach((childName) => {\n this.extractUniformsRecursively(\n childName,\n // @ts-ignore\n uniformValue[childName],\n uniforms,\n `${prefix && prefix + '.'}${uniformName}`,\n );\n });\n }\n\n // u_Struct[0].a\n if (Array.isArray(uniformValue)) {\n uniformValue.forEach((child, idx) => {\n Object.keys(child).forEach((childName) => {\n this.extractUniformsRecursively(\n childName,\n // @ts-ignore\n child[childName],\n uniforms,\n `${prefix && prefix + '.'}${uniformName}[${idx}]`,\n );\n });\n });\n }\n }\n}\n"],"file":"ReglModel.js"}
@@ -19,6 +19,8 @@ var _isTypedArray2 = _interopRequireDefault(require("lodash/isTypedArray"));
19
19
 
20
20
  var _isPlainObject2 = _interopRequireDefault(require("lodash/isPlainObject"));
21
21
 
22
+ var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
23
+
22
24
  var _l7Core = require("@antv/l7-core");
23
25
 
24
26
  var _constants = require("./constants");
@@ -33,6 +35,7 @@ var ReglModel = function () {
33
35
  (0, _defineProperty2.default)(this, "reGl", void 0);
34
36
  (0, _defineProperty2.default)(this, "destroyed", false);
35
37
  (0, _defineProperty2.default)(this, "drawCommand", void 0);
38
+ (0, _defineProperty2.default)(this, "drawPickCommand", void 0);
36
39
  (0, _defineProperty2.default)(this, "drawParams", void 0);
37
40
  (0, _defineProperty2.default)(this, "options", void 0);
38
41
  (0, _defineProperty2.default)(this, "uniforms", {});
@@ -96,6 +99,15 @@ var ReglModel = function () {
96
99
  cull: cull
97
100
  }, drawParams);
98
101
  this.drawCommand = reGl(drawParams);
102
+ var pickDrawParams = (0, _cloneDeep2.default)(drawParams);
103
+ pickDrawParams.blend.enable = true;
104
+ pickDrawParams.blend.func = {
105
+ dstAlpha: 'one',
106
+ dstRGB: 'one minus src alpha',
107
+ srcAlpha: 'one',
108
+ srcRGB: 'src alpha'
109
+ };
110
+ this.drawPickCommand = reGl(pickDrawParams);
99
111
  this.drawParams = drawParams;
100
112
  }
101
113
 
@@ -106,7 +118,7 @@ var ReglModel = function () {
106
118
  }
107
119
  }, {
108
120
  key: "draw",
109
- value: function draw(options) {
121
+ value: function draw(options, pick) {
110
122
  if (this.drawParams.attributes && Object.keys(this.drawParams.attributes).length === 0) {
111
123
  return;
112
124
  }
@@ -123,7 +135,12 @@ var ReglModel = function () {
123
135
  reglDrawProps[uniformName] = uniforms[uniformName].get();
124
136
  }
125
137
  });
126
- this.drawCommand(reglDrawProps);
138
+
139
+ if (!pick) {
140
+ this.drawCommand(reglDrawProps);
141
+ } else {
142
+ this.drawPickCommand(reglDrawProps);
143
+ }
127
144
  }
128
145
  }, {
129
146
  key: "destroy",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/regl/ReglModel.ts"],"names":["ReglModel","reGl","options","vs","fs","attributes","uniforms","primitive","count","elements","depth","blend","stencil","cull","instances","reglUniforms","extractUniforms","Object","keys","forEach","uniformName","prop","reglAttributes","name","get","drawParams","frag","vert","primitiveMap","undefined","gl","TRIANGLES","initDepthDrawParams","initBlendDrawParams","initStencilDrawParams","initCullDrawParams","drawCommand","length","reglDrawProps","type","Array","isArray","BYTES_PER_ELEMENT","destroy","values","attr","destroyed","enable","mask","func","depthFuncMap","LESS","range","equation","color","srcRGB","blendFuncMap","SRC_ALPHA","srcAlpha","dstRGB","ONE_MINUS_SRC_ALPHA","dstAlpha","rgb","blendEquationMap","FUNC_ADD","alpha","cmp","ALWAYS","ref","opFront","fail","KEEP","zfail","zpass","opBack","stencilFuncMap","stencilOpMap","face","BACK","cullFaceMap","extractedUniforms","extractUniformsRecursively","uniformValue","prefix","childName","child","idx"],"mappings":"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","sourcesContent":["import {\n gl,\n IAttribute,\n IModel,\n IModelDrawOptions,\n IModelInitializationOptions,\n IUniform,\n} from '@antv/l7-core';\nimport regl from 'l7regl';\nimport { isPlainObject, isTypedArray } from 'lodash';\nimport {\n blendEquationMap,\n blendFuncMap,\n cullFaceMap,\n depthFuncMap,\n primitiveMap,\n stencilFuncMap,\n stencilOpMap,\n} from './constants';\nimport ReglAttribute from './ReglAttribute';\nimport ReglElements from './ReglElements';\nimport ReglFramebuffer from './ReglFramebuffer';\nimport ReglTexture2D from './ReglTexture2D';\n\n/**\n * adaptor for regl.DrawCommand\n */\nexport default class ReglModel implements IModel {\n private reGl: regl.Regl;\n private destroyed: boolean = false;\n private drawCommand: regl.DrawCommand;\n private drawParams: regl.DrawConfig;\n private options: IModelInitializationOptions;\n private uniforms: {\n [key: string]: IUniform;\n } = {};\n\n constructor(reGl: regl.Regl, options: IModelInitializationOptions) {\n this.reGl = reGl;\n const {\n vs,\n fs,\n attributes,\n uniforms,\n primitive,\n count,\n elements,\n depth,\n blend,\n stencil,\n cull,\n instances,\n } = options;\n const reglUniforms: { [key: string]: IUniform } = {};\n this.options = options;\n if (uniforms) {\n this.uniforms = this.extractUniforms(uniforms);\n Object.keys(uniforms).forEach((uniformName) => {\n // use regl prop API\n // @ts-ignore\n reglUniforms[uniformName] = reGl.prop(uniformName);\n });\n }\n\n const reglAttributes: { [key: string]: regl.Attribute } = {};\n Object.keys(attributes).forEach((name: string) => {\n reglAttributes[name] = (attributes[name] as ReglAttribute).get();\n });\n const drawParams: regl.DrawConfig = {\n attributes: reglAttributes,\n frag: fs,\n uniforms: reglUniforms,\n vert: vs,\n primitive:\n primitiveMap[primitive === undefined ? gl.TRIANGLES : primitive],\n };\n if (instances) {\n drawParams.instances = instances;\n }\n\n // elements 中可能包含 count,此时不应传入\n if (count) {\n drawParams.count = count;\n }\n\n if (elements) {\n drawParams.elements = (elements as ReglElements).get();\n }\n\n this.initDepthDrawParams({ depth }, drawParams);\n this.initBlendDrawParams({ blend }, drawParams);\n this.initStencilDrawParams({ stencil }, drawParams);\n this.initCullDrawParams({ cull }, drawParams);\n\n this.drawCommand = reGl(drawParams);\n this.drawParams = drawParams;\n }\n\n public addUniforms(uniforms: { [key: string]: IUniform }) {\n this.uniforms = {\n ...this.uniforms,\n ...this.extractUniforms(uniforms),\n };\n }\n\n public draw(options: IModelDrawOptions) {\n if (\n this.drawParams.attributes &&\n Object.keys(this.drawParams.attributes).length === 0\n ) {\n return;\n }\n const uniforms: {\n [key: string]: IUniform;\n } = {\n ...this.uniforms,\n ...this.extractUniforms(options.uniforms || {}),\n };\n const reglDrawProps: {\n [key: string]:\n | regl.Framebuffer\n | regl.Texture2D\n | number\n | number[]\n | boolean;\n } = {};\n Object.keys(uniforms).forEach((uniformName: string) => {\n const type = typeof uniforms[uniformName];\n if (\n type === 'boolean' ||\n type === 'number' ||\n Array.isArray(uniforms[uniformName]) ||\n // @ts-ignore\n uniforms[uniformName].BYTES_PER_ELEMENT\n ) {\n reglDrawProps[uniformName] = uniforms[uniformName] as\n | number\n | number[]\n | boolean;\n } else {\n reglDrawProps[uniformName] = (uniforms[uniformName] as\n | ReglFramebuffer\n | ReglTexture2D).get();\n }\n });\n this.drawCommand(reglDrawProps);\n }\n\n public destroy() {\n // @ts-ignore\n this.drawParams.elements.destroy();\n if (this.options.attributes) {\n Object.values(this.options.attributes).forEach((attr: any) => {\n // @ts-ignore\n (attr as ReglAttribute).destroy();\n });\n }\n this.destroyed = true;\n }\n\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#depth-buffer\n */\n private initDepthDrawParams(\n { depth }: Pick<IModelInitializationOptions, 'depth'>,\n drawParams: regl.DrawConfig,\n ) {\n if (depth) {\n drawParams.depth = {\n enable: depth.enable === undefined ? true : !!depth.enable,\n mask: depth.mask === undefined ? true : !!depth.mask,\n func: depthFuncMap[depth.func || gl.LESS],\n range: depth.range || [0, 1],\n };\n }\n }\n\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#blending\n */\n private initBlendDrawParams(\n { blend }: Pick<IModelInitializationOptions, 'blend'>,\n drawParams: regl.DrawConfig,\n ) {\n if (blend) {\n const { enable, func, equation, color = [0, 0, 0, 0] } = blend;\n // @ts-ignore\n drawParams.blend = {\n enable: !!enable,\n func: {\n srcRGB: blendFuncMap[(func && func.srcRGB) || gl.SRC_ALPHA],\n srcAlpha: blendFuncMap[(func && func.srcAlpha) || gl.SRC_ALPHA],\n dstRGB: blendFuncMap[(func && func.dstRGB) || gl.ONE_MINUS_SRC_ALPHA],\n dstAlpha:\n blendFuncMap[(func && func.dstAlpha) || gl.ONE_MINUS_SRC_ALPHA],\n },\n equation: {\n rgb: blendEquationMap[(equation && equation.rgb) || gl.FUNC_ADD],\n alpha: blendEquationMap[(equation && equation.alpha) || gl.FUNC_ADD],\n },\n color,\n };\n }\n }\n\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#stencil\n */\n private initStencilDrawParams(\n { stencil }: Pick<IModelInitializationOptions, 'stencil'>,\n drawParams: regl.DrawConfig,\n ) {\n if (stencil) {\n const {\n enable,\n mask = -1,\n func = {\n cmp: gl.ALWAYS,\n ref: 0,\n mask: -1,\n },\n opFront = {\n fail: gl.KEEP,\n zfail: gl.KEEP,\n zpass: gl.KEEP,\n },\n opBack = {\n fail: gl.KEEP,\n zfail: gl.KEEP,\n zpass: gl.KEEP,\n },\n } = stencil;\n drawParams.stencil = {\n enable: !!enable,\n mask,\n func: {\n ...func,\n cmp: stencilFuncMap[func.cmp],\n },\n opFront: {\n fail: stencilOpMap[opFront.fail],\n zfail: stencilOpMap[opFront.zfail],\n zpass: stencilOpMap[opFront.zpass],\n },\n opBack: {\n fail: stencilOpMap[opBack.fail],\n zfail: stencilOpMap[opBack.zfail],\n zpass: stencilOpMap[opBack.zpass],\n },\n };\n }\n }\n\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#culling\n */\n private initCullDrawParams(\n { cull }: Pick<IModelInitializationOptions, 'cull'>,\n drawParams: regl.DrawConfig,\n ) {\n if (cull) {\n const { enable, face = gl.BACK } = cull;\n drawParams.cull = {\n enable: !!enable,\n face: cullFaceMap[face],\n };\n }\n }\n\n /**\n * 考虑结构体命名, eg:\n * a: { b: 1 } -> 'a.b'\n * a: [ { b: 1 } ] -> 'a[0].b'\n */\n private extractUniforms(uniforms: {\n [key: string]: IUniform;\n }): {\n [key: string]: IUniform;\n } {\n const extractedUniforms = {};\n Object.keys(uniforms).forEach((uniformName) => {\n this.extractUniformsRecursively(\n uniformName,\n uniforms[uniformName],\n extractedUniforms,\n '',\n );\n });\n\n return extractedUniforms;\n }\n\n private extractUniformsRecursively(\n uniformName: string,\n uniformValue: IUniform,\n uniforms: {\n [key: string]: IUniform;\n },\n prefix: string,\n ) {\n if (\n uniformValue === null ||\n typeof uniformValue === 'number' || // u_A: 1\n typeof uniformValue === 'boolean' || // u_A: false\n (Array.isArray(uniformValue) && typeof uniformValue[0] === 'number') || // u_A: [1, 2, 3]\n isTypedArray(uniformValue) || // u_A: Float32Array\n // @ts-ignore\n uniformValue === '' ||\n 'resize' in uniformValue\n ) {\n uniforms[`${prefix && prefix + '.'}${uniformName}`] = uniformValue;\n return;\n }\n\n // u_Struct.a.b.c\n if (isPlainObject(uniformValue)) {\n Object.keys(uniformValue).forEach((childName) => {\n this.extractUniformsRecursively(\n childName,\n // @ts-ignore\n uniformValue[childName],\n uniforms,\n `${prefix && prefix + '.'}${uniformName}`,\n );\n });\n }\n\n // u_Struct[0].a\n if (Array.isArray(uniformValue)) {\n uniformValue.forEach((child, idx) => {\n Object.keys(child).forEach((childName) => {\n this.extractUniformsRecursively(\n childName,\n // @ts-ignore\n child[childName],\n uniforms,\n `${prefix && prefix + '.'}${uniformName}[${idx}]`,\n );\n });\n });\n }\n }\n}\n"],"file":"ReglModel.js"}
1
+ {"version":3,"sources":["../../src/regl/ReglModel.ts"],"names":["ReglModel","reGl","options","vs","fs","attributes","uniforms","primitive","count","elements","depth","blend","stencil","cull","instances","reglUniforms","extractUniforms","Object","keys","forEach","uniformName","prop","reglAttributes","name","get","drawParams","frag","vert","primitiveMap","undefined","gl","TRIANGLES","initDepthDrawParams","initBlendDrawParams","initStencilDrawParams","initCullDrawParams","drawCommand","pickDrawParams","enable","func","dstAlpha","dstRGB","srcAlpha","srcRGB","drawPickCommand","pick","length","reglDrawProps","type","Array","isArray","BYTES_PER_ELEMENT","destroy","values","attr","destroyed","mask","depthFuncMap","LESS","range","equation","color","blendFuncMap","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","rgb","blendEquationMap","FUNC_ADD","alpha","cmp","ALWAYS","ref","opFront","fail","KEEP","zfail","zpass","opBack","stencilFuncMap","stencilOpMap","face","BACK","cullFaceMap","extractedUniforms","extractUniformsRecursively","uniformValue","prefix","childName","child","idx"],"mappings":"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","sourcesContent":["import {\n gl,\n IAttribute,\n IModel,\n IModelDrawOptions,\n IModelInitializationOptions,\n IUniform,\n} from '@antv/l7-core';\nimport regl from 'l7regl';\nimport { cloneDeep, isPlainObject, isTypedArray } from 'lodash';\nimport {\n blendEquationMap,\n blendFuncMap,\n cullFaceMap,\n depthFuncMap,\n primitiveMap,\n stencilFuncMap,\n stencilOpMap,\n} from './constants';\nimport ReglAttribute from './ReglAttribute';\nimport ReglElements from './ReglElements';\nimport ReglFramebuffer from './ReglFramebuffer';\nimport ReglTexture2D from './ReglTexture2D';\n\n/**\n * adaptor for regl.DrawCommand\n */\nexport default class ReglModel implements IModel {\n private reGl: regl.Regl;\n private destroyed: boolean = false;\n private drawCommand: regl.DrawCommand;\n private drawPickCommand: regl.DrawCommand;\n private drawParams: regl.DrawConfig;\n private options: IModelInitializationOptions;\n private uniforms: {\n [key: string]: IUniform;\n } = {};\n\n constructor(reGl: regl.Regl, options: IModelInitializationOptions) {\n this.reGl = reGl;\n const {\n vs,\n fs,\n attributes,\n uniforms,\n primitive,\n count,\n elements,\n depth,\n blend,\n stencil,\n cull,\n instances,\n } = options;\n const reglUniforms: { [key: string]: IUniform } = {};\n this.options = options;\n if (uniforms) {\n this.uniforms = this.extractUniforms(uniforms);\n Object.keys(uniforms).forEach((uniformName) => {\n // use regl prop API\n // @ts-ignore\n reglUniforms[uniformName] = reGl.prop(uniformName);\n });\n }\n\n const reglAttributes: { [key: string]: regl.Attribute } = {};\n Object.keys(attributes).forEach((name: string) => {\n reglAttributes[name] = (attributes[name] as ReglAttribute).get();\n });\n const drawParams: regl.DrawConfig = {\n attributes: reglAttributes,\n frag: fs,\n uniforms: reglUniforms,\n vert: vs,\n primitive:\n primitiveMap[primitive === undefined ? gl.TRIANGLES : primitive],\n };\n if (instances) {\n drawParams.instances = instances;\n }\n\n // elements 中可能包含 count,此时不应传入\n if (count) {\n drawParams.count = count;\n }\n\n if (elements) {\n drawParams.elements = (elements as ReglElements).get();\n }\n\n this.initDepthDrawParams({ depth }, drawParams);\n this.initBlendDrawParams({ blend }, drawParams);\n this.initStencilDrawParams({ stencil }, drawParams);\n this.initCullDrawParams({ cull }, drawParams);\n\n this.drawCommand = reGl(drawParams);\n\n const pickDrawParams = cloneDeep(drawParams);\n // @ts-ignore\n pickDrawParams.blend.enable = true;\n // @ts-ignore\n pickDrawParams.blend.func = {\n dstAlpha: 'one',\n dstRGB: 'one minus src alpha',\n srcAlpha: 'one',\n srcRGB: 'src alpha',\n };\n this.drawPickCommand = reGl(pickDrawParams);\n this.drawParams = drawParams;\n }\n\n public addUniforms(uniforms: { [key: string]: IUniform }) {\n this.uniforms = {\n ...this.uniforms,\n ...this.extractUniforms(uniforms),\n };\n }\n\n public draw(options: IModelDrawOptions, pick?: boolean) {\n // console.log('options', this.drawParams)\n if (\n this.drawParams.attributes &&\n Object.keys(this.drawParams.attributes).length === 0\n ) {\n return;\n }\n const uniforms: {\n [key: string]: IUniform;\n } = {\n ...this.uniforms,\n ...this.extractUniforms(options.uniforms || {}),\n };\n const reglDrawProps: {\n [key: string]:\n | regl.Framebuffer\n | regl.Texture2D\n | number\n | number[]\n | boolean;\n } = {};\n Object.keys(uniforms).forEach((uniformName: string) => {\n const type = typeof uniforms[uniformName];\n if (\n type === 'boolean' ||\n type === 'number' ||\n Array.isArray(uniforms[uniformName]) ||\n // @ts-ignore\n uniforms[uniformName].BYTES_PER_ELEMENT\n ) {\n reglDrawProps[uniformName] = uniforms[uniformName] as\n | number\n | number[]\n | boolean;\n } else {\n reglDrawProps[uniformName] = (uniforms[uniformName] as\n | ReglFramebuffer\n | ReglTexture2D).get();\n }\n });\n // TODO: 在进行拾取操作的绘制中,不应该使用叠加模式 - picking 根据拾取的颜色作为判断的输入,而叠加模式会产生新的,在 id 序列中不存在的颜色\n if (!pick) {\n this.drawCommand(reglDrawProps);\n } else {\n this.drawPickCommand(reglDrawProps);\n }\n // this.drawCommand(reglDrawProps);\n // this.drawPickCommand(reglDrawProps);\n }\n\n public destroy() {\n // @ts-ignore\n this.drawParams.elements.destroy();\n if (this.options.attributes) {\n Object.values(this.options.attributes).forEach((attr: any) => {\n // @ts-ignore\n (attr as ReglAttribute).destroy();\n });\n }\n this.destroyed = true;\n }\n\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#depth-buffer\n */\n private initDepthDrawParams(\n { depth }: Pick<IModelInitializationOptions, 'depth'>,\n drawParams: regl.DrawConfig,\n ) {\n if (depth) {\n drawParams.depth = {\n enable: depth.enable === undefined ? true : !!depth.enable,\n mask: depth.mask === undefined ? true : !!depth.mask,\n func: depthFuncMap[depth.func || gl.LESS],\n range: depth.range || [0, 1],\n };\n }\n }\n\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#blending\n */\n private initBlendDrawParams(\n { blend }: Pick<IModelInitializationOptions, 'blend'>,\n drawParams: regl.DrawConfig,\n ) {\n if (blend) {\n const { enable, func, equation, color = [0, 0, 0, 0] } = blend;\n // @ts-ignore\n drawParams.blend = {\n enable: !!enable,\n func: {\n srcRGB: blendFuncMap[(func && func.srcRGB) || gl.SRC_ALPHA],\n srcAlpha: blendFuncMap[(func && func.srcAlpha) || gl.SRC_ALPHA],\n dstRGB: blendFuncMap[(func && func.dstRGB) || gl.ONE_MINUS_SRC_ALPHA],\n dstAlpha:\n blendFuncMap[(func && func.dstAlpha) || gl.ONE_MINUS_SRC_ALPHA],\n },\n equation: {\n rgb: blendEquationMap[(equation && equation.rgb) || gl.FUNC_ADD],\n alpha: blendEquationMap[(equation && equation.alpha) || gl.FUNC_ADD],\n },\n color,\n };\n }\n }\n\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#stencil\n */\n private initStencilDrawParams(\n { stencil }: Pick<IModelInitializationOptions, 'stencil'>,\n drawParams: regl.DrawConfig,\n ) {\n if (stencil) {\n const {\n enable,\n mask = -1,\n func = {\n cmp: gl.ALWAYS,\n ref: 0,\n mask: -1,\n },\n opFront = {\n fail: gl.KEEP,\n zfail: gl.KEEP,\n zpass: gl.KEEP,\n },\n opBack = {\n fail: gl.KEEP,\n zfail: gl.KEEP,\n zpass: gl.KEEP,\n },\n } = stencil;\n drawParams.stencil = {\n enable: !!enable,\n mask,\n func: {\n ...func,\n cmp: stencilFuncMap[func.cmp],\n },\n opFront: {\n fail: stencilOpMap[opFront.fail],\n zfail: stencilOpMap[opFront.zfail],\n zpass: stencilOpMap[opFront.zpass],\n },\n opBack: {\n fail: stencilOpMap[opBack.fail],\n zfail: stencilOpMap[opBack.zfail],\n zpass: stencilOpMap[opBack.zpass],\n },\n };\n }\n }\n\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#culling\n */\n private initCullDrawParams(\n { cull }: Pick<IModelInitializationOptions, 'cull'>,\n drawParams: regl.DrawConfig,\n ) {\n if (cull) {\n const { enable, face = gl.BACK } = cull;\n drawParams.cull = {\n enable: !!enable,\n face: cullFaceMap[face],\n };\n }\n }\n\n /**\n * 考虑结构体命名, eg:\n * a: { b: 1 } -> 'a.b'\n * a: [ { b: 1 } ] -> 'a[0].b'\n */\n private extractUniforms(uniforms: {\n [key: string]: IUniform;\n }): {\n [key: string]: IUniform;\n } {\n const extractedUniforms = {};\n Object.keys(uniforms).forEach((uniformName) => {\n this.extractUniformsRecursively(\n uniformName,\n uniforms[uniformName],\n extractedUniforms,\n '',\n );\n });\n\n return extractedUniforms;\n }\n\n private extractUniformsRecursively(\n uniformName: string,\n uniformValue: IUniform,\n uniforms: {\n [key: string]: IUniform;\n },\n prefix: string,\n ) {\n if (\n uniformValue === null ||\n typeof uniformValue === 'number' || // u_A: 1\n typeof uniformValue === 'boolean' || // u_A: false\n (Array.isArray(uniformValue) && typeof uniformValue[0] === 'number') || // u_A: [1, 2, 3]\n isTypedArray(uniformValue) || // u_A: Float32Array\n // @ts-ignore\n uniformValue === '' ||\n 'resize' in uniformValue\n ) {\n uniforms[`${prefix && prefix + '.'}${uniformName}`] = uniformValue;\n return;\n }\n\n // u_Struct.a.b.c\n if (isPlainObject(uniformValue)) {\n Object.keys(uniformValue).forEach((childName) => {\n this.extractUniformsRecursively(\n childName,\n // @ts-ignore\n uniformValue[childName],\n uniforms,\n `${prefix && prefix + '.'}${uniformName}`,\n );\n });\n }\n\n // u_Struct[0].a\n if (Array.isArray(uniformValue)) {\n uniformValue.forEach((child, idx) => {\n Object.keys(child).forEach((childName) => {\n this.extractUniformsRecursively(\n childName,\n // @ts-ignore\n child[childName],\n uniforms,\n `${prefix && prefix + '.'}${uniformName}[${idx}]`,\n );\n });\n });\n }\n }\n}\n"],"file":"ReglModel.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antv/l7-renderer",
3
- "version": "2.6.10",
3
+ "version": "2.6.11",
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.6.10",
29
+ "@antv/l7-core": "^2.6.11",
30
30
  "@babel/runtime": "^7.7.7",
31
31
  "inversify": "^5.0.1",
32
32
  "l7regl": "^0.0.16",
33
33
  "lodash": "^4.17.15",
34
34
  "reflect-metadata": "^0.1.13"
35
35
  },
36
- "gitHead": "febd6e999413d57f412e7b1b109f2bb9e49a8ead",
36
+ "gitHead": "621f0317609740da301e930b0843a17e79f7b5d8",
37
37
  "publishConfig": {
38
38
  "access": "public"
39
39
  }