-
Notifications
You must be signed in to change notification settings - Fork 211
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' into tgorkin/gatsby-upgrade-1.0
* master: Transform refactor (#1221) dev-tools: Bump to 0.0.29 (#1232) v7.3.0-alpha.7 Transform: Fix update of Buffers and elementCount. (#1224) point docs to release branch (#1229) update website fonts (#1227)
- Loading branch information
Showing
40 changed files
with
1,479 additions
and
873 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
# BufferTransform | ||
|
||
`BufferTransform` is an internal helper class for `Transform`, responsible for managing resources and state required for reading from and/or writing to `Buffer` objects. It auto creates `feedbackBufferes` when requested, creates `TransformFeedback` objects. Maintains all buffer bindings, when swapping is eanbled, two binding objects are created for easy switching of all WebGL resource binginds. | ||
|
||
NOTE: In following sections 'buffer transform' is used to refer to 'reading from and/or writing to `Buffer` objects'. | ||
|
||
## Constructor | ||
|
||
### Transform(gl : WebGL2RenderingContext, props: Object) | ||
|
||
* `gl` (`WebGLRenderingContext`) gl - context | ||
* `props` (`Object`, Optional) - contains following data. | ||
* `sourceBuffers` (`Object`, Optional) - key and value pairs, where key is the name of vertex shader attribute and value is the corresponding `Attribute`, `Buffer` or attribute descriptor object. | ||
* `feedbackBuffers` (`Object`, Optional) - key and value pairs, where key is the name of vertex shader varying and value is the corresponding `Buffer` object or buffer params object. If a buffer params object is specified, it will contain following fields, these can be used to capture data into the buffer at particular offset and size. | ||
* `buffer`=(Buffer) - Buffer object to be bound. | ||
* `byteOffset`=(Number, default: 0) - Byte offset that is used to start recording the data in the buffer. | ||
* `byteSize`=(Number, default: remaining buffer size) - Size in bytes that is used for recording the data. | ||
* `varyings` (`Array`, Optional) - Array of vertex shader varyings names. When not provided this can be deduced from `feedbackBuffers`. | ||
|
||
NOTE: If only reading from `Buffer` objects, above optional props doesn't have to be supplied during construction, but can be supplied using `update` method. If writing to `Buffer` objects, either `varyings` or `feedbackBuffers` must be supplied. | ||
|
||
|
||
## Methods (Model props) | ||
|
||
### getDrawOptions(opts: Object) : Object | ||
|
||
Returns resources required when performing `Model.draw()` options. | ||
|
||
* `opts` (`Object`) - Any existing `opts.attributes` will be merged with new attributes. | ||
|
||
Returns an Object : {attributes, transformFeedback}. | ||
|
||
### updateModelProps(props: Object) : Object | ||
|
||
Updates input `props` object with data required for buffer transform. | ||
|
||
* `opts` (`Object`) - If writing to `Buffer` objects, `opts.varying` will be updated. | ||
|
||
Returns updated object. | ||
|
||
## Methods (Resource management) | ||
|
||
### setupResources(opts: Object) | ||
|
||
Sets up internal resources needed writing to buffers. | ||
|
||
* `opts` (`Object`) - contains following data. | ||
* `model` (`Model`, Optional) - `Model` object that is used to perform draw operations. | ||
|
||
### swap() | ||
|
||
If `feedbackMap` is provided during construction, performs source and feedback buffers swap as per the `feedbackMap`. | ||
|
||
### update(props: Object) | ||
|
||
Updates buffer bindings for one or more source or feedback buffers. | ||
|
||
* `props` (`Object`) - contains following data. | ||
* `sourceBuffers` (`Object`, Optional) - key and value pairs, where key is the name of vertex shader attribute and value is the corresponding `Attribute`, `Buffer` or attribute descriptor object. | ||
* `feedbackBuffers` (`Object`, Optional) - key and value pairs, where key is the name of vertex shader varying and value is the corresponding `Buffer` object or buffer params object. If a buffer params object is specified, it will contain following fields, these can be used to capture data into the buffer at particular offset and size. | ||
* `buffer`=(Buffer) - Buffer object to be bound. | ||
* `byteOffset`=(Number, default: 0) - Byte offset that is used to start recording the data in the buffer. | ||
* `byteSize`=(Number, default: remaining buffer size) - Size in bytes that is used for recording the data. | ||
|
||
|
||
## Methods (Accessors) | ||
|
||
### getBuffer(varyingName : String) : Buffer | ||
|
||
Returns current feedback buffer corresponding to given varying name. | ||
|
||
* `varyingName` (`String`) - varying name. | ||
|
||
### getData([options : Object]) : ArrayBufferView | ||
|
||
Reads and returns data from current feedback buffer corresponding to the given varying name. | ||
|
||
* `options.varyingName` (`String`, Optional) - when specified, first checks if there is a corresponding feedback buffer, if so reads data from this buffer and returns. When not specified, there must be target texture and data is read from this texture and returned. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
# 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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.