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