首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在United3D着色实验室中从像素着色器返回纹理?

如何在United3D着色实验室中从像素着色器返回纹理?
EN

Stack Overflow用户
提问于 2012-10-30 21:11:48
回答 1查看 5.4K关注 0票数 2

如何创建一个简单的像素颜色着色器,说需要一个纹理,应用类似于掩蔽:

代码语言:javascript
复制
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"));的方式传递给下一个着色器。

EN

回答 1

Stack Overflow用户

发布于 2012-11-01 13:21:12

但是..。您可能不希望只修改纹理的着色器。

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

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

会是这样的:

代码语言:javascript
复制
var mat = new Material(Shader.Find("My Shader"));
var output = new RenderTexture(...);
Graphics.Blit(sourceTexture, output, mat);

在这种情况下,sourceTexture将绑定到_MainTex of My Shader

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13147652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档