青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

實時陰影繪制技術研究

C++博客 首頁 新隨筆 聯系 聚合 管理
  48 Posts :: 20 Stories :: 57 Comments :: 0 Trackbacks
脫去Doom3的美麗外衣 Doom3游戲引擎解析
2004-11-24    PLAY!LAB·游戲引擎研究部    《家用電腦與游戲》雜志2004年10月號    點擊: 1762
實時陰影的威力

  Shadow Volume!
  打從Doom3資料被公布的第一天起,人們就開始關注這個詞匯了。這個Shadow Volume究竟是什么?注意了,這就是和Doom3那幾可亂真的陰影技術相關的重要名詞——“陰影錐”!比較酷一點的說法叫做“陰影容積”,不過反而更難以理解了^^

09-ShadowVolume
  如圖9這種解釋陰影錐的圖片已經太多太多了。很多人認為這是一種跨時代的技術,其實早在Quake3時代,這種陰影技術就已經開始使用了。在Quake3中有3種陰影:
  第一種是人物腳下一個黑斑,這個其實不能算實時陰影。
  第二種是平面陰影(Planar Shadow),它把物體映射在一個平面上,然后很據光線數據把這個陰影“貼”在它應該在的表面上。這種方法在環境簡單時非常不錯,比如球場上的球員陰影。但其缺點在于,被映射的物體形狀越復雜,計算效率越低,且不能把陰影映射在曲面上。
  第三種就是Doom3所采用的體積陰影技術,當時因為計算能力限制,只能簡單運用在人物身上,外加場景復雜度不夠,所以并未產生驚人效果。

  隨著硬件和游戲引擎的飛速發展,體積陰影技術終于在Doom3引擎上大規模應用,我們就來看看體積陰影技術究竟有什么秘密:
  名詞解釋:體積陰影,測定投影空間式陰影,Volumetric Shadow。該算法最早于1977年提出,其基本原理是根據光源和遮蔽物的位置關系計算出場景中會產生陰影的區域,即陰影錐。然后對所有物體進行檢測,以確定其會不會受陰影的影響。這個方法的要點在于,它不是利用“把物體投影到環境表面”的方式來產生陰影,而是去找出場景中有哪些像素是在陰影中。


  如圖10,我們可以做個實驗:拿一個小球,正對光源(比如一盞臺燈)。光線是向四面八方直線傳播的,既然小球不透光,那么小球必然會在擋住朝小球方向的光線,在小球的逆光面形成一個錐形的無光線區域,也就是陰影錐。很明顯的,只要任何物體或物體的部分位于這個區域以內,就會處在陰影之中。
  現在我們深入一些,假設有一個已經繪制完成的3D場景,因為使用Z軸緩沖(Z buffer,用以表現場景的深度)的關系,對每一個像素而言都有一個Z值,即表示該像素和觀察者的距離的值。假設現在有一個三角形物體,把陰影投射到這個場景中,并畫出這個物體的陰影錐。因為物體是一個三角形,所以它的陰影錐也是一個三角錐。那么,要如何知道場景中有哪些像素會受這個陰影錐的影響,從而處在陰影內呢?
  其實方法很簡單:想象許多射線,由觀察者射向每個像素。如果射線和陰影錐完全沒有交集,它所對應的像素當然就不會受陰影錐影響,就不會處于陰影中。不過,即使是射線和陰影錐有交集,并不一定表示該射線對應的像素就一定受陰影錐影響,因為射線可能會穿越陰影錐。所以,只有在射線射入陰影錐之后,在離開陰影錐之前就遇到其對應的像素時,才表示這個像素和受陰影錐影響,處于陰影之中。
  我們以圖11來講解這幾種不同的情形:

