カスタムレンダーテクスチャ
カスタムレンダーテクスチャはレンダーテクスチャの拡張機能で、これを使うと簡単にシェーダー付きのテクスチャを作成できます。これは、コースティクス、雨の効果に使われるリップルシミュレーション、壁面へぶちまけられた液体など、あらゆる種類の複雑なシミュレーションを実装するのに便利です。また、カスタムレンダーテクスチャはスクリプトやシェーダーのフレームワークを提供し、部分的更新、または、マルチパスの更新、更新頻度の変更などのさらに複雑な設定をサポートします。
それらを使用するには、新し い Custom Render Texture アセットを作成し、それにマテリアルを割り当てる必要があります。 このマテリアルは、さまざまなパラメーターに従ってテクスチャの内容を更新します。カスタムレンダーテクスチャは、他のカスタムレンダーテクスチャに使用されているものであっても、通常のテクスチャのようにあらゆる種類のマテリアルに割り当てることができます。
/icons/hr.icon
カスタムテクスチャのシェーダーを作成するときに、以下のステップだけが必須です。
code:shaderLab
#include “UnityCustomRenderTexture.cginc” 与えられた頂点シェーダー CustomRenderTextureVertexShader を使用
ピクセルシェーダーに与えられた入力構造体 v2f_customrendertexture を使用
上記以外は、ユーザーの思い通りにピクセルシェーダーを作成できます。
/icons/hr.icon
まずこのテクスチャを更新するシェーダを書いてみます。
Custom Render Texture用のシェーダは書き方に決まりがあるため、コメントに説明を書いています。
このシェーダを割り当てたマテリアルをCustom Render Textureのマテリアルとしてアサインし、パス名にUPDATEを指定します。
code: shaderLab
Shader "CRTUpdate"
{
SubShader
{
Cull Off ZWrite Off ZTest Always
Pass
{
// インスペクタに表示したときにわかりやすいように名前を付けておく
Name "Update"
CGPROGRAM
// UnityCustomRenderTexture.cgincをインクルードする
#include "UnityCustomRenderTexture.cginc" // 頂点シェーダは決まったものを使う
#pragma vertex CustomRenderTextureVertexShader // v2f構造体は決まったものを使う
half4 frag(v2f_customrendertexture i) : SV_Target
{
return half4(_SinTime.z * 0.5 + 0.5, _CosTime.w * 0.5 + 0.5, _SinTime.w * 0.5 + 0.5, 1);
}
ENDCG
}
}
}
一部分だけ更新する
UpdateZone で範囲を指定
前フレームの結果を使う
Double Burffered にチェックを入れる
Initialization Mode を On Load に設定する