引用:
|
作者bluesystem
我必需很殘酷地說, 完全不是您想的那麼回事.....Orz
這一點可能要請一些對3D繪圖程式有專精的大大來解釋....依我自己寫遊戲程式的經驗. 這根本是ATI研發團隊腦殘或耍寶.....然後找了"合作關係良好"的Valve來幫他們想辦法處理.
也許ATI研發團隊覺得HDR用INT就可以處理, 後面要合成到畫面上時再用Shader自己Blending. 不過這完全違反一般遊戲程式員寫程式的想法.另外有興趣可以去研究一下有關
HDR的論文, 看人家用整數算比較好還是浮點數算比較好.....為什麼相同的東西我要寫兩
套出來? 這就是除了Valve之外, 完全沒有人願意幫ATI寫另一套solution的原因....ATI顯示卡的市佔率不小耶~遊戲廠商有必要把能做的事情故意不做嗎? 甚至我懷疑ATI在設計R5XX晶片的時候不是不想硬體實做, 而是做了會有其它問題, 只好用software solution,
沒想到沒人理.....
|
其實這套很有趣,因為ATI這邊擺了個惡搞:
ATI明明有給FP16 alpha blending,但是卻就是不給FP16 filtering。
他們說要比動態範圍RGBE8比FP16更大,所以stroage可以用RGBE8。
過去也有人這樣用過:rthdribl的.hdr格式。
但是RGBE8比較接近一種壓縮格式,老實說只適合儲存在硬碟裡面:
動態範圍雖然很大,但它需要先decode,才能夠使用;FP16和Int16原則上都不需要Decode。
事實上ATI並沒有推出任何一個"比較適當的Texture格式",只是拿出一堆FP16以外的備案,比方說回去用R3x0/R4x0支援的Int16、或者是動態範圍較大的RGBE8。
但是說真的,如果用這個格式的話,NV3x/R3x0/R4x0都支援RGBE8(rthdribl在這些卡上都能跑)的狀況下,R5x0出來就不知道要幹嘛了。
FP16 filtering、blending、MSAA,
想要用FP16 HDR、前兩個是必須,缺一就是畫面不正常;後面則不是必須,是改進品質的選項。
NVIDIA支援前兩個,不支援MSAA;ATI支援後兩個,不支援filtering,
結果就是NVIDIA不能開MSAA、ATI直接是畫面不正常,還需要修改程式來配合。
----
ATI在SDK裡面說,Render Target採用FP16,就可以支援Alpha Blending、MSAA;
但是為了避免bilinear filtering失效,Texture使用FP16"以外"的格式;
最後render結束後,還需要一個pass再轉為Int16,以方便做tone mapping & Glowing。
NVIDIA目前如果想做出MSAA,就只能放棄FP16 Render Target,由於他們並不是非常重視MSAA,所以寧願不提供MSAA。
----
話說花絮。
David Kirk曾說過,
With more frame buffer size, yes, you could possibly get closer. But you're talking more like 2GB than 512MB。
也就是想支援MSAA,等卡上的記憶體上2GB再說。
所以前幾天INQ說其實NV4x/G70早已支援到2GB這件事情其實是有一點意義的,因為這會讓人想問Kirk到底G70是不是其實有辦法支援。(笑)
當然這是在抓他語病,他應該是想講說等到2GB(這需要單顆2048Gbit的記憶體)的卡,
成本和現在的512MB的卡差不多的時候,那就應該還需要個兩年。
-----
總之,ATI計劃讓他們的硬體透過上述的流程來避開filtering failure;而且由於Int16 Texture雙方都支援的狀況下,選擇Int16的Texture其實對遊戲商是比較保險的,而且其實效果並不會真的差那麼多,因為現在大家所掌握HDR的美工技巧都蠻生疏的,這應該也是ATI本來的如意算盤。
但是就像前面說了,如果INT16 Tex,不如直接用INT16 Render Target和Blending(因為不用encoding),雙方也都可以做MSAA.... 結果ATI這邊只提FP16 blending & MSAA就變得一點意義都沒有。
結果那麼多廠商居然就真的豪不客氣直接FP16 workflow整個砸下去,並且讓ATI撞上他們最不想撞的FP16 bilinear filtering問題,只能說NV4x的行銷真的非常成功....扭轉了遊戲商的態度,並且發揮了當初R300先上市之後,對後續的NV3x在遊戲開發上的衝擊。
這個狀況再持續下去的話,ATI可能就真的得在Driver提供SW filtering了。
----
最後,INT16 HDR其實早在NV2x就已經提供了一點雛形,只是當時使用上會有很多問題。
NV2x的精確度只有FX10,根本沒辦法處理HILO tex,很多時候都會lost掉精確度;
但是說真的,XBOX的title還真的蠻多做反光的部份做得很棒。
ATI在R300的時候,算是把NVIDIA所提的"整套"做好;但是從NV3x開始,其實NVIDIA已經要往FP16跳了.... 這段歷史有興趣的可以自己去翻翻。
總之,以人眼的感受幅度來說,FP16是個平衡度很好的格式,如果能支援filtering、blending、Render Target、MSAA到底的話,美工掌握得好的時候,真的可以做出非常好的效果.... 這是NVIDIA的說法;至於高過這個程度的動態範圍,似乎又不是那麼必要。
所以,市場可能很快地(半年內)就會做出抉擇。