Nebula3的渲染流程

2021-08-23 12:58:25 字數 751 閱讀 5624

在說流程之前, 有必要先看一下n3的frame子系統:

每幀的渲染過程都寫進了配置檔案, 預設使用的是"frame\win32\dx9default.xml", 陰影還有另外一套.

<?xml version="1.0" encoding="utf-8"?>

在frameshader的配置檔案裡, 宣告了一些rendertarget, 還有framepass和frameposteffect.

framepass包裝了所有要渲染到rendertarget的所有3d渲染相關的東西, 由framebatch組成.

framebatch代表乙個批次的modelnodeinstance, 比如深度批次, 非透明批次和透明批次等等(相當於ogre中的rendergroup), 而modelnodeinstance就做為最小的渲染單位了.

具體的流程就由流程圖來說明吧:

internalgraphicsserver代表就是圖形世界, 在圖形庫外部對應前面提過的stage/view.

乙個graphics view的作用就是把乙個stage通過cameraentity渲染到rendertarget上. 乙個stage可以有多個view, 而乙個view也可以依賴另乙個.

Nebula3中的屬性

attr命名空間下實現了mangalore裡的動態屬性.屬性是編譯期間型別安全的key value對,這是資料庫 database 子系統的基礎.如圖,attrid相於屬性型別,而attributedefinition是屬性型別的定義,其中包含了屬性名,屬性的四位元組碼,值型別和訪問型別 讀 寫 也...

Nebula3的多執行緒架構

nebula3的 執行在兩種根本不同的方案中.第一種方案我稱之為 fat thread 乙個fat thread在乙個執行緒中執行乙個完整的子系統 如渲染,音訊,ai,物理,資源管理 並且基本上鎖定在乙個特定的核心上.第二種型別的執行緒我叫它 job 乙個job是一些資料和用於處理這些資料的包裝成c...

Nebula3學習筆記 1 序

前言 目前這個引擎只是乙個預覽版,很多功能仍在開發當中 硬體需求 顯示卡支援shadermodel3.0 作者blog 用到的開源工程 為了避免版本之間的不相容,已經在sdk中包含 體系結構一覽 nebula3 會跟mangalore 合為乙個整體,mangalore的各種子系統會整合到nebula...