如何创建一个简单的像素颜色着色器,表示采用纹理,应用类似掩蔽的东西:
half4 color = tex2D(_Texture0, i.uv.xy);
if(distance(color, mask) > _CutOff)
{
return color;
}
else
{
return static_color;
}
in并返回一个纹理,可以像mats[1].SetTexture("_MainTex", mats[0].GetTexture("_MainTex"));
那样从c#代码传递给下一个着色器?
答案 0 :(得分:4)
但是......你可能不想做一个只修改纹理的着色器。
为什么不呢?这是一种常见的做法。
查看 Graphics.Blit 。它基本上绘制了应用了材质(包括着色器)的四边形。因此,您可以使用着色器修改纹理。但纹理必须是RenderTexture。
就像这样:
var mat = new Material(Shader.Find("My Shader"));
var output = new RenderTexture(...);
Graphics.Blit(sourceTexture, output, mat);
在这种情况下,sourceTexture将绑定到我的着色器的_MainTex。