zoukankan      html  css  js  c++  java
  • U3d 使用Projector实现3d光环效果

    效果如下

    GameObject上挂Projector脚本。

    一张类圆环状图片,

    重要的是材质的shader

    Shader "Projector/Custom" {
        Properties{
            _ShadowTex("Cookie", 2D) = "gray" {}
            _FalloffTex("FallOff", 2D) = "white" {}
        }
            Subshader{
            Tags{ "Queue" = "Transparent" }
            Pass{
            ZWrite Off
            ColorMask RGB
            //Blend DstColor Zero
            Blend SrcAlpha OneMinusSrcAlpha
            Offset -1, -1
    
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #pragma multi_compile_fog
            #include "UnityCG.cginc"
    
            struct v2f {
                float4 uvShadow : TEXCOORD0;
                float4 uvFalloff : TEXCOORD1;
                UNITY_FOG_COORDS(2)
                float4 pos : SV_POSITION;
            };
    
            float4x4 _Projector;
            float4x4 _ProjectorClip;
    
            v2f vert(float4 vertex : POSITION)
            {
                v2f o;
                o.pos = mul(UNITY_MATRIX_MVP, vertex);
                o.uvShadow = mul(_Projector, vertex);
                o.uvFalloff = mul(_ProjectorClip, vertex);
                UNITY_TRANSFER_FOG(o,o.pos);
                return o;
            }
    
            sampler2D _ShadowTex;
            sampler2D _FalloffTex;
    
            fixed4 frag(v2f i) : SV_Target
            {
                fixed4 texS = tex2Dproj(_ShadowTex, UNITY_PROJ_COORD(i.uvShadow));
                //texS.a = 1.0-texS.a;
    
                //fixed4 texF = tex2Dproj(_FalloffTex, UNITY_PROJ_COORD(i.uvFalloff));
                //lerp(fixed4(1, 1, 1, 0), texS, texF.a);
                fixed4 res = texS;
    
                UNITY_APPLY_FOG_COLOR(i.fogCoord, res, fixed4(1,1,1,1));
                return res;
            }
                ENDCG
            }
        }
    }

    把材质球拖到projector上,有些东西不想被投射到的可以修改Ignore

  • 相关阅读:
    ASM ClassReader failed to parse class file- probably due to a new Java class file version that isn't supported yet问题
    Git配置工作
    Git多人协作
    Git分支合并
    网络收藏夹
    莫道桑榆晚,为霞尚满天
    2021幼升小
    2020年07月28日10:36:36
    JAVA中如果用BigDecimal做除法
    mybatis
  • 原文地址:https://www.cnblogs.com/givemeall/p/13408369.html
Copyright © 2011-2022 走看看