日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

id_Tech5_challenges--siggraph09

發布時間:2025/3/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 id_Tech5_challenges--siggraph09 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

http://s09.idav.ucdavis.edu/talks/05-JP_id_Tech_5_Challenges.pdf

?

這個作者--J.M.P. van Waveren,就是那個在quake3發布之前拯救項目的哥們。話說quake3的bot模式,bot總是看起來很傻,行為不像人,大家陷入困境,然后找到了這哥們,成功搞定,被carmack說成拯救大家的家伙。幾年后已經成長成全才啦。

?

http://www.cs.rochester.edu/research/quagents/QuakeIII.pdf?

這個文章估計對ai有興趣的可以一讀,或許已經過時了也說不定。

?

進入正文,先看id tech5的能力,這是三平臺60幀的游戲:

?


?

開始部分是virtual texture的細節

  • 使用了128k*128k texel的texture
  • texture filter----bilinear with border比較好用,trilinear已經有點費了
  • memory trashing-----virtual tex會需要大量的物理內存,這個常常會出現不夠的情況,就需要換頁了,但是還沒換完怎么辦,就強制修改mipmap bias,用低精度mipmap先用著,換好頁了再切換到高精度,算是一種應急處理方式,很有引擎的dynamic loading也會這么干。也可以使用trilinear filter來做到比較平滑的過度,而不是一個popup,這個pop up可是巨有害的東西,會很容易被玩家捕捉到,盡量避免啊。
  • tex load 分析----分析出virtual tex哪個部分是需要load進來的,每個virtual tex使用四叉樹組織起來的,分析的結果會產生一個寬度優先的四叉樹訪問/load 請求。
  • transcode----這步比較暈,貌似是讀取高度壓縮的dct格式的貼圖,解壓成顯卡直接可用的dxt格式。
  • virtual texturing pipeline:
  • 紫色部分是可以并行的。

?


?

Job部分

?

id tech5引擎里這些東西要處理的,也是想并行處理的

  • animation
  • collision detection
  • obstacle avoidance
  • transparency sort
  • virtual tex
  • misc processing
  • rendering
  • audio

而且面向多平臺,多核的pc,3核六線程的xbox360,2硬件線程+7spu的ps3,所以要對這些并行資源進行抽象化。

就生成了job系統,job系統核心理念是:

  • 對線程抽象化,變成一種像memory的一種資源
  • job scheduler申請到這些資源后,開始接受job,并在這些線程上執行。

早起多線程會像UE3那樣,人為切成main thread,render thread然后每個線程里在手動弄出一堆小線程的任務來做。

這就像一種靜態數組。

?

job系統更像動態數組std::vector,使用正確的話性能,靈活性,跨平臺性都非常好。

?

這個job系統和spu job太像了,可以直接參考學習。

?

一個比較棘手的東西就是sync,sync意味著等待->性能損失。

文中盡可能的要求對job的output晚一幀使用來避免sync。

這個。。。有點太理想化,實際應用中原則就是盡可能避免sync就好,晚一幀是最理想的,實在不行也只能等待了。

?

接下來job還要去支持cuda,larabbee等,很贊。

但是實際工作中我發現job系統的思想是好的,在硬件多核發展以及console平臺差異性的趨勢下,開發者趨向job系統幾乎是必然。

但是也是有很多弱點,像很難debug,寫出好的job系統以及良好的使用(穩定而且高效)都仍舊需要開發者付出很多的努力。


原文鏈接: http://blog.csdn.net/ccanan/article/details/5126174

轉載于:https://my.oschina.net/dtec/blog/44499

總結

以上是生活随笔為你收集整理的id_Tech5_challenges--siggraph09的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。