題外話:和我聊天的時候,有業內朋友問我X1600有多少個shader,我問他是不是shader處理器。朋友提問:shader不是硬件單元嗎?我說,當然不是。又查了一下,網上有很多關于顯卡術語的描述,尤其是shader這個基本術語的翻譯,好像有誤導。有任何名稱,我從描述中不太了解著色器的含義。粗略的澄清一下,讓大家看得更清楚。
我從很久以前保存的資料中找到了這句話:著色器驅動可編程圖形管道,并定義對象的最終表面屬性。這句話是對shader最精煉最準確的描述,shader的用途、用途和工作方法都包含了。
我們知道 3D 硬件的兩個主要 API,OpenGL 和 Direct3D 都有其固定的渲染管線,即管線。我們提供頂點位置、法線、紋理坐標等數據參數,然后定義光源。您可以獲得渲染圖像。在這個具體的渲染過程中,游戲和程序設計者沒有辦法實現具體的控制。
以下部分大家都很熟悉。從DX8和OpenGL擴展開始,在渲染管線中引入了可編程特性,讓游戲開發者可以通過自己編寫小程序,運行在圖形硬件上來控制具體的渲染。該過程在Microsoft DirectX中稱為程序代碼著色器,在OpenGL中稱為Program,中文翻譯為“程序”(或OpenGL是種...)。所以,shader更多是一個可編程控制的概念。
所以,想了半天,也沒有找到一個很合適的名字給shader加上,所以就簡單的叫shader吧。反正大家都懂。如果一定要給shader加一個中文名字,希望是“renderer”。
以下內容是現在顯卡芯片里到處都在討論的部分,我這里復制一下:
有兩種著色器,
一個是vertex-level,叫做vertex shader(OpenGL叫做vertex program),它代替了固定渲染管線的變換和光照部分,程序員可以自己控制頂點變換、光照等。在硬件中處理頂點著色器的單元稱為頂點著色器處理器(vertex shader processor)。例如,X1600芯片中有5個頂點著色器處理器。
一個是像素級的,叫做pixel shader(OpenGL叫做fragment program),它代替了固定渲染管線的光柵化部分,程序員可以自己控制像素顏色和紋理采樣。在硬件中處理像素著色器的單元稱為像素著色器處理器(pixel processing unit)。例如,X1600芯片中有12個頂點著色器處理器。
流水線渲染過程中可編程特性的引入是實時渲染的一次革命,它為游戲開發者提供了更大的創作自由,可以創造出更好的效果。
本文來自電腦雜談,轉載請注明本文網址:
http://www.lrm2007.com/a/shenmilingyu/article-382406-1.html
中國雖然國大人多
可采取撞擊戰術對付美軍艦的風聲起了作用
喝的沒有毒