11-陰影錐分析
  圖中的(1)和(2)都是面對觀察者的面,它們所涵蓋的像素,是“射線會射入陰影錐”的像素。而(3)是背對觀察者的面,它所涵蓋的像素是“射線會離開陰影錐”的像素。所以,會受陰影錐影響,處于陰影中的像素,就是(1)+(2)-(3)的那些像素,也就是陰影所在的位置。
  要怎么在3D繪圖中,得到(1)+(2)- (3)的結果呢?這就需要OpenGL的模板緩沖區(Stencil Buffer)。OpenGL的模板緩沖區可以讓顯卡進行“加1”和“減1”的計算。所以,只要把模板緩沖區設定成在繪制(1)和(2)的面時,讓模板緩沖區加1;而在繪制(3)的面時,讓模板緩沖區減1。這樣一來,在繪制完(1)至(3)時,那些模板值不為0的像素就是陰影了。最后,把所有模板不為0的像素亮度降低,就可以達到繪制陰影的效果。
  體積陰影最主要的缺點是在于它過于復雜。要做出有效率的“陰影錐”,需要對物體做相當麻煩的處理,基本上就是要找出物體在某個方向的 “外緣”(Silhouette)。這需要花費相當的顯卡核心處理時間。另外,為所有的物體繪制出陰影錐,需要耗費相當大的填充率、顯存帶寬甚至是CPU 占用率——這顯然不適合需要一定幀數率的Doom3。

  那么,我們就要看看Doom3是怎樣加速陰影生成的:
  沒錯,又是Vertex Shader)!頂點引擎的可編程特性可以讓生成Shadow Volume的工作由顯卡核心完成,這樣可以大幅度減輕CPU的運算負擔。與此同時,借助頂點引擎的寄存器組,連數據的來回傳輸都省略了,這樣就可以帶來驚人的速度提升。
  此外還有Ultra Shadow技術。它是NVIDIA在NV35以后的GPU中增加的功能,關于此技術對提升Doom3運行效能的作用在本雜志今年第6期GeForce 6顯卡介紹文章中有詳細介紹,這里就不復述了。不過,Doom3默認并未開啟Ultra Shadow技術,我們可以在Doom3安裝目錄下的Doomconfig文件中加入“set r_usedepthboundstest 1”語句來開啟Doom3對Ultra Shadow技術的支持。不過,使用NV35以下GPU的用戶就不要做無意義的嘗試了。
  值得一提的是,Ultra Shadow技術是開放的,所以有可能會有其它廠商采用。當然,這其中很多優化特性依靠軟件也可以執行,僅僅速度的提升不如GPU直接參于那么明顯罷了。

12-沒有體積陰影的架子

