Unity材质替代渲染相关:RenderWithShader & SetReplacementShader
概要
Unity提供了使用Camera实现场景中物体替换shader渲染的方法,来满足一些特殊需求。
public void RenderWithShader(Shader shader, string replacementTag);
public void SetReplacementShader(Shader shader, string replacementTag);
两种方法都在挂载在Camera上的脚本上调用,其中RenderWithShader 方法调用一次之后只渲染场景一次,SetReplacementShader方法调用之后会一直使用,直到调用ResetReplacementShader方法,则恢复所有物体的正常渲染。
RenderWithShader
官方文档解释链接(v:2018.4)
英文不好,个人大概理解为使用这个方法的相机不能是你当前正在使用的渲染的相机,你需要一个新的相机,并且disable掉挂载的Camera组件,这个相机不会再发送OnPreCull, OnPreRender or OnPostRender 消息,最好结合RenderTexture使用。所以我使用它的方法基本就是将它作为一种触发性质的渲染方式,在你需要的时候调用一次渲染方法,渲染到RenderTexture并进行使用。
GetComponent<Camera>().RenderWithShader(usedShader, replaceTag);

本文介绍了Unity中如何利用Camera的RenderWithShader和SetReplacementShader方法实现物体着色器的临时或持续替换渲染,用于满足特殊需求。RenderWithShader适用于一次性渲染,而SetReplacementShader则可保持渲染状态,通过ResetReplacementShader恢复原状。文章还解释了UsedShader和ReplaceTag的使用,强调了它们在Shader匹配过程中的作用,以及如何设置自定义的tags键值对。
最低0.47元/天 解锁文章
5057

被折叠的 条评论
为什么被折叠?



