ProgramManager
The ProgramManager is a utility class used to manage
instantiated shader programs and a suite of associated data,
such as a VAO. It maintains a shared pool of uniforms,
so if a different shader program is used, the uniforms
can be applied to the new program.
Constructor
new ProgramManager(renderer, attributeBufferLayouts, [indexBuffer])
Parameters
| name | type | optional | description |
|---|---|---|---|
| renderer | Phaser.Renderer.WebGL.WebGLRenderer | No | The current WebGLRenderer instance. |
| attributeBufferLayouts | Array.<Phaser.Types.Renderer.WebGL.WebGLAttributeBufferLayout> | No | The attribute buffer layouts to use in the program. |
| indexBuffer | Phaser.Renderer.WebGL.Wrappers.WebGLBufferWrapper | Yes | The index buffer to use in the program, if any. |
Scope: static
Source: src/renderer/webgl/ProgramManager.js#L10
Since: 4.0.0
Public Members
attributeBufferLayouts
attributeBufferLayouts: Array.<Phaser.Types.Renderer.WebGL.WebGLAttributeBufferLayout>
Description:
The attribute buffer layouts to use in the program.
These are used to create a VAO.
Source: src/renderer/webgl/ProgramManager.js#L48
Since: 4.0.0
currentConfig
currentConfig: object
Description:
The configuration object currently being assembled.
Source: src/renderer/webgl/ProgramManager.js#L67
Since: 4.0.0
currentProgramKey
currentProgramKey: string
Description:
The key of the currently active shader program.
Source: src/renderer/webgl/ProgramManager.js#L58
Since: 4.0.0
indexBuffer
indexBuffer: Phaser.Renderer.WebGL.Wrappers.WebGLBufferWrapper
Description:
The index buffer to use in the program, if any.
This is used to create a VAO.
Source: src/renderer/webgl/ProgramManager.js#L38
Since: 4.0.0
programs
programs: object
Description:
A map of shader programs and associated data suite,
identified by a unique key.
Each key corresponds to an object of the following shape:
-
program(WebGLProgramWrapper) - The compiled shader program. -
vao(WebGLVAOWrapper) - The VAO associated with the program. -
config(object) - The configuration object used to create the program.
Source: src/renderer/webgl/ProgramManager.js#L83
Since: 4.0.0
renderer
renderer: Phaser.Renderer.WebGL.WebGLRenderer
Description:
The current WebGLRenderer instance.
Source: src/renderer/webgl/ProgramManager.js#L29
Since: 4.0.0
uniforms
uniforms: object
Description:
A map of uniform values, identified by the shader uniform names.
This allows uniforms to be kept between shader programs.
Source: src/renderer/webgl/ProgramManager.js#L99
Since: 4.0.0
Public Methods
addAddition
<instance> addAddition(addition, [index])
Description:
Add a shader addition to the current configuration.
Parameters:
| name | type | optional | description |
|---|---|---|---|
| addition | Phaser.Types.Renderer.WebGL.ShaderAdditionConfig | No | The shader addition to add. |
| index | number | Yes | The index at which to insert the addition. If not specified, it will be added at the end. |
Source: src/renderer/webgl/ProgramManager.js#L247
Since: 4.0.0
addFeature
<instance> addFeature(feature)
Description:
Add a feature to the current configuration.
Parameters:
| name | type | optional | description |
|---|---|---|---|
| feature | string | No | The feature to add. |
Source: src/renderer/webgl/ProgramManager.js#L362
Since: 4.0.0
applyUniforms
<instance> applyUniforms()
Description:
Set the stored uniforms on a shader program.
Source: src/renderer/webgl/ProgramManager.js#L214
Since: 4.0.0
clearFeatures
<instance> clearFeatures()
Description:
Clear all features from the current configuration.
Source: src/renderer/webgl/ProgramManager.js#L392
Since: 4.0.0
clearUniforms
<instance> clearUniforms()
Description:
Remove all uniforms.
Source: src/renderer/webgl/ProgramManager.js#L203
Since: 4.0.0
getAddition
<instance> getAddition(name)
Description:
Returns the addition with the given name.
Parameters:
| name | type | optional | description |
|---|---|---|---|
| name | string | No | The name to find. |
Returns: Phaser.Types.Renderer.WebGL.ShaderAdditionConfig - The addition, or null if it was not found.
Source: src/renderer/webgl/ProgramManager.js#L267
Since: 4.0.0
getAdditionIndex
<instance> getAdditionIndex(name)
Description:
Returns the index of a shader addition with the given name.
Parameters:
| name | type | optional | description |
|---|---|---|---|
| name | string | No | The name to find. |
Returns: number - The index of the addition, or -1 if it was not found.
Source: src/renderer/webgl/ProgramManager.js#L310
Since: 4.0.0
getAdditionsByTag
<instance> getAdditionsByTag(tag)
Description:
Returns a list of shader additions in the current config
that have a specific tag.
Parameters:
| name | type | optional | description |
|---|---|---|---|
| tag | string | No | The tag to filter by. |
Returns: Array.<Phaser.Types.Renderer.WebGL.ShaderAdditionConfig> - The shader additions with the tag.
Source: src/renderer/webgl/ProgramManager.js#L289
Since: 4.0.0
getCurrentProgramSuite
<instance> getCurrentProgramSuite()
Description:
Returns a program suite based on the current configuration.
If the program does not exist, it is created.
The suite contains the following properties:
-
program(WebGLProgramWrapper) - The compiled shader program. -
vao(WebGLVAOWrapper) - The VAO associated with the program. -
config(object) - The configuration object used to create the program.
If parallel shader compilation is enabled,
the program may not be available immediately.
In this case, null is returned.
Returns: Object - The program suite, or null if the program is not available.
Source: src/renderer/webgl/ProgramManager.js#L110
Since: 4.0.0
removeAddition
<instance> removeAddition(name)
Description:
Remove a shader addition from the current configuration.
Parameters:
| name | type | optional | description |
|---|---|---|---|
| name | string | No | The name of the shader addition to remove. |
Source: src/renderer/webgl/ProgramManager.js#L326
Since: 4.0.0
removeFeature
<instance> removeFeature(feature)
Description:
Remove a feature from the current configuration.
Parameters:
| name | type | optional | description |
|---|---|---|---|
| feature | string | No | The feature to remove. |
Source: src/renderer/webgl/ProgramManager.js#L377
Since: 4.0.0
removeUniform
<instance> removeUniform(name)
Description:
Delete a uniform value. While unused uniforms are not harmful,
they do take time to process and can be a source of confusion.
Parameters:
| name | type | optional | description |
|---|---|---|---|
| name | string | No | The name of the uniform. |
Source: src/renderer/webgl/ProgramManager.js#L190
Since: 4.0.0
replaceAddition
<instance> replaceAddition(name, addition)
Description:
Replace a shader addition in the current configuration.
Parameters:
| name | type | optional | description |
|---|---|---|---|
| name | string | No | The name of the shader addition to replace. |
| addition | Phaser.Types.Renderer.WebGL.ShaderAdditionConfig | No | The new shader addition. |
Source: src/renderer/webgl/ProgramManager.js#L341
Since: 4.0.0
resetCurrentConfig
<instance> resetCurrentConfig()
Description:
Resets the current configuration object.
Source: src/renderer/webgl/ProgramManager.js#L162
Since: 4.0.0
setBaseShader
<instance> setBaseShader(name, vertexShader, fragmentShader)
Description:
Set the base shader for the current configuration.
Parameters:
| name | type | optional | description |
|---|---|---|---|
| name | string | No | The name of the shader program. |
| vertexShader | string | No | The vertex shader source code. |
| fragmentShader | string | No | The fragment shader source code. |
Source: src/renderer/webgl/ProgramManager.js#L230
Since: 4.0.0
setUniform
<instance> setUniform(name, value)
Description:
Set the value of a uniform,
available for all shader programs in this manager.
Parameters:
| name | type | optional | description |
|---|---|---|---|
| name | string | No | The name of the uniform. |
| value | any | No | The value of the uniform. |
Source: src/renderer/webgl/ProgramManager.js#L176
Since: 4.0.0