Skip to main content
Version: Phaser v4.0.0-rc.6

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

nametypeoptionaldescription
namestringNoThe name of the filter.
managerPhaser.Renderer.WebGL.RenderNodes.RenderNodeManagerNoThe manager that owns this filter.
fragmentShaderKeystringYesThe key of the fragment shader source in the shader cache. This will only be used if fragmentShaderSource is not set.
fragmentShaderSourcestringYesThe fragment shader source.
shaderAdditionsArray.<Phaser.Types.Renderer.WebGL.ShaderAdditionConfig>YesAn array of shader additions to apply to the shader program.

Scope: static

Extends

Phaser.Renderer.WebGL.RenderNodes.BaseFilter

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:

nametypeoptionaldescription
controllerPhaser.Filters.ControllerNoThe filter controller.
texturesArray.<Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper>NoThe array of textures to modify in-place.
drawingContextPhaser.Renderer.WebGL.DrawingContextNoThe 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:

nametypeoptionaldescription
controllerPhaser.Filters.ControllerNoThe filter controller.
drawingContextPhaser.Renderer.WebGL.DrawingContextNoThe 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:

nametypeoptionaldescription
controllerPhaser.Filters.ControllerNoThe filter controller.
drawingContextPhaser.Renderer.WebGL.DrawingContextNoThe drawing context in use.

Source: src/renderer/webgl/renderNodes/filters/BaseFilterShader.js#L285
Since: 4.0.0