Unity3D ShaderLab 修改渲染队列进行深度排序

发布时间:2017-7-1 11:45:50编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Unity3D ShaderLab 修改渲染队列进行深度排序 ",主要涉及到Unity3D ShaderLab 修改渲染队列进行深度排序 方面的内容,对于Unity3D ShaderLab 修改渲染队列进行深度排序 感兴趣的同学可以参考一下。

Unity3D ShaderLab 修改渲染队列进行深度排序

为了更深刻的理解透明度,我们还需要学习一下深度排序,简单来说就是物体被渲染的先后顺序。

Unity允许我们通过代码来控制某个特定物体渲染到屏幕的顺序。这个做法类似于photoshop中图层的概念。

开始之前,准备工作还是新建Shader Material,准备测试场景。为了对比 是需要使用2个材质球的。

打开我们的shader,稍微编辑一下即可看到效果。过程简单如下:

复制代码
Shader "91YGame/DepthSort" {    Properties {        _MainTex ("Base (RGB)", 2D) = "white" {}    }    SubShader {        //Tags { "RenderType"="Opaque" } default Tags.        Tags { "Queue"="Geometry-20" }        //我们的        Zwrite Off        //通知unity重写物体的渲染深度顺序。        LOD 200        CGPROGRAM        #pragma surface surf Lambert        sampler2D _MainTex;        struct Input {            float2 uv_MainTex;        };        void surf (Input IN, inout SurfaceOutput o) {            half4 c = tex2D (_MainTex, IN.uv_MainTex);            o.Albedo = c.rgb;            o.Alpha = c.a;        }        ENDCG    }     FallBack "Diffuse"}
复制代码

如你所见 ,修改的内容少到极致。。。。。

返回unity,看看效果:

是的,你没看错。影子在前面,暴露了他的真实坐标位置。可是在最终的成像渲染确把绿色的球体渲染到后面了。

默认情况下,unity会根据物体和摄像机之间的距离来决定渲染顺序,这是符合大多数场景需求的。如果某天你需要改变。

那么你是用Tags{}模块就可以自主控制渲染顺序了。

Unity内置的渲染队列如下:


上一篇:Log4j按级别输出日志到不同文件配置
下一篇:位域(位段) - hbg

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款