Complex Shader Processes
Process |
Description |
Diffuse Reflection |
Inputs: Tangent-space normal N (optional) Output: Scalar Calculates the Lambertian diffuse reflection factor N · L, where L is the tangent-space direction to light. The result is saturated to the range [0,1]. If N is omitted, then it's as if N is (0,0,1). This process implicitly uses the tangent light direction interpolant. If the ambient reflection output depends on this process, then the results are undefined. |
Specular Reflection |
Inputs: Tangent-space normal N (optional), Specular power p (required) Output: Scalar Calculates the Blinn specular reflection factor (N · H)p, where H is the tangent-space direction halfway between the direction to light and direction to viewer. If N is omitted, then it's as if N is (0,0,1). The specular power p controls the sharpness of the specularity. This process implicitly uses the tangent halfway direction interpolant, which in turn uses the tangent light direction and tangent view direction interpolants. If the ambient reflection output depends on this process, then the results are undefined. |
Microfacet Reflection |
Inputs: Tangent-space normal N (optional) Output: RGB color Calculates the Cook-Torrance microfacet reflection color. If N is omitted, then it's as if N is (0,0,1). This process implicitly uses the tangent light direction, tangent view direction, and tangent halfway direction interpolants. If the ambient reflection output depends on this process, then the results are undefined. |
Terrain Diffuse Reflection |
Inputs: Terrain normal N1 (optional), Terrain normal N2 (optional), Terrain normal N3 (optional) Output: Scalar Calculates the Lambertian diffuse reflection factor for terrain. If any of the three inputs is missing, then the tangent-space normal vector is assumed to be (0,0,1). If all three inputs are present, then bump-mapped shading is performed. The three inputs should come from the three Terrain Normal processes. If the ambient reflection output depends on this process, then the results are undefined. |
Terrain Specular Reflection |
Inputs: Terrain normal N1 (optional), Terrain normal N2 (optional), Terrain normal N3 (optional), Specular power p (required) Output: Scalar Calculates the Blinn specular reflection factor for terrain. If any of the three inputs is missing, then the tangent-space normal vector is assumed to be (0,0,1). If all three inputs are present, then bump-mapped shading is performed. The three inputs should come from the three Terrain Normal processes. The specular power p controls the sharpness of the specularity. If the ambient reflection output depends on this process, then the results are undefined. |
Combine Normals |
Inputs: Normal vector N1 (required), Normal vector N2 (required) Output: 3D vector Calculates a new normal vector corresponding to the normal that would be produced if the two height maps producing the input normals were added together. |
Front Normal |
Inputs: Normal vector N (required) Output: 3D vector Calculates a new normal vector by negating the z component of the input vector if the z component of the tangent-space light direction is negative. Otherwise, the input vector is passed through unchanged. This is useful when rendering two-sided triangles with a normal map because it has the effect of always facing the normal vector to the front with respect to the light direction. This process implicitly uses the tangent light direction interpolant. If the ambient reflection output depends on this process, then the results are undefined. Tip: This process should not be used in impostor shaders. |
Reflect Vector |
Inputs: 3D vector V (required), 3D vector N (optional) Output: 3D vector Calculates the reflection of the vector V across the vector N. If N is omitted, then it's as if N is (0,0,1). |
Smooth Parameter |
Inputs: Value t (required) Output: Value of size matching t Calculates 3t2 − 2t3 componentwise. This has the effect of smoothing an interpolation parameter within the range [0,1] since the derivative at both endpoints is zero. |
Steep Parameter |
Inputs: Value t (required) Output: Value of size matching t Calculates 2t − t2 componentwise. This has the effect of making an interpolation start quickly at a steep slope and finish smoothly. |
Linear Ramp |
Inputs: Value A (required) Output: Value of size matching A Remaps the range [c − ½w, c + ½w] to the range [0,1] componentwise, where c is a center value and w is the width of the input range. The values of c and w are specified in the Process Info window. |
Delta Depth |
Inputs: None Output: Scalar Outputs the difference between the depth of the geometry in the structure buffer and the depth of the fragment being shaded, scaled by a factor s and clamped to the range [0,1]. The scale factor s is specified in the Process Info window. If rendering to the structure buffer is disabled, then the output value is always 1.0. |
Tangent to World Transform |
Inputs: 3D vector V (required) Output: 3D vector Transforms the vector V from tangent space coordinates into world space coordinates. This process implicitly uses three 3D vector interpolants containing the matrix that transforms from tangent space to world space. |
Parallax Offset |
Inputs: 2D vector TEXC (required) Output: 2D vector Perturbs the input texture coordinates using the parallax information in the normal map and outputs the result. The normal map is specified in the Process Info window. If parallax mapping is disabled, then the input texture coordinates TEXC are simply passed through to the output. This process implicitly uses the tangent view direction interpolant. |
Horizon Shadow |
Inputs: 2D vector TEXC (required), RGB color RGB (required) Output: RGB color Calculates the horizon map shadowing based on the two input horizon maps sampled at the texture coordinates TEXC and multiplies the input color RGB by the amount of light reaching the surface. The horizon maps are specified in the Process Info window. Flags for excluding horizon mapping for infinite or points lights can also be set. If horizon mapping is disabled or the shader is used in conjunction with a light type that has been excluded, then the input color RGB is simply passed through to the output. This process implicitly uses the tangent light direction interpolant. If the ambient reflection output depends on this process, then the results are undefined. |
Kill Fragment |
Inputs: Scalar A (required), Scalar B (optional) Output: None Kills the current fragment if A < B. If B is omitted, then the fragment is killed if A < 0. |
Geometry Transition Kill |
Inputs: None Output: None Kills the current fragment for a real model based on its transition state to an impostor. This process should appear in shaders applied to geometries that transition to an impostor image. |
Impostor Transition Kill |
Inputs: None Output: None Kills the current fragment for an impostor based on its transition state from a real model. This process should appear in shaders applied to impostor nodes. |
Generate Impostor Normal |
Inputs: None Output: RGB color Generates the normal vector for the color channels of an impostor normal map. The output of this process should be routed directly to the Lighting Output process. |
Generate Impostor Depth |
Inputs: None Output: Scalar Generates the depth for the alpha channel of an impostor normal map. The output of this process should be routed directly to the Alpha Output process. |