Unity has a number of built-in utility functions designed to make writing shaders simpler and easier.
See Built-in shader include files for an overview of shader include files provided with Unity.
| Function: | Description: | 
|---|---|
float4 UnityObjectToClipPos(float3 pos) | 
Transforms a point from object space to the camera’s clip space in homogeneous coordinates. This is the equivalent of mul(UNITY_MATRIX_MVP, float4(pos, 1.0)), and should be used in its place. | 
float3 UnityObjectToViewPos(float3 pos) | 
Transforms a point from object space to view space. This is the equivalent of mul(UNITY_MATRIX_MV, float4(pos, 1.0)).xyz, and should be used in its place. | 
| Function: | Description: | 
|---|---|
float3 WorldSpaceViewDir (float4 v) | 
Returns world space direction (not normalized) from given object space vertex position towards the camera. | 
float3 ObjSpaceViewDir (float4 v) | 
Returns object space direction (not normalized) from given object space vertex position towards the camera. | 
float2 ParallaxOffset (half h, half height, half3 viewDir) | 
calculates UV offset for parallax normal mapping. | 
fixed Luminance (fixed3 c) | 
Converts color to luminance (grayscale). | 
fixed3 DecodeLightmap (fixed4 color) | 
Decodes color from Unity lightmap (RGBM or dLDR depending on platform). | 
float4 EncodeFloatRGBA (float v) | 
Encodes [0..1) range float into RGBA color, for storage in low precision render target. | 
float DecodeFloatRGBA (float4 enc) | 
Decodes RGBA color into a float. | 
float2 EncodeFloatRG (float v) | 
Encodes [0..1) range float into a float2. | 
float DecodeFloatRG (float2 enc) | 
Decodes a previously-encoded RG float. | 
float2 EncodeViewNormalStereo (float3 n) | 
Encodes view space normal into two numbers in 0..1 range. | 
float3 DecodeViewNormalStereo (float4 enc4) | 
Decodes view space normal from enc4.xy. | 
These functions are only useful when using forward rendering (ForwardBase or ForwardAdd pass types).
| Function: | Description: | 
|---|---|
float3 WorldSpaceLightDir (float4 v) | 
Computes world space direction (not normalized) to light, given object space vertex position. | 
float3 ObjSpaceLightDir (float4 v) | 
Computes object space direction (not normalized) to light, given object space vertex position. | 
float3 Shade4PointLights (...) | 
Computes illumination from four point lights, with light data tightly packed into vectors. Forward rendering uses this to compute per-vertex lighting. | 
The following functions are helpers to compute coordinates used for sampling screen-space textures. They return float4 where the final coordinate to sample texture with can be computed via perspective division (for example xy/w).
The functions also take care of platform differences in render texture coordinates.
| Function: | Description: | 
|---|---|
float4 ComputeScreenPos (float4 clipPos) | 
Computes texture coordinate for doing a screenspace-mapped texture sample. Input is clip space position. | 
float4 ComputeGrabScreenPos (float4 clipPos) | 
Computes texture coordinate for sampling a GrabPass texure. Input is clip space position. | 
These functions are only useful when using per-vertex lit shaders (“Vertex” pass type).
| Function: | Description: | 
|---|---|
float3 ShadeVertexLights (float4 vertex, float3 normal) | 
Computes illumination from four per-vertex lights and ambient, given object space position & normal. |