SurfaceShader之——自定义光照

Shader "Custom/aaa" {
  Properties
  {
    _MainTex ("Texture", 2D) = "white" {}
  }
 
  Subshader
  {
     //alpha测试,配合surf中的o.Alpha = c.a;
  AlphaTest Greater 0.4
  CGPROGRAM
  #pragma surface surf lsyLightModel 
 
  //命名规则:Lighting接#pragma suface之后起的名字
  //lightDir :点到光源的单位向量 
  // viewDir:点到摄像机的单位向量
  // atten:衰减系数
  float4 LightinglsyLightModel(SurfaceOutput s, float3 lightDir,half3 viewDir, half atten)
  {
  float4 c;
 
  float diffuseF = max(0,dot(s.Normal,lightDir));
  float specF;
  float3 H = normalize(lightDir+viewDir);
  float specBase = max(0,dot(s.Normal,H));
  specF = pow(specBase,8);
 
  c.rgb = s.Albedo * _LightColor0 * diffuseF *atten + _LightColor0*specF; 
  c.a = s.Alpha;
  return c;
  }
 
  struct Input
  {
  float2 uv_MainTex;
  };
 
 
  sampler2D _MainTex;
 
  void surf(Input IN,inout SurfaceOutput o)
  {
  half4 c = tex2D(_MainTex, IN.uv_MainTex);
  o.Albedo = c.rgb;
  o.Alpha = c.a;
  }
  ENDCG
  }
}

亲,如果您觉得本文不错,愿意给我一些动力的话,请用手机扫描二维码即可向我打赏

                                         打赏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值