Just My Life & My Work

幾何著色器 (Geometry Shader)

上一篇介紹Shader可分為Vertex ShaderPixel Shader,這時候引進新的Shader(其實也不新了:PDirectX 10的Shader Model 4.0和OpenGL 3.2開始支援),它叫做Geometry Shader

首先Geometry shader是位在OpenGL rendering pipeline裡面,Vertex shader與Fragment shader的中間。Vertex Shader的單位是Vertex,也就是在Vertex Shader裡面看到的是單一Vertex。Geometry Shader的單位則是Primitive,在Geometry裡面可以看到Vertex Shader送過來的單一Primitve,然後處理成一個以上的Primitive送出去。而Fragment Shader則是看到Primitive作Rasteration之後的單一Fragment(Pixel)。這些是使用時必須先要有的概念,參考繪圖管線會更清楚。

話說Geometry Shader的出現是因為DirectX 10的釋出,這個變化使得往後的3D電影、動畫、遊戲,可以看到像魔鬼終結者三裡面的液態金屬人一樣,從金屬人轉變為人類的外表,手掌處還可以變化成武器。

魔鬼終結者液態金屬人

Vertex Shader

Vertex Shader專門產生骨架。通常一個3D物件的多邊形愈多,其模型也就會愈精細。一般3D遊戲裡的人物,大約是20萬個多邊形,而像是3D動畫電影中的史瑞克(Shrek)則擁有500萬個多邊形,不過要上百電腦才能執行。

Pixel Shader

Pixel Shader 專門處理貼圖。當骨架已計算完成後,接著就會將貼圖材質往這些骨架上貼,而現今的貼圖效果愈來愈強大,除了表面會有相當逼真的質感外,就連光源、陰影等處都會呈現的十分貼近現實生活。

Geometry Shader

Geometry Shader讓你變形。Geometry Shader的用途,就是讓原本3D物件的外表,改變成另一種形態的樣子,這張圖其實也可以利用貼圖材質來辦到,只不過若是利用Geometry Shader來進行,那麼畫面將會更精細。

3D形成兩大重點,先有骨架(Vertex Shader),再貼圖(Pixel Shader)上去,而有了Geometry Shader,即可使物件更有靈活的表現。

參考:OpenGL Geometry Shader 介紹(一)DirectX 10顯示卡 超炫特效就全靠它了 (上)

Comments on: "幾何著色器 (Geometry Shader)" (3)

  1. […] keijiro/StandardGeometryShader幾何著色器 (Geometry Shader) | 逍遙文工作室Unity3D Geomerty Shader – 苍白的茧 […]

  2. […] 幾何著色器 (Geometry Shader) | 逍遙文工作室 Unity3D Geomerty Shader – […]

  3. […] 以上圖片, 引用 逍遙文工作室 […]

隨意留個言吧:)~

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

標籤雲