The ShadersModule
exposes APIs to create Visual Shaders using JavaScript.
The following is an explanation of the unique types and concepts specific to the ShadersModule.PrimitiveOrShaderSignal
is a union type of Vec2Signal
, PointSignal
, Vec4Signal
, Vec3Signal
, Mat4Signal
, or ShaderSignal
.ShaderSignal
is a graphics shader output that produces one of the types defined in the above union. As ShaderSignal
is GPU bound, it can only be used in a GPU context.ShaderSignal
can also be of a function type, used for function mapping from one type to another.
For example, a shader with the signature function(Vec2Signal): Vec4Signal
is a type of a function that maps a Vec2Signal
to a Vec4Signal
.
This module exposes no properties.
Method | Description |
---|---|
| blend(src: ShaderSignal | PointSignal | Vec4Signal, dst: ShaderSignal | PointSignal | Vec4Signal, config: {mode: BlendMode}): ShaderSignal Blends two colors using the specified blending mode. When a color is passed as a PointSignal , its alpha value is considered to be 1.If both colors are passed as a PointSignal (without the alpha channel specified), the result will also be a PointSignal .src : either a PointSignal , a Vec4Signal or a Shader which outputs one of these two types.dst : either a PointSignal , a Vec4Signal or a Shader which outputs one of these two types.returns: a shader which outputs a Vec4Signal if either of (or both) src or dst are of type Vec4Signal , or a PointSignal if not. |
| colorSpaceConvert(color: ShaderSignal | PointSignal | Vec4Signal, config: {inColorSpace: ColorSpace, outColorSpace: ColorSpace}): ShaderSignal Converts a color from the input color space to the output color space. color : either a PointSignal , a Vec4Signal or a shader which outputs one of these two types.returns: a shader which outputs a Vec4Signal if color is of Vec4Signal type, or a PointSignal if not. |
| composition(f: ShaderSignal, g: ShaderSignal | number | ScalarSignal | Vec2Signal | PointSignal | Vec4Signal | Vec3Signal | Mat4Signal): ShaderSignal Returns a signal for the shader composition of the two given functions (a texture and a transform for example). f : a shader which takes in a value of one type and outputs a different type. For example, function_f(A): B g : a shader which takes in a value of one type and outputs a different type (for example, function_g(I): A ), or a signal of A .returns: a shader of function_f(function_g(I)) => A , if g was a shader, or function_f(signal of A) => B , if otherwise. |
| derivative(v: ShaderSignal | number | ScalarSignal | Vec2Signal | PointSignal | Vec4Signal | Vec3Signal, config: {derivativeType: DerivativeType}): ShaderSignal Returns a signal for the specified shader derivative of the given signal. v : either a ScalarSignal , a Vec2Signal , a PointSignal , a Vec4Signal , a Vec3Signal , or a shader which outputs one of these types.returns: a shader of a derivate type specified by config . |
| fallback(main: ShaderSignal | number | ScalarSignal | Vec2Signal | PointSignal | Vec4Signal | Vec3Signal | Mat4Signal, fallback: ShaderSignal | number | ScalarSignal | Vec2Signal | PointSignal | Vec4Signal | Vec3Signal | Mat4Signal): ShaderSignal Forwards the main input if present, otherwise uses fallback .main : a signal or shader which outputs a value of signal type.fallback : a signal or shader which outputs a value of signal type.returns: main if its output is present, or fallback if not. |
| fragmentStage(v: ShaderSignal | number | ScalarSignal | Vec2Signal | PointSignal | Vec4Signal | Vec3Signal | Mat4Signal): ShaderSignal Forces the computation of val to happen at the fragment stage.v : a signal or shader which outputs a value of signal type. |
| functionScalar(): ShaderSignal Returns a signal for the identity function over the specified type. returns: shader function(ScalarSignal): ScalarSignal |
| functionVec2(): ShaderSignal Returns a signal for the identity function over the specified type. returns: shader function(Vec2Signal): Vec2Signal |
| functionVec3(): ShaderSignal Returns a signal for the identity function over the specified type. returns: shader function(PointSignal): PointSignal |
| functionVec4(): ShaderSignal Returns a signal for the identity function over the specified type. returns: shader function(Vec4Signal): Vec4Signal |
| gradient(config: {type: GradientType}): ShaderSignal Returns a signal for the specified gradient. returns: shader function(Vec2Signal): ScalarSignal representing a gradient defined by config |
| renderTargetSize(): Vec2Signal Returns a signal of the current render target's size. returns: shader function(): Vec2Signal |
| sdfAnnular(sdf: ShaderSignal, width: ShaderSignal | number | ScalarSignal): ShaderSignal Returns a signal of the given SDF shape made annular (ring-like) by the specified width. sdf : shader function(Vec2Signal): ScalarSignal width : number, ScalarSignal or shader function(): ScalarSignal returns: shader function(Vec2Signal): ScalarSignal |
| sdfCircle(center: ShaderSignal | Vec2Signal, radius: ShaderSignal | number | ScalarSignal): ShaderSignal Returns a signal for a circle SDF shape. center : Vec2Signal or shader function(): Vec2Signal radius : number , ScalarSignal or shader function(): ScalarSignal returns: shader function(Vec2Signal): ScalarSignal |
| sdfComplement(sdf: ShaderSignal): ShaderSignal Returns a signal of the complement of the given SDF shape. sdf : shader function(Vec2Signal): ScalarSignal returns: shader function(Vec2Signal): ScalarSignal |
| sdfDifference(sdf1: ShaderSignal, sdf2: ShaderSignal): ShaderSignal Returns a signal of the difference of the two given SDF shapes. sdf1 : shader function(Vec2Signal): ScalarSignal sdf2 : shader function(Vec2Signal): ScalarSignal returns: shader function(Vec2Signal): ScalarSignal which result is the product of substracting result of sdf2 from result of sdf1 |
| sdfEllipse(center: ShaderSignal | Vec2Signal, halfSize: ShaderSignal | Vec2Signal): ShaderSignal Returns a signal for an ellipse SDF shape. center : Vec2Signal or shader function(): Vec2Signal halfSize : Vec2Signal or shader function(): Vec2Signal returns: shader function(Vec2Signal): ScalarSignal |
| sdfFlip(sdf: ShaderSignal, offset: ShaderSignal | Vec2Signal, normal: ShaderSignal | Vec2Signal): ShaderSignal Returns a signal of the given SDF shape flipped around the plane given by the offset an normal. sdf : shader function(Vec2Signal): ScalarSignal offset : Vec2Signal or shader function(): Vec2Signal normal : Vec2Signal or shader function(): Vec2Signal returns: shader function(Vec2Signal): ScalarSignal |
| sdfHalfPlane(offset: ShaderSignal | Vec2Signal, normal: ShaderSignal | Vec2Signal): ShaderSignal Returns a signal for a half-plane SDF shape. offset : Vec2Signal or shader function(): Vec2Signal normal : Vec2Signal or shader function(): Vec2Signal returns: shader function(Vec2Signal): ScalarSignal |
| sdfIntersection(sdf1: ShaderSignal, sdf2: ShaderSignal): ShaderSignal Returns a signal of the intersection of the two given SDF shapes. sdf1 : shader function(Vec2Signal): ScalarSignal sdf2 : shader function(Vec2Signal): ScalarSignal returns: shader function(Vec2Signal): ScalarSignal |
| sdfLine(offset: ShaderSignal | Vec2Signal, normal: ShaderSignal | Vec2Signal, halfWidth: ShaderSignal | number | ScalarSignal): ShaderSignal Returns a signal for a line SDF shape. offset : Vec2Signal or shader function(): Vec2Signal normal : Vec2Signal or shader function(): Vec2Signal halfWidth : number , ScalarSignal or shader function(): ScalarSignal returns: shader function(Vec2Signal): ScalarSignal |
| sdfMix(sdf1: ShaderSignal, sdf2: ShaderSignal, alpha: ShaderSignal | number | ScalarSignal): ShaderSignal Returns a signal of the linear interpolation of the two given SDF shapes, modulated by alpha. sdf1 : shader function(Vec2Signal): ScalarSignal sdf2 : shader function(Vec2Signal): ScalarSignal alpha : number , ScalarSignal or shader function(): ScalarSignal returns: shader function(Vec2Signal): ScalarSignal |
| sdfPolygon(center: ShaderSignal | Vec2Signal, radius: ShaderSignal | number | ScalarSignal, numSides: ShaderSignal | number | ScalarSignal, config: {sdfVariant: SdfVariant}): ShaderSignal Returns a signal for a polygon SDF shape. center : Vec2Signal or shader function(): Vec2Signal radius : number , ScalarSignal or shader function(): ScalarSignal numSides : number , ScalarSignal or shader function(): ScalarSignal returns: shader function(Vec2Signal): ScalarSignal |
| sdfRectangle(center: ShaderSignal | Vec2Signal, halfSize: ShaderSignal | Vec2Signal, config: {sdfVariant: SdfVariant}): ShaderSignal Returns a signal for a rectangle SDF shape. center : Vec2Signal or shader function(): Vec2Signal halfSize : Vec2Signal or shader function(): Vec2Signal returns: shader function(Vec2Signal): ScalarSignal |
| sdfRepeat(sdf: ShaderSignal, pivot: ShaderSignal | Vec2Signal, size: ShaderSignal | Vec2Signal, config: {sdfVariant: SdfVariant}): ShaderSignal Returns a signal of the given SDF shape's grid repetition. The shape should be centered on the pivot and fit within the given size. sdf : shader function(Vec2Signal): ScalarSignal pivot : Vec2Signal or shader function(): Vec2Signal size : Vec2Signal or shader function(): Vec2Signal returns: shader function(Vec2Signal): ScalarSignal |
| sdfRotation(sdf: ShaderSignal, pivot: ShaderSignal | Vec2Signal, angle: ShaderSignal | number | ScalarSignal): ShaderSignal Returns a signal of the given SDF shape rotated around the given pivot by the given angle. sdf : shader function(Vec2Signal): ScalarSignal pivot : Vec2Signal or shader function(): Vec2Signal angle : number , ScalarSignal or shader function(): ScalarSignal returns: shader function(Vec2Signal): ScalarSignal |
| sdfRotationalRepeat(sdf: ShaderSignal, pivot: ShaderSignal | Vec2Signal, radius: ShaderSignal | number | ScalarSignal, numTimes: ShaderSignal | number | ScalarSignal): ShaderSignal Returns a signal of the given SDF shape's rotational repetition numTimes at the given radius. The shape should be centered on the pivot and fit within the angular sector defined by numTimes at the given radius. sdf : shader function(Vec2Signal): ScalarSignal pivot : Vec2Signal or shader function(): Vec2Signal radius : number , ScalarSignal or shader function(): ScalarSignal numTimes : number , ScalarSignal or shader function(): ScalarSignal returns: shader function(Vec2Signal): ScalarSignal |
| sdfRound(sdf: ShaderSignal, radius: ShaderSignal | number | ScalarSignal): ShaderSignal Returns a signal of the given SDF shape rounded by the specified radius. sdf : shader function(Vec2Signal): ScalarSignal radius : number , ScalarSignal or shader function(): ScalarSignal returns: shader function(Vec2Signal): ScalarSignal |
| sdfScale(sdf: ShaderSignal, pivot: ShaderSignal | Vec2Signal, size: ShaderSignal | Vec2Signal): ShaderSignal Returns a signal of the given SDF shape scaled around the given pivot by the given size. sdf : shader function(Vec2Signal): ScalarSignal pivot : Vec2Signal or shader function(): Vec2Signal size : Vec2Signal or shader function(): Vec2Signal returns: shader function(Vec2Signal): ScalarSignal |
| sdfShear(sdf: ShaderSignal, pivot: ShaderSignal | Vec2Signal, shear: ShaderSignal | Vec2Signal): ShaderSignal Returns a signal of the given SDF shape scaled around the given pivot by the given shear amount. sdf : shader function(Vec2Signal): ScalarSignal pivot : Vec2Signal or shader function(): Vec2Signal shear : Vec2Signal or shader function(): Vec2Signal returns: shader function(Vec2Signal): ScalarSignal |
| sdfSmoothDifference(sdf1: ShaderSignal, sdf2: ShaderSignal, k: ShaderSignal | number | ScalarSignal): ShaderSignal Returns a signal of the smooth difference of the two given SDF shapes, modulated by K. sdf1 : shader function(Vec2Signal): ScalarSignal sdf2 : shader function(Vec2Signal): ScalarSignal k : number , ScalarSignal or shader function(): ScalarSignal returns: shader function(Vec2Signal): ScalarSignal |
| sdfSmoothIntersection(sdf1: ShaderSignal, sdf2: ShaderSignal, k: ShaderSignal | number | ScalarSignal): ShaderSignal Returns a signal of the smooth intersection of the two given SDF shapes, modulated by K. sdf1 : shader function(Vec2Signal): ScalarSignal sdf2 : shader function(Vec2Signal): ScalarSignal k : number , ScalarSignal or shader function(): ScalarSignal returns: shader function(Vec2Signal): ScalarSignal |
| sdfSmoothUnion(sdf1: ShaderSignal, sdf2: ShaderSignal, k: ShaderSignal | number | ScalarSignal): ShaderSignal Returns a signal of the smooth union of the two given SDF shapes, modulated by K. sdf1 : shader function(Vec2Signal): ScalarSignal sdf2 : shader function(Vec2Signal): ScalarSignal k : number , ScalarSignal or shader function(): ScalarSignal returns: shader function(Vec2Signal): ScalarSignal |
| sdfStar(center: ShaderSignal | Vec2Signal, radius1: ShaderSignal | number | ScalarSignal, radius2: ShaderSignal | number | ScalarSignal, numSides: ShaderSignal | number | ScalarSignal): ShaderSignal Returns a signal for a star SDF shape. center : Vec2Signal or shader function(): Vec2Signal radius1 : number , ScalarSignal or shader function(): ScalarSignal radius2 : number , ScalarSignal or shader function(): ScalarSignal numSides : number , ScalarSignal or shader function(): ScalarSignal |
| sdfTranslation(sdf: ShaderSignal, offset: ShaderSignal | Vec2Signal): ShaderSignal Returns a signal of the given SDF shape translated by the given offset. sdf : shader function(Vec2Signal): ScalarSignal offset : Vec2Signal or shader function(): Vec2Signal returns: shader function(Vec2Signal): ScalarSignal |
| sdfTwist(sdf: ShaderSignal, pivot: ShaderSignal | Vec2Signal, twist: ShaderSignal | number | ScalarSignal): ShaderSignal Returns a signal of the given SDF shape twisted around the pivot by the given amount. sdf : shader function(Vec2Signal): ScalarSignal pivot : Vec2Signal or shader function(): Vec2Signal twist : number , ScalarSignal or shader function(): ScalarSignal returns: shader function(Vec2Signal): ScalarSignal |
| sdfUnion(sdf1: ShaderSignal, sdf2: ShaderSignal): ShaderSignal Returns a signal of the union of the two given SDF shapes. sdf1 : shader function(Vec2Signal): ScalarSignal sdf2 : shader function(Vec2Signal): ScalarSignal returns: shader function(Vec2Signal): ScalarSignal |
| textureSampler(texture: ShaderSignal, uv: ShaderSignal | Vec2Signal): ShaderSignal Samples the given texture at the specified uv coordinates. texture : shader function(Vec2Signal): ScalarSignal , function(Vec2Signal): Vec2Signal , function(Vec2Signal): PointSignal or function(Vec2Signal): Vec4Signal uv : Vec2Signal or shader function(): Vec2Signal returns: shader function(): ScalarSignal , function(): Vec2Signal , function(): PointSignal or function(): Vec4Signal depending on underlying texture shader return type |
| textureTransform(texture: ShaderSignal, transform: ShaderSignal): ShaderSignal Transforms the given texture with the specified Mat3 transform. texture : shader function(Vec2Signal): ScalarSignal , function(Vec2Signal): Vec2Signal , function(Vec2Signal): PointSignal or function(Vec2Signal): Vec4Signal transform : shader function(): Matrix3Signal returns: shader function(Vec2Signal): ScalarSignal , function(Vec2Signal): Vec2Signal , function(Vec2Signal): PointSignal or function(Vec2Signal): Vec4Signal depending on underlying texture shader return type |
| vertexAttribute(config: {variableName: VertexAttribute}): ShaderSignal Returns a signal for the specified vertex attribute depending on the VertexAttribute used. returns: for VertexAttribute.POSITION a shader function(): Vec4Signal for VertexAttribute.NORMAL a shader function(): PointSignal for VertexAttribute.TANGENT a shader function(): Vec4Signal for VertexAttribute.TEX_COORDS a shader function(): Vec2Signal for VertexAttribute.COLOR a shader function(): Vec4Signal for VertexAttribute.BASE_POSITION a shader function(): Vec4Signal |
| vertexTransform(config: {variableName: BuiltinUniform}): ShaderSignal Returns a signal for the specified vertex transform depending on the BuiltinUniform used. returns: for BuiltinUniform.MVP_MATRIX a shader function(): Mat4Signal for BuiltinUniform.MV_MATRIX a shader function(): Mat4Signal for BuiltinUniform.M_MATRIX a shader function(): Mat4Signal for BuiltinUniform.V_MATRIX a shader function(): Mat4Signal for BuiltinUniform.P_MATRIX a shader function(): Mat4Signal for BuiltinUniform.VP_MATRIX a shader function(): Mat4Signal for BuiltinUniform.NORMAL_MATRIX a shader function(): Matrix3Signal for BuiltinUniform.INV_M_MATRIX a shader function(): Mat4Signal for BuiltinUniform.INV_V_MATRIX a shader function(): Mat4Signal for BuiltinUniform.INV_P_MATRIX a shader function(): Mat4Signal |
This module exposes no classes.
Enum | Description |
---|---|
BlendedMaterialTextures | The BlendedMaterialTextures enum describes the different texture slots for a flat material. |
BlendMode | The BlendMode enum describes the blending mode. |
BuiltinUniform | The BuiltinUniform enum describes the bultin shader uniforms. |
ColorSpace | The ColorSpace enum describes the color space. |
DefaultMaterialTextures | The DefaultMaterialTextures enum describes the different texture slots for a default material. |
DerivativeType | The DerivativeType enum describes the shader derivative type. |
FacePaintMaterialTextures | The FacePaintMaterialTextures enum describes the different texture slots for a face paintmaterial. |
GradientType | The GradientType enum describes the type of the shader gradient. |
PhysicallyBasedMaterialTextures | The PhysicallyBasedMaterialTextures enum describes the different texture slots for aphysically based material. |
SdfVariant | The SdfVariant enum describes the SDF variant. |
VertexAttribute | The VertexAttribute enum describes the bultin vertex attributes. |