UnityShader源码2017---学习笔记与自我拓展034

源自AlphaTest-SoftEdgeUnlit.shader

这个shader的作用,注释说的很明确。

简单的翻译一下。

Renders doubled sides objects without lighting. 
Useful for grass, trees or foliage.

This shader renders two passes for all geometry,
one for opaque parts and one with semitransparent details.

This makes it possible to render transparent objects 
like grass without them being sorted by depth.

无光照双面渲染物体,用于草,树,叶子的渲染。

使用这个shader的物体都会有两个pass(两个pass意味着什么?不能动批,每一个物体两个dc),一个pass用于不透明物体的渲染,一个pass用于半透明细节部分的渲染。

这个shader可以让像草这种本来不能按照depth排序的透明物体正常地渲染

这个Shader没有什么特别的功能,我只提炼一下他的概框。

Shader "ShaderStore/UnitShader2017/Legacy Shaders/Transparent/Cutout/Soft Edge Unlit"
{
Properties {****}

SubShader {
    Tags { "Queue"="AlphaTest" "IgnoreProjector"="True" "RenderType"="TransparentCutout" }
    Lighting off

    //双面渲染
    Cull Off

    Pass {
        CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            v2f vert (appdata_t v){}

            fixed4 frag (v2f i) : SV_Target
            {
                half4 col = _Color * tex2D(_MainTex, i.texcoord);
                //alpha大于_Cutoff的就不在渲染
                clip(col.a - _Cutoff);
                return col;
            }
        ENDCG
    }

    Pass {
        Tags { "RequireOption" = "SoftVegetation" }

        //上一个pass已经write z了,所以这个就不要再次写入
        ZWrite off

        //因为这个pass是处理半透细节,所以blend还是要开启的
        Blend SrcAlpha OneMinusSrcAlpha

        CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            v2f vert (appdata_t v){}

            fixed4 frag (v2f i) : SV_Target
            {
                half4 col = _Color * tex2D(_MainTex, i.texcoord);
                //这里要注意一下,这次要保留的部分是上个pass丢弃的部分
                clip(-(col.a - _Cutoff));
                return col;
            }
        ENDCG
    }
}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值