Version: Unity 6.0 (6000.0)
语言 : 中文
创建自定义渲染纹理
控制自定义渲染纹理更新的时间

为自定义渲染纹理编写着色器

若要手动更新自定义渲染纹理,可以编写专门的自定义渲染纹理着色器。

为了帮助编写自定义渲染纹理着色器,此处提供了两个示例框架,其中包含实用程序函数和内置辅助变量。

以下着色器示例使用颜色叠加颜色的方式填充纹理。为自定义渲染纹理编写着色器时,必须执行以下操作:

  • #include "UnityCustomRenderTexture.cginc"
  • 使用提供的顶点着色器 CustomRenderTextureVertexShader
  • 使用为像素着色器提供的输入结构 v2f_customrendertexture
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
            }
    }
}

以下示例是可用于初始化自定义渲染纹理的材质的着色器。为初始化材质编写着色器时,必须执行以下步骤:

  • #include "UnityCustomRenderTexture.cginc"

  • 使用提供的顶点着色器 CustomRenderTextureVertexShader

  • 使用为像素着色器提供的输入结构 v2f_customrendertexture

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
        }
    }
}
创建自定义渲染纹理
控制自定义渲染纹理更新的时间