這好像是一直以來有許多人提的問題….
最近UT3 for PS3的表現不錯,所以這個問題又被拉出來講。
不過這個問題真的很有趣,所以和nukeduke兄先前有一段討論,主要就是針對GOW的一些貼圖技術來討論的,內容集中在Offset Bump(or Parallax Mapping)上。
首先是兩份相關的paper:
http://fabio.policarpo.nom.br/relief/index.htm
Relief Mapping
http://www.ati.com/developer/i3d2006/I3D2006-Tatarchuk-POM.pdf
Dynamic Parallax Occlusion Mapping with Approximate Soft Shadows
其實這個部份的問題在當初R520發表的時候就被拿出來提過了。當時ATI宣稱,G70要跑動R520的Toy Shop demo,得要有2GB的onboard記憶體,主因是因為3Dc,同時期G70支援3Dc壓縮過的材質的方法,是將之轉換成VU16 format的材質(Far Cry的時候是這樣處理)…. 這理所當然會造成材質儲存容量膨脹。
[EDIT:感謝RacingPHT兄指證C1不支援Fetch4]
所以因為上述的硬體支援format原因,RSX很難直接處理GOW所採用的材質。
注意的是,這算是總容量的延伸問題,並不是256MB+256MB雙介面造成的問題。實際上對RSX而言,目前PS3上的記憶體頻寬與PC上的G7x高階產品共具備256bit並沒有多大的差異,尤其在Cell Computing Board推出之後,已經很大幅度地證實了RSX對兩塊記憶體空間存取的效率都是足以負擔實效作業的,而 Relief Mapping 在經過幾次改版之後其實已經可以達到相當不錯的效果,不過你要叫廠商重做這些材質的功夫,顯然廠商是不願意負荷的。
UT3則應該是反過來配合PS3,在PC版上面使用Relief Mapping系統的技術,達到兩個平台相當類似的效果;但是反過來說,以MS的作風來講他們應該會願意替UT3這種關鍵title的材質重製成本。(而且Epic在UE3上也相當強調外包content的流程,也就是有人付錢的話東西就好辦)
另外RSX本身雖然有辦法比一般只有128bit記憶體介面的GPU表現得更好,但是因為有兩個不同的物理定址介面的關係,使得這種狀況並不如真正的256bit GPU般常出現。
—-
如果當初PS3採用G84的話,毫無疑問地可以吃下這些功能(後來都包進DX10了)….不過這又會造成peak performance削減;而且G84能不能直接吃下C1在360底下的負荷那又是另一回事。(雖然我傾向有辦法XD)
只是畢竟G84推出的時間離PS3上市的時間實在太遠了,討論上市時程的設定只怕也免不了事後諸葛的問題。
[EDIT]
補充一下Fielia提供的一些比較:
就目前rendering的研究來看,relief mapping在功能性上事實上比parallax mapping強大很多。
一來他能針對map起伏模擬self shadow,並且含有normal mapping,更可怕的是relief mapping本身其實足以勝任image-based rendering的相關問題。
這是因為parallax mapping只單純用coordinate offset製造表面起伏造成的視差,relief mapping則是真的做image warping,因此只要幾張圖片,就可以讓場景中出現一個看起來像是用mesh拼出來的model。
relief mapping不管是在XB360還是PS3都因為效率不如parallax+mesh,兩台都沒使用是意料中的事情,這兩台的vertex處理能力沒廢到幾千個polygon都跑不動,沒必要去用讓fragment shader壓力變超大的東西。
但是parallax mapping在PS3上很少看到,跟RSX處理parallax好壞應該無關(前面也已經證實parallax mapping對性能耗損不大);我認為需要浪費時間重寫shader,還有重建跟shader溝通的管道或許才是可能的因素。
Sample code:
http://www.shadertech.com/cgi-bin/shaders.cgi?filter=-1&page=3
也就是說,把4D+1D的東西重寫成3D+1D & 2D+2D的NV4x style是障礙了?