美文网首页
阴影_透明度物体阴影

阴影_透明度物体阴影

作者: Rayson | 来源:发表于2020-06-19 10:52 被阅读0次
Shader "Unity Shaders Book/Chapter 9/Alpha Test With Shadow" {
    Properties {
        _Color ("Color Tint", Color) = (1, 1, 1, 1)
        _MainTex ("Main Tex", 2D) = "white" {}
        _Cutoff ("Alpha Cutoff", Range(0, 1)) = 0.5
    }
    SubShader {
        Tags {"Queue"="AlphaTest" "IgnoreProjector"="True" "RenderType"="TransparentCutout"}
        
        Pass {
            Tags { "LightMode"="ForwardBase" }
            
            Cull Off
            
            CGPROGRAM
            
            #pragma multi_compile_fwdbase
            
            #pragma vertex vert
            #pragma fragment frag
            
            #include "Lighting.cginc"
            #include "AutoLight.cginc"
            
            fixed4 _Color;
            sampler2D _MainTex;
            float4 _MainTex_ST;
            fixed _Cutoff;
            
            struct a2v {
                float4 vertex : POSITION;
                float3 normal : NORMAL;
                float4 texcoord : TEXCOORD0;
            };
            
            struct v2f {
                float4 pos : SV_POSITION;
                float3 worldNormal : TEXCOORD0;
                float3 worldPos : TEXCOORD1;
                float2 uv : TEXCOORD2;
                SHADOW_COORDS(3)
            };
            
            v2f vert(a2v v) {
                v2f o;
                o.pos = UnityObjectToClipPos(v.vertex);
                
                o.worldNormal = UnityObjectToWorldNormal(v.normal);
                
                o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;

                o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
                
                // Pass shadow coordinates to pixel shader
                TRANSFER_SHADOW(o);
                
                return o;
            }
            
            fixed4 frag(v2f i) : SV_Target {
                fixed3 worldNormal = normalize(i.worldNormal);
                fixed3 worldLightDir = normalize(UnityWorldSpaceLightDir(i.worldPos));
                
                fixed4 texColor = tex2D(_MainTex, i.uv);

                clip (texColor.a - _Cutoff);
                
                fixed3 albedo = texColor.rgb * _Color.rgb;
                
                fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz * albedo;
                
                fixed3 diffuse = _LightColor0.rgb * albedo * max(0, dot(worldNormal, worldLightDir));
                                
                // UNITY_LIGHT_ATTENUATION not only compute attenuation, but also shadow infos
                UNITY_LIGHT_ATTENUATION(atten, i, i.worldPos);
                
                return fixed4(ambient + diffuse * atten, 1.0);
            }
            
            ENDCG
        }
    } 
    FallBack "Transparent/Cutout/VertexLit"
}

相关文章

  • 阴影_透明度物体阴影

  • iOS阴影设置详解

    UIView的阴影设置主要通过UIView的layer的相关属性来设置 阴影的颜色 阴影的透明度 阴影的圆角 阴影...

  • UIView加阴影

    UIView的阴影设置主要通过UIView的layer的相关属性来设置 阴影的颜色 阴影的透明度 阴影的圆角 阴影...

  • unity shader 处理阴影

    阴影处理1、物体能投射阴影以及物体能接受阴影为两个方面。a.物体投射阴影在unity中应该打开CastShadow...

  • CALayer

    主要属性 1.设置阴影 shadowColor 阴影颜色 shadowOpacity 阴影的不透明度 shadow...

  • CSS深度操作(3)

    一、IE的兼容 二、过度动画 在transition中写入多个 三、圆角and阴影and透明度 圆角 阴影 透明度...

  • vray 渲染阴影层方法

    单独渲染阴影层:阴影投射方式有两种 第一种:物体投射到非本身上面。就是投射阴影的物体和接受阴影的物体互不影响。 1...

  • Material Design 谷歌设计语言—— 高度与阴影 之

    阴影 阴影为物体的深度和移动方向提供了重要视觉线索。阴影是区分不同表面的位移视觉线索。一个物体的高度决定了其阴影的...

  • 投影练习-3D热气球

    想表现所画东西的立体感,就需要通过阴影来表现。 阴影是在光源的反方向,光源离物体越远阴影越模糊,光源离物体越近阴影...

  • Swift-圆角与阴影

    iOS中圆角实现非常容易,对比而言,设置阴影则需要设置颜色,偏移位置,阴影透明度,阴影半径: ` /* T...

网友评论

      本文标题:阴影_透明度物体阴影

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