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

歲月流轉,往昔空明

C++博客 首頁 新隨筆 聯系 聚合 管理
  118 Posts :: 3 Stories :: 413 Comments :: 0 Trackbacks
最近開始抽空在看GPU Gems 3了。本來想挑幾篇全文翻譯,但是無奈自己英語水平薄弱,同時最近老板逼得緊,也沒有那么多時間,于是便準備以導讀的形式,將文章的主干部分翻譯出來,幫助英文不好的筒子們。
導讀也是我自己讀書的總結。文章的核心內容一定會提及.圖和源碼,通常我會標注上對應的圖書上的figure和list,各位自行參考?;揪S持原文的篇章段落,但是一般不會逐字句的考究。
至于能有多少篇,我倒是不能保證。不過我所用的電子版是那個26M的chm,我讀的時候會把它翻成PDF并加注,如果有筒子需要我注釋后的pdf,可以與我聯系:

mail: wuye9036   _AAAAATTTTT_ google _dotdotdotdotdot_com

--------------------------------------------------------------------------------

Chapter I 運用GPU構造復雜的過程化地形
1.1 Introduction
過程化地形的應用已經有不少的歷史了,Game Programming Gems 2上就已經有了不少成熟的過程化地形的方法,比方說隨機斷層、基于噪聲的、基于分形理論的、中點分割加擾動的。
不過這些算法在現代硬件上都時有缺陷的,特別是針對規模很大的地形,要么只能在CPU上實時生成,要么就得預存儲起來,但是不管怎么說都面臨著很大的資源開銷;其次這些算法都是只能生成有些起伏的平面,沒辦法表現山洞、巖石凸角一類的3D特征。本文運用DX10的Geometry Shader與Stream Output,彌補了上述兩個缺陷。

1.2 移動立方體與密度函數
要解決3D的地形特征,首先要解決3D地形特征的表達問題。文中將空間劃分為多個Blocks,每個Block代表了世界坐標系中1*1*1大小的空間。每個Block由一個3D紋理來表達。由于使用了過程化的方法,每個Block可以在運行的時候動態生成,這樣只需要保留那些能看得見的blocks,從而解決了存儲問題。
概念上,一個3D的地形可以由一個密度函數來表達。對于每個空間中的點(x, y, z),都有唯一對應的密度值。我們假設,對于任意一個空間中的點,如果點在地形內部/巖石內部當且僅當點上的密度值大于0。那么小于0的點,自然就在地形之外,如在空氣中,水中等等。而巖石表面上的點密度剛好等于0。
那么自然,這些巖石表面上密度值等于0的點,就是我們要繪制的“表面”。
在將空間劃分為Block后,還要將每個block進一步細分為多個voxel(體素)。我們假定體素內密度變化時連續的。那么很顯然,如果一個體素的頂點上密度有正有負,那么必然里面會有一個(也有可能是多個)0值面。問題就轉化為,如何根據體素各個頂點的密度值,求出這個體素內的0值面。如果再把這個假設限定的嚴格一點,如果體素內密度變化是線性的,那么這些面可以由0-5個三角形來表示;求得這些三角形的方法,被稱為Marching Cube算法。
很顯然,有多少個三角形,每個三角形的頂點落在哪條邊上,是由八個頂點的密度的正負值所決定的,而值的相對大小則決定了三角形的頂點在邊上靠近那個頂點。那么也就是說,一個體素內0值面的分布共有2^8中情況。如果頂點密度為負,那么標記為0,頂點密度為正則標記為1,則八個頂點的情況可以由一個Byte來表示。

圖1-3

如果這個字節的值為0或者為255,那么說明所有的頂點都為正或為負,那么說明體素中并沒有地表面。Martin Frank為剩下的254中情況建立了一個查找表。其中基本的情形有14種,其余的均可由這些基本情況的對稱或旋轉求得。

圖1-4

當確定了三角形的三個頂點分布于哪些邊上后,便可用插值的方法求出所在位置。頂點將位于0值點處。例如,一條邊AB上有一個0值點P,如果A的密度0.3,B的密度-0.1,那么PB的長度是PA長度的三倍。

