码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-05-12 14:18:07      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:

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来计算。

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

标签:

原文地址:http://blog.csdn.net/heyuchang666/article/details/51362666

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!