美文网首页
Shader入门精要笔记8

Shader入门精要笔记8

作者: 水曜日鶏 | 来源:发表于2020-01-12 12:08 被阅读0次

    第8章

    • 深度缓冲的原理:根据深度缓存中的值来判断该片元距离摄像机的距离,当渲染一个片元时,需要把它的深度值和已经存在于深度缓冲的值进行比较,如果有东西挡住它,这个片元就不显示。
    • 两种方法实现透明效果
      • 透明度测试:透明度小于某个值,该片元就不显示。
      • 透明度混合:和颜色缓冲的值进行混合。需要关闭深度缓冲的写入 ZWrite Off(不关闭的话需要写两个Pass)
    • 必须先渲染不透明再渲染半透明物体
    • 渲染队列
      • Background 1000。会在其它队列之前渲染
      • Geometry 2000。默认的渲染队列
      • Alpha Test 2450。用于透明度测试的物体的渲染
      • Transparent 3000。用于透明度混合的物体的渲染
      • Overlay 4000。最后渲染
    • 透明度测试
      • 使用 clip(float) 函数,参数是负数时着色器就会直接返回
    • 透明度混合
      • 在Pass内需要写ZWrite off;还需要写混合模式,使用Blend命令
    • 开启深度写入的半透明效果
      • 使用两个Pass,第一个Pass开启深度写入但不输出颜色
      Pass{
          ZWrite On
          //ColorMask 后面接RGB|A|0,分别表示与其它Pass的RGB/A通道混合/不混合
          ColorMask 0
      }
      
    • 混合命令Blend,和ZWrite Off一样,写在Pass的Tags下面
      • Blend SrcFactor DstFactor(RGB通道和A通道使用同一个混合因子)
      • Blend SrcFactor DstFactor, SrcFactorA DstFactorA
      • 混合因子:
        • One,Zero
        • SrcColor,SrcAlpha(源颜色的RGB,源颜色的A通道)
        • DstColor,DstAlpha
        • OneMinusSrcColor,OneMinusSrcAlpha
        • OneMinusDstColor,OneMinusDstAlpha
      • 混合操作:
        • Add
        • Sub
        • RevSub
        • Min
        • Max
    • 剔除渲染正背面的命令,Cull
      • Cull Back|Front|Off (剔除背面|正面|双面同时渲染)
      • Unity默认剔除背面

    相关文章

      网友评论

          本文标题:Shader入门精要笔记8

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