2

テクスチャを取り、マスキングなどを適用する単純なピクセル カラー シェーダを作成する方法:

half4 color = tex2D(_Texture0, i.uv.xy);
if(distance(color, mask) > _CutOff)
{
    return color;
}
else
{
return static_color;
}

のような方法で C# コードから次のシェーダーに渡すことができるテクスチャを返しますmats[1].SetTexture("_MainTex", mats[0].GetTexture("_MainTex"));

4

1 に答える 1

4

しかし...テクスチャを変更するためだけにシェーダーを実行したくない場合があります。

なぜだめですか?これは一般的な方法です。

Graphics.Blitをチェックしてください。基本的にマテリアル(シェーダーを含む)を適用したクワッドを描画します。したがって、シェーダーを使用してテクスチャを変更できます。ただし、テクスチャは RenderTexture でなければなりません。

次のようになります。

var mat = new Material(Shader.Find("My Shader"));
var output = new RenderTexture(...);
Graphics.Blit(sourceTexture, output, mat);

この場合の sourceTexture はMy Shaderの _MainTex にバインドされます。

于 2012-11-01T13:21:12.083 に答える