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

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

Nebula3渲染層: Graphics

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

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

  • ModelEntity
  • CameraEntity
  • LightEntity
  • Stage
  • View

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

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

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


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   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>
            老鸭窝毛片一区二区三区| 亚洲一区在线免费| 99re热这里只有精品视频| 亚洲一区二区在线免费观看| 久久激情视频久久| 久久国产精品高清| 亚洲女同在线| 亚洲小说春色综合另类电影| 亚洲国产精品专区久久| 久久国产精品第一页| 亚洲激情av在线| 亚洲国产精品t66y| 99精品视频免费| 亚洲日本va午夜在线影院| 欧美日韩综合不卡| 亚洲一区黄色| 欧美一区二区三区啪啪| 美腿丝袜亚洲色图| 欧美经典一区二区| 欧美大秀在线观看| 欧美午夜精品一区| 狠狠色丁香久久婷婷综合丁香| 亚洲精品欧洲| 亚洲一区影院| 欧美肥婆在线| 欧美亚洲免费高清在线观看| 欧美日韩人人澡狠狠躁视频| 国产精品日韩欧美大师| 西瓜成人精品人成网站| 国产自产2019最新不卡| 国产伦精品一区二区三区| 国产精品一区二区在线观看网站 | 精品成人在线视频| 亚洲精品视频免费观看| 亚洲欧美高清| 欧美福利电影网| 欧美国产综合一区二区| 影音先锋久久资源网| 先锋影音网一区二区| 亚洲国产成人久久| 亚洲色图自拍| 亚洲一区二区成人| 欧美视频日韩| 一区二区av在线| 欧美成人一区二免费视频软件| 久久九九热免费视频| 亚洲精品乱码久久久久久日本蜜臀 | 亚洲精品乱码久久久久久久久 | 亚洲欧美综合| 亚洲国产精品久久久久| 久久久夜色精品亚洲| 中文一区字幕| 欧美日韩系列| 99国产精品久久| 久久久久久久性| 国产精品高清在线| 久久久久免费视频| 性色av香蕉一区二区| 国产精品99免费看 | 日韩亚洲欧美成人| 欧美精品一区在线播放| 日韩亚洲精品视频| 亚洲一区日韩在线| 欧美日韩在线播放| 久久久久久亚洲精品中文字幕| 亚洲欧美影音先锋| 欧美一区二区三区免费看| 欧美大片91| 亚洲综合大片69999| 中国女人久久久| 国产精品视频999| 久久精品久久99精品久久| 国产精品久久综合| 亚洲精品一区二区在线观看| 欧美日韩视频在线一区二区| 亚洲欧美视频| 欧美激情综合在线| 裸体歌舞表演一区二区| 老牛嫩草一区二区三区日本 | 欧美福利在线| 国产亚洲一区精品| 亚洲人成在线播放网站岛国| 国产女精品视频网站免费| 久久精品国产91精品亚洲| 国产综合视频| 久久精品三级| 久久亚洲综合色| 国产精品v欧美精品v日韩精品| 蜜桃av噜噜一区二区三区| 欧美精品一区三区| 久热综合在线亚洲精品| 国产精品久久久一区二区三区| 亚洲在线观看免费| 欧美日韩在线影院| 一本色道**综合亚洲精品蜜桃冫| 亚洲高清网站| 好吊色欧美一区二区三区视频| 免费91麻豆精品国产自产在线观看| 久久国产精品网站| 国产欧美亚洲一区| 亚洲精品亚洲人成人网| 久久成人精品一区二区三区| 最新国产成人av网站网址麻豆| 亚洲视频欧美视频| 久久综合色一综合色88| 亚洲三级影片| 久久一区亚洲| 亚洲欧美日韩国产成人| 亚洲国产精品久久| 欧美午夜欧美| 噜噜噜噜噜久久久久久91| 亚洲在线播放电影| 亚洲激情亚洲| 亚洲国产天堂久久综合网| 欧美一区二区三区视频免费| 一区二区三区成人| 日韩天天综合| 亚洲人成亚洲人成在线观看图片 | 久久久久久久久久久久久女国产乱| 亚洲国产成人精品久久久国产成人一区| 欧美一区2区三区4区公司二百| 一区二区三区久久| 99国产精品私拍| 亚洲午夜视频在线| 欧美一级精品大片| 久久国产精品99国产| 奶水喷射视频一区| 91久久久在线| 亚洲欧美在线网| 香蕉视频成人在线观看| 久久精品亚洲国产奇米99| 久久gogo国模裸体人体| 久久久久久久尹人综合网亚洲 | 亚洲一本视频| 欧美一区二区在线看| 久久久久久综合网天天| 亚洲网址在线| 国产日韩欧美91| 久久久精品五月天| 久久女同互慰一区二区三区| 国产精品影院在线观看| 中文网丁香综合网| 亚洲一区亚洲二区| 亚洲电影免费观看高清完整版在线| 久热精品视频在线免费观看| 久久欧美肥婆一二区| 日韩亚洲一区在线播放| 亚洲国产精品久久人人爱蜜臀| 一本色道久久| 免费h精品视频在线播放| 亚洲一区二区三区免费在线观看| 欧美激情一区二区三区| 亚洲激情网站免费观看| 欧美高清视频一二三区| 免费成人黄色av| 午夜精品亚洲一区二区三区嫩草| 欧美日韩国产三区| 99这里只有久久精品视频| 亚洲精品国精品久久99热一 | 欧美一区二区三区日韩| 亚洲摸下面视频| 韩国一区二区三区在线观看| 欧美激情视频给我| 亚洲午夜精品| 国产在线观看91精品一区| 亚洲一区视频在线| 亚洲一二三区视频在线观看| 国产视频在线观看一区二区| 国产欧美精品日韩精品| 亚洲午夜av| 久久九九热免费视频| 亚洲精品日韩久久| 欧美一区永久视频免费观看| 国产日产精品一区二区三区四区的观看方式 | 99精品视频免费观看视频| 午夜精品久久久久久99热| 久久蜜桃资源一区二区老牛 | 另类成人小视频在线| 欧美成人精品在线观看| 一本一本久久a久久精品牛牛影视| 一区二区三区欧美日韩| 欧美日韩国产综合在线| 亚洲少妇自拍| 免费在线欧美视频| 欧美精品一区二区三区在线播放| 99视频在线观看一区三区| 欧美福利网址| 亚洲欧洲日产国产网站| 亚洲午夜久久久| 亚洲女女女同性video| 国产精品日本一区二区| 亚洲永久免费av| 亚洲欧美成aⅴ人在线观看| 午夜一区二区三区在线观看 | 国产精品视频免费在线观看| 欧美成人免费小视频| 久久爱www| 亚洲综合国产激情另类一区| 亚洲精品美女久久7777777| 久久嫩草精品久久久久|