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

實時陰影繪制技術研究

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>
            av成人天堂| 欧美国产精品专区| 亚洲黄色有码视频| 久久女同互慰一区二区三区| 亚洲国产日韩欧美一区二区三区| 欧美日韩国产成人在线91| 亚洲国产精品久久久久婷婷老年| 伊人久久综合| 国产伦理精品不卡| 久久婷婷麻豆| 亚欧成人精品| 午夜精品久久久久久久99热浪潮 | 亚洲欧美综合国产精品一区| 欧美在线日韩| 在线视频日韩精品| 亚洲狠狠丁香婷婷综合久久久| 国产精品久久久久久户外露出 | 国产精品久久久久久久免费软件| 一本色道久久综合| 久久精品99国产精品日本| 午夜精品av| 一区二区高清视频在线观看| 美女主播精品视频一二三四| 国产精品一二一区| 黄色影院成人| 亚洲一卡久久| 久久av最新网址| 牛人盗摄一区二区三区视频| 老司机精品福利视频| 蜜臀91精品一区二区三区| 亚洲第一网站| 欧美精品18+| 国产精品va| 狠狠色综合一区二区| 亚洲精品一二三| 亚洲综合激情| 欧美高清视频一二三区| 亚洲视频在线一区| 久久天天躁狠狠躁夜夜av| 美女黄色成人网| 欧美福利精品| 国产精品乱码一区二三区小蝌蚪| 亚洲午夜久久久久久久久电影院| 久久综合狠狠| 亚洲色在线视频| 欧美精品在欧美一区二区少妇| 国产精品一区视频网站| 99视频精品免费观看| 亚洲视频国产视频| 国产精品video| 久久久久国产一区二区三区四区| 一区二区三区欧美在线| 美女日韩在线中文字幕| 国产女人水真多18毛片18精品视频| 欧美在线亚洲综合一区| 亚洲免费在线| 欧美顶级大胆免费视频| 久久亚洲春色中文字幕| 国产欧美日韩麻豆91| 亚洲一区二区不卡免费| 久久久噜久噜久久综合| 日韩视频不卡中文| 亚洲精品一区二区三区四区高清| 久久精品国产亚洲aⅴ| 国产精品播放| 亚洲欧美综合网| 欧美日韩综合精品| 久久久久一区二区三区| 欧美激情精品久久久久久大尺度| 99av国产精品欲麻豆| 一本一本a久久| 一区二区三区久久久| 久久裸体艺术| 在线一区免费观看| 欧美成人免费va影院高清| 99re66热这里只有精品4| 久久精品日韩欧美| 久久精品夜色噜噜亚洲a∨| 国产在线播放一区二区三区| 女同一区二区| 国产精品久久久久高潮| 一区二区三区日韩精品| 亚洲欧洲综合另类在线| 日韩一级精品| 一区在线视频| 欧美一区二区三区四区在线观看地址| 一区二区免费在线观看| 欧美在线播放| 欧美亚洲一级片| 欧美精品在线极品| 欧美91精品| 亚洲性av在线| 欧美99在线视频观看| 国产精品白丝av嫩草影院| 欧美在线视频a| 国产精品自拍小视频| 亚洲激情视频在线播放| 国产综合第一页| 中文精品在线| 亚洲精品偷拍| 午夜亚洲性色福利视频| 国产精品系列在线播放| 午夜精品久久久久久99热| 欧美亚洲综合久久| 亚洲男女毛片无遮挡| 国产精品久久久久久久久免费| 99精品久久免费看蜜臀剧情介绍| 一本到高清视频免费精品| 欧美激情1区2区| 亚洲裸体俱乐部裸体舞表演av| 亚洲精品免费看| 一区二区av| 亚洲国产欧美一区二区三区久久 | 亚洲日本中文| 亚洲欧美成人一区二区三区| 国产欧美精品一区二区色综合| 亚洲欧美视频在线| 亚洲欧美一区二区三区极速播放| 国产亚洲欧美日韩美女| 欧美日本三级| 欧美11—12娇小xxxx| 欧美电影免费| 亚洲看片一区| 亚洲电影免费观看高清完整版在线观看 | 亚洲天堂免费观看| 国产视频欧美| 国产视频久久久久久久| 国产日韩欧美视频在线| 国产在线视频欧美| 国产视频在线观看一区| 在线观看国产欧美| 亚洲激情校园春色| 亚洲乱码一区二区| 亚洲天堂免费观看| 久久九九热re6这里有精品| 久久久精品一品道一区| 久久亚洲欧美国产精品乐播| 快播亚洲色图| 亚洲激情偷拍| 亚洲综合国产激情另类一区| 亚洲在线一区二区三区| 久久精品国亚洲| 欧美日韩视频在线第一区| 欧美三日本三级少妇三2023| 国产日韩欧美一区二区三区在线观看| 国产精品一区毛片| 91久久精品国产91久久性色| 亚洲深夜激情| 牛牛精品成人免费视频| 亚洲一区二区三区四区视频| 久久国产99| 国产精品久久久久久久久免费樱桃| 老牛影视一区二区三区| 亚洲啪啪91| 国产精品久久久久久五月尺| 一区二区三区亚洲| 国产精品无人区| 美女任你摸久久| 国产精品久久二区| 欧美国产日韩精品免费观看| 国产精品美女久久久久久免费 | 久久九九99视频| 日韩一级片网址| 久久久久www| 欧美一区亚洲一区| 欧美性色aⅴ视频一区日韩精品| 久久久久这里只有精品| 免费av成人在线| 国产亚洲精品成人av久久ww| 亚洲久久视频| 最近中文字幕日韩精品| 久久精品视频导航| 欧美中文在线视频| 欧美一级一区| 国产欧美一区在线| 国产精品a级| 久久午夜色播影院免费高清| 欧美凹凸一区二区三区视频| 亚洲一区中文字幕在线观看| 亚洲男人第一网站| 一本色道久久综合狠狠躁篇的优点 | 黑人巨大精品欧美一区二区| 欧美激情小视频| 国产一区二区三区在线免费观看| 亚洲大胆视频| 亚洲国产精品福利| 欧美在线观看网址综合| 亚洲视频精品| 欧美精品色网| 亚洲欧美成人在线| 欧美久久久久久久| 亚洲大胆女人| 99精品国产一区二区青青牛奶| 久久精品国语| 亚洲视频欧洲视频| 国产精品久久久久久久久免费樱桃| 亚洲一区二区三区免费观看 | 欧美成人久久| 米奇777超碰欧美日韩亚洲| 国产精品嫩草久久久久|