ARShader

2019-05-16  本文已影响0人  LeoYangXD

Shader "Custom/ARShadow"
{
Properties
{
_ShadowColor("Shadow Color", Color) = (0.1, 0.1, 0.1, 0.53)
}
SubShader
{
Tags{ "Queue" = "Geometry+2" //"RenderType" = "Transparent" //
}
//Tags{ "RenderType" = "Opaque" }//通过使用tags来告诉渲染引擎在什么时候该如何渲染他们所期望的效果。
Blend SrcAlpha OneMinusSrcAlpha// 最终颜色 = 源颜色 * 源透明值 + 目标颜色*(1 - 源透明值)最常用的透明混合方式。贴图alpha值高的部分,显示得实,而混合的背景很淡。而alpha值高的部分,贴图显示得淡,而背景现实得实。

     Tags { "RenderType"="Opaque" "Queue"="Overlay"}

    //LOD 100
    //ColorMask 0
    Pass
{
    Tags{ "LightMode" = "ForwardBase" }//传递4个顶点光,环境光和第一个像素光(方向灯)。用于正向渲染,环境主要方向灯和定点光/SH 等的应用 ,第一个像素光所在的反射通道标记为Forward
    //Tag{ "LightMode" = "Vertex" }//用于顶点光照渲染,当物体没有光照映射时,所有顶点光照被应用
    CGPROGRAM

pragma vertex vert

pragma fragment frag

pragma multi_compile_fwdbase

include "UnityCG.cginc"//引包unity

include "AutoLight.cginc" //引包Light

    struct appdata
{
    float4 vertex : POSITION;
};

struct v2f
{
    float4 pos : SV_POSITION;
    SHADOW_COORDS(2)
};

fixed4 _ShadowColor;//阴影颜色

v2f vert(appdata v)
{
    v2f o;
    o.pos = UnityObjectToClipPos(v.vertex);
    TRANSFER_SHADOW(o);
    return o;
}

fixed4 frag(v2f i) : SV_Target//类似COLOR
{
    fixed atten = SHADOW_ATTENUATION(i);
return fixed4(_ShadowColor.rgb,saturate(1 - atten)*_ShadowColor.a);//最终颜色 = 源颜色 * 源透明值 + 目标颜色*(1 - 源透明值)
}
    ENDCG
}
}
    FallBack "Diffuse"

}

上一篇 下一篇

猜你喜欢

热点阅读