GrabPassの使い方

UnityのシェーダーではGrabPassを使うことで、シャーダー内で簡単にスクリーンの絵を取得できて便利です。

使い方は

GrabPass
{
}

と書くだけ。

後は普通のTextureと同じように

sampler2D _GrabTexture
grabPos = ComputeGrabScreenPos(o.pos);
half4 color = tex2Dproj(_GrabTexture, grabPos);

のようにして使えます。

_GrabTextureの名称を変更したい場合は、GrabPass

GrabPass
{
  "_BackgroundTexture"
}

という風に書くと良いようです。

リンク

Unity – Manual: ShaderLab: GrabPass
https://docs.unity3d.com/Manual/SL-GrabPass.html

関連記事

Cgで使えるbuilt-in関数のリファレンス
Cgで使えるbuilt-in関数のリファレンス The Cg Tutorial - Appendix E. Cg Standard Library Functionshttp://developer.download.nvidia.com/CgTutorial/cg_tutorial_appendix_e.html Cg-3.1_April2012_ReferenceManual.p...

UnityのImage Effectsで上下反転してしまう場合の対策
UnityのImage Effectsで上下が反転してしまう場合は、UNITY_UV_STARTS_AT_TOPを使って次のようなコードを追加してみると良いそうです。 sampler2D _MainTex; float4 _MainTex_TexelSize; #if UNITY_UV_STARTS_AT_TOP if (_MainTex_TexelSize.y < 0) { ...

ブラウン管風のシェーダー
ブラウン管風のシェーダーを試してみました。 ノイズ版 使いどころは少し難しそうですが、良い雰囲気のシェーダーと思います。 ※ノイズ版はUniRXを使わない形に改変したものを使っています。 リンク [Unity3D]ブラウン管風シェーダーを作った | notargs.comhttp://wordpress.notargs.com/blog/blog/2...

Shader.Findでエラーが発生してしまう場合
Unity Editor上では問題なく動作しているのに、ビルドしたゲームのShader.Findでエラーとなる場合はAlways Included Shadersを設定するとうまくいく場合があるそうです。 var s = Shader.Find("Custom/Example"); Assert.IsNotNull(s); //error Always Included Shader...

コメントを残す

メールアドレスが公開されることはありません。