@luma.gl/engine 8.5.7 → 8.6.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animation/key-frames.d.ts +18 -0
- package/dist/animation/key-frames.d.ts.map +1 -0
- package/dist/{esm/animation → animation}/key-frames.js +13 -6
- package/dist/animation/key-frames.js.map +1 -0
- package/dist/animation/timeline.d.ts +51 -0
- package/dist/animation/timeline.d.ts.map +1 -0
- package/dist/{esm/animation → animation}/timeline.js +10 -5
- package/dist/animation/timeline.js.map +1 -0
- package/dist/bundle.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +5 -0
- package/dist/bundle.js.map +1 -0
- package/dist/geometries/cone-geometry.d.ts +10 -0
- package/dist/geometries/cone-geometry.d.ts.map +1 -0
- package/dist/{esm/geometries → geometries}/cone-geometry.js +2 -2
- package/dist/geometries/cone-geometry.js.map +1 -0
- package/dist/geometries/cube-geometry.d.ts +9 -0
- package/dist/geometries/cube-geometry.d.ts.map +1 -0
- package/dist/{esm/geometries → geometries}/cube-geometry.js +18 -18
- package/dist/geometries/cube-geometry.js.map +1 -0
- package/dist/geometries/cylinder-geometry.d.ts +10 -0
- package/dist/geometries/cylinder-geometry.d.ts.map +1 -0
- package/dist/{esm/geometries → geometries}/cylinder-geometry.js +2 -2
- package/dist/geometries/cylinder-geometry.js.map +1 -0
- package/dist/geometries/ico-sphere-geometry.d.ts +11 -0
- package/dist/geometries/ico-sphere-geometry.d.ts.map +1 -0
- package/dist/{esm/geometries → geometries}/ico-sphere-geometry.js +2 -2
- package/dist/geometries/ico-sphere-geometry.js.map +1 -0
- package/dist/geometries/plane-geometry.d.ts +10 -0
- package/dist/geometries/plane-geometry.d.ts.map +1 -0
- package/dist/{esm/geometries → geometries}/plane-geometry.js +5 -5
- package/dist/geometries/plane-geometry.js.map +1 -0
- package/dist/geometries/sphere-geometry.d.ts +12 -0
- package/dist/geometries/sphere-geometry.d.ts.map +1 -0
- package/dist/{esm/geometries → geometries}/sphere-geometry.js +2 -9
- package/dist/geometries/sphere-geometry.js.map +1 -0
- package/dist/geometries/truncated-cone-geometry.d.ts +13 -0
- package/dist/geometries/truncated-cone-geometry.d.ts.map +1 -0
- package/dist/{esm/geometries → geometries}/truncated-cone-geometry.js +1 -1
- package/dist/geometries/truncated-cone-geometry.js.map +1 -0
- package/dist/geometry/geometry-utils.d.ts +2 -0
- package/dist/geometry/geometry-utils.d.ts.map +1 -0
- package/dist/{esm/geometry → geometry}/geometry-utils.js +0 -0
- package/dist/geometry/geometry-utils.js.map +1 -0
- package/dist/geometry/geometry.d.ts +44 -0
- package/dist/geometry/geometry.d.ts.map +1 -0
- package/dist/{esm/geometry → geometry}/geometry.js +28 -19
- package/dist/geometry/geometry.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/animation-loop.d.ts +120 -0
- package/dist/lib/animation-loop.d.ts.map +1 -0
- package/dist/{esm/lib → lib}/animation-loop.js +135 -97
- package/dist/lib/animation-loop.js.map +1 -0
- package/dist/lib/model-utils.d.ts +4 -0
- package/dist/lib/model-utils.d.ts.map +1 -0
- package/dist/{esm/lib → lib}/model-utils.js +3 -2
- package/dist/lib/model-utils.js.map +1 -0
- package/dist/lib/model.d.ts +97 -0
- package/dist/lib/model.d.ts.map +1 -0
- package/dist/{esm/lib → lib}/model.js +63 -13
- package/dist/lib/model.js.map +1 -0
- package/dist/lib/program-manager.d.ts +38 -0
- package/dist/lib/program-manager.d.ts.map +1 -0
- package/dist/{esm/lib → lib}/program-manager.js +22 -10
- package/dist/lib/program-manager.js.map +1 -0
- package/dist/transform/buffer-transform.d.ts +36 -0
- package/dist/transform/buffer-transform.d.ts.map +1 -0
- package/dist/{esm/transform → transform}/buffer-transform.js +13 -5
- package/dist/transform/buffer-transform.js.map +1 -0
- package/dist/transform/texture-transform.d.ts +57 -0
- package/dist/transform/texture-transform.d.ts.map +1 -0
- package/dist/{esm/transform → transform}/texture-transform.js +48 -16
- package/dist/transform/texture-transform.js.map +1 -0
- package/dist/transform/transform-shader-utils.d.ts +26 -0
- package/dist/transform/transform-shader-utils.d.ts.map +1 -0
- package/dist/{esm/transform → transform}/transform-shader-utils.js +38 -46
- package/dist/transform/transform-shader-utils.js.map +1 -0
- package/dist/transform/transform-types.d.ts +43 -0
- package/dist/transform/transform-types.d.ts.map +1 -0
- package/dist/transform/transform-types.js +2 -0
- package/dist/transform/transform-types.js.map +1 -0
- package/dist/transform/transform.d.ts +28 -0
- package/dist/transform/transform.d.ts.map +1 -0
- package/dist/{esm/transform → transform}/transform.js +39 -34
- package/dist/transform/transform.js.map +1 -0
- package/dist/utils/clip-space.d.ts +5 -0
- package/dist/utils/clip-space.d.ts.map +1 -0
- package/dist/{esm/utils → utils}/clip-space.js +3 -17
- package/dist/utils/clip-space.js.map +1 -0
- package/package.json +10 -10
- package/src/animation/{key-frames.js → key-frames.ts} +18 -16
- package/src/animation/{timeline.js → timeline.ts} +54 -18
- package/src/bundle.ts +4 -0
- package/src/geometries/{cone-geometry.js → cone-geometry.ts} +9 -3
- package/src/geometries/{cube-geometry.js → cube-geometry.ts} +17 -12
- package/src/geometries/cylinder-geometry.ts +20 -0
- package/src/geometries/{ico-sphere-geometry.js → ico-sphere-geometry.ts} +10 -3
- package/src/geometries/{plane-geometry.js → plane-geometry.ts} +11 -6
- package/src/geometries/{sphere-geometry.js → sphere-geometry.ts} +15 -11
- package/src/geometries/{truncated-cone-geometry.js → truncated-cone-geometry.ts} +14 -5
- package/src/geometry/{geometry-utils.js → geometry-utils.ts} +2 -0
- package/src/geometry/{geometry.js → geometry.ts} +47 -34
- package/src/index.ts +30 -0
- package/src/lib/{animation-loop.js → animation-loop.ts} +237 -130
- package/src/lib/{model-utils.js → model-utils.ts} +2 -2
- package/src/lib/{model.js → model.ts} +148 -57
- package/src/lib/{program-manager.js → program-manager.ts} +46 -26
- package/src/transform/{buffer-transform.js → buffer-transform.ts} +40 -24
- package/src/transform/{texture-transform.js → texture-transform.ts} +34 -23
- package/src/transform/{transform-shader-utils.js → transform-shader-utils.ts} +55 -27
- package/src/transform/transform-types.ts +41 -0
- package/src/transform/{transform.js → transform.ts} +45 -49
- package/src/utils/{clip-space.js → clip-space.ts} +4 -3
- package/dist/dist.js +0 -32248
- package/dist/dist.min.js +0 -1
- package/dist/es5/animation/key-frames.d.ts +0 -19
- package/dist/es5/animation/key-frames.js +0 -95
- package/dist/es5/animation/key-frames.js.map +0 -1
- package/dist/es5/animation/timeline.d.ts +0 -39
- package/dist/es5/animation/timeline.js +0 -211
- package/dist/es5/animation/timeline.js.map +0 -1
- package/dist/es5/bundle.js +0 -9
- package/dist/es5/bundle.js.map +0 -1
- package/dist/es5/geometries/cone-geometry.d.ts +0 -5
- package/dist/es5/geometries/cone-geometry.js +0 -59
- package/dist/es5/geometries/cone-geometry.js.map +0 -1
- package/dist/es5/geometries/cube-geometry.d.ts +0 -5
- package/dist/es5/geometries/cube-geometry.js +0 -75
- package/dist/es5/geometries/cube-geometry.js.map +0 -1
- package/dist/es5/geometries/cylinder-geometry.d.ts +0 -5
- package/dist/es5/geometries/cylinder-geometry.js +0 -55
- package/dist/es5/geometries/cylinder-geometry.js.map +0 -1
- package/dist/es5/geometries/ico-sphere-geometry.d.ts +0 -5
- package/dist/es5/geometries/ico-sphere-geometry.js +0 -217
- package/dist/es5/geometries/ico-sphere-geometry.js.map +0 -1
- package/dist/es5/geometries/index.d.ts +0 -7
- package/dist/es5/geometries/index.js +0 -64
- package/dist/es5/geometries/index.js.map +0 -1
- package/dist/es5/geometries/plane-geometry.d.ts +0 -5
- package/dist/es5/geometries/plane-geometry.js +0 -168
- package/dist/es5/geometries/plane-geometry.js.map +0 -1
- package/dist/es5/geometries/sphere-geometry.d.ts +0 -5
- package/dist/es5/geometries/sphere-geometry.js +0 -152
- package/dist/es5/geometries/sphere-geometry.js.map +0 -1
- package/dist/es5/geometries/truncated-cone-geometry.d.ts +0 -5
- package/dist/es5/geometries/truncated-cone-geometry.js +0 -171
- package/dist/es5/geometries/truncated-cone-geometry.js.map +0 -1
- package/dist/es5/geometry/geometry-utils.d.ts +0 -1
- package/dist/es5/geometry/geometry-utils.js +0 -49
- package/dist/es5/geometry/geometry-utils.js.map +0 -1
- package/dist/es5/geometry/geometry.d.ts +0 -25
- package/dist/es5/geometry/geometry.js +0 -150
- package/dist/es5/geometry/geometry.js.map +0 -1
- package/dist/es5/index.d.ts +0 -19
- package/dist/es5/index.js +0 -128
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/lib/animation-loop.d.ts +0 -158
- package/dist/es5/lib/animation-loop.js +0 -642
- package/dist/es5/lib/animation-loop.js.map +0 -1
- package/dist/es5/lib/model-utils.d.ts +0 -3
- package/dist/es5/lib/model-utils.js +0 -110
- package/dist/es5/lib/model-utils.js.map +0 -1
- package/dist/es5/lib/model.d.ts +0 -214
- package/dist/es5/lib/model.js +0 -584
- package/dist/es5/lib/model.js.map +0 -1
- package/dist/es5/lib/program-manager.d.ts +0 -79
- package/dist/es5/lib/program-manager.js +0 -238
- package/dist/es5/lib/program-manager.js.map +0 -1
- package/dist/es5/transform/buffer-transform.d.ts +0 -13
- package/dist/es5/transform/buffer-transform.js +0 -294
- package/dist/es5/transform/buffer-transform.js.map +0 -1
- package/dist/es5/transform/resource-transform.d.ts +0 -16
- package/dist/es5/transform/texture-transform.d.ts +0 -16
- package/dist/es5/transform/texture-transform.js +0 -405
- package/dist/es5/transform/texture-transform.js.map +0 -1
- package/dist/es5/transform/transform-shader-utils.d.ts +0 -31
- package/dist/es5/transform/transform-shader-utils.js +0 -160
- package/dist/es5/transform/transform-shader-utils.js.map +0 -1
- package/dist/es5/transform/transform.d.ts +0 -33
- package/dist/es5/transform/transform.js +0 -274
- package/dist/es5/transform/transform.js.map +0 -1
- package/dist/es5/utils/clip-space.d.ts +0 -5
- package/dist/es5/utils/clip-space.js +0 -72
- package/dist/es5/utils/clip-space.js.map +0 -1
- package/dist/esm/animation/key-frames.d.ts +0 -19
- package/dist/esm/animation/key-frames.js.map +0 -1
- package/dist/esm/animation/timeline.d.ts +0 -39
- package/dist/esm/animation/timeline.js.map +0 -1
- package/dist/esm/bundle.js +0 -7
- package/dist/esm/bundle.js.map +0 -1
- package/dist/esm/geometries/cone-geometry.d.ts +0 -5
- package/dist/esm/geometries/cone-geometry.js.map +0 -1
- package/dist/esm/geometries/cube-geometry.d.ts +0 -5
- package/dist/esm/geometries/cube-geometry.js.map +0 -1
- package/dist/esm/geometries/cylinder-geometry.d.ts +0 -5
- package/dist/esm/geometries/cylinder-geometry.js.map +0 -1
- package/dist/esm/geometries/ico-sphere-geometry.d.ts +0 -5
- package/dist/esm/geometries/ico-sphere-geometry.js.map +0 -1
- package/dist/esm/geometries/index.d.ts +0 -7
- package/dist/esm/geometries/index.js +0 -8
- package/dist/esm/geometries/index.js.map +0 -1
- package/dist/esm/geometries/plane-geometry.d.ts +0 -5
- package/dist/esm/geometries/plane-geometry.js.map +0 -1
- package/dist/esm/geometries/sphere-geometry.d.ts +0 -5
- package/dist/esm/geometries/sphere-geometry.js.map +0 -1
- package/dist/esm/geometries/truncated-cone-geometry.d.ts +0 -5
- package/dist/esm/geometries/truncated-cone-geometry.js.map +0 -1
- package/dist/esm/geometry/geometry-utils.d.ts +0 -1
- package/dist/esm/geometry/geometry-utils.js.map +0 -1
- package/dist/esm/geometry/geometry.d.ts +0 -25
- package/dist/esm/geometry/geometry.js.map +0 -1
- package/dist/esm/index.d.ts +0 -19
- package/dist/esm/index.js +0 -16
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/lib/animation-loop.d.ts +0 -158
- package/dist/esm/lib/animation-loop.js.map +0 -1
- package/dist/esm/lib/model-utils.d.ts +0 -3
- package/dist/esm/lib/model-utils.js.map +0 -1
- package/dist/esm/lib/model.d.ts +0 -214
- package/dist/esm/lib/model.js.map +0 -1
- package/dist/esm/lib/program-manager.d.ts +0 -79
- package/dist/esm/lib/program-manager.js.map +0 -1
- package/dist/esm/transform/buffer-transform.d.ts +0 -13
- package/dist/esm/transform/buffer-transform.js.map +0 -1
- package/dist/esm/transform/resource-transform.d.ts +0 -16
- package/dist/esm/transform/texture-transform.d.ts +0 -16
- package/dist/esm/transform/texture-transform.js.map +0 -1
- package/dist/esm/transform/transform-shader-utils.d.ts +0 -31
- package/dist/esm/transform/transform-shader-utils.js.map +0 -1
- package/dist/esm/transform/transform.d.ts +0 -33
- package/dist/esm/transform/transform.js.map +0 -1
- package/dist/esm/utils/clip-space.d.ts +0 -5
- package/dist/esm/utils/clip-space.js.map +0 -1
- package/src/animation/key-frames.d.ts +0 -19
- package/src/animation/timeline.d.ts +0 -39
- package/src/bundle.js +0 -7
- package/src/geometries/cone-geometry.d.ts +0 -5
- package/src/geometries/cube-geometry.d.ts +0 -5
- package/src/geometries/cylinder-geometry.d.ts +0 -5
- package/src/geometries/cylinder-geometry.js +0 -14
- package/src/geometries/ico-sphere-geometry.d.ts +0 -5
- package/src/geometries/index.d.ts +0 -7
- package/src/geometries/index.js +0 -7
- package/src/geometries/plane-geometry.d.ts +0 -5
- package/src/geometries/sphere-geometry.d.ts +0 -5
- package/src/geometries/truncated-cone-geometry.d.ts +0 -5
- package/src/geometry/geometry-utils.d.ts +0 -1
- package/src/geometry/geometry.d.ts +0 -25
- package/src/index.d.ts +0 -19
- package/src/index.js +0 -22
- package/src/lib/animation-loop.d.ts +0 -158
- package/src/lib/model-utils.d.ts +0 -3
- package/src/lib/model.d.ts +0 -214
- package/src/lib/program-manager.d.ts +0 -79
- package/src/transform/buffer-transform.d.ts +0 -13
- package/src/transform/resource-transform.d.ts +0 -16
- package/src/transform/texture-transform.d.ts +0 -16
- package/src/transform/transform-shader-utils.d.ts +0 -31
- package/src/transform/transform.d.ts +0 -33
- package/src/utils/clip-space.d.ts +0 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/transform/texture-transform.ts"],"names":["GL","cloneTextureFrom","readPixelsToArray","Buffer","Texture2D","Framebuffer","_transform","transformModule","getShaderInfo","getPassthroughFS","typeToChannelCount","combineInjects","updateForTextures","getSizeUniforms","SRC_TEX_PARAMETER_OVERRIDES","TEXTURE_MIN_FILTER","NEAREST","TEXTURE_MAG_FILTER","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","FS_OUTPUT_VARIABLE","TextureTransform","constructor","gl","props","id","currentIndex","_swapTexture","targetTextureVarying","targetTextureType","samplerTextureMap","bindings","resources","_initialize","Object","seal","updateModelProps","updatedModelProps","_processVertexShader","assign","getDrawOptions","opts","sourceBuffers","sourceTextures","framebuffer","targetTexture","attributes","uniforms","parameters","discard","hasSourceTextures","hasTargetTexture","transform_elementID","elementIDBuffer","sampler","textureName","_setSourceTextureParameters","sizeUniforms","sourceTextureMap","viewport","width","height","swap","_getNextIndex","update","_setupTextures","getTargetTexture","getData","packed","pixels","ArrayType","channelCount","packedPixels","length","packCount","i","j","getFramebuffer","currentResources","delete","ownTexture","_targetTextureVarying","Boolean","_createTargetTexture","textureOrReference","refTexture","_targetRefTexName","_createNewTexture","_sourceTextures","_targetTexture","keys","_updateBindings","_updateElementIDBuffer","elementCount","elementIds","Float32Array","forEach","_","index","array","data","accessor","size","setData","_updateBinding","_swapTextures","nextIndex","binding","attachments","COLOR_ATTACHMENT0","resizeAttachments","resize","name","setParameters","texture","pixelStore","UNPACK_FLIP_Y_WEBGL","vs","inject","combinedInject","fs","_fs","version","input","inputType","output","modules","concat"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\n\nimport {cloneTextureFrom, readPixelsToArray, Buffer, Texture2D, Framebuffer} from '@luma.gl/webgl';\n\nimport {\n _transform as transformModule,\n getShaderInfo,\n getPassthroughFS,\n typeToChannelCount,\n combineInjects\n} from '@luma.gl/shadertools';\n\nimport {updateForTextures, getSizeUniforms} from './transform-shader-utils';\n\nimport type {TransformProps, TransformDrawOptions} from './transform-types';\n\n// TODO: move these constants to transform-shader-utils\n// Texture parameters needed so sample can precisely pick pixel for given element id.\nconst SRC_TEX_PARAMETER_OVERRIDES = {\n [GL.TEXTURE_MIN_FILTER]: GL.NEAREST,\n [GL.TEXTURE_MAG_FILTER]: GL.NEAREST,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n};\nconst FS_OUTPUT_VARIABLE = 'transform_output';\n\nexport default class TextureTransform {\n gl: WebGL2RenderingContext;\n id = 0;\n currentIndex = 0;\n _swapTexture = null;\n targetTextureVarying = null;\n targetTextureType = null;\n samplerTextureMap = null;\n bindings = []; // each element is an object : {sourceTextures, targetTexture, framebuffer}\n resources = {}; // resources to be deleted\n\n hasTargetTexture: boolean = false;\n hasSourceTextures: boolean = false;\n ownTexture: Texture2D | null = null;\n elementIDBuffer: Buffer | null = null;\n _targetRefTexName: string;\n elementCount: number;\n\n constructor(gl: WebGL2RenderingContext, props: TransformProps = {}) {\n this.gl = gl;\n this.id = this.currentIndex = 0;\n this._swapTexture = null;\n this.targetTextureVarying = null;\n this.targetTextureType = null;\n this.samplerTextureMap = null;\n this.bindings = []; // each element is an object : {sourceTextures, targetTexture, framebuffer}\n\n this.resources = {}; // resources to be deleted\n\n this._initialize(props);\n Object.seal(this);\n }\n\n updateModelProps(props: TransformProps = {}) {\n const updatedModelProps = this._processVertexShader(props);\n return Object.assign({}, props, updatedModelProps);\n }\n\n getDrawOptions(opts: TransformProps = {}): TransformDrawOptions {\n const {sourceBuffers, sourceTextures, framebuffer, targetTexture} =\n this.bindings[this.currentIndex];\n\n const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n const uniforms = Object.assign({}, opts.uniforms);\n const parameters = Object.assign({}, opts.parameters);\n let discard = opts.discard;\n\n if (this.hasSourceTextures || this.hasTargetTexture) {\n attributes.transform_elementID = this.elementIDBuffer;\n\n for (const sampler in this.samplerTextureMap) {\n const textureName = this.samplerTextureMap[sampler];\n uniforms[sampler] = sourceTextures[textureName];\n }\n this._setSourceTextureParameters();\n // get texture size uniforms\n const sizeUniforms = getSizeUniforms({\n sourceTextureMap: sourceTextures,\n targetTextureVarying: this.targetTextureVarying,\n targetTexture\n });\n Object.assign(uniforms, sizeUniforms);\n }\n if (this.hasTargetTexture) {\n discard = false;\n parameters.viewport = [0, 0, framebuffer.width, framebuffer.height];\n }\n\n return {attributes, framebuffer, uniforms, discard, parameters};\n }\n\n swap() {\n if (this._swapTexture) {\n this.currentIndex = this._getNextIndex();\n return true;\n }\n return false;\n }\n\n // update source and/or feedbackBuffers\n update(opts = {}) {\n this._setupTextures(opts);\n }\n\n // returns current target texture\n getTargetTexture() {\n const {targetTexture} = this.bindings[this.currentIndex];\n return targetTexture;\n }\n\n getData({packed = false} = {}) {\n const {framebuffer} = this.bindings[this.currentIndex];\n const pixels = readPixelsToArray(framebuffer);\n\n if (!packed) {\n return pixels;\n }\n\n // readPixels returns 4 elements for each pixel, pack the elements when requested\n const ArrayType = pixels.constructor;\n const channelCount = typeToChannelCount(this.targetTextureType);\n // @ts-ignore\n const packedPixels = new ArrayType((pixels.length * channelCount) / 4);\n let packCount = 0;\n for (let i = 0; i < pixels.length; i += 4) {\n for (let j = 0; j < channelCount; j++) {\n packedPixels[packCount++] = pixels[i + j];\n }\n }\n return packedPixels;\n }\n\n // returns current framebuffer object that is being used.\n getFramebuffer() {\n const currentResources = this.bindings[this.currentIndex];\n return currentResources.framebuffer;\n }\n\n // Delete owned resources.\n delete() {\n if (this.ownTexture) {\n this.ownTexture.delete();\n }\n if (this.elementIDBuffer) {\n // @ts-ignore\n this.elementIDBuffer.delete();\n }\n }\n\n // Private\n\n _initialize(props: TransformProps = {}) {\n const {_targetTextureVarying, _swapTexture} = props;\n this._swapTexture = _swapTexture;\n this.targetTextureVarying = _targetTextureVarying;\n this.hasTargetTexture = Boolean(_targetTextureVarying);\n this._setupTextures(props);\n }\n\n // auto create target texture if requested\n _createTargetTexture(props) {\n const {sourceTextures, textureOrReference} = props;\n if (textureOrReference instanceof Texture2D) {\n return textureOrReference;\n }\n // 'targetTexture' is a reference souce texture.\n const refTexture = sourceTextures[textureOrReference];\n if (!refTexture) {\n return null;\n }\n\n // save reference texture name, when corresponding source texture is updated\n // we also update target texture.\n this._targetRefTexName = textureOrReference;\n\n return this._createNewTexture(refTexture);\n }\n\n _setupTextures(props: TransformProps = {}) {\n const {sourceBuffers, _sourceTextures = {}, _targetTexture} = props;\n const targetTexture = this._createTargetTexture({\n sourceTextures: _sourceTextures,\n textureOrReference: _targetTexture\n });\n this.hasSourceTextures =\n this.hasSourceTextures || (_sourceTextures && Object.keys(_sourceTextures).length > 0);\n this._updateBindings({sourceBuffers, sourceTextures: _sourceTextures, targetTexture});\n if ('elementCount' in props) {\n this._updateElementIDBuffer(props.elementCount);\n }\n }\n\n _updateElementIDBuffer(elementCount: number): void {\n if (typeof elementCount !== 'number' || this.elementCount >= elementCount) {\n return;\n }\n // NOTE: using float so this will work with GLSL 1.0 shaders.\n const elementIds = new Float32Array(elementCount);\n elementIds.forEach((_, index, array) => {\n array[index] = index;\n });\n if (!this.elementIDBuffer) {\n this.elementIDBuffer = new Buffer(this.gl, {\n data: elementIds,\n accessor: {size: 1}\n });\n } else {\n this.elementIDBuffer.setData({data: elementIds});\n }\n this.elementCount = elementCount;\n }\n\n _updateBindings(opts) {\n this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n if (this._swapTexture) {\n const {sourceTextures, targetTexture} = this._swapTextures(this.bindings[this.currentIndex]);\n const nextIndex = this._getNextIndex();\n this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n sourceTextures,\n targetTexture\n });\n }\n }\n\n _updateBinding(binding, opts) {\n const {sourceBuffers, sourceTextures, targetTexture} = opts;\n if (!binding) {\n binding = {\n sourceBuffers: {},\n sourceTextures: {},\n targetTexture: null\n };\n }\n Object.assign(binding.sourceTextures, sourceTextures);\n Object.assign(binding.sourceBuffers, sourceBuffers);\n if (targetTexture) {\n binding.targetTexture = targetTexture;\n\n const {width, height} = targetTexture;\n const {framebuffer} = binding;\n if (framebuffer) {\n // First update texture without re-sizing attachments\n framebuffer.update({\n attachments: {[GL.COLOR_ATTACHMENT0]: targetTexture},\n resizeAttachments: false\n });\n // Resize to new taget texture size\n framebuffer.resize({width, height});\n } else {\n binding.framebuffer = new Framebuffer(this.gl, {\n id: `transform-framebuffer`,\n width,\n height,\n attachments: {\n [GL.COLOR_ATTACHMENT0]: targetTexture\n }\n });\n }\n }\n return binding;\n }\n\n // set texture filtering parameters on source textures.\n _setSourceTextureParameters() {\n const index = this.currentIndex;\n const {sourceTextures} = this.bindings[index];\n for (const name in sourceTextures) {\n sourceTextures[name].setParameters(SRC_TEX_PARAMETER_OVERRIDES);\n }\n }\n\n _swapTextures(opts) {\n if (!this._swapTexture) {\n return null;\n }\n const sourceTextures = Object.assign({}, opts.sourceTextures);\n sourceTextures[this._swapTexture] = opts.targetTexture;\n\n const targetTexture = opts.sourceTextures[this._swapTexture];\n\n return {sourceTextures, targetTexture};\n }\n\n // Create a buffer and add to list of buffers to be deleted.\n _createNewTexture(refTexture) {\n const texture = cloneTextureFrom(refTexture, {\n parameters: {\n [GL.TEXTURE_MIN_FILTER]: GL.NEAREST,\n [GL.TEXTURE_MAG_FILTER]: GL.NEAREST,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n },\n pixelStore: {\n [GL.UNPACK_FLIP_Y_WEBGL]: false\n }\n });\n\n // thre can only be one target texture\n if (this.ownTexture) {\n this.ownTexture.delete();\n }\n this.ownTexture = texture;\n\n return texture;\n }\n\n _getNextIndex() {\n return (this.currentIndex + 1) % 2;\n }\n\n // build and return shader releated parameters\n _processVertexShader(props: TransformProps = {}) {\n const {sourceTextures, targetTexture} = this.bindings[this.currentIndex];\n // @ts-ignore TODO - uniforms is not present\n const {vs, uniforms, targetTextureType, inject, samplerTextureMap} = updateForTextures({\n vs: props.vs,\n sourceTextureMap: sourceTextures,\n targetTextureVarying: this.targetTextureVarying,\n targetTexture\n });\n const combinedInject = combineInjects([props.inject || {}, inject]);\n this.targetTextureType = targetTextureType;\n this.samplerTextureMap = samplerTextureMap;\n const fs =\n props._fs ||\n getPassthroughFS({\n version: getShaderInfo(vs).version,\n input: this.targetTextureVarying,\n inputType: targetTextureType,\n output: FS_OUTPUT_VARIABLE\n });\n const modules =\n this.hasSourceTextures || this.targetTextureVarying\n // @ts-expect-error\n ? [transformModule].concat(props.modules || [])\n : props.modules;\n return {vs, fs, modules, uniforms, inject: combinedInject};\n }\n}\n"],"file":"texture-transform.js"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export declare function updateForTextures(options: {
|
|
2
|
+
vs: any;
|
|
3
|
+
sourceTextureMap: any;
|
|
4
|
+
targetTextureVarying: any;
|
|
5
|
+
targetTexture: any;
|
|
6
|
+
}): {
|
|
7
|
+
vs: any;
|
|
8
|
+
targetTextureType: any;
|
|
9
|
+
inject: {};
|
|
10
|
+
samplerTextureMap: {};
|
|
11
|
+
};
|
|
12
|
+
export declare function getSizeUniforms(options: {
|
|
13
|
+
sourceTextureMap: any;
|
|
14
|
+
targetTextureVarying: any;
|
|
15
|
+
targetTexture: any;
|
|
16
|
+
}): {};
|
|
17
|
+
export declare function getVaryingType(line: any, varying: any): any;
|
|
18
|
+
export declare function processAttributeDefinition(line: any, textureMap: any): {
|
|
19
|
+
updatedLine: string;
|
|
20
|
+
inject: {
|
|
21
|
+
'vs:#decl': string;
|
|
22
|
+
'vs:#main-start': string;
|
|
23
|
+
};
|
|
24
|
+
samplerTextureMap: {};
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=transform-shader-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-shader-utils.d.ts","sourceRoot":"","sources":["../../src/transform/transform-shader-utils.ts"],"names":[],"mappings":"AAUA,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,EAAE,EAAE,GAAG,CAAC;IACR,gBAAgB,EAAE,GAAG,CAAC;IACtB,oBAAoB,EAAE,GAAG,CAAC;IAC1B,aAAa,EAAE,GAAG,CAAC;CACpB,GAAG;IACF,EAAE,EAAE,GAAG,CAAC;IACR,iBAAiB,EAAE,GAAG,CAAC;IACvB,MAAM,EAAE,EAAE,CAAC;IACX,iBAAiB,EAAE,EAAE,CAAC;CACvB,CAyDA;AAGD,wBAAgB,eAAe,CAAC,OAAO,EAAE;IACvC,gBAAgB,EAAE,GAAG,CAAC;IACtB,oBAAoB,EAAE,GAAG,CAAC;IAC1B,aAAa,EAAE,GAAG,CAAC;CACpB,GAAG,EAAE,CAaL;AAID,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,GAAG,CAM3D;AAGD,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,GAAG,EACT,UAAU,EAAE,GAAG,GACd;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,iBAAiB,EAAE,EAAE,CAAC;CACvB,CAgCA"}
|
|
@@ -3,12 +3,13 @@ import { combineInjects, getQualifierDetails, typeToChannelSuffix } from '@luma.
|
|
|
3
3
|
const SAMPLER_UNIFORM_PREFIX = 'transform_uSampler_';
|
|
4
4
|
const SIZE_UNIFORM_PREFIX = 'transform_uSize_';
|
|
5
5
|
const VS_POS_VARIABLE = 'transform_position';
|
|
6
|
-
export function updateForTextures({
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
export function updateForTextures(options) {
|
|
7
|
+
const {
|
|
8
|
+
vs,
|
|
9
|
+
sourceTextureMap,
|
|
10
|
+
targetTextureVarying,
|
|
11
|
+
targetTexture
|
|
12
|
+
} = options;
|
|
12
13
|
const texAttributeNames = Object.keys(sourceTextureMap);
|
|
13
14
|
let sourceCount = texAttributeNames.length;
|
|
14
15
|
let targetTextureType = null;
|
|
@@ -42,11 +43,9 @@ export function updateForTextures({
|
|
|
42
43
|
|
|
43
44
|
if (targetTextureVarying) {
|
|
44
45
|
assert(targetTexture);
|
|
45
|
-
const sizeName =
|
|
46
|
-
const uniformDeclaration =
|
|
47
|
-
const posInstructions =
|
|
48
|
-
vec2 ${VS_POS_VARIABLE} = transform_getPos(${sizeName});
|
|
49
|
-
gl_Position = vec4(${VS_POS_VARIABLE}, 0, 1.);\n`;
|
|
46
|
+
const sizeName = "".concat(SIZE_UNIFORM_PREFIX).concat(targetTextureVarying);
|
|
47
|
+
const uniformDeclaration = "uniform vec2 ".concat(sizeName, ";\n");
|
|
48
|
+
const posInstructions = " vec2 ".concat(VS_POS_VARIABLE, " = transform_getPos(").concat(sizeName, ");\n gl_Position = vec4(").concat(VS_POS_VARIABLE, ", 0, 1.);\n");
|
|
50
49
|
const inject = {
|
|
51
50
|
'vs:#decl': uniformDeclaration,
|
|
52
51
|
'vs:#main-start': posInstructions
|
|
@@ -64,59 +63,37 @@ export function updateForTextures({
|
|
|
64
63
|
samplerTextureMap
|
|
65
64
|
};
|
|
66
65
|
}
|
|
67
|
-
export function getSizeUniforms({
|
|
68
|
-
sourceTextureMap,
|
|
69
|
-
targetTextureVarying,
|
|
70
|
-
targetTexture
|
|
71
|
-
}) {
|
|
66
|
+
export function getSizeUniforms(options) {
|
|
72
67
|
const uniforms = {};
|
|
73
68
|
let width;
|
|
74
69
|
let height;
|
|
75
70
|
|
|
76
|
-
if (targetTextureVarying) {
|
|
71
|
+
if (options.targetTextureVarying) {
|
|
77
72
|
({
|
|
78
73
|
width,
|
|
79
74
|
height
|
|
80
|
-
} = targetTexture);
|
|
81
|
-
uniforms[
|
|
75
|
+
} = options.targetTexture);
|
|
76
|
+
uniforms["".concat(SIZE_UNIFORM_PREFIX).concat(options.targetTextureVarying)] = [width, height];
|
|
82
77
|
}
|
|
83
78
|
|
|
84
|
-
for (const textureName in sourceTextureMap) {
|
|
79
|
+
for (const textureName in options.sourceTextureMap) {
|
|
85
80
|
({
|
|
86
81
|
width,
|
|
87
82
|
height
|
|
88
|
-
} = sourceTextureMap[textureName]);
|
|
89
|
-
uniforms[
|
|
83
|
+
} = options.sourceTextureMap[textureName]);
|
|
84
|
+
uniforms["".concat(SIZE_UNIFORM_PREFIX).concat(textureName)] = [width, height];
|
|
90
85
|
}
|
|
91
86
|
|
|
92
87
|
return uniforms;
|
|
93
88
|
}
|
|
94
|
-
|
|
95
|
-
function getAttributeDefinition(line) {
|
|
96
|
-
return getQualifierDetails(line, ['attribute', 'in']);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
function getSamplerDeclerations(textureName) {
|
|
100
|
-
const samplerName = `${SAMPLER_UNIFORM_PREFIX}${textureName}`;
|
|
101
|
-
const sizeName = `${SIZE_UNIFORM_PREFIX}${textureName}`;
|
|
102
|
-
const uniformDeclerations = `\
|
|
103
|
-
uniform sampler2D ${samplerName};
|
|
104
|
-
uniform vec2 ${sizeName};`;
|
|
105
|
-
return {
|
|
106
|
-
samplerName,
|
|
107
|
-
sizeName,
|
|
108
|
-
uniformDeclerations
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
|
|
112
89
|
export function getVaryingType(line, varying) {
|
|
113
|
-
const
|
|
90
|
+
const qualiferDetails = getQualifierDetails(line, ['varying', 'out']);
|
|
114
91
|
|
|
115
|
-
if (!
|
|
92
|
+
if (!qualiferDetails) {
|
|
116
93
|
return null;
|
|
117
94
|
}
|
|
118
95
|
|
|
119
|
-
return
|
|
96
|
+
return qualiferDetails.name === varying ? qualiferDetails.type : null;
|
|
120
97
|
}
|
|
121
98
|
export function processAttributeDefinition(line, textureMap) {
|
|
122
99
|
const samplerTextureMap = {};
|
|
@@ -132,14 +109,14 @@ export function processAttributeDefinition(line, textureMap) {
|
|
|
132
109
|
} = attributeData;
|
|
133
110
|
|
|
134
111
|
if (name && textureMap[name]) {
|
|
135
|
-
const updatedLine =
|
|
112
|
+
const updatedLine = "// ".concat(line, " => Replaced by Transform with a sampler");
|
|
136
113
|
const {
|
|
137
114
|
samplerName,
|
|
138
115
|
sizeName,
|
|
139
116
|
uniformDeclerations
|
|
140
|
-
} =
|
|
117
|
+
} = getSamplerDeclarations(name);
|
|
141
118
|
const channels = typeToChannelSuffix(type);
|
|
142
|
-
const sampleInstruction =
|
|
119
|
+
const sampleInstruction = " ".concat(type, " ").concat(name, " = transform_getInput(").concat(samplerName, ", ").concat(sizeName, ").").concat(channels, ";\n");
|
|
143
120
|
samplerTextureMap[samplerName] = name;
|
|
144
121
|
const inject = {
|
|
145
122
|
'vs:#decl': uniformDeclerations,
|
|
@@ -154,4 +131,19 @@ export function processAttributeDefinition(line, textureMap) {
|
|
|
154
131
|
|
|
155
132
|
return null;
|
|
156
133
|
}
|
|
134
|
+
|
|
135
|
+
function getAttributeDefinition(line) {
|
|
136
|
+
return getQualifierDetails(line, ['attribute', 'in']);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function getSamplerDeclarations(textureName) {
|
|
140
|
+
const samplerName = "".concat(SAMPLER_UNIFORM_PREFIX).concat(textureName);
|
|
141
|
+
const sizeName = "".concat(SIZE_UNIFORM_PREFIX).concat(textureName);
|
|
142
|
+
const uniformDeclerations = " uniform sampler2D ".concat(samplerName, ";\n uniform vec2 ").concat(sizeName, ";");
|
|
143
|
+
return {
|
|
144
|
+
samplerName,
|
|
145
|
+
sizeName,
|
|
146
|
+
uniformDeclerations
|
|
147
|
+
};
|
|
148
|
+
}
|
|
157
149
|
//# sourceMappingURL=transform-shader-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/transform/transform-shader-utils.ts"],"names":["assert","combineInjects","getQualifierDetails","typeToChannelSuffix","SAMPLER_UNIFORM_PREFIX","SIZE_UNIFORM_PREFIX","VS_POS_VARIABLE","updateForTextures","options","vs","sourceTextureMap","targetTextureVarying","targetTexture","texAttributeNames","Object","keys","sourceCount","length","targetTextureType","samplerTextureMap","updatedVs","finalInject","vsLines","split","updateVsLines","slice","forEach","line","index","lines","updated","processAttributeDefinition","updatedLine","inject","assign","getVaryingType","sizeName","uniformDeclaration","posInstructions","join","getSizeUniforms","uniforms","width","height","textureName","varying","qualiferDetails","name","type","textureMap","attributeData","getAttributeDefinition","samplerName","uniformDeclerations","getSamplerDeclarations","channels","sampleInstruction"],"mappings":"AAAA,SAAQA,MAAR,QAAqB,gBAArB;AACA,SAAQC,cAAR,EAAwBC,mBAAxB,EAA6CC,mBAA7C,QAAuE,sBAAvE;AAEA,MAAMC,sBAAsB,GAAG,qBAA/B;AACA,MAAMC,mBAAmB,GAAG,kBAA5B;AACA,MAAMC,eAAe,GAAG,oBAAxB;AAKA,OAAO,SAASC,iBAAT,CAA2BC,OAA3B,EAUL;AACA,QAAM;AAACC,IAAAA,EAAD;AAAKC,IAAAA,gBAAL;AAAuBC,IAAAA,oBAAvB;AAA6CC,IAAAA;AAA7C,MAA8DJ,OAApE;AACA,QAAMK,iBAAiB,GAAGC,MAAM,CAACC,IAAP,CAAYL,gBAAZ,CAA1B;AACA,MAAIM,WAAW,GAAGH,iBAAiB,CAACI,MAApC;AACA,MAAIC,iBAAiB,GAAG,IAAxB;AACA,QAAMC,iBAAiB,GAAG,EAA1B;AACA,MAAIC,SAAS,GAAGX,EAAhB;AACA,MAAIY,WAAW,GAAG,EAAlB;;AAEA,MAAIL,WAAW,GAAG,CAAd,IAAmBL,oBAAvB,EAA6C;AAC3C,UAAMW,OAAO,GAAGF,SAAS,CAACG,KAAV,CAAgB,IAAhB,CAAhB;AACA,UAAMC,aAAa,GAAGF,OAAO,CAACG,KAAR,EAAtB;AACAH,IAAAA,OAAO,CAACI,OAAR,CAAgB,CAACC,IAAD,EAAOC,KAAP,EAAcC,KAAd,KAAwB;AAEtC,UAAIb,WAAW,GAAG,CAAlB,EAAqB;AACnB,cAAMc,OAAO,GAAGC,0BAA0B,CAACJ,IAAD,EAAOjB,gBAAP,CAA1C;;AACA,YAAIoB,OAAJ,EAAa;AACX,gBAAM;AAACE,YAAAA,WAAD;AAAcC,YAAAA;AAAd,cAAwBH,OAA9B;AACAN,UAAAA,aAAa,CAACI,KAAD,CAAb,GAAuBI,WAAvB;AAEAX,UAAAA,WAAW,GAAGpB,cAAc,CAAC,CAACoB,WAAD,EAAcY,MAAd,CAAD,CAA5B;AACAnB,UAAAA,MAAM,CAACoB,MAAP,CAAcf,iBAAd,EAAiCW,OAAO,CAACX,iBAAzC;AACAH,UAAAA,WAAW;AACZ;AACF;;AACD,UAAIL,oBAAoB,IAAI,CAACO,iBAA7B,EAAgD;AAC9CA,QAAAA,iBAAiB,GAAGiB,cAAc,CAACR,IAAD,EAAOhB,oBAAP,CAAlC;AACD;AACF,KAhBD;;AAkBA,QAAIA,oBAAJ,EAA0B;AACxBX,MAAAA,MAAM,CAACY,aAAD,CAAN;AACA,YAAMwB,QAAQ,aAAM/B,mBAAN,SAA4BM,oBAA5B,CAAd;AAEA,YAAM0B,kBAAkB,0BAAmBD,QAAnB,QAAxB;AACA,YAAME,eAAe,uBACfhC,eADe,iCACuB8B,QADvB,yCAED9B,eAFC,gBAArB;AAGA,YAAM2B,MAAM,GAAG;AACb,oBAAYI,kBADC;AAEb,0BAAkBC;AAFL,OAAf;AAIAjB,MAAAA,WAAW,GAAGpB,cAAc,CAAC,CAACoB,WAAD,EAAcY,MAAd,CAAD,CAA5B;AACD;;AACDb,IAAAA,SAAS,GAAGI,aAAa,CAACe,IAAd,CAAmB,IAAnB,CAAZ;AACD;;AACD,SAAO;AAEL9B,IAAAA,EAAE,EAAEW,SAFC;AAILF,IAAAA,iBAJK;AAMLe,IAAAA,MAAM,EAAEZ,WANH;AASLF,IAAAA;AATK,GAAP;AAWD;AAGD,OAAO,SAASqB,eAAT,CAAyBhC,OAAzB,EAIA;AACL,QAAMiC,QAAQ,GAAG,EAAjB;AACA,MAAIC,KAAJ;AACA,MAAIC,MAAJ;;AACA,MAAInC,OAAO,CAACG,oBAAZ,EAAkC;AAChC,KAAC;AAAC+B,MAAAA,KAAD;AAAQC,MAAAA;AAAR,QAAkBnC,OAAO,CAACI,aAA3B;AACA6B,IAAAA,QAAQ,WAAIpC,mBAAJ,SAA0BG,OAAO,CAACG,oBAAlC,EAAR,GAAoE,CAAC+B,KAAD,EAAQC,MAAR,CAApE;AACD;;AACD,OAAK,MAAMC,WAAX,IAA0BpC,OAAO,CAACE,gBAAlC,EAAoD;AAClD,KAAC;AAACgC,MAAAA,KAAD;AAAQC,MAAAA;AAAR,QAAkBnC,OAAO,CAACE,gBAAR,CAAyBkC,WAAzB,CAAnB;AACAH,IAAAA,QAAQ,WAAIpC,mBAAJ,SAA0BuC,WAA1B,EAAR,GAAmD,CAACF,KAAD,EAAQC,MAAR,CAAnD;AACD;;AACD,SAAOF,QAAP;AACD;AAID,OAAO,SAASN,cAAT,CAAwBR,IAAxB,EAAmCkB,OAAnC,EAAsD;AAC3D,QAAMC,eAAe,GAAG5C,mBAAmB,CAACyB,IAAD,EAAO,CAAC,SAAD,EAAY,KAAZ,CAAP,CAA3C;;AACA,MAAI,CAACmB,eAAL,EAAsB;AACpB,WAAO,IAAP;AACD;;AACD,SAAOA,eAAe,CAACC,IAAhB,KAAyBF,OAAzB,GAAmCC,eAAe,CAACE,IAAnD,GAA0D,IAAjE;AACD;AAGD,OAAO,SAASjB,0BAAT,CACLJ,IADK,EAELsB,UAFK,EAUL;AACA,QAAM9B,iBAAiB,GAAG,EAA1B;AACA,QAAM+B,aAAa,GAAGC,sBAAsB,CAACxB,IAAD,CAA5C;;AACA,MAAI,CAACuB,aAAL,EAAoB;AAClB,WAAO,IAAP;AACD;;AACD,QAAM;AAACF,IAAAA,IAAD;AAAOD,IAAAA;AAAP,MAAeG,aAArB;;AACA,MAAIH,IAAI,IAAIE,UAAU,CAACF,IAAD,CAAtB,EAA8B;AAE5B,UAAMf,WAAW,gBAAUL,IAAV,6CAAjB;AACA,UAAM;AAACyB,MAAAA,WAAD;AAAchB,MAAAA,QAAd;AAAwBiB,MAAAA;AAAxB,QAA+CC,sBAAsB,CAACP,IAAD,CAA3E;AAEA,UAAMQ,QAAQ,GAAGpD,mBAAmB,CAAC6C,IAAD,CAApC;AACA,UAAMQ,iBAAiB,eAAQR,IAAR,cAAgBD,IAAhB,mCAA6CK,WAA7C,eAA6DhB,QAA7D,eAA0EmB,QAA1E,QAAvB;AAEApC,IAAAA,iBAAiB,CAACiC,WAAD,CAAjB,GAAiCL,IAAjC;AACA,UAAMd,MAAM,GAAG;AACb,kBAAYoB,mBADC;AAEb,wBAAkBG;AAFL,KAAf;AAMA,WAAO;AAELxB,MAAAA,WAFK;AAILC,MAAAA,MAJK;AAMLd,MAAAA;AANK,KAAP;AAQD;;AACD,SAAO,IAAP;AACD;;AAKD,SAASgC,sBAAT,CAAgCxB,IAAhC,EAAsC;AACpC,SAAOzB,mBAAmB,CAACyB,IAAD,EAAO,CAAC,WAAD,EAAc,IAAd,CAAP,CAA1B;AACD;;AAED,SAAS2B,sBAAT,CAAgCV,WAAhC,EAA6C;AAC3C,QAAMQ,WAAW,aAAMhD,sBAAN,SAA+BwC,WAA/B,CAAjB;AACA,QAAMR,QAAQ,aAAM/B,mBAAN,SAA4BuC,WAA5B,CAAd;AACA,QAAMS,mBAAmB,iCACLD,WADK,+BAEVhB,QAFU,MAAzB;AAGA,SAAO;AAACgB,IAAAA,WAAD;AAAchB,IAAAA,QAAd;AAAwBiB,IAAAA;AAAxB,GAAP;AACD","sourcesContent":["import {assert} from '@luma.gl/webgl';\nimport {combineInjects, getQualifierDetails, typeToChannelSuffix} from '@luma.gl/shadertools';\n\nconst SAMPLER_UNIFORM_PREFIX = 'transform_uSampler_';\nconst SIZE_UNIFORM_PREFIX = 'transform_uSize_';\nconst VS_POS_VARIABLE = 'transform_position';\n\n// Scan provided vertex shader\n// for each texture attribute, inject sampler instructions and build uniforms for sampler\n// for texture target, get varying type and inject position instruction\nexport function updateForTextures(options: {\n vs: any;\n sourceTextureMap: any;\n targetTextureVarying: any;\n targetTexture: any;\n}): {\n vs: any;\n targetTextureType: any;\n inject: {};\n samplerTextureMap: {};\n} {\n const {vs, sourceTextureMap, targetTextureVarying, targetTexture} = options;\n const texAttributeNames = Object.keys(sourceTextureMap);\n let sourceCount = texAttributeNames.length;\n let targetTextureType = null;\n const samplerTextureMap = {};\n let updatedVs = vs;\n let finalInject = {};\n\n if (sourceCount > 0 || targetTextureVarying) {\n const vsLines = updatedVs.split('\\n');\n const updateVsLines = vsLines.slice();\n vsLines.forEach((line, index, lines) => {\n // TODO add early exit\n if (sourceCount > 0) {\n const updated = processAttributeDefinition(line, sourceTextureMap);\n if (updated) {\n const {updatedLine, inject} = updated;\n updateVsLines[index] = updatedLine;\n // sampleInstructions.push(sampleInstruction);\n finalInject = combineInjects([finalInject, inject]);\n Object.assign(samplerTextureMap, updated.samplerTextureMap);\n sourceCount--;\n }\n }\n if (targetTextureVarying && !targetTextureType) {\n targetTextureType = getVaryingType(line, targetTextureVarying);\n }\n });\n\n if (targetTextureVarying) {\n assert(targetTexture);\n const sizeName = `${SIZE_UNIFORM_PREFIX}${targetTextureVarying}`;\n\n const uniformDeclaration = `uniform vec2 ${sizeName};\\n`;\n const posInstructions = `\\\n vec2 ${VS_POS_VARIABLE} = transform_getPos(${sizeName});\n gl_Position = vec4(${VS_POS_VARIABLE}, 0, 1.);\\n`;\n const inject = {\n 'vs:#decl': uniformDeclaration,\n 'vs:#main-start': posInstructions\n };\n finalInject = combineInjects([finalInject, inject]);\n }\n updatedVs = updateVsLines.join('\\n');\n }\n return {\n // updated vertex shader (commented texture attribute definition)\n vs: updatedVs,\n // type (float, vec2, vec3 of vec4) target texture varying\n targetTextureType,\n // required vertex and fragment shader injects\n inject: finalInject,\n // map of sampler name to texture name, can be used to set attributes\n // usefull when swapping textures, as source and destination texture change when swap is called.\n samplerTextureMap\n };\n}\n\n// builds and returns an object contaning size uniform for each texture\nexport function getSizeUniforms(options: {\n sourceTextureMap: any;\n targetTextureVarying: any;\n targetTexture: any;\n}): {} {\n const uniforms = {};\n let width;\n let height;\n if (options.targetTextureVarying) {\n ({width, height} = options.targetTexture);\n uniforms[`${SIZE_UNIFORM_PREFIX}${options.targetTextureVarying}`] = [width, height];\n }\n for (const textureName in options.sourceTextureMap) {\n ({width, height} = options.sourceTextureMap[textureName]);\n uniforms[`${SIZE_UNIFORM_PREFIX}${textureName}`] = [width, height];\n }\n return uniforms;\n}\n\n// Return size (float, vec2 etc) of a given varying, null if doens't exist.\n\nexport function getVaryingType(line: any, varying: any): any {\n const qualiferDetails = getQualifierDetails(line, ['varying', 'out']);\n if (!qualiferDetails) {\n return null;\n }\n return qualiferDetails.name === varying ? qualiferDetails.type : null;\n}\n\n// build required definitions, sample instructions for each texture attribute\nexport function processAttributeDefinition(\n line: any,\n textureMap: any\n): {\n updatedLine: string;\n inject: {\n 'vs:#decl': string;\n 'vs:#main-start': string;\n };\n samplerTextureMap: {};\n} {\n const samplerTextureMap = {};\n const attributeData = getAttributeDefinition(line);\n if (!attributeData) {\n return null;\n }\n const {type, name} = attributeData;\n if (name && textureMap[name]) {\n // eslint-disable-next-line no-useless-escape\n const updatedLine = `\\// ${line} => Replaced by Transform with a sampler`;\n const {samplerName, sizeName, uniformDeclerations} = getSamplerDeclarations(name);\n\n const channels = typeToChannelSuffix(type);\n const sampleInstruction = ` ${type} ${name} = transform_getInput(${samplerName}, ${sizeName}).${channels};\\n`;\n\n samplerTextureMap[samplerName] = name;\n const inject = {\n 'vs:#decl': uniformDeclerations,\n 'vs:#main-start': sampleInstruction\n };\n\n // samplerNameMap\n return {\n // update vertex shader line.\n updatedLine,\n // inject object with sampler instructions.\n inject,\n // sampler name to texture name map\n samplerTextureMap\n };\n }\n return null;\n}\n\n// HELPERS\n\n// Checks if provided line is defining an attribute, if so returns details otherwise null\nfunction getAttributeDefinition(line) {\n return getQualifierDetails(line, ['attribute', 'in']);\n}\n\nfunction getSamplerDeclarations(textureName) {\n const samplerName = `${SAMPLER_UNIFORM_PREFIX}${textureName}`;\n const sizeName = `${SIZE_UNIFORM_PREFIX}${textureName}`;\n const uniformDeclerations = `\\\n uniform sampler2D ${samplerName};\n uniform vec2 ${sizeName};`;\n return {samplerName, sizeName, uniformDeclerations};\n}\n"],"file":"transform-shader-utils.js"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** Properties for creating Transforms */
|
|
2
|
+
export declare type TransformProps = {
|
|
3
|
+
id?: string;
|
|
4
|
+
vs?: string;
|
|
5
|
+
elementCount?: number;
|
|
6
|
+
sourceBuffers?: object;
|
|
7
|
+
feedbackBuffers?: object;
|
|
8
|
+
varyings?: string[];
|
|
9
|
+
feedbackMap?: object;
|
|
10
|
+
modules?: object[];
|
|
11
|
+
attributes?: any;
|
|
12
|
+
uniforms?: any;
|
|
13
|
+
parameters?: any;
|
|
14
|
+
discard?: boolean;
|
|
15
|
+
_sourceTextures?: any;
|
|
16
|
+
_targetTexture?: any;
|
|
17
|
+
_targetTextureVarying?: string;
|
|
18
|
+
_swapTexture?: string;
|
|
19
|
+
_fs?: string;
|
|
20
|
+
fs?: string;
|
|
21
|
+
inject?: any;
|
|
22
|
+
drawMode?: number;
|
|
23
|
+
};
|
|
24
|
+
/** Options that can be provided when running a Transform */
|
|
25
|
+
export declare type TransformRunOptions = {
|
|
26
|
+
clearRenderTarget?: boolean;
|
|
27
|
+
uniforms: Record<string, any>;
|
|
28
|
+
};
|
|
29
|
+
/** Options that control drawing a Transform. Used by subclasses to return draw parameters */
|
|
30
|
+
export declare type TransformDrawOptions = {
|
|
31
|
+
attributes?: object;
|
|
32
|
+
framebuffer?: any;
|
|
33
|
+
uniforms?: object;
|
|
34
|
+
discard?: boolean;
|
|
35
|
+
parameters?: object;
|
|
36
|
+
transformFeedback?: any;
|
|
37
|
+
};
|
|
38
|
+
export declare type TransformBinding = {
|
|
39
|
+
sourceBuffers: any;
|
|
40
|
+
feedbackBuffers: any;
|
|
41
|
+
transformFeedback: any;
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=transform-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-types.d.ts","sourceRoot":"","sources":["../../src/transform/transform-types.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oBAAY,cAAc,GAAG;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,4DAA4D;AAC5D,oBAAY,mBAAmB,GAAG;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B,CAAC;AAEF,6FAA6F;AAC7F,oBAAY,oBAAoB,GAAG;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,GAAG,CAAC;CACzB,CAAC;AAEF,oBAAY,gBAAgB,GAAG;IAAC,aAAa,MAAC;IAAC,eAAe,MAAC;IAAC,iBAAiB,MAAA;CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"transform-types.js"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Framebuffer, Buffer } from '@luma.gl/webgl';
|
|
2
|
+
import Model from '../lib/model';
|
|
3
|
+
import { TransformProps, TransformRunOptions, TransformDrawOptions } from './transform-types';
|
|
4
|
+
export default class Transform {
|
|
5
|
+
static isSupported(gl: WebGLRenderingContext): boolean;
|
|
6
|
+
readonly gl: WebGL2RenderingContext;
|
|
7
|
+
model: Model | null;
|
|
8
|
+
elementCount: number;
|
|
9
|
+
bufferTransform: any;
|
|
10
|
+
textureTransform: any;
|
|
11
|
+
elementIDBuffer: any;
|
|
12
|
+
constructor(gl: WebGL2RenderingContext, props?: TransformProps);
|
|
13
|
+
delete(): void;
|
|
14
|
+
run(options?: TransformRunOptions): void;
|
|
15
|
+
swap(): void;
|
|
16
|
+
getBuffer(varyingName?: string): Buffer;
|
|
17
|
+
getData(options?: {
|
|
18
|
+
packed?: boolean;
|
|
19
|
+
varyingName?: string;
|
|
20
|
+
}): any;
|
|
21
|
+
getFramebuffer(): Framebuffer | null;
|
|
22
|
+
update(props: TransformProps): void;
|
|
23
|
+
_initialize(props: TransformProps): void;
|
|
24
|
+
_updateModelProps(props: TransformProps): TransformProps;
|
|
25
|
+
_buildResourceTransforms(gl: WebGL2RenderingContext, props: TransformProps): void;
|
|
26
|
+
_updateDrawOptions(options: TransformRunOptions): TransformDrawOptions;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=transform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/transform/transform.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,WAAW,EAAE,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAGxD,OAAO,KAAK,MAAM,cAAc,CAAC;AAGjC,OAAO,EAAC,cAAc,EAAE,mBAAmB,EAAE,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AAG5F,MAAM,CAAC,OAAO,OAAO,SAAS;IAC5B,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,qBAAqB,GAAG,OAAO;IAKtD,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAQ;IAC3B,YAAY,SAAK;IACjB,eAAe,MAAQ;IACvB,gBAAgB,MAAQ;IACxB,eAAe,MAAQ;gBAEX,EAAE,EAAE,sBAAsB,EAAE,KAAK,GAAE,cAAmB;IAOlE,MAAM,IAAI,IAAI;IAcd,GAAG,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI;IAaxC,IAAI,IAAI,IAAI;IAUZ,SAAS,CAAC,WAAW,GAAE,MAAa,GAAG,MAAM;IAK7C,OAAO,CAAC,OAAO,GAAE;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAM;IAa9D,cAAc,IAAI,WAAW,GAAG,IAAI;IAKpC,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAanC,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAoBxC,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc;IASxD,wBAAwB,CAAC,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,cAAc;IAa1E,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,oBAAoB;CAQvE"}
|
|
@@ -1,21 +1,30 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import GL from '@luma.gl/constants';
|
|
3
|
+
import { getShaderInfo, getPassthroughFS } from '@luma.gl/shadertools';
|
|
4
4
|
import { isWebGL2 } from '@luma.gl/gltools';
|
|
5
|
-
import { assert, isObjectEmpty
|
|
5
|
+
import { assert, isObjectEmpty } from '@luma.gl/webgl';
|
|
6
6
|
import Model from '../lib/model';
|
|
7
|
+
import BufferTransform from './buffer-transform';
|
|
8
|
+
import TextureTransform from './texture-transform';
|
|
7
9
|
export default class Transform {
|
|
8
10
|
static isSupported(gl) {
|
|
9
11
|
return isWebGL2(gl);
|
|
10
12
|
}
|
|
11
13
|
|
|
12
14
|
constructor(gl, props = {}) {
|
|
15
|
+
_defineProperty(this, "gl", void 0);
|
|
16
|
+
|
|
17
|
+
_defineProperty(this, "model", null);
|
|
18
|
+
|
|
19
|
+
_defineProperty(this, "elementCount", 0);
|
|
20
|
+
|
|
21
|
+
_defineProperty(this, "bufferTransform", null);
|
|
22
|
+
|
|
23
|
+
_defineProperty(this, "textureTransform", null);
|
|
24
|
+
|
|
25
|
+
_defineProperty(this, "elementIDBuffer", null);
|
|
26
|
+
|
|
13
27
|
this.gl = gl;
|
|
14
|
-
this.model = null;
|
|
15
|
-
this.elementCount = 0;
|
|
16
|
-
this.bufferTransform = null;
|
|
17
|
-
this.textureTransform = null;
|
|
18
|
-
this.elementIDBuffer = null;
|
|
19
28
|
|
|
20
29
|
this._initialize(props);
|
|
21
30
|
|
|
@@ -42,12 +51,12 @@ export default class Transform {
|
|
|
42
51
|
}
|
|
43
52
|
}
|
|
44
53
|
|
|
45
|
-
run(
|
|
54
|
+
run(options) {
|
|
46
55
|
const {
|
|
47
56
|
clearRenderTarget = true
|
|
48
|
-
} =
|
|
57
|
+
} = options || {};
|
|
49
58
|
|
|
50
|
-
const updatedOpts = this._updateDrawOptions(
|
|
59
|
+
const updatedOpts = this._updateDrawOptions(options);
|
|
51
60
|
|
|
52
61
|
if (clearRenderTarget && updatedOpts.framebuffer) {
|
|
53
62
|
updatedOpts.framebuffer.clear({
|
|
@@ -73,11 +82,11 @@ export default class Transform {
|
|
|
73
82
|
return this.bufferTransform && this.bufferTransform.getBuffer(varyingName);
|
|
74
83
|
}
|
|
75
84
|
|
|
76
|
-
getData(
|
|
85
|
+
getData(options = {}) {
|
|
77
86
|
const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);
|
|
78
87
|
|
|
79
88
|
for (const resourceTransform of resourceTransforms) {
|
|
80
|
-
const data = resourceTransform.getData(
|
|
89
|
+
const data = resourceTransform.getData(options);
|
|
81
90
|
|
|
82
91
|
if (data) {
|
|
83
92
|
return data;
|
|
@@ -91,19 +100,19 @@ export default class Transform {
|
|
|
91
100
|
return this.textureTransform && this.textureTransform.getFramebuffer();
|
|
92
101
|
}
|
|
93
102
|
|
|
94
|
-
update(
|
|
95
|
-
if ('elementCount' in
|
|
96
|
-
this.model.setVertexCount(
|
|
103
|
+
update(props) {
|
|
104
|
+
if ('elementCount' in props) {
|
|
105
|
+
this.model.setVertexCount(props.elementCount);
|
|
97
106
|
}
|
|
98
107
|
|
|
99
108
|
const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);
|
|
100
109
|
|
|
101
110
|
for (const resourceTransform of resourceTransforms) {
|
|
102
|
-
resourceTransform.update(
|
|
111
|
+
resourceTransform.update(props);
|
|
103
112
|
}
|
|
104
113
|
}
|
|
105
114
|
|
|
106
|
-
_initialize(props
|
|
115
|
+
_initialize(props) {
|
|
107
116
|
const {
|
|
108
117
|
gl
|
|
109
118
|
} = this;
|
|
@@ -113,10 +122,10 @@ export default class Transform {
|
|
|
113
122
|
props = this._updateModelProps(props);
|
|
114
123
|
this.model = new Model(gl, Object.assign({}, props, {
|
|
115
124
|
fs: props.fs || getPassthroughFS({
|
|
116
|
-
version:
|
|
125
|
+
version: getShaderInfo(props.vs).version
|
|
117
126
|
}),
|
|
118
127
|
id: props.id || 'transform-model',
|
|
119
|
-
drawMode: props.drawMode ||
|
|
128
|
+
drawMode: props.drawMode || GL.POINTS,
|
|
120
129
|
vertexCount: props.elementCount
|
|
121
130
|
}));
|
|
122
131
|
this.bufferTransform && this.bufferTransform.setupResources({
|
|
@@ -125,7 +134,8 @@ export default class Transform {
|
|
|
125
134
|
}
|
|
126
135
|
|
|
127
136
|
_updateModelProps(props) {
|
|
128
|
-
let updatedProps =
|
|
137
|
+
let updatedProps = { ...props
|
|
138
|
+
};
|
|
129
139
|
const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);
|
|
130
140
|
|
|
131
141
|
for (const resourceTransform of resourceTransforms) {
|
|
@@ -147,8 +157,9 @@ export default class Transform {
|
|
|
147
157
|
assert(this.bufferTransform || this.textureTransform, 'must provide source/feedback buffers or source/target textures');
|
|
148
158
|
}
|
|
149
159
|
|
|
150
|
-
_updateDrawOptions(
|
|
151
|
-
let updatedOpts =
|
|
160
|
+
_updateDrawOptions(options) {
|
|
161
|
+
let updatedOpts = { ...options
|
|
162
|
+
};
|
|
152
163
|
const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);
|
|
153
164
|
|
|
154
165
|
for (const resourceTransform of resourceTransforms) {
|
|
@@ -161,18 +172,12 @@ export default class Transform {
|
|
|
161
172
|
}
|
|
162
173
|
|
|
163
174
|
function canCreateBufferTransform(props) {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
return false;
|
|
175
|
+
const canCreate = !isObjectEmpty(props.feedbackBuffers) || !isObjectEmpty(props.feedbackMap) || props.varyings && props.varyings.length > 0;
|
|
176
|
+
return Boolean(canCreate);
|
|
169
177
|
}
|
|
170
178
|
|
|
171
179
|
function canCreateTextureTransform(props) {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
return false;
|
|
180
|
+
const canCreate = !isObjectEmpty(props._sourceTextures) || props._targetTexture || props._targetTextureVarying;
|
|
181
|
+
return canCreate;
|
|
177
182
|
}
|
|
178
183
|
//# sourceMappingURL=transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/transform/transform.ts"],"names":["GL","getShaderInfo","getPassthroughFS","isWebGL2","assert","isObjectEmpty","Model","BufferTransform","TextureTransform","Transform","isSupported","gl","constructor","props","_initialize","Object","seal","delete","model","bufferTransform","textureTransform","run","options","clearRenderTarget","updatedOpts","_updateDrawOptions","framebuffer","clear","color","transform","swap","swapped","resourceTransforms","filter","Boolean","resourceTransform","getBuffer","varyingName","getData","data","getFramebuffer","update","setVertexCount","elementCount","_buildResourceTransforms","_updateModelProps","assign","fs","version","vs","id","drawMode","POINTS","vertexCount","setupResources","updatedProps","updateModelProps","canCreateBufferTransform","canCreateTextureTransform","getDrawOptions","canCreate","feedbackBuffers","feedbackMap","varyings","length","_sourceTextures","_targetTexture","_targetTextureVarying"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {getShaderInfo, getPassthroughFS} from '@luma.gl/shadertools';\nimport {isWebGL2} from '@luma.gl/gltools';\nimport type {Framebuffer, Buffer} from '@luma.gl/webgl';\nimport {assert, isObjectEmpty} from '@luma.gl/webgl';\n\nimport Model from '../lib/model';\nimport BufferTransform from './buffer-transform';\nimport TextureTransform from './texture-transform';\nimport {TransformProps, TransformRunOptions, TransformDrawOptions} from './transform-types';\n\n// takes source and target buffers/textures and setsup the pipeline\nexport default class Transform {\n static isSupported(gl: WebGLRenderingContext): boolean {\n // TODO : differentiate writing to buffer vs not\n return isWebGL2(gl);\n }\n\n readonly gl: WebGL2RenderingContext;\n model: Model | null = null;\n elementCount = 0;\n bufferTransform = null;\n textureTransform = null;\n elementIDBuffer = null;\n\n constructor(gl: WebGL2RenderingContext, props: TransformProps = {}) {\n this.gl = gl;\n this._initialize(props);\n Object.seal(this);\n }\n\n // Delete owned resources.\n delete(): void {\n const {model, bufferTransform, textureTransform} = this;\n if (model) {\n model.delete();\n }\n if (bufferTransform) {\n bufferTransform.delete();\n }\n if (textureTransform) {\n textureTransform.delete();\n }\n }\n\n // Run one transform loop.\n run(options?: TransformRunOptions): void {\n const {clearRenderTarget = true} = options || {};\n\n const updatedOpts = this._updateDrawOptions(options);\n\n if (clearRenderTarget && updatedOpts.framebuffer) {\n updatedOpts.framebuffer.clear({color: true});\n }\n\n this.model.transform(updatedOpts);\n }\n\n // swap resources if a map is provided\n swap(): void {\n let swapped = false;\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n swapped = swapped || resourceTransform.swap();\n }\n assert(swapped, 'Nothing to swap');\n }\n\n // Return Buffer object for given varying name.\n getBuffer(varyingName: string = null): Buffer {\n return this.bufferTransform && this.bufferTransform.getBuffer(varyingName);\n }\n\n // Return data either from Buffer or from Texture\n getData(options: {packed?: boolean; varyingName?: string} = {}) {\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n // @ts-ignore\n const data = resourceTransform.getData(options);\n if (data) {\n return data;\n }\n }\n return null;\n }\n\n // Return framebuffer object if rendering to textures\n getFramebuffer(): Framebuffer | null {\n return this.textureTransform && this.textureTransform.getFramebuffer();\n }\n\n // Update some or all buffer/texture bindings.\n update(props: TransformProps): void {\n if ('elementCount' in props) {\n // @ts-ignore TODO\n this.model.setVertexCount(props.elementCount);\n }\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n resourceTransform.update(props);\n }\n }\n\n // Private\n\n _initialize(props: TransformProps): void {\n const {gl} = this;\n this._buildResourceTransforms(gl, props);\n\n props = this._updateModelProps(props);\n this.model = new Model(\n gl,\n Object.assign({}, props, {\n fs: props.fs || getPassthroughFS({version: getShaderInfo(props.vs).version}),\n id: props.id || 'transform-model',\n drawMode: props.drawMode || GL.POINTS,\n vertexCount: props.elementCount\n })\n );\n\n /* eslint-disable no-unused-expressions */\n this.bufferTransform && this.bufferTransform.setupResources({model: this.model});\n /* eslint-enable no-unused-expressions */\n }\n\n _updateModelProps(props: TransformProps): TransformProps {\n let updatedProps = {...props};\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n updatedProps = resourceTransform.updateModelProps(updatedProps);\n }\n return updatedProps;\n }\n\n _buildResourceTransforms(gl: WebGL2RenderingContext, props: TransformProps) {\n if (canCreateBufferTransform(props)) {\n this.bufferTransform = new BufferTransform(gl, props);\n }\n if (canCreateTextureTransform(props)) {\n this.textureTransform = new TextureTransform(gl, props);\n }\n assert(\n this.bufferTransform || this.textureTransform,\n 'must provide source/feedback buffers or source/target textures'\n );\n }\n\n _updateDrawOptions(options: TransformRunOptions): TransformDrawOptions {\n let updatedOpts = {...options};\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n updatedOpts = Object.assign(updatedOpts, resourceTransform.getDrawOptions(updatedOpts));\n }\n return updatedOpts;\n }\n}\n\n// Helper Methods\n\nfunction canCreateBufferTransform(props: TransformProps): boolean {\n const canCreate = !isObjectEmpty(props.feedbackBuffers) ||\n !isObjectEmpty(props.feedbackMap) ||\n (props.varyings && props.varyings.length > 0);\n return Boolean(canCreate);\n}\n\nfunction canCreateTextureTransform(props: TransformProps): boolean {\n const canCreate =\n !isObjectEmpty(props._sourceTextures) ||\n props._targetTexture ||\n props._targetTextureVarying\n return canCreate;\n}\n"],"file":"transform.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clip-space.d.ts","sourceRoot":"","sources":["../../src/utils/clip-space.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAwB/C,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,KAAK;gBAC9B,EAAE,EAAE,qBAAqB,EAAE,IAAI,CAAC,EAAE,UAAU;CAoBzD"}
|
|
@@ -1,21 +1,7 @@
|
|
|
1
|
+
import GL from '@luma.gl/constants';
|
|
1
2
|
import Model from '../lib/model';
|
|
2
3
|
import Geometry from '../geometry/geometry';
|
|
3
|
-
const CLIPSPACE_VERTEX_SHADER =
|
|
4
|
-
attribute vec2 aClipSpacePosition;
|
|
5
|
-
attribute vec2 aTexCoord;
|
|
6
|
-
attribute vec2 aCoordinate;
|
|
7
|
-
|
|
8
|
-
varying vec2 position;
|
|
9
|
-
varying vec2 coordinate;
|
|
10
|
-
varying vec2 uv;
|
|
11
|
-
|
|
12
|
-
void main(void) {
|
|
13
|
-
gl_Position = vec4(aClipSpacePosition, 0., 1.);
|
|
14
|
-
position = aClipSpacePosition;
|
|
15
|
-
coordinate = aCoordinate;
|
|
16
|
-
uv = aTexCoord;
|
|
17
|
-
}
|
|
18
|
-
`;
|
|
4
|
+
const CLIPSPACE_VERTEX_SHADER = "attribute vec2 aClipSpacePosition;\nattribute vec2 aTexCoord;\nattribute vec2 aCoordinate;\n\nvarying vec2 position;\nvarying vec2 coordinate;\nvarying vec2 uv;\n\nvoid main(void) {\n gl_Position = vec4(aClipSpacePosition, 0., 1.);\n position = aClipSpacePosition;\n coordinate = aCoordinate;\n uv = aTexCoord;\n}\n";
|
|
19
5
|
const POSITIONS = [-1, -1, 1, -1, -1, 1, 1, 1];
|
|
20
6
|
export default class ClipSpace extends Model {
|
|
21
7
|
constructor(gl, opts) {
|
|
@@ -23,7 +9,7 @@ export default class ClipSpace extends Model {
|
|
|
23
9
|
super(gl, Object.assign({}, opts, {
|
|
24
10
|
vs: CLIPSPACE_VERTEX_SHADER,
|
|
25
11
|
geometry: new Geometry({
|
|
26
|
-
drawMode:
|
|
12
|
+
drawMode: GL.TRIANGLE_STRIP,
|
|
27
13
|
vertexCount: 4,
|
|
28
14
|
attributes: {
|
|
29
15
|
aClipSpacePosition: {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/clip-space.ts"],"names":["GL","Model","Geometry","CLIPSPACE_VERTEX_SHADER","POSITIONS","ClipSpace","constructor","gl","opts","TEX_COORDS","map","coord","Object","assign","vs","geometry","drawMode","TRIANGLE_STRIP","vertexCount","attributes","aClipSpacePosition","size","value","Float32Array","aTexCoord","aCoordinate","setVertexCount"],"mappings":"AACA,OAAOA,EAAP,MAAe,oBAAf;AACA,OAAOC,KAAP,MAAgC,cAAhC;AACA,OAAOC,QAAP,MAAqB,sBAArB;AAEA,MAAMC,uBAAuB,oUAA7B;AAkBA,MAAMC,SAAS,GAAG,CAAC,CAAC,CAAF,EAAK,CAAC,CAAN,EAAS,CAAT,EAAY,CAAC,CAAb,EAAgB,CAAC,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,CAAlB;AAGA,eAAe,MAAMC,SAAN,SAAwBJ,KAAxB,CAA8B;AAC3CK,EAAAA,WAAW,CAACC,EAAD,EAA4BC,IAA5B,EAA+C;AACxD,UAAMC,UAAU,GAAGL,SAAS,CAACM,GAAV,CAAeC,KAAD,IAAYA,KAAK,KAAK,CAAC,CAAX,GAAe,CAAf,GAAmBA,KAA7C,CAAnB;AAEA,UACEJ,EADF,EAEEK,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBL,IAAlB,EAAwB;AACtBM,MAAAA,EAAE,EAAEX,uBADkB;AAEtBY,MAAAA,QAAQ,EAAE,IAAIb,QAAJ,CAAa;AACrBc,QAAAA,QAAQ,EAAEhB,EAAE,CAACiB,cADQ;AAErBC,QAAAA,WAAW,EAAE,CAFQ;AAGrBC,QAAAA,UAAU,EAAE;AACVC,UAAAA,kBAAkB,EAAE;AAACC,YAAAA,IAAI,EAAE,CAAP;AAAUC,YAAAA,KAAK,EAAE,IAAIC,YAAJ,CAAiBnB,SAAjB;AAAjB,WADV;AAEVoB,UAAAA,SAAS,EAAE;AAACH,YAAAA,IAAI,EAAE,CAAP;AAAUC,YAAAA,KAAK,EAAE,IAAIC,YAAJ,CAAiBd,UAAjB;AAAjB,WAFD;AAGVgB,UAAAA,WAAW,EAAE;AAACJ,YAAAA,IAAI,EAAE,CAAP;AAAUC,YAAAA,KAAK,EAAE,IAAIC,YAAJ,CAAiBd,UAAjB;AAAjB;AAHH;AAHS,OAAb;AAFY,KAAxB,CAFF;AAeA,SAAKiB,cAAL,CAAoB,CAApB;AACD;;AApB0C","sourcesContent":["// ClipSpace\nimport GL from '@luma.gl/constants';\nimport Model, {ModelProps} from '../lib/model';\nimport Geometry from '../geometry/geometry';\n\nconst CLIPSPACE_VERTEX_SHADER = `\\\nattribute vec2 aClipSpacePosition;\nattribute vec2 aTexCoord;\nattribute vec2 aCoordinate;\n\nvarying vec2 position;\nvarying vec2 coordinate;\nvarying vec2 uv;\n\nvoid main(void) {\n gl_Position = vec4(aClipSpacePosition, 0., 1.);\n position = aClipSpacePosition;\n coordinate = aCoordinate;\n uv = aTexCoord;\n}\n`;\n\n/* eslint-disable indent, no-multi-spaces */\nconst POSITIONS = [-1, -1, 1, -1, -1, 1, 1, 1];\n\n\nexport default class ClipSpace extends Model {\n constructor(gl: WebGLRenderingContext, opts?: ModelProps) {\n const TEX_COORDS = POSITIONS.map((coord) => (coord === -1 ? 0 : coord));\n\n super(\n gl,\n Object.assign({}, opts, {\n vs: CLIPSPACE_VERTEX_SHADER,\n geometry: new Geometry({\n drawMode: GL.TRIANGLE_STRIP,\n vertexCount: 4,\n attributes: {\n aClipSpacePosition: {size: 2, value: new Float32Array(POSITIONS)},\n aTexCoord: {size: 2, value: new Float32Array(TEX_COORDS)},\n aCoordinate: {size: 2, value: new Float32Array(TEX_COORDS)}\n }\n })\n })\n );\n this.setVertexCount(4);\n }\n}\n"],"file":"clip-space.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@luma.gl/engine",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.6.0-alpha.1",
|
|
4
4
|
"description": "WebGL2 Components for High Performance Rendering and Computation",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
"animation",
|
|
17
17
|
"3d"
|
|
18
18
|
],
|
|
19
|
-
"types": "src/index.
|
|
20
|
-
"main": "dist/
|
|
21
|
-
"module": "dist/
|
|
19
|
+
"types": "src/index.ts",
|
|
20
|
+
"main": "dist/index.js",
|
|
21
|
+
"module": "dist/index.js",
|
|
22
22
|
"files": [
|
|
23
23
|
"src",
|
|
24
24
|
"dist",
|
|
@@ -26,17 +26,17 @@
|
|
|
26
26
|
],
|
|
27
27
|
"sideEffects": false,
|
|
28
28
|
"scripts": {
|
|
29
|
-
"pre-build": "npm run build-bundle
|
|
29
|
+
"pre-build": "npm run build-bundle",
|
|
30
30
|
"build-bundle": "webpack --display=minimal --config ../../scripts/bundle.config.js"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@babel/runtime": "^7.0.0",
|
|
34
|
-
"@luma.gl/constants": "8.
|
|
35
|
-
"@luma.gl/gltools": "8.
|
|
36
|
-
"@luma.gl/shadertools": "8.
|
|
37
|
-
"@luma.gl/webgl": "8.
|
|
34
|
+
"@luma.gl/constants": "8.6.0-alpha.1",
|
|
35
|
+
"@luma.gl/gltools": "8.6.0-alpha.1",
|
|
36
|
+
"@luma.gl/shadertools": "8.6.0-alpha.1",
|
|
37
|
+
"@luma.gl/webgl": "8.6.0-alpha.1",
|
|
38
38
|
"@math.gl/core": "^3.5.0",
|
|
39
39
|
"probe.gl": "^3.4.0"
|
|
40
40
|
},
|
|
41
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "e3895ce8a6dd376394c6662bb8cf0e1ad1f233f3"
|
|
42
42
|
}
|