Shader

A Shader represents a shader asset.

Constructor

new L3D.Shader()

Shader:
    Shader ["name"] { [Properties*] [Flags*] [Script] [Macro*] [Tags] [Pass*] [Vertex*] [Fragment*] }
Name: "String"
Properties:
    Properties { [Property*] }
Property:
    Name (DisplayName, Type) = Value
    Name ("DisplayName", Boolean) = Number
    Name ("DisplayName", Float) = Number
    Name ("DisplayName", Int) = Number
    Name ("DisplayName", Range(Min, Max)) = Number
    Name ("DisplayName", Enum(string [, string]*)) = Number
    Name ("DisplayName", Color) = (Number, Number, Number)
    Name ("DisplayName", Vector) = (Number, Number, Number)
    Name ("DisplayName", 2D) = "default_texture"
    Name ("DisplayName", Cube) = "default_texture"
    Name ("DisplayName", 3D) = "default_texture"
Flags:
    Flags { [Flag*] }
Flag:
    Name ("DisplayName", Boolean) = Number
    Name ("DisplayName", Int) = Number
    Name ("DisplayName", Range(Min, Max)) = Number
    Name ("DisplayName", Enum(string [, string]*)) = Number
Script:
    Script ["name"] { JAVASCRIPT Code }
Macro:
    Macro "name" { GLSL Code }
Pass:
    Pass ["name"] { [Tag*] [Vertex*] [Fragment*] }
Tags:
    Tags { [Tag*] }
Tag:
    name value
Vertex:
    Vertex { GLSL Code }
Fragment:
    Fragment { GLSL Code }

GLSL code can have the following directives:
#include "path"
#define name value
#shaderblock "name"
#event "name"

Extends

Properties

code String

The shader code.

Overrides:
filename String

Get the filename of the asset.

flags Object

The shader flags.

functions Object

Functions are compiled scripts.

Overrides:
id String

The unique identifier of the object. Changing a node's ID can have unintended consequences.

Overrides:
isLoaded bool

True if the asset has finished loading.

Overrides:
isLoading bool

True if the asset is in the process of loading.

Overrides:
isValid bool

True if the asset does not have an error.

macros Object

Macros are glsl code blocks that can be expanded into other glsl code blocks.

Overrides:
name String

The shader name.

Overrides:
onError Signal

Emitted when there was an error loaading the asset.

Overrides:
onLoad Signal

Emitted when the asset has finished loading.

Overrides:
onLoading Signal

Emitted when the asset has started loading.

Overrides:
onModified Signal

Fired when the object has been modified.

Overrides:
onNameChanged Signal

Fired when the object's name changes.

Overrides:
onStateChange Signal

Emitted when the state of the asset has changed.

Overrides:
onUpdate Signal

Emitted when the assets data has been updated.

passes Object

The render passes implemented by this shader.

Overrides:
path String

The URL of the asset.

properties Object

The shader properties

scripts Object

The shader scripts.

Overrides:
state number

Inidicates whether the asset is Unloaded, Loading, Loaded, or Error. The onStateChange signal will be emitted when the state's value changes.

Methods

clone(options) → Object

Overrides:

Creates a clone of this object.

Parameters
options Object

Options for the clone method.

Returns
Object

configure(o)

Overrides:

Configure the shader.

Parameters
o Object

destroy()

Overrides:

Destroy any render assets created by the asset.

getPropertyInfo(path) → Object

Overrides:

Get information about a particular property of this object.

Parameters
path String
Returns
Object

getRenderAsset(gl)RenderAsset

Overrides:

Get a RenderAsset for this asset. If a RenderAsset hadn't been requested for the given GLContext yet, a new one will be created. Otherwise the previous one will be updated and returned.

A RenderAsset is the WebGL version of the asset, such as the GLTexture for an Texture asset. Because the editor has multiple GLContexts, RenderAssets are generated for each GLContext that requires it.

Parameters
gl GLContext
Returns
RenderAsset

getRenderShader(renderAsset, passName, blockFlags, shaderFlags, textures, macros)

Get the final compiled shader variant to use for rendering.

Parameters
renderAsset RenderAsset

The Shader's RenderAsset to use.

passName String "default"

The render pass of the shader to get.

blockFlags number
shaderFlags number
textures Array
macros String

serialize() → Object

Overrides:

Serialize the object to a JSON structure.

Returns
Object

The serialized version of the object.

setModified()

Overrides:

Fires the objects onModified signal.

toJSON() → Object

Overrides:

Serialize the object to a JSON structure

Returns
Object

The serialized version of the object.

updateRenderAsset(renderAsset)

Overrides:

Update the given RenderAsset.

Parameters
renderAsset RenderAsset

The RenderAsset to update.