光源类型

光源有5个属性:位置、方向、颜色、强度和衰减
1、方向:_WorldSpaceLightPos0
2、颜色和强度:_LightColor0(此变量已经是颜色和强度相乘后的结果)
3、衰减:平行光没有衰减

Unity处理这些光源的顺序取决于其重要程度

光源的衰减在unity中是利用一张纹理作为查找表来标记
衰减查找纹理是_LightTexture0,通过这张贴图对角线上的纹理值表明在光源空间中不同位置上的点的衰减值。举例解释:(0,0)点表明与光源位置重合的点的衰减值,(1,1)点表明在光源空间中距离最远的点的衰减。

为了得到该点在光源空间的衰减值,我们首先要知道该点在光源空间中的位置,通过_LightMatrix0变换矩阵得到的,该矩阵可以将顶点从世界空间变换到光源空间。

float3 lightCoord=mul(_LightMatrix0,float4(i.worldPosition,1))
.xyz;

之后便可以得到衰减值

fixed atten=tex2D(_LightTexture0,dot(lightCoord,lightCoord).rr)
.UNITY_ATTEN_CHANNEL;

在这里我们使用了光源空间中顶点距离的平方。

使用纹理查找来计算衰减的缺点是:
1、需要预处理得到采样纹理,纹理的大小也会影响衰减的精度。
2、不直观也不方便。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值