UNPKG

15.3 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/webgl/ReglModel.ts"],"names":["gl","extractUniforms","blendEquationMap","blendFuncMap","cullFaceMap","depthFuncMap","primitiveMap","stencilFuncMap","stencilOpMap","ReglModel","reGl","options","drawCommand","uniforms","vs","fs","defines","attributes","primitive","count","elements","depth","blend","stencil","cull","instances","scissor","viewport","reglUniforms","Object","keys","forEach","uniformName","prop","reglAttributes","name","get","defineStmts","generateDefines","drawParams","frag","vert","undefined","TRIANGLES","initDepthDrawParams","initBlendDrawParams","initStencilDrawParams","initCullDrawParams","reglDrawProps","type","Array","isArray","BYTES_PER_ELEMENT","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","map","Number","join"],"mappings":"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","sourcesContent":["import {\n gl,\n IModel,\n IModelDrawOptions,\n IModelInitializationOptions,\n IUniform,\n} from '@antv/g-webgpu-core';\nimport regl from 'regl';\nimport { extractUniforms } from '../utils/uniform';\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 drawCommand: regl.DrawCommand;\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 defines,\n attributes,\n uniforms,\n primitive,\n count,\n elements,\n depth,\n blend,\n stencil,\n cull,\n instances,\n scissor,\n // @ts-ignore\n viewport,\n } = options;\n const reglUniforms: { [key: string]: IUniform } = {};\n if (uniforms) {\n this.uniforms = 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\n const defineStmts = (defines && this.generateDefines(defines)) || '';\n const drawParams: regl.DrawConfig = {\n attributes: reglAttributes,\n frag: `#ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n#else\n precision mediump float;\n#endif\n${defineStmts}\n${fs}`,\n uniforms: reglUniforms,\n vert: `\n${defineStmts}\n${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 if (scissor) {\n drawParams.scissor = scissor;\n }\n\n if (viewport) {\n drawParams.viewport = viewport;\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\n public addUniforms(uniforms: { [key: string]: IUniform }) {\n this.uniforms = {\n ...this.uniforms,\n ...extractUniforms(uniforms),\n };\n }\n\n public draw(options: IModelDrawOptions) {\n const uniforms: {\n [key: string]: IUniform;\n } = {\n ...this.uniforms,\n ...extractUniforms(options.uniforms || {}),\n };\n\n const reglDrawProps: {\n [key: string]:\n | regl.Framebuffer\n | regl.Texture2D\n | number\n | number[]\n | boolean;\n } = {};\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 if (type === 'string') {\n // TODO: image url\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 // don't need do anything since we will call `rendererService.cleanup()`\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 private generateDefines(defines: Record<string, number | boolean>) {\n return Object.keys(defines)\n .map((name) => `#define ${name} ${Number(defines[name])}`)\n .join('\\n');\n }\n}\n"],"file":"ReglModel.js"}
\No newline at end of file