BaseFilterShader
This is a base class for all filters that use a shader.
Most filters will extend this class.
It takes care of setting up the shader program and vertex buffer layout.
It also provides the run method which handles the rendering of the filter.
When rendering, it generates a new DrawingContext to render to,
and releases the input DrawingContext.
Note: be careful when using gl_FragCoord in shader code.
This built-in variable gives you the "window relative" coordinate
of the pixel being processed.
But this is actually relative to the framebuffer size,
and Phaser treats all framebuffers except the main canvas
as being vertically flipped.
This means that gl_FragCoord.y = 0 in a shader will be the bottom of a framebuffer,
but the top of the canvas.
This means gl_FragCoord gives different results when it's inside a
framebuffer (like a Render Texture or Filter) compared to the main canvas.
Be aware of this restriction when writing shaders.
Constructor
new BaseFilterShader(name, manager, [fragmentShaderKey], [fragmentShaderSource], [shaderAdditions])
Parameters
| name | type | optional | description |
|---|---|---|---|
| name | string | No | The name of the filter. |
| manager | Phaser.Renderer.WebGL.RenderNodes.RenderNodeManager | No | The manager that owns this filter. |
| fragmentShaderKey | string | Yes | The key of the fragment shader source in the shader cache. This will only be used if fragmentShaderSource is not set. |
| fragmentShaderSource | string | Yes | The fragment shader source. |
| shaderAdditions | Array.<Phaser.Types.Renderer.WebGL.ShaderAdditionConfig> | Yes | An array of shader additions to apply to the shader program. |
Scope: static
Extends
Source: src/renderer/webgl/renderNodes/filters/BaseFilterShader.js#L14
Since: 4.0.0
Inherited Members
From Phaser.Renderer.WebGL.RenderNodes.RenderNode:
Public Members
indexBuffer
indexBuffer: Phaser.Renderer.WebGL.Wrappers.WebGLBufferWrapper
Description:
The index buffer defining vertex order.
Source: src/renderer/webgl/renderNodes/filters/BaseFilterShader.js#L96
Since: 4.0.0
programManager
programManager: Phaser.Renderer.WebGL.ProgramManager
Description:
The program manager used to create and manage shader programs.
This contains shader variants.
Source: src/renderer/webgl/renderNodes/filters/BaseFilterShader.js#L121
Since: 4.0.0
vertexBufferLayout
vertexBufferLayout: Phaser.Renderer.WebGL.Wrappers.WebGLVertexBufferLayoutWrapper
Description:
The vertex buffer layout for this RenderNode.
This consists of 4 bytes, 0-3, forming corners of a quad instance.
Source: src/renderer/webgl/renderNodes/filters/BaseFilterShader.js#L105
Since: 4.0.0
Inherited Methods
From Phaser.Renderer.WebGL.RenderNodes.BaseFilter:
From Phaser.Renderer.WebGL.RenderNodes.RenderNode:
Public Methods
setupTextures
<instance> setupTextures(controller, textures, drawingContext)
Description:
Run any necessary modifications on the textures array.
Override this method to handle texture inputs.
Parameters:
| name | type | optional | description |
|---|---|---|---|
| controller | Phaser.Filters.Controller | No | The filter controller. |
| textures | Array.<Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper> | No | The array of textures to modify in-place. |
| drawingContext | Phaser.Renderer.WebGL.DrawingContext | No | The drawing context in use. |
Source: src/renderer/webgl/renderNodes/filters/BaseFilterShader.js#L299
Since: 4.0.0
setupUniforms
<instance> setupUniforms(controller, drawingContext)
Description:
Set up the uniforms for this shader, based on the controller.
Parameters:
| name | type | optional | description |
|---|---|---|---|
| controller | Phaser.Filters.Controller | No | The filter controller. |
| drawingContext | Phaser.Renderer.WebGL.DrawingContext | No | The drawing context in use. |
Source: src/renderer/webgl/renderNodes/filters/BaseFilterShader.js#L314
Since: 4.0.0
updateShaderConfig
<instance> updateShaderConfig(controller, drawingContext)
Description:
Set up the shader configuration for this shader.
Override this method to handle shader configuration.
Parameters:
| name | type | optional | description |
|---|---|---|---|
| controller | Phaser.Filters.Controller | No | The filter controller. |
| drawingContext | Phaser.Renderer.WebGL.DrawingContext | No | The drawing context in use. |
Source: src/renderer/webgl/renderNodes/filters/BaseFilterShader.js#L285
Since: 4.0.0