1.2.2 查找表
上文已經提到了如何通過體素角點的密度值,就會知道會生成哪些多邊形;這些多邊形的頂點落在哪些邊上。
接下來,我們將用討論這些理論如何在GPU上實現。
首先我們建立一張查找表
int case_to_numpolys[256];
其中每種情況能產生多少個三角形。
第二張查找表,
int3 edge_connect_list[256][5];
這張表保存了每種情況對應的5個三角形。并且我們將一個體素中的12條邊按照0-11編號(圖 1-5),則查找返回的返回的int3指出了,每個三角形的三個頂點分別落在哪條邊上。

圖 1-5 Case 193 的0值多邊形情況

下面的例子很好的說明了這一點。
我們以case 193為例。193總共有3個三角形,那么case_to_numploys[193] = 3,其次,edge_connect_list[193][]返回這樣的結果:

int3 edge_connect_list[193][0]: 11 5 10
int3 edge_connect_list[193][1]: 11 7 5
int3 edge_connect_list[193][2]: 8 3 0
int3 edge_connect_list[193][3]: -1 -1 -1
int3 edge_connect_list[193][4]: -1 -1 -1

Geometry Shader在查找了這兩張表的信息之后,并計算出頂點在邊上的具體位置,便會返回3個多邊形列表所需要的9個頂點。由于創建Marching Cubes查找表需要很多的計算量,因此建議預先計算好并在運行前載入。該表在光盤上可以找到。

posted on 2008-05-20 20:38 空明流轉 閱讀(2180) 評論(2)  編輯 收藏 引用

評論

# re: 開個新的系列:GPU Gems 3 導讀 + Chapter I 運用GPU構造復雜的過程化地形 導讀(上) 2008-05-21 12:39 亨德列克
老吳,你太牛了  回復  更多評論
  

