mirror of
https://github.com/visgl/luma.gl.git
synced 2025-12-08 17:36:19 +00:00
66 lines
3.3 KiB
Markdown
66 lines
3.3 KiB
Markdown
# TextureTransform
|
|
|
|
`TextureTransform` is an internal helper class for `Transform`, responsible for managing resources and state required for reading from and/or writing to `Texture` objects. It auto creates `Texture` objects when requested, creates `Framebuffer` objects. Maintains all texture bindings, when swapping is eanbled, two binding objects are created for easy switching of all WebGL resource binginds.
|
|
|
|
NOTE: In following sections 'texture transform' is used to refer to 'reading from and/or writing to `Texture` objects'.
|
|
|
|
## Constructor
|
|
|
|
### Transform(gl : WebGL2RenderingContext, props: Object)
|
|
|
|
- `gl` (`WebGLRenderingContext`) gl - context
|
|
- `props` (`Object`, Optional) - contains following data.
|
|
- `sourceTextures` (`Object`, Optional) - key and value pairs, where key is the name of vertex shader attribute and value is the corresponding `Texture` object.
|
|
- `targetTexture` (`Texture`|`String`, Optional) - `Texture` object to which data to be written. When it is a `String`, it must be one of the source texture attributes name, a new texture object is cloned from it.
|
|
- `targetTextureVarying` (`String`) : varying name used in vertex shader who's data should go into target texture.
|
|
- `swapTexture` (`String`) : source texture attribute name, that is swapped with target texture every time `swap()` is called.
|
|
- `fs` (`String`, Optional) - fragment shader string, when rendering to a texture, fragments can be processed using this custom shader, when not specified, pass through fragment shader will be used.
|
|
|
|
## Methods (Model props)
|
|
|
|
### getDrawOptions(opts: Object) : Object
|
|
|
|
Returns options required when performing `Model.draw()` options.
|
|
|
|
- `opts` (`Object`) - Any existing `opts.attributes` , `opts.parameters`, and `opts.uniforms` will be merged with new values.
|
|
|
|
Returns an Object : attributes, framebuffer, uniforms, discard, parameters
|
|
|
|
### updateModelProps(props: Object) : Object
|
|
|
|
Updates input `props` object used to build `Model` object, with data required for texture transform.
|
|
|
|
- `props` (`Object`) - props for building `Model` object, it will updated with required options (`{vs, fs, modules, uniforms, inject}`) for texture transform.
|
|
|
|
Returns updated object.
|
|
|
|
## Methods (Resource management)
|
|
|
|
### swap()
|
|
|
|
If `swapTexture` is provided during construction, performs source and feedback buffers swap as per the `swapTexture` mapping.
|
|
|
|
### update(props: Object)
|
|
|
|
Updates bindings for source and target texture.
|
|
|
|
- `props` (`Object`) - contains following data.
|
|
- `sourceTextures` (`Object`, Optional) - key and value pairs, where key is the name of vertex shader attribute and value is the corresponding `Texture` object.
|
|
- `targetTexture` (`Texture`|`String`, Optional) - `Texture` object to which data to be written. When it is a `String`, it must be one of the source texture attributes name, a new texture object is cloned from it.
|
|
|
|
## Methods (Accessors)
|
|
|
|
### getTargetTexture() : Texture
|
|
|
|
Returns current target texture object.
|
|
|
|
### getData([options : Object]) : ArrayBufferView
|
|
|
|
Reads and returns data from current target texture.
|
|
|
|
- `options.packed` (Boolean, Optional, Default: false) - When true, data is packed to the actual size varyings. When false return array contains 4 values (R, G, B and A) for each element. Un-used element value will be 0 for R, G and B and 1 for A channel.
|
|
|
|
### getFramebuffer() : Framebuffer
|
|
|
|
Returns current `Framebuffer` object.
|