untiy 3d ShaderLab_第7章_ Forward渲染路径_4_Forward渲染路径总结

Forward渲染路径总结

        现在可以总结一卜适应于Forward渲染路径的ForwardBaseForwardAdd的情况。
7.4.1   Forward渲染路径下材质的适应性
       这两类Pass不能在Camera为VertexLit时被演染,但可以被渲染路径为ForwardDeferred的Camera渲染。
7.4.2  Unity如何为Forward渲染路径设置光源

       在ForwardBase的Pass内,_WorldSpaceLightPos0和_LightColor0只会含有第一个Pixel行光的有效组合。在没有Pixel平行光时,_WorIdSapceLightPos0也可能含有1个Pixel点光源的位置数据,但是并没有有效的_LightColor0数据。在ForwardAdd内,_WorldSpaceLightPos0和_LightColor0只会含有Pixel光源,而且按照强度大小,平行光优先的顺序依次对每一个Pixe!光源执行一次。
      在ForwardBase内,当没有ForwardAdd Pass时,unity_4LightPos[X, Y, Z]0 和 unity_LightColor[4]的组合含有点光源的数据,按照Pixel强度的原则排序,但不包含平行光;当有ForwardAdd时,则ForwardBase内unity_4LightPos[X,  Y,  Z]0只含有Vertex点光源。在ForwardAdd内,unity_4LightPos[X,  Y,  Z]0不包含有效数据。unity_LightAtten0数据则用在1.0和0.0之间切换,表示对应的unity_4LightPos[X,  Y, Z]0是否是有效的光源数据。
       unity_LightPosition[4]在ForwardBase和ForwardAdd内从不包含任何有效数据,奇怪的是其x分量总是为1.0,只有在从Camera的VertexLit模式切换回Forward和Deferred模式时才会包含一些未及时清除的死数据。

      讲了这么多,其实对于Forward渲染路径,你可以简单地使用UnityCG.cginc中的Shade4PointLights函数在ForwardBase中计算Vertex光源的照明。对于Pixel光源,你必须使用_WorldSpaceLightPos0和_LightColor0来计算。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值