id_Tech5_challenges--siggraph09
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
http://s09.idav.ucdavis.edu/talks/05-JP_id_Tech_5_Challenges.pdf
?
這個(gè)作者--J.M.P. van Waveren,就是那個(gè)在quake3發(fā)布之前拯救項(xiàng)目的哥們。話說quake3的bot模式,bot總是看起來很傻,行為不像人,大家陷入困境,然后找到了這哥們,成功搞定,被carmack說成拯救大家的家伙。幾年后已經(jīng)成長成全才啦。
?
http://www.cs.rochester.edu/research/quagents/QuakeIII.pdf?
這個(gè)文章估計(jì)對ai有興趣的可以一讀,或許已經(jīng)過時(shí)了也說不定。
?
進(jìn)入正文,先看id tech5的能力,這是三平臺(tái)60幀的游戲:
?
?
開始部分是virtual texture的細(xì)節(jié)
- 使用了128k*128k texel的texture
- texture filter----bilinear with border比較好用,trilinear已經(jīng)有點(diǎn)費(fèi)了
- memory trashing-----virtual tex會(huì)需要大量的物理內(nèi)存,這個(gè)常常會(huì)出現(xiàn)不夠的情況,就需要換頁了,但是還沒換完怎么辦,就強(qiáng)制修改mipmap bias,用低精度mipmap先用著,換好頁了再切換到高精度,算是一種應(yīng)急處理方式,很有引擎的dynamic loading也會(huì)這么干。也可以使用trilinear filter來做到比較平滑的過度,而不是一個(gè)popup,這個(gè)pop up可是巨有害的東西,會(huì)很容易被玩家捕捉到,盡量避免啊。
- tex load 分析----分析出virtual tex哪個(gè)部分是需要load進(jìn)來的,每個(gè)virtual tex使用四叉樹組織起來的,分析的結(jié)果會(huì)產(chǎn)生一個(gè)寬度優(yōu)先的四叉樹訪問/load 請求。
- transcode----這步比較暈,貌似是讀取高度壓縮的dct格式的貼圖,解壓成顯卡直接可用的dxt格式。
- virtual texturing pipeline:
- 紫色部分是可以并行的。
?
?
Job部分
?
id tech5引擎里這些東西要處理的,也是想并行處理的
- animation
- collision detection
- obstacle avoidance
- transparency sort
- virtual tex
- misc processing
- rendering
- audio
而且面向多平臺(tái),多核的pc,3核六線程的xbox360,2硬件線程+7spu的ps3,所以要對這些并行資源進(jìn)行抽象化。
就生成了job系統(tǒng),job系統(tǒng)核心理念是:
- 對線程抽象化,變成一種像memory的一種資源
- job scheduler申請到這些資源后,開始接受job,并在這些線程上執(zhí)行。
早起多線程會(huì)像UE3那樣,人為切成main thread,render thread然后每個(gè)線程里在手動(dòng)弄出一堆小線程的任務(wù)來做。
這就像一種靜態(tài)數(shù)組。
?
job系統(tǒng)更像動(dòng)態(tài)數(shù)組std::vector,使用正確的話性能,靈活性,跨平臺(tái)性都非常好。
?
這個(gè)job系統(tǒng)和spu job太像了,可以直接參考學(xué)習(xí)。
?
一個(gè)比較棘手的東西就是sync,sync意味著等待->性能損失。
文中盡可能的要求對job的output晚一幀使用來避免sync。
這個(gè)。。。有點(diǎn)太理想化,實(shí)際應(yīng)用中原則就是盡可能避免sync就好,晚一幀是最理想的,實(shí)在不行也只能等待了。
?
接下來job還要去支持cuda,larabbee等,很贊。
但是實(shí)際工作中我發(fā)現(xiàn)job系統(tǒng)的思想是好的,在硬件多核發(fā)展以及console平臺(tái)差異性的趨勢下,開發(fā)者趨向job系統(tǒng)幾乎是必然。
但是也是有很多弱點(diǎn),像很難debug,寫出好的job系統(tǒng)以及良好的使用(穩(wěn)定而且高效)都仍舊需要開發(fā)者付出很多的努力。
原文鏈接: http://blog.csdn.net/ccanan/article/details/5126174
轉(zhuǎn)載于:https://my.oschina.net/dtec/blog/44499
總結(jié)
以上是生活随笔為你收集整理的id_Tech5_challenges--siggraph09的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 【Vegas原创】获取远程数据库到本地
- 下一篇: 我犯了技术狂热症,应该做减法
