カスタムレンダーテクスチャを手動で更新するには、専用のカスタムレンダーテクスチャシェーダーを記述します。
カスタムレンダーテクスチャシェーダーを書くのに役立つように、ユーティリティ関数とビルトインのヘルパー変数を含む 2 つのサンプルフレームワークを紹介します。
以下のシェーダーの例では、色を掛け合わせた色でテクスチャを塗りつぶします。カスタムレンダーテクスチャのシェーダーを書くときは、以下を行う必要があります。
#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
}
}
}