shader变量

    Properties {
        _BaseMap("Texture", 2D) = "white" {}
        _BaseColor("Color", Color) = (0.5, 0.5, 0.5, 1.0)
        _Cutoff ("Alpha Cutoff", Range(0.0, 1.0)) = 0.5
        [Toggle(_CLIPPING)] _Clipping ("Alpha Clipping", Float) = 0

        _Metallic ("Metallic", Range(0, 1)) = 0
        _Smoothness ("Smoothness", Range(0, 1)) = 0.5

        [Toggle(_PREMULTIPLY_ALPHA)] _PremulAlpha ("Premultiply Alpha", Float) = 0

        [Enum(UnityEngine.Rendering.BlendMode)] _SrcBlend ("Src Blend", Float) = 1
        [Enum(UnityEngine.Rendering.BlendMode)] _DstBlend ("Dst Blend", Float) = 0
        [Enum(Off, 0, On, 1)] _ZWrite ("Z Write", Float) = 1
    }
    
    SubShader {
        Pass {
            Tags {
                "LightMode" = "CustomLit"
            }

            Blend [_SrcBlend] [_DstBlend]
            ZWrite [_ZWrite]

            HLSLPROGRAM
            #pragma target 3.5
            #pragma shader_feature _CLIPPING
            #pragma shader_feature _PREMULTIPLY_ALPHA
            #pragma multi_compile_instancing
            #pragma vertex LitPassVertex
            #pragma fragment LitPassFragment
            #include "LitPass.hlsl"
            ENDHLSL
        }
    }
v2f vert (appdata v)
{
     v2f o;
      o.vertex = UnityObjectToClipPos(v.vertex);
      o.normal = UnityObjectToWorldNormal(v.normal);
      o.lightDir = WorldSpaceLightDir(v.vertex);
      o.eyeDir.xyz = normalize( _WorldSpaceCameraPos.xyz - o.worldPos.xyz ).xyz;
      o.uv = TRANSFORM_TEX(v.uv, _MainTex);
      o.normal = normalize( mul( unity_ObjectToWorld, float4_t( v.normal, 0 ) ).xyz );
      o.tangent = normalize( mul( unity_ObjectToWorld, float4_t( v.tangent.xyz, 0 ) ).xyz );
      o.binormal = normalize( cross( o.normal, o.tangent ) * v.tangent.w );

      //若是采样法线贴图
     float3_t normalVec = normalize( tex2D( _NormalMapSampler, input.uv ).xyz * 2.0 - 1.0 );
     // float3_t normalVec = normalize(UnpackNormal(tex2D(_NormalMapSampler, input.uv)));
     float3x3_t localToWorldTranspose = float3x3_t(
        input.tangent,
        input.binormal,
        input.normal
    );

     normalVec = normalize( mul( normalVec, localToWorldTranspose ) );

      return o;
}

fixed4 frag (v2f i) : SV_Target
{
    fixed3 worldLightDir = normalize(_WorldSpaceLightPos0.xyz);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容