如何渲染有多個光源的場景?

時間 2021-06-01 23:07:08

1樓:topameng

因為最早內建的只是簡單的Foward Render Pipeline. 適合手機,在手機應用場景上光源也多不起來。如果是PC 可以用Deferred Lighting Render Pipeline.

不過已經有了scriptable render pipeline 可以定製渲染管線。所以

1. 內建的Foward Render Pipeline是這樣,比較早期引擎大部分這麼做的。也可以在乙個pass 裡渲染多個光源,新的LWRP(light weight render pipeline) 是這麼幹的,但目前只能最多4個畫素光。

2. ForwardBase pass 寫了深度,ForwardAdd pass 不需要再寫深度, 所以一般會多乙個zwrite off 節省頻寬. 而ztest 預設是LEqual, 深度相等也可以寫入(混合)畫素。

前向渲染經常這麼做

3. ForwardBase不是無限的頂點光,最多4個,可以參考

Forward Rendering Path Details。畫素光會走FowardAdd pass,FowardAdd不受光源個數限制, (Unity 質量設定裡面有畫素光源個數設定,最高質量等級預設是4個,大於這個限制的光源就不是畫素光了)

以上大部分是內建渲染Forward管線問題. Deferred 可能有很多地方並不一樣。對於scriptable render pipeline, 新的High-Definition Render pipeline 是一種Tile Deferred Shading Render pipeline。

另外:LWRP也沒ForwardBase 和ForwardAdd 這種pass分法了

2樓:

含糊地回答一下標題的問題,你可能需要的資料:

Forward

Forward+

Deferred shading

Deferred lighting

Light Indexed Deferred RenderingLight Indexed Deferred LightingInferred Lighting

Tiled Deferred ShadingTiled Forward ShadingClustered Shading

3樓:錢康來

1. 我猜測是這樣比較簡潔? 但是我個人是希望做成乙個pass多個光源,然後在shader裡用for/if或者variant來處理不同光源個數情況

2. 其實是Blend ONE ONE也就是additive的做法,深度緩衝其實後面的ForwardAdd Pass不處理就行

3. vertex light/pixel light都是有最大上限的-。-

對比 iOS 系統 Android 的字型渲染有何區別?

Vivaldi 說了你們可能不信,iOS 和 Android 用的是同一套渲染方案 FreeType。區別在於 iOS 會忽略掉字型的 hinting,Android 為了保持低解析度下的對比度仍然會讀取,由此造成字形扭曲和不自然。現在已經是2019年,解析度1920 1080的螢幕遍地開花,觀感反...

macOS 和 Windows 的字型渲染有什麼區別?

江疆 技術上說,主要的區別有這幾個 Windows 預設是使用很重的 hinting,直到 DirectWrite 開始才禁用 horizontal hinting 而 Mac OS X 完全不用 hinting 資訊,只在 vertical 方向做一些 autohint Windows 關閉小字號...

2023年,Windows 10的字型渲染有沒有得到提公升?

丁海洋 win到現在還存在這個問題 在高解析度下如果顯示器尺寸太小的話,系統預設的縮放狀態字型就太小了,也許ms設計初期並沒有考慮到以後解析度會越來越高,瀏覽器雖然可以縮放,但始終覺得沒100 預設看著舒服,有些網頁放大以後看著就怪怪的,系統自帶的縮放調整在很多軟體裡是無效的,不像安卓手機這樣,高解...