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