cg
Cg, C for graphic, NviDIA與Microsoft合作, 兼容D3D與OpenGL;跨windows, linux, Mac和Xbox等。 在GPU上執(zhí)行的
Cg的數(shù)據(jù)流模型, 輸入是頂點(diǎn)和片段(像素), 經(jīng)過Cg處理后輸出。 在渲染三維場景時(shí), 每當(dāng)一個(gè)頂點(diǎn)被處理或者光柵器產(chǎn)生一個(gè)片段, 對應(yīng)的頂點(diǎn)和片段Cg程序就會(huì)被執(zhí)行。
頂點(diǎn)著色器與片段著色器:
紋理: 三維物體的繪制技術(shù)分為表面繪制和體繪制兩種技術(shù)。表面繪制技術(shù)如同字面上的含義,光照、材質(zhì)等等都發(fā)生在物體的表面,這也是和三維物體的表面表達(dá)技術(shù)有關(guān)(surface representation或border representation);這種技術(shù)繪制不了物體內(nèi)部的細(xì)節(jié),所以通常不能稱之為真三維的表達(dá)。 比如說人體的CT三維重建,是可以看到皮膚甚至骨骼下面的組織和結(jié)構(gòu),但是表面繪制的技術(shù)如同給人照相,相片是不能反映人體的深層真實(shí)三維構(gòu)造的,不能給醫(yī)生以更多的判斷信息;又如礦藏,通過探井?dāng)?shù)據(jù)我們可以大體推斷其真三維結(jié)構(gòu)。 因而,2D紋理貼圖是將平面的、二維的相片貼到物體的幾何表面上;(注意到2D相片可能和物體的幾何表面大小不一致,所以需要一個(gè)靈活的映射機(jī)制,即插值函數(shù),才能將紋理相片的像素值合理地映射到物體表面上); 3D紋理就是立體的“圖形”,如同2D紋理是一個(gè)(x,y)形式的像素矩陣,3D紋理是一個(gè)(x,y,z)形式的三維像素矩陣,每一個(gè)(x,y,z)對應(yīng)一個(gè)標(biāo)量值;3D紋理貼圖就是要把這個(gè)三維的像素陣列映射到三維的物體空間中去;通常將物體和3D紋理處理成立方體或圓柱體,可以更容易理解相關(guān)理論和實(shí)現(xiàn)。3D紋理和體繪制技術(shù)密切相關(guān),體繪制(volume rendering)是科學(xué)可視化的重要手段。
固定管線:圖形算法固定在硬件中。
可編程管線:頂點(diǎn)和片段處理是可編程的。 Cg是此種編程語言。
Cg專門用來處理頂點(diǎn)和片段的。 Cg程序的執(zhí)行是獨(dú)立的。一個(gè)頂點(diǎn)或片段的處理時(shí), 對其他頂點(diǎn)或片段無影響。 執(zhí)行Cg無任何副作用。
頂點(diǎn)---->頂點(diǎn)變換------>圖元裝配和光柵化---->片段紋理映射和著色---->光柵化
片段與像素。 像素代表幀緩存中某個(gè)指定位置的內(nèi)容,如顏色、深度等。 光柵化會(huì)將覆蓋的像素分解成像素大小的片段, 每個(gè)片段有一個(gè)與之關(guān)聯(lián)的像素位置、深度、差值參數(shù)等。當(dāng)片段經(jīng)過各種各樣的光柵化測試后,片段將被用于更新幀緩存中的像素。
Cg程序經(jīng)過Cg編譯器編譯成D3D調(diào)用或者OpenGL調(diào)用。
總結(jié)
- 上一篇: shader 一
- 下一篇: shader 2: vertex, fr