unity defered和forwardunity渲染在哪模式的不同

本章的主要目的是让大家在不使鼡Unity的Surface Shader时也能够正确地存取Unity的光源数据,从而定制自己的Forwardunity渲染在哪路径的Shader如果读者没有这个需求,或者己经了解了Unity是如何为Forwardunity渲染在哪路徑存放光源数据的那么就可以跳过本章。

7.2.1 设计检测用的材质

其编辑器截图如图所示

当前场景中有两个平行光和4个点光源,但是全为Vertex光源现在我们可以将此场景编译运行一下,其结果如下图所示可见到在LightMode = ForwardBase的Pass内_WorIdSapceLightPos0没有被设置一个光源数据,而右边的信号输出全是ForwardBase Pass输出的鲜煷的蓝色这说明当前情况下的ForwardAdd Pass没有被执行。

如果此时我们再将一个或者多个点光源设为Pixel光源而没有Pixel平行光,可以看到如下图所示的结果右边的信号输出显示ForwardAdd

这种情形的存在原因,是Unity为FowardAdd Pass准备的光源数据在再次轮回到为FowardBase准备数据时Unity未及时清除的结果Unity出于性能方面的考虑,因为毕竟在CPU和GPU之间频繁传递数据是很耗资源的一件事情

我要回帖

更多关于 unity渲染在哪 的文章

 

随机推荐