Effect
Extends:
Direct Subclass:
Indirect Subclass:
Implements:
An abstract effect.
Effects can be combined using the EffectPass.
Constructor Summary
Public Constructor | ||
public |
constructor(name: String, fragmentShader: String, options: Object) Constructs a new effect. |
Member Summary
Public Members | ||
public |
The blend mode of this effect. |
|
public |
Preprocessor macro definitions. |
|
public |
WebGL extensions that are required by this effect. |
|
public |
The name of this effect. |
|
public |
Shader uniforms. |
Method Summary
Public Methods | ||
public |
dispose() Performs a shallow search for properties that define a dispose method and deletes them. |
|
public |
Returns the effect attributes. |
|
public |
Returns the fragment shader. |
|
public |
Returns the vertex shader. |
|
public |
initialize(renderer: WebGLRenderer, alpha: Boolean, frameBufferType: Number) Performs initialization tasks. |
|
public |
setDepthTexture(depthTexture: Texture, depthPacking: Number) Sets the depth texture. |
|
public |
Updates the size of this effect. |
|
public |
Updates the effect by performing supporting operations. |
Protected Methods | ||
protected |
setAttributes(attributes: EffectAttribute) Sets the effect attributes. |
|
protected |
Informs the associated EffectPass that this effect has changed in a way that requires a shader recompilation. |
|
protected |
setFragmentShader(fragmentShader: String) Sets the fragment shader. |
|
protected |
setVertexShader(vertexShader: String) Sets the vertex shader. |
Public Constructors
public constructor(name: String, fragmentShader: String, options: Object) source
Constructs a new effect.
Params:
Name | Type | Attribute | Description |
name | String | The name of this effect. Doesn't have to be unique. |
|
fragmentShader | String | The fragment shader. This shader is required. |
|
options | Object |
|
Additional options. |
options.attributes | EffectAttribute |
|
The effect attributes that determine the execution priority and resource requirements. |
options.blendFunction | BlendFunction |
|
The blend function of this effect. |
options.defines | Map<String, String> |
|
Custom preprocessor macro definitions. Keys are names and values are code. |
options.uniforms | Map<String, Uniform> |
|
Custom shader uniforms. Keys are names and values are uniforms. |
options.extensions | Set<WebGLExtension> |
|
WebGL extensions. |
options.vertexShader | String |
|
The vertex shader. Most effects don't need one. |
Public Members
public blendMode: BlendMode source
The blend mode of this effect.
The result of this effect will be blended with the result of the previous effect using this blend mode.
public defines: Map<String, String> source
Preprocessor macro definitions.
Call Effect.setChanged after changing macro definitions.
public extensions: Set<WebGLExtension> source
WebGL extensions that are required by this effect.
Call Effect.setChanged after adding or removing extensions.
public uniforms: Map<String, Uniform> source
Shader uniforms.
You may freely modify the values of these uniforms at runtime. However, uniforms should not be removed or added after the effect was created.
Call Effect.setChanged after adding or removing uniforms.
Public Methods
public dispose() source
Performs a shallow search for properties that define a dispose method and deletes them. The effect will be inoperative after this method was called!
The EffectPass calls this method when it is being destroyed. Do not call this method directly.
public initialize(renderer: WebGLRenderer, alpha: Boolean, frameBufferType: Number) source
Performs initialization tasks.
By overriding this method you gain access to the renderer. You'll also be able to configure your custom render targets to use the appropriate format (RGB or RGBA).
The provided renderer can be used to warm up special off-screen render targets by performing a preliminary render operation.
The EffectPass calls this method during its own initialization which happens after the size has been set.
Example:
if(!alpha && frameBufferType === UnsignedByteType) { this.myRenderTarget.texture.format = RGBFormat; }
public setDepthTexture(depthTexture: Texture, depthPacking: Number) source
Sets the depth texture.
You may override this method if your effect requires direct access to the depth texture that is bound to the associated EffectPass.
Params:
Name | Type | Attribute | Description |
depthTexture | Texture | A depth texture. |
|
depthPacking | Number |
|
The depth packing. |
public setSize(width: Number, height: Number) source
Updates the size of this effect.
You may override this method in case you want to be informed about the main render size.
The EffectPass calls this method before this effect is initialized and every time its own size is updated.
Example:
this.myRenderTarget.setSize(width, height);
public update(renderer: WebGLRenderer, inputBuffer: WebGLRenderTarget, deltaTime: Number) source
Updates the effect by performing supporting operations.
This method is called by the EffectPass right before the main
fullscreen render operation, even if the blend function is set to SKIP
.
You may override this method if you need to render additional off-screen textures or update custom uniforms.
Params:
Name | Type | Attribute | Description |
renderer | WebGLRenderer | The renderer. |
|
inputBuffer | WebGLRenderTarget | A frame buffer that contains the result of the previous pass. |
|
deltaTime | Number |
|
The time between the last frame and the current one in seconds. |
Protected Methods
protected setAttributes(attributes: EffectAttribute) source
Sets the effect attributes.
Effects that have the same attributes will be executed in the order in which they were registered. Some attributes imply a higher priority.
Params:
Name | Type | Attribute | Description |
attributes | EffectAttribute | The attributes. |
protected setChanged() source
Informs the associated EffectPass that this effect has changed in a way that requires a shader recompilation.
Call this method after changing macro definitions or extensions and after adding or removing uniforms.