首页 > 编程知识 正文

unity的shader如何使用(unity自发光shader)

时间:2023-05-06 12:21:15 阅读:74714 作者:2612

透明度混合(半透明)的渲染顺序非常重要!

不透明物体的绘制顺序不重要。 从后向前渲染透明对象并禁用深度写入(Zwrite off ) ) )。

Queue=Transparent :渲染Geomerty和alpha测试对象,然后依次渲染“从后到前”。

Blend命令,将启用透明度混合!

在此插入图像说明

ZWrite可以是开/关值。 默认值为On,指示是否将像素深度写入深度缓存。 另外,还要确认ZTest是否通过。

ZTest可以是greater/gequ al/less/le qual/equal/not equal/always/never/off的值。 默认值为lequal,表示通过比较深度更改颜色缓存的值。 例如,默认情况下,如果要绘制的新像素的z值小于或等于深度缓存的值,则深度缓存中相应像素的颜色值将更新为新像素的颜色值。 需要注意的是,关闭ZTest值表示关闭深度测试,这等效于将值设置为Always而不是Never。 Always是指将当前像素颜色直接写入颜色缓冲区。 不是深度。 Never相当于不将当前像素的颜色写入颜色缓冲区,从而消失。

shader ' unlit/alphablend ' { properties } _ maintex (' maintex ', 2D )='white'{}_diffuse )、Color 1)=1) subshader(tags(queue )=' transparent ' ' ignore projector '=' true ' LOD 100 zwriteoffblendsrcalphaoneminussrcalphapass { tags } ' light mode '=' forward base ' } CG程序# pragmavertexvert # praprape float4 _MainTex_ST; fixed4 _Diffuse; float _AlphaScale; structv 2f { float4vertex : SV _ position; 固定3魔兽世界: tex coord 0; 浮点3魔兽世界pos : tex coord 1; 浮动2 uv : tex coord 2; (; V2Fvert(appdata_baseV ) {v2f o; o.vertex=unityobjecttoclippos (v.vertex ); 固定3全球通用=unityobjecttoworldnormal (v.normal; o .世界正常=世界正常; o.world pos=mul (unity _ objecttoworld,v.vertex ); o.uv=transform_tex(v.texcoord,_MainTex ); 返回o; }固定4标志(v2fi ) :SV_target )固定3 ambient=unity _ light model _ ambient.XYZ; fixed4texcolor=tex2d(_maintex,i.uv ); //漫反射fixed3worldlightdir=unityworldspacelightdir (I.world pos ); //fixed 3魔兽世界=normalize (魔兽世界0.XYZ ); fixed3diffuse=_ light color0. RGB * tex color.RGB * _ diffuse.RGB * (dot (魔兽世界,i.worldNormal ) ) * 0.5 0.5 fff 返回固定4 (color,texColor.a * _AlphaScale ); } end CG } } fallback ' transparent/vertex lit ' }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。