渲染路徑核心:光照處理。
unity中光照:逐頂點、逐畫素、球諧光照。
逐畫素光照:按照每個畫素的顏色被計算,看起來比較平滑;逐頂點光照:每個頂點上做光照,其他地方插值,效果粗糙。 但是逐畫素光照中,每個光源會使每個光源光照範圍內的物體增加乙個渲染批次。延遲渲染可以解決逐畫素光照對光源造成的效能影響。
延遲渲染:先不進行光照運算,對每個畫素生成一組資料(g-buffer),包括位置,法線,高光等,然後用這些資料將每個光源以2d後處理的方式施加在最後影象上(螢幕空間)。複雜度:螢幕的解析度*光源個數。
前向渲染:先渲染一遍物體,把法線和高光存在argb32的渲染紋理中(法線用rgb通道,高光用a通道),存在了z buffer裡;然後通過深度資訊,法線和高光資訊計算光照(螢幕空間),光照資訊快取在render texture中;最後混合。*(每個幾何物件都一步步的從頂點著色器到畫素著色器最終送到螢幕渲染處理)。如果是逐畫素的,複雜度:片段的個數*光照的個數。
綜上:大量燈光時選延遲渲染。但是缺點:不允許渲染半透明物體(原因:無法記錄半透明物體的深度和法線資訊);缺乏抗鋸齒;硬體不支援;效能差。
Unity 前向渲染與延遲渲染
只要在攝像機設定下就可以了 由於我設定了9盞燈光,而unity buildin只支援4盞,所以顯示的燈光是錯誤的 由上圖可見 unity前向渲染的順序是 先做深度圖,我猜是為了做深度剔除,深度測試,避免重複繪製,然後在renderloop裡對每個物體進行光照法線計算 天空盒透明物體 後效貌似延遲渲染...
前向渲染和延遲渲染的區別
前向渲染和延遲渲染是兩種光照渲染模式。假設有1個光源和1000個具有光照反射的三角形在view coordinate沿著z軸正方形延伸擺放,法線與z軸平行,即所有三角形xy全相同,只有z不同,但是這裡增加乙個條件 擺放順序是無序的。從螢幕上其實你只能看到乙個帶光照的三角形,其他的都被擋住了。那麼前向...
unity的渲染路徑
forward rendering path 前向渲染路徑 deffered rendering path 延遲渲染路徑 vertexlit rendering path 頂點照明渲染路徑 拋棄 標籤名描述 always 不管使用哪種渲染路徑,該pass總會被渲染,但不會計算任何光照 forward...