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

posts - 94, comments - 250, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

Nebula3渲染層: Graphics

Posted on 2008-12-14 22:02 Condor 閱讀(701) 評論(0)  編輯 收藏 引用

圖形子系統(tǒng)是渲染層中圖形相關(guān)子系統(tǒng)的最高層. 它基本上是Mangalore圖形子系統(tǒng)的下一個版本, 但是現(xiàn)在整合進(jìn)了Nebula, 并且與低層的渲染代碼結(jié)合得更加緊密. 最基本的思想是實(shí)現(xiàn)一個完全自治的圖形”世界”, 它包含模型, 燈光, 還有攝像機(jī)實(shí)體, 而且只需要與外部世界進(jìn)行最少的通信. 圖形世界的最主要操作是加入和刪除實(shí)體, 還有更新它們的位置.
因?yàn)镸angalore的圖形子系統(tǒng)跟Nebula2的完全分界線從Nebula3中移除了, 很多設(shè)想都可以用更少的代碼和交互來實(shí)現(xiàn).
圖形子系統(tǒng)也會為了異步渲染而多線程化, 它和所有的底層渲染子系統(tǒng)都會生存在它們自己的fat-thread中. 這本應(yīng)是Nebula3層次結(jié)構(gòu)中更高級的東西, 但是我選擇了這個位置, 因?yàn)檫@是游戲跟渲染相關(guān)通信最少的一部分代碼. 正是因?yàn)閳D形代碼有了更多的”自治權(quán)”, 游戲相關(guān)的代碼可以跟圖形以完全不同的幀率來運(yùn)行, 不過這需要實(shí)踐來證明一下. 但是我一定會嘗試, 因?yàn)橥耆珱]有必要讓游戲邏輯代碼運(yùn)行在10幀以上(格斗游戲迷們可能會反對吧).
圖形子系統(tǒng)中最重要的公有類有:

  • ModelEntity
  • CameraEntity
  • LightEntity
  • Stage
  • View

一個ModelEnity表示了一個可見的圖形對象, 它包括位置, 包圍體和內(nèi)嵌的Model資源. 一個Model資源是一個完全的3D模型, 包括幾何體, 材質(zhì), 動畫, 層級變換等…(后面會提到).
一個CameraEntity描述了圖形世界中的一個視景體, 為渲染提供View和Project矩陣.
一個LightEntity描述了一個動態(tài)光源. Nebula3的光源屬性還沒有最終確定, 但是我的目標(biāo)是一個相對靈活地近似(最后一個光源不會超過幾個shader參數(shù)).
Stage和View是Nebula3圖形子系統(tǒng)新增的內(nèi)容. 在Mangalore中, 圖形實(shí)體是生存在一個單獨(dú)的圖形Level類里, 任何時候只能有一個Level和一個攝像機(jī). 這對于只需要渲染一個世界到幀緩存(frame buffer)的情況來說還是不錯的. 但許多游戲程序需要更復(fù)雜的渲染, 如在GUI中渲染一個使用單獨(dú)燈光的3D對象, 而它又跟其它的圖形世界是隔離的. 還有反射或像監(jiān)視器之類的東西都需要一個額外的視口, 諸如此類. 在Mangalore中, 這個問題通過OffscreenRenderer類得到解決, 雖說比較容易使用, 但是具有一些使用限制并且需要更多事后的思考.
Nebula3提供了一個基于State和View的更加簡潔的解決方案. 一個Stage就是一個圖形實(shí)體的容器, 表示一個圖形世界. 同一時間可能存在多個Stage, 但是它們之間是互相隔絕的. 每個實(shí)體在一個時刻只連接到了一個Stage(雖說克隆一個已有實(shí)體是一件很簡單的事情). 除了簡單地把實(shí)體組織到一起外, Stage的主要工作是根據(jù)它們之間的關(guān)系來加速可見性查詢. 應(yīng)用程序可以派生Stage的子類來實(shí)現(xiàn)完全不同的可見性查詢方案.
一個View對象通過一個CameraEnity渲染stage到一個RenderTarget. 任何stage都可以連接任意數(shù)量的View對象. View對象可能會互相依賴(也可能是連接到不同stage的View), 所以更新一個View會首先強(qiáng)制更新另一個View的RenderTarget(這在一個View渲染需要使用另一個View的RenderTarget做為紋理時很方便). View對象完全實(shí)現(xiàn)了自己的渲染循環(huán). 應(yīng)用程序可以在View的子類中方便地實(shí)現(xiàn)它自己的渲染策略(如每個light一個pass VS 每個pass多個light, 渲染到cubemap, 等等).
總而言之, 一個Stage完全控制了可見性查詢流程, 而一個View則完全控制了渲染流程.
圖形子系統(tǒng)的一個最主要的工作就是根據(jù)可見性查詢的結(jié)果來決定哪些實(shí)體需要被渲染. 一個可見性查詢在實(shí)體間建立了一個雙向的鏈接, 它有兩種形式: 攝像機(jī)鏈接和燈光鏈接. 攝像機(jī)鏈接把一個攝像機(jī)和在它視景體內(nèi)的模型連接到了一起. 因?yàn)殒溄邮请p向的, 所以攝像機(jī)知道所有的在它視景體范圍內(nèi)的模型, 而模型也知道所有可以看到它的攝像機(jī). 燈光鏈接在燈光與模型之間建立了相似的關(guān)系, 一個燈光具有所有受它影響的模型的鏈接, 一個模型也知道所有影響它的燈光.
加速可見性查詢最重要的類就是Cell類. 一個Cell是一個圖形實(shí)體和子Cell的可見性容器, 它必須遵循2條簡單的規(guī)則:

  1. 如果一個Cell是完全可見的, 那么它所有的圖形實(shí)體和子Cell都必須可見.
  2. 如果一個Cell是完全不可見的, 那么它所有的圖形實(shí)體和子Cell都必須不可見.

