渲染管道(2)应用阶段“功能”
1. 應用程序
應用程序使用高級編程語言(C、C++、JAVA 等)進行開發(fā),主要和CPU、內(nèi)存打交道。eg, 碰撞檢測、場景圖建立、空間八叉樹更新、視錐裁剪等經(jīng)典算法都在此階段執(zhí)行。
主要工作為:
- 準備場景數(shù)據(jù),例如攝像機的位置、視錐體、場景中包含了哪些模型、使用了哪些光源等;
- 設(shè)置渲染狀態(tài),包括但不限于使用的材質(zhì)屬性(漫反射顏色、高光反射顏色)、使用的紋理、使用的Shader,是否透明等;
CPU的其他工作:
- 粗粒度剔除工作,把那些不可見的物體剔除出去,這樣就不需要再移交給幾何階段進行處理;
- 物理解算部分(如布料解算、人物碰撞、水體模擬等等)由于其復雜的計算難度,也由CPU完成;
1.1 準備場景數(shù)據(jù)
step1. 從硬盤(Hard Disk Drive)加載網(wǎng)格和紋理等數(shù)據(jù)(頂點位置信息,法線方向,頂點顏色,紋理坐標,頂點索引)到系統(tǒng)內(nèi)存(Random Access Memory, RAM) 。
step2. 數(shù)據(jù)又被加載到顯卡上的存儲空間一顯存(Video Random Access Memory, VRAM)中。這是因為顯卡對于顯存的訪問速度更快,而且大多數(shù)顯卡對于 RAM 沒有直接的訪問權(quán)利 。
step3. 當把數(shù)據(jù)加載到顯存當中,RAM中的數(shù)據(jù)便可以移除。但對于一些數(shù)據(jù)來說,CPU仍然需要訪問它們(例如物理解算,布料、水體等等,碰撞檢測屬于復雜的運算),CPU依舊需要網(wǎng)格數(shù)據(jù)。那么該部分的RAM數(shù)據(jù)不會移除,畢竟從硬盤加載在RAM十分耗時。
1.2 設(shè)置渲染狀態(tài)
渲染狀態(tài):使用什么樣的著色器、光源、材質(zhì)屬性
總結(jié)
以上是生活随笔為你收集整理的渲染管道(2)应用阶段“功能”的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 渲染管道(1)整体流程
- 下一篇: 渲染管道(3)几何阶段一“概述”