CryENGINE 3: reaching the speed of light

來源:互聯網
上載者:User

http://advances.realtimerendering.com/s2010/Kaplanyan-CryEngine3(SIGGRAPH%202010%20Advanced%20RealTime%20Rendering%20Course).pdf

siggraph10的paper。

總體看下來,crytek在處理很多我們還沒發掘到的問題,看著有種無力感。

另外感覺crytek在逐漸從engineer升級到scientist,說是大師級也不為過。

 

 

texture compress improvement

 

看著就比較煩,

  • 一頓搞---做的時候用16bit的texture,然後histogram normalize什麼的,然後出來的效果得放大了才能看出些許優勢。
  • srgb space的texture

normalmap用3dc格式壓縮---大家都這麼幹。

但是crytek又要改進演算法,還是在很少的情況(很近很精細)下才會有不同可以看出來。

在看一些類似車的表面的時候,平滑中帶著些許糙面的情況,16bit的normal優勢很大。

 

 

 

occlusion culling

console上是把上一幀的zbuffer downsample幾個mipmap,然後用hi-z的演算法在cpu端針對obj的aabb做culling----省了大量的cpu和gpu的計算。

pc上是使用比較傳統的手工occluder,因為cpu-gpu頻寬太低,沒法搞zbuffer的傳輸。

 

 

ssao

輕描淡寫的一頁,裡面充滿了名詞,好幾個不懂

  • encode depth into 2 16bit channel
  • quater buffer
  • bilateral blur fetch----囧
  • Volumetric
    Obscurrance with 4! samples----囧
  • reprojection 

最後是720p情況下:360 1.1ms, ps3 1.3ms,orz!

 

 

deferred pipeline

 

lighting model:

•Indirect
lighting–Ambient
term–Tagged
ambient areas–Local
cubemaps–Local
deferred lights–Diffuse
Indirect Lighting from LPVs–SSAO•Direct
lighting–All
direct light sources, with and without shadows使用的是light prepass, format:
  • 24bit depth, 8bit stencil----各種mask資訊的儲存
  • 24bit normal, 8bit glossness

 

 

normal這一塊覺得巨給力。

用24bit存normalized normal會精度很差:

其實24bit真的已經很多了,可以儲存相當大的資訊量,足夠了。

之所以精度不夠根本原因是我們存的是normalized normal,這樣一來,只用了%1.73的理論儲存能力。

crytek給了演算法利用到了%98.2,因此也獲得了非常高的精度:

演算法和代碼文中都給了,大致思路就是根據normal的方向取一個最接近的方向來存(因為最終存起來的是離散的定點數),存的這個不是normalized的。

然後在lighting的時候只要再normalize一下就可以了。

 

的確相當巧妙,這種高效利用儲存的空間的思想真是太太太給力了。

 

 

 

後面一部分將phong brdf,這個目前的lighting model和這個在玩家看起來沒有明顯差距。

說實話關於這裡,halo3在社區裡畫面品質和gears of war相提並論真是讓我很不爽,甚至說gears更好。

halo3在理論上明顯高出一截的。

需要硬體繼續發展,到了更具區別能力的shading model的時候才行了。

 

hdr

力求在同樣頻寬上實現hdr效果,ps3上rgbm,360上用r11g11b10的格式。

最後tonemapping的時候有exponential tone mapping和film tone mapping,兩者各有千秋吧。

 

clip volume

不用shadow的話,lighting容易出現bleeding的情況,解決辦法是放置一個clip volume用stencil mask來解決。

 

anti aliasing

crytek上來說msaa和mlaa都沒法解決畫面在變化時候的閃爍問題。

尤其是在很細的地方,欄杆,草這些東西。

也就是說關注點已經不是靜態畫面,而是動態時候的畫質問題。

這個我稍微抱有懷疑態度,找了些mlaa的video,覺得還是沒有太大問題:

http://www.desivideonetwork.com/view/tji5w7378/incredible-killzone-3-mlaa-incorporated-gameplay-and-graphics-best-looking-game-ever-made/

還有戰神的一些video。

 

crytek的解決方案是繼續用reverse projection,記錄變化的地方,然後對這些地方blur,來降低camera移動時候造成的flicker。

 

靜態畫面上是edge aa.

最後看credit:

•Vaclav
Kyba from R&D for implementation of
temporal AA

•Carsten
Dachsbacher for suggestions on the talk•Holger
Gruen for invaluable help on effects•Ivan
Nevraev and David Cook for consulting on Xbox 360 GPU•Yury
Uralsky and Miguel Sainz for consulting•Phil
Scott, Sebastien Domine, Kumar Iyer and the whole Parallel Nsight team•Tiago
Sousa, Sergey Sokov and the whole Crytek R&D department這就是大師級crytek和其他工作室根本區別所在。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.