# re: 開個新的系列:GPU Gems 3 導讀 + Chapter I 運用GPU構造復雜的過程化地形 導讀(上) 2008-05-21 14:41 空明流轉
@亨德列克
日。。。你他喵的又來風涼了。。。  回復  更多評論
  


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品一区久久久| 欧美激情在线免费观看| 在线观看91精品国产入口| 国产精品视频1区| 国产精品一区免费视频| 国产日韩在线一区| 一区免费视频| 亚洲精华国产欧美| 99re国产精品| 欧美一区二区三区久久精品茉莉花| 午夜精品久久久久久久99水蜜桃| 久久精品国产精品亚洲| 久久综合狠狠综合久久综青草| 美女免费视频一区| 亚洲精品少妇| 亚洲欧美在线视频观看| 久久午夜精品一区二区| 欧美日韩精品一区二区天天拍小说 | 亚洲国产精品成人精品| 亚洲黄页一区| 性做久久久久久久免费看| 免费不卡欧美自拍视频| 国产精品日韩精品欧美精品| 亚洲国产精品123| 亚洲欧美电影在线观看| 欧美sm重口味系列视频在线观看| 一本色道久久综合| 性高湖久久久久久久久| 性做久久久久久免费观看欧美| 亚洲激情视频网| 性欧美大战久久久久久久免费观看| 久久亚洲高清| 一本色道久久综合狠狠躁篇的优点| 欧美一区二区三区在线视频| 欧美另类一区二区三区| 一区二区三区在线免费播放| 亚洲欧美激情诱惑| 亚洲精品国产精品国产自| 久久精品中文字幕免费mv| 国产精品美女主播| 一本一本久久| 欧美高清一区| 久久婷婷国产综合精品青草| 国产欧美日韩综合一区在线观看| 亚洲天堂第二页| 欧美韩日视频| 久久亚洲综合色| 激情成人综合| 久久久久久网站| 亚洲欧美中文日韩在线| 欧美日韩在线观看一区二区三区| 最新高清无码专区| 免费在线亚洲欧美| 性欧美video另类hd性玩具| 欧美午夜在线视频| 亚洲夜间福利| 一个色综合导航| 欧美日韩综合视频| 一区二区三区视频在线观看| 亚洲精品中文字幕女同| 欧美精品免费看| 99国产一区| 亚洲精品一线二线三线无人区| 美女精品在线| 亚洲精品乱码久久久久久黑人| 欧美www视频在线观看| 久久久久久久久伊人| 国产亚洲免费的视频看| 久久久国际精品| 欧美在现视频| 亚洲电影免费观看高清完整版| 久久久久在线| 久色婷婷小香蕉久久| 亚洲日本精品国产第一区| 亚洲国产一区二区三区a毛片| 免费h精品视频在线播放| 久久青草欧美一区二区三区| 永久555www成人免费| 欧美韩日一区| 欧美视频在线观看视频极品| 午夜精品久久久久久久久久久| 亚洲欧美国产制服动漫| 国产自产在线视频一区| 欧美韩日一区二区| 欧美日韩亚洲一区二区三区在线 | 另类图片综合电影| 老司机亚洲精品| 亚洲精品久久久一区二区三区| 亚洲激情一区| 国产精品视频99| 蜜桃av一区二区| 欧美日韩精品在线观看| 欧美综合77777色婷婷| 久久婷婷国产麻豆91天堂| 夜夜嗨av一区二区三区网站四季av | 黄色工厂这里只有精品| 亚洲国产成人久久| 欧美日韩亚洲综合| 欧美在线视频全部完| 久热这里只精品99re8久| 亚洲深夜福利网站| 久久久国产精品一区二区三区| 亚洲精品九九| 欧美中文字幕| 亚洲特级毛片| 久久综合激情| 欧美一区精品| 欧美区一区二| 免费欧美日韩| 国产欧美日韩中文字幕在线| 亚洲狠狠婷婷| 激情久久久久久| 亚洲一区二区影院| 9久re热视频在线精品| 久久福利影视| 亚洲一区二区三区四区五区黄| 久久天天综合| 久久乐国产精品| 国产精品视频久久久| 亚洲人成绝费网站色www| 精品99视频| 午夜久久久久久| 亚洲欧美日韩一区在线观看| 欧美激情二区三区| 欧美福利视频网站| 激情六月婷婷久久| 欧美一进一出视频| 午夜欧美大尺度福利影院在线看| 欧美—级a级欧美特级ar全黄| 久久五月婷婷丁香社区| 国产日韩亚洲欧美| 亚洲女同同性videoxma| 亚洲尤物在线| 欧美乱人伦中文字幕在线| 欧美成人激情视频| 亚洲欧洲一区二区三区| 美女精品一区| 最新日韩中文字幕| 日韩西西人体444www| 欧美福利视频一区| 最新国产成人av网站网址麻豆| 亚洲激情社区| 欧美黄污视频| 久久国产福利| 国产在线播放一区二区三区| 樱花yy私人影院亚洲| 亚洲人成网站影音先锋播放| 在线观看免费视频综合| 欧美一区二区三区播放老司机| 午夜精品av| 欧美吻胸吃奶大尺度电影| 日韩一级片网址| 亚洲在线成人精品| 国产精品永久免费观看| 西西人体一区二区| 久久综合给合久久狠狠狠97色69| 国内精品久久久久影院薰衣草| 久久本道综合色狠狠五月| 久久精品中文| 尹人成人综合网| 欧美日韩不卡视频| 亚洲小说春色综合另类电影| 久久久999| 亚洲欧洲在线免费| 国产精品爱久久久久久久| 亚洲影视在线播放| 美女爽到呻吟久久久久| 亚洲欧洲午夜| 国产精品一区二区在线| 久久久久91| 亚洲伦理自拍| 久久精品中文| 99视频一区二区三区| 国产精品yjizz| 久久久久久久国产| 妖精成人www高清在线观看| 欧美中日韩免费视频| 亚洲国内在线| 国产精品在线看| 美女诱惑一区| 亚洲欧美清纯在线制服| 欧美福利视频在线| 亚洲一区二区少妇| 在线观看视频亚洲| 国产精品久久久久aaaa樱花| 久久久91精品国产一区二区三区| 亚洲第一区中文99精品| 欧美一区二区三区另类| 欧美日韩精品欧美日韩精品 | 久久国产欧美精品| 亚洲精品免费一区二区三区| 久久国产精品久久国产精品| 亚洲美女中文字幕| 国语自产精品视频在线看一大j8 | 久久久久欧美精品| 亚洲一区在线视频| 亚洲人成网站999久久久综合| 国产精品久久久久久久久免费桃花| 狂野欧美激情性xxxx| 欧美一区二区精品|