Cell是附屬于Stage的, 它們形成了一棵有根Cell的樹形層次結(jié)構(gòu). 標(biāo)準(zhǔn)的Cell支持簡單的空間劃分方案, 如四叉樹和八叉樹, 但如果像其它的可見性方案, 如portal, 就需要派生Cell的子類來實(shí)現(xiàn)了. 子類唯一的功能限制就是上面標(biāo)出的那兩條規(guī)則.
當(dāng)一個圖形體連接到一個Stage時, 它會被插入”接受” (通常僅僅是容納)它的最低級的Cell中. 當(dāng)更新圖形實(shí)體的變換信息或改變包圍體時, 它會根據(jù)需要改變在Cell層次中的位置.
Stage居住在StageBuilder類當(dāng)中, 應(yīng)用程序應(yīng)當(dāng)派生StageBuilder來創(chuàng)建一個Stage的初始狀態(tài)(通過加入Cell和實(shí)體). Nebula3會提供一些標(biāo)準(zhǔn)的StageBuilder集合, 這應(yīng)該能夠滿足大多數(shù)應(yīng)用程序的需要了.
這只是圖形子系統(tǒng)的一個粗略的概述. 因?yàn)楫?dāng)前只有一個最基本的實(shí)現(xiàn), 很多細(xì)節(jié)接下來可能會有所更改.


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   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>
            一区二区三区日韩欧美精品| 国产精品毛片| 久久久久www| 国产精品xnxxcom| 亚洲成在人线av| 国产午夜精品一区二区三区视频| 最新日韩精品| 在线电影欧美日韩一区二区私密| 亚洲一区在线视频| 亚洲免费在线视频| 欧美日韩中文字幕日韩欧美| 欧美激情国产精品| 亚洲第一综合天堂另类专| 欧美一级淫片播放口| 亚洲尤物在线视频观看| 欧美日本韩国一区二区三区| 亚洲国产mv| 亚洲欧洲日产国产网站| 久久综合亚洲社区| 久久性天堂网| 极品尤物一区二区三区| 亚洲欧美日韩第一区| 性久久久久久久久久久久| 欧美性大战xxxxx久久久| 在线一区免费观看| 亚洲一区日本| 国产精品自拍在线| 亚洲欧美国产精品va在线观看 | 亚洲成人直播| 久久精品国产一区二区三区| 久久九九国产精品怡红院| 国产拍揄自揄精品视频麻豆| 欧美一区二区播放| 免费在线观看精品| 亚洲人成人一区二区三区| 欧美另类综合| 一区二区三区视频观看| 久久精品人人做人人爽电影蜜月| 国产一区二区三区在线观看网站| 久久精品国产久精国产爱| 美女主播一区| 亚洲精品自在在线观看| 欧美视频亚洲视频| 亚洲影视在线播放| 噜噜噜久久亚洲精品国产品小说| 91久久精品日日躁夜夜躁国产| 欧美搞黄网站| 亚洲视频一区二区在线观看| 久久精品国产免费看久久精品| 一区二区三区亚洲| 欧美理论大片| 欧美在线免费观看视频| 亚洲日本久久| 欧美一区二区女人| 亚洲国产成人av在线| 欧美视频中文字幕在线| 久久久青草青青国产亚洲免观| 亚洲三级毛片| 久久福利影视| 一区二区三区高清在线观看| 国产视频亚洲精品| 欧美3dxxxxhd| 欧美在线播放视频| 亚洲美女毛片| 免费观看久久久4p| 亚洲一区二区在线免费观看| 在线观看欧美成人| 欧美日韩视频专区在线播放 | 欧美在线视频一区二区| 亚洲激情视频网| 久久国产精品99久久久久久老狼| 亚洲茄子视频| 国产一区二区三区无遮挡| 欧美国产综合一区二区| 久久精品国产一区二区三| 99国产精品| 欧美国产91| 久久久av网站| 亚洲永久视频| 一本一本久久a久久精品综合麻豆| 国产一区二区三区无遮挡| 欧美三日本三级三级在线播放| 久久婷婷av| 欧美一级片久久久久久久| 99视频超级精品| 欧美成人综合网站| 久久久久久噜噜噜久久久精品 | 久久亚洲国产精品日日av夜夜| 中文精品一区二区三区 | 亚洲美女诱惑| 亚洲国产精品视频一区| 国产专区欧美精品| 国产精品一卡二| 国产精品久久一级| 国产精品ⅴa在线观看h| 欧美日韩视频一区二区三区| 免费在线看成人av| 久热精品视频在线观看| 久久久久一区二区三区| 欧美在线中文字幕| 午夜在线成人av| 欧美一区高清| 久久精品30| 久久综合狠狠综合久久激情| 久久久xxx| 久久国产日韩| 久久免费视频观看| 老牛嫩草一区二区三区日本| 久久综合伊人77777麻豆| 久久综合伊人| 欧美成人综合| 欧美日韩国产综合视频在线观看 | 亚洲自拍偷拍视频| 亚洲欧美日韩中文播放| 欧美亚洲免费在线| 午夜精品久久久久久久99樱桃| 亚洲一区网站| 新狼窝色av性久久久久久| 久久久激情视频| 久久这里只有| 欧美黑人一区二区三区| 亚洲理伦在线| 亚洲在线视频| 久久午夜精品一区二区| 欧美精品国产精品| 欧美午夜一区二区| 国产日韩欧美精品在线| 影音先锋另类| 亚洲乱码精品一二三四区日韩在线 | 亚洲精选在线观看| 亚洲视频免费看| 欧美亚洲一区| 欧美.日韩.国产.一区.二区| 欧美视频在线免费看| 国产日产高清欧美一区二区三区| 在线精品国产欧美| 亚洲视频电影图片偷拍一区| 久久国产乱子精品免费女| 噜噜噜躁狠狠躁狠狠精品视频 | 国产精品入口66mio| 国产一区二区三区在线观看视频| 亚洲国产一区二区视频| 亚洲字幕一区二区| 麻豆成人在线| 在线视频日韩| 久久久精品网| 国产精品va| 亚洲大胆人体视频| 午夜伦理片一区| 亚洲福利视频在线| 欧美一级电影久久| 欧美日精品一区视频| 在线 亚洲欧美在线综合一区| 日韩性生活视频| 久久这里有精品15一区二区三区| 亚洲免费电影在线观看| 久久亚洲国产精品一区二区 | 久久综合久久综合这里只有精品 | 国产乱码精品一区二区三区不卡 | 性做久久久久久久免费看| 欧美成人一品| 国产一区二区三区观看| 亚洲一区二区三区免费在线观看| 欧美a级一区二区| 亚洲欧美国产视频| 欧美精品久久久久久| 136国产福利精品导航网址| 欧美亚洲在线观看| 国模精品一区二区三区| 宅男噜噜噜66一区二区 | 欧美激情导航| 午夜视频在线观看一区| 欧美日韩在线视频一区| 国产欧美一区二区三区在线看蜜臀 | 国产精品劲爆视频| 亚洲欧美日韩网| 午夜视频精品| 亚洲成色www8888| 亚洲片区在线| 国产精品久久久久秋霞鲁丝| 久久精品国产v日韩v亚洲 | 99re热这里只有精品免费视频| 欧美色123| 久久精品国产第一区二区三区| 久久久久久电影| 亚洲人成网在线播放| 一区二区三区四区精品| 国产婷婷精品| 亚洲国产高清在线| 国产精品国产a| 久久这里有精品15一区二区三区| 欧美福利一区二区| 亚洲尤物在线视频观看| 久久精品一二三区| 亚洲另类一区二区| 欧美亚洲专区| 日韩一区二区精品视频| 欧美一区二区三区免费看| 亚洲精品免费网站| 亚洲欧美国产精品va在线观看 |