13-打開體積陰影的架子
原文地址:http://www.playgamer.com/article.php?articleid=453&pagenum=2
posted on 2005-12-23 00:21 苦行僧 閱讀(850) 評論(0)  編輯 收藏 引用 所屬分類: 轉載
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲三级免费电影| 久久精品国产视频| 久久国产精品99国产精| 一区二区三区鲁丝不卡| a4yy欧美一区二区三区| 亚洲图片自拍偷拍| 亚洲主播在线播放| 久久xxxx| 欧美国产日韩精品免费观看| 亚洲日本成人女熟在线观看| 亚洲精品国产精品国自产在线| 亚洲第一精品福利| 一区二区三区视频在线播放| 午夜亚洲视频| 蜜臀a∨国产成人精品 | 欧美日韩三区| 国产精品一二一区| 伊人久久亚洲热| 日韩视频一区二区| 欧美亚洲一区二区在线| 免费欧美在线视频| 亚洲精品一二三| 欧美在线视频一区| 欧美激情久久久久| 国内精品免费在线观看| 日韩午夜剧场| 久久久久久久一区二区| 亚洲第一精品影视| 亚洲欧美日韩中文视频| 欧美国产视频日韩| 韩国精品主播一区二区在线观看| aaa亚洲精品一二三区| 久久精品国产一区二区三区| 亚洲美女淫视频| 久久精品人人做人人爽| 国产精品qvod| 亚洲美女电影在线| 久热re这里精品视频在线6| 一本色道久久88亚洲综合88| 久热精品视频在线免费观看| 国产精品久久久久久五月尺| 亚洲欧洲一区二区在线观看| 久久久久国产成人精品亚洲午夜| 日韩系列在线| 欧美精品乱人伦久久久久久| 精品不卡在线| 久久成人免费| 亚洲综合精品四区| 国产精品yjizz| 在线亚洲成人| 亚洲精品日韩在线观看| 久热re这里精品视频在线6| 国产午夜精品视频| 艳妇臀荡乳欲伦亚洲一区| 夜夜嗨av一区二区三区中文字幕| 欧美在线视频不卡| 国产老女人精品毛片久久| 一区二区三区视频在线| 亚洲国产精品一区二区www| 久久蜜臀精品av| 精品成人在线观看| 久久在线视频| 免费不卡中文字幕视频| 在线日韩视频| 美女精品自拍一二三四| 久久天堂国产精品| 在线精品国产欧美| 欧美韩国日本一区| 欧美激情在线| 亚洲视频在线播放| 亚洲特级毛片| 国产欧美大片| 久久综合网hezyo| 噜噜爱69成人精品| 亚洲乱码国产乱码精品精可以看 | 亚洲成在线观看| 欧美成人三级在线| 欧美激情1区2区3区| 亚洲天堂第二页| 亚洲午夜av在线| 国产一区二区观看| 欧美成人免费观看| 欧美日韩国产小视频| 午夜精品影院| 久久精品成人一区二区三区| 亚洲国产成人在线| 亚洲毛片在线免费观看| 国产精品美女久久久浪潮软件| 久久精品欧洲| 欧美成熟视频| 亚洲欧美日韩国产中文在线| 欧美一区中文字幕| 日韩视频在线一区二区| 亚洲一区二区三区精品在线| 韩国av一区二区| 亚洲清纯自拍| 国产婷婷色一区二区三区| 欧美成人国产va精品日本一级| 欧美韩日一区二区| 久久成人精品一区二区三区| 欧美经典一区二区| 欧美在线观看视频在线| 欧美福利电影网| 新片速递亚洲合集欧美合集| 久久免费视频网站| 亚洲永久免费av| 久久久综合网站| 亚洲一区二区视频在线观看| 久久国产乱子精品免费女| 一区二区三区久久网| 亚洲综合成人在线| 鲁大师影院一区二区三区| 日韩亚洲国产精品| 精品动漫av| 亚洲欧美bt| 这里只有视频精品| 老司机67194精品线观看| 欧美一区二区三区在线免费观看| 久久综合九色综合网站| 午夜精品在线观看| 欧美日韩国内自拍| 男女激情视频一区| 国产专区精品视频| 亚洲欧美不卡| 亚洲天天影视| 欧美片在线观看| 亚洲电影av在线| 一区二区三区在线看| 午夜亚洲一区| 午夜日韩电影| 国产精品久久久对白| 亚洲精品美女在线观看| 亚洲狠狠丁香婷婷综合久久久| 欧美在线观看一区二区| 久久国产精品网站| 国产日韩精品一区二区| 亚洲永久免费av| 亚洲少妇自拍| 欧美色另类天堂2015| 亚洲另类春色国产| 正在播放日韩| 欧美午夜精品一区| 亚洲视频一区二区免费在线观看| 亚洲一区二区欧美日韩| 欧美午夜三级| 亚洲免费视频观看| 久久精品国产一区二区三| 国产午夜精品视频| 久久激情视频免费观看| 久久尤物视频| 亚洲人永久免费| 欧美区视频在线观看| 99re热这里只有精品视频| 亚洲视频自拍偷拍| 国产精品综合久久久| 久久xxxx精品视频| 亚洲第一区色| 亚洲一区二区免费看| 国产视频在线观看一区二区三区| 久久激情婷婷| 亚洲美女黄网| 先锋影音一区二区三区| 国产最新精品精品你懂的| 麻豆国产精品一区二区三区 | 男人的天堂亚洲在线| 日韩一级在线观看| 国产日韩精品综合网站| 久久青青草原一区二区| 亚洲青色在线| 久久精品二区| 亚洲精品中文字幕有码专区| 国产精品久久国产精麻豆99网站| 久久精品72免费观看| 日韩视频一区二区三区在线播放免费观看 | 国产欧美精品一区二区三区介绍| 国产精品捆绑调教| 亚洲国产成人精品女人久久久 | 欧美在线观看视频一区二区| 亚洲电影观看| 国产精品久久久久久久久久久久久久| 亚洲欧美日韩一区二区在线| 亚洲黄色片网站| 久久国产福利国产秒拍| 亚洲裸体俱乐部裸体舞表演av| 国产精品乱码久久久久久| 久久久青草婷婷精品综合日韩| 亚洲精品一二三区| 欧美成人午夜剧场免费观看| 亚洲综合色婷婷| 最新国产の精品合集bt伙计| 国产欧美日韩免费| 欧美日韩91| 毛片一区二区三区| 午夜视频在线观看一区| 在线亚洲欧美| 亚洲美女在线国产| 91久久在线播放| 欧美成人黑人xx视频免费观看| 欧美在线free| 亚洲综合视频1区|