美文网首页
Unity Forward渲染路径(转)

Unity Forward渲染路径(转)

作者: 雄关漫道从头越 | 来源:发表于2020-07-11 10:02 被阅读0次

    Unity Forward渲染路径
    Unity3D-Rendering Paths(渲染路径)及LightMode(光照模式)

    一、ForwardBase和ForwardAdd
    它们是专门为在Forward渲染路径下渲染物体而设计的两种Pass,ForwardBase会先于ForwardAdd执行。

    Unity的Camera的三种PathRendering:Vertex Lit、Forward和Deferred Lighting三种。

    1、在Vertex Lit渲染模式下,Forward Base和Forward Add的LightMode都不被支持。

    2、ForwardAdd Pass需要和ForwardBase一起使用,否则会被Unity忽视掉。

    3、在Forward和Deferred渲染路径下,Forward的Pass都能被正常渲染。

    二、Forward渲染路径下的重要光源
    Unity的Light有Render Mode属性,包含两种:Important和Not Important。注:光源带颜色。

    要检测_WorldSpaceLightPos0在ForwardBase和ForwardAdd的Pass内的状况。在ForwardAdd Pass内的顶点函数内,color=_WorldSpaceLightPos0.x。并且使用Blend One Zero的混合模式,可以输出最后执行的ForwardAdd Pass的输出,如果未被执行,将会输出ForwardBase Pass的结果。

    结论是:_WorldSpaceLightPos0只会含有Pixel(逐像素)光源。在ForwardBase Pass内,只有场景中存在Important的逐像素平行光时,才会含有有效的_WorldSpaceLightPos0和_LightColor0的组合。

    三、重要光源在ForwardAdd内的执行
    除了第一个逐像素平行光之外(在ForwardBase Pass执行),其他每个Pixel(逐像素)光源都会在一个单独的ForwardAdd Pass内被执行,即场景中的Pixed光源数为n,则ForwardAdd Pass会被执行n-1次。对于将会被传到ForwardAdd内的每一个Pixel光源,Unity也是按照强弱的顺序依次让它们在ForwardAdd Pass内执行的。

    四、ForwardBase和Unity存放光源的第一种方式
    1、Vertex(逐顶点)光源,以及其他会被处理成Shader的光源会在ForwardBase内被计算。unity_4LightPos[X,Y,Z]0组合中包含4个Vertex点光源的数据,对应的unityL_LightColorl[0,1,2,3,4]数组都有正确的对应数据(光源颜色)。

    2、逐个将点光源改为平行光,对应的光源也会逐个被移除unity_LightPos[X,Y,Z]0。

    只有ForwardBase时的总结:在Forward和Deferred模式下,ForwardBase Pass内的unity_LightPos[X,Y,Z]0和unity_LightColor[4]只含有点光源,逐像素光源的排名更靠前。

    又含有ForwardAdd时存放光源数据第一种方式的总结: Unity会在ForwardBase Pase内的unity_4LightPos[X,Y,Z]0中只放置Vertex点光源,并且数据都是在世界坐标内,不是相机空间内。

    五、ForwardAdd和Unity存放光源的第一种方式
    在ForwardAdd Pass内,unity_4LightPos[X,Y,Z]0组合和对应颜色数据只包含Vertex点光源,不含有任何Pixel光源或者平行光。这其实是为ForwardBase Pass内的unity_4LightPos[X,Y,Z]所准备的数据未被清除而已。对于每一个Pixel光源来说,ForwardAdd的Pass都会执行一次,所以不要在ForwardAdd Pass内计算unity_4LightPos[X,Y,Z]0中的数据。

    六、Forward渲染路径和Unity存放光源的第三种方式
    unity_LightPosition[4]中存储的确实是视空间中的光源估息,也就是当前Camera空间的光源的方向矢量或者位置。在ForwardBase和ForwardAdd内从不包含任何有效数据。

    相关文章

      网友评论

          本文标题:Unity Forward渲染路径(转)

          本文链接:https://www.haomeiwen.com/subject/puvbcktx.html