美文网首页Unity Shader分享
Shader笔记-透明效果

Shader笔记-透明效果

作者: 黒可乐 | 来源:发表于2018-01-12 00:00 被阅读41次

●透明是游戏中经常使用的一种效果,在实时渲染透明效果,通常会在渲染模型时控制它的透明通道。在unity中实现透明效果有两种方式:透明度测试(只有全透明与不透明两种),透明度混合(透明度可控,关闭深度缓冲写入)。
●渲染顺序是在写透明效果shader中非常重要的参数,在渲染所有不透明的物体时,可以不用考虑渲染顺序,因为有深度缓冲的存在。它的原理是把模型离摄像机的距离记录下来,再渲染片元的时候,就把缓冲的深度值与当前距离摄像机的距离作比较,谁近一些就渲染谁。所以可以不用考虑渲染顺序,但是在写透明物体是需要关闭深度缓冲,因为如果透明物体在不透明物体前面,这个时候我们是需要渲染出来不透明物体的。如果打开了深度缓冲写入的话,不透明物体就不会渲染出来了。 这里给一个结论:就是我们需要先渲染不透明的物体然后再渲染透明的物体。
●这里有两个文章,都写的很详细。可以看看。文章1文章2

●透明度测试代码中调用了裁剪的方法:

//这里是根据阀值来裁剪值
clip(texColor.a-_Cutoff);

这个方法等价于:

if((texColor.a-_Cutoff)<0.0){
  discard;
} 

●AlphaTest标签设置:

Tags{"Queue"="AlphaTest" "IgnoreProjector"="True" "RenderType"="TransparentCutout"}
AlphaTest中_Cutoff值为0.37

AlphaTest全部的代码

●透明度混合代码中关闭了深度缓冲写入与开启混合值:

ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha

●AlphaBlend标签设置:

Tags{"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
AlphaBlend中AlphaScale值为0.238

AlphaBlend全部的代码

相关文章

  • Shader笔记-透明效果

    ●透明是游戏中经常使用的一种效果,在实时渲染透明效果,通常会在渲染模型时控制它的透明通道。在unity中实现透明效...

  • Unity Shader:透明效果

    本文同时发布在我的个人博客上:https://dragon_boy.gitee.io 在Unity中,我们通常使用...

  • Shader Blend混合效果

    Shader Blend混合效果1、Blend SrcAlpha OneMinusSrcAlpha 正常模式(透明...

  • UnityShader Demo01:冰块材质

    简单版本效果如下 原理使用法线贴图扭曲透明颜色贴图的uv值Shader 代码1 surface版本 shader代...

  • Shader-透明效果-透明度混合

    透明度混合相较于透明度测试更加复杂一些,透明度混合可以得到真正的半透明效果,使用当前片元和透明度作为混合因子,与已...

  • VR家装-Tips-半透明塑料材质

    蜡烛、橡胶、半透明的灯具等。估计也是要shader表现。 下图为半透明材质里点亮一盏灯的效果

  • 《Shader 入门精要》之透明效果

    为什么透明效果的渲染顺序很重要 书上已经解释的很清楚了,这边说一下,为什么对于循环重叠的半透明物体需要在意渲染顺序...

  • 科幻风格shader

    今天分享几个科幻风格的shader 透明的 溶解 石化效果 本文资源下载链接 链接:http://pan.baid...

  • 利用Blend来实现遮罩

    效果如图,一块透明的板,罩住了后面的地鼠 地鼠shader:"Queue"="Geometry+1"遮罩shade...

  • Shader学习笔记

    最近学习 Shader中,备忘录吧,自己看的 实现效果 高光纹理光照模型 透明度测试

网友评论

    本文标题:Shader笔记-透明效果

    本文链接:https://www.haomeiwen.com/subject/tlpanxtx.html