Create a Custom Render Texture
Control when a Custom Render Texture updates

Write a shader for a Custom Render Texture

To update a Custom Render TextureA special type of Texture that is created and updated at runtime. To use them, first create a new Render Texture and designate one of your Cameras to render into it. Then you can use the Render Texture in a Material just like a regular Texture. More info
See in Glossary
manually, you can write a specialized Custom Render Texture shaderA program that runs on the GPU. More info
See in Glossary
.

To help you write your Custom Render Texture shaders, here are two example frameworks that contain utility functions and built-in helper variables.

The following shader example fills the texture with a color multiplied by a color. When you write a shader for a Custom Render Texture, you must do the following:

  • #include "UnityCustomRenderTexture.cginc".
  • Use the provided Vertex ShaderA program that runs on each vertex of a 3D model when the model is being rendered. More info
    See in Glossary
    CustomRenderTextureVertexShader.
  • Use the provided input structure v2f_customrendertexture for the pixelThe smallest unit in a computer image. Pixel size depends on your screen resolution. Pixel lighting is calculated at every screen pixel. More info
    See in Glossary
    shader.
Shader "CustomRenderTexture/Simple" { Properties { _Color ("Color", Color) = (1,1,1,1) _Tex("InputTex", 2D) = "white" {} } SubShader { Lighting Off Blend One Zero Pass { CGPROGRAM #include "UnityCustomRenderTexture.cginc" #pragma vertex CustomRenderTextureVertexShader #pragma fragment frag #pragma target 3.0 float4 _Color; sampler2D _Tex; float4 frag(v2f_customrendertexture IN) : COLOR { return _Color * tex2D(_Tex, IN.localTexcoord.xy); } ENDCG } } }

The following example is a shader for a material you can use to initialize a Custom Render Texture. When you write a shader for an initialization Material, the following steps are mandatory:

  • #include "UnityCustomRenderTexture.cginc"

  • Use the provided Vertex Shader CustomRenderTextureVertexShader

  • Use the provided input structure v2f_customrendertexture for the pixel shader.

Shader "CustomRenderTexture/CustomTextureInit" { Properties { _Color ("Color", Color) = (1,1,1,1) _Tex("InputTex", 2D) = "white" {} } SubShader { Lighting Off Blend One Zero Pass { CGPROGRAM #include "UnityCustomRenderTexture.cginc" #pragma vertex InitCustomRenderTextureVertexShader #pragma fragment frag #pragma target 3.0 float4 _Color; sampler2D _Tex; float4 frag(v2f_init_customrendertexture IN) : COLOR { return _Color * tex2D(_Tex, IN.texcoord.xy); } ENDCG } } }

Did you find this page useful? Please give it a rating:

  • Create a Custom Render Texture
    Control when a Custom Render Texture updates