Deferred Shading翻譯後記 二

2021-08-23 13:27:33 字數 1889 閱讀 9211

本周四,跟同事們討論的時候,大概說了一下deferred shading的一些基本細節,以及與我們專案的關係。我對unreal3沒有全面支援deferred shading至今耿耿於懷,甚至有時候讓一部分同事產生了對unreal3的不信任感。其實,我最想表達的,是這個blog一貫以來的主題:沒有最好的技術,沒有最壞的技術,沒有有用的技術,沒有沒用的技術,沒有正確的技術,沒有錯誤的技術——技術就是技術,決定技術優劣的,並非技術本身,而是使用技術的人。

仍然要表明的一點是,我們並非不清楚,而是情勢所迫……

這中間的滋味,那些也用了unreal3做mmo的開發者應該能體會得更清楚……

無論如何,在這個講座的過程中,我重新整理了一下ds的一些思路

這裡總結一下小生對於ds

的理解,不一定對,望指教: 1

,ds適用和不適用的場合。 ds

適用於大量動態光源,高面,高場景複雜度的條件下。大量動態光源可通過硬體occlusion

來優化。高面的背面事實上不會被著色。場景複雜度高,只要遮擋沒問題,最後渲染的東西還都是那些gbuffer

裡的。ds

的效能曲線與fs

的效能曲線相比,ds

的起始高度高,但變化平穩,fs

的起始高度低,但變化率高。

決不適合於對半透明有較高要求的場景。如果你要做的是一款處處薄紗、水晶、玻璃,草叢,還要這些物體與那些不透明,走ds

的物體有相當程度光澤感的場景的話,並不合適。因為半透明需要使用支援稍差的fs

系統來處理,而在fs

系統中,由於資訊的缺失或者效能的考慮,不可能像ds

那樣有那麼美妙的逐畫素光照系統。殺戮地帶2最多算了4個光源,這與乙個大的mesh上可能出現的十數個光源相比,簡直是太不夠了。

no silver bullets

。沒有任何技術會標榜自己能解決任何問題——

問題只有出現了才能被解決。而標榜解決了一切問題的技術,結果往往是什麼都沒有解決,技術是最容不得虛假的。 2

,材質和光源分開的優勢,就不用多說了,首先,基於一套材質,光源可以想出各種各樣的辦法玩花樣。活必須立於死的之上,死的意義,就是恆定,恆定的東西上,才能有足夠的自由和靈活。

但分離也帶來的一些問題:所有的一切都受限於mrt

資料,這樣,就有了mrt

精度問題,因此ds

很難模擬高精度的場景。此外,為了擴充套件ds

的功能,我們一般都要做查詢表,這就牽扯到了mrt

查詢表的效能問題。究竟合不合適,多大程度上合適,這就只能由每個專案自己決斷了。 3

,ds的根源在於簡化,而非複雜化。

事實上,ds

並不適合去堆那些比較複雜的效果。所有的一切都被鉗定到了gbuffer

中,gbuffer

的程度決定了ds

的最後結果。因此ds

,是一種簡化的思路,而非一種複雜化的思路。可以說,它不是傳統意義上的新技術,總會給你帶來麻煩,相反,它是這樣一種方便你簡化思路的技術。然而,喪失了一定程度豐富性的ds

,事實上解決了80-20

中的80

部分。

4,基於ds

的引擎並非千篇一律,仍然有很大的空間。

例如,殺戮地帶2

的優化與tabula rasa

的優化就瞄準了不同的方向。

tabula rasa

認為,使用stencil

進行優化,對狀態切換的壓力並不能從根本上得到解決。而殺戮地帶2

則使用了這個技術。到底哪個費,哪個省,只有在最後的場景中才是必要的。

有些實作,用的是快取position buffer

,有些實作,則通過depth

反算,其實也是這樣,技術沒有正確和錯誤,只有最合適的。

Deferred Shading翻譯後記 一

崩潰中,終於翻譯完了,不管到底翻譯得如何。很久沒有這樣熬通宵來翻譯文章的了,天天被外包折騰,夜裡唯有的時間只能用來做自己想做的東西。我應該是屬於晝伏夜出動物,這樣才能滿足自己的喜好和習性吧?由於機緣的巧合,去年開始,自從在工作中被迫接觸到這個技術之後,就不斷被unreal的deferred shad...

深圳之行後記

找工也算告一段落了,出去20天,感覺自己成熟了很多。雖然現在變得有些麻木,但某些事情結束了,也就不會再放在心上了,開始新的生活,珍惜剩下的不多的大學生活的日子,多嘗試著改變,做最好的自己!當我15號拿到品高的offer時,我心裡真的挺高興的,畢竟自己第一次出來找工,而且那麼快就搞定乙份工作了,這可是...

面試後記(C )

題目一 1 3 5 7 101 main int i,t 1,s 0 s是最後的結果 for i 0 i 101 i i 2 t 1 s s t t 2 答案應該是 1 t i 2 t i 第二空具體錯在需要除個i,因為在第一空時就t已經改變了不再是1或者 1,而是i或者 i,平常我會直接把for裡...