gpt4 book ai didi

c# - 如何从 Unity 3d shaderlab 中的像素着色器返回纹理?

转载 作者:行者123 更新时间:2023-11-30 21:02:55 25 4
gpt4 key购买 nike

如何创建一个简单的像素颜色着色器,说它采用纹理,应用类似 mask 的东西:

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

in 并返回一个纹理,该纹理可以从 C# 代码以类似 mats[1].SetTexture("_MainTex", mats[0].GetTexture("_MainTex"));?

最佳答案

But... you might not want to do a shader to only modify a texture.

为什么不呢?这是一种常见的做法。

查看 Graphics.Blit。它基本上绘制了一个应用了 Material (包括着色器)的四边形。所以你可以使用你的着色器来修改纹理。但纹理必须是 RenderTexture。

应该是这样的:

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

sourceTexture 在这种情况下将绑定(bind)到 My Shader 的 _MainTex。

关于c# - 如何从 Unity 3d shaderlab 中的像素着色器返回纹理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13147652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com