跳轉到內容

GLSL 程式設計/Blender/簡介

來自華夏公益教科書

關於 GLSL

[編輯 | 編輯原始碼]

GLSL(OpenGL 著色語言)是幾種常用的即時渲染著色語言之一(其他例子包括 Cg 和 HLSL)。這些著色語言用於編寫著色器(即或多或少的小程式),這些著色器在 GPU(圖形處理單元)上執行,即計算機圖形系統的處理器——與計算機的 CPU(中央處理單元)相反。

GPU 是大規模並行處理器,非常強大。當今遊戲和其他互動式圖形應用程式中的大多數即時圖形如果沒有 GPU 都是不可能的。但是,要充分利用 GPU 的效能,必須直接對其進行程式設計。這意味著必須編寫可以由 GPU 執行的小程式(即著色器)。編寫這些著色器的程式語言是著色語言。GLSL 就是其中之一。事實上,它是幾個 3D 圖形 API(應用程式程式設計介面)的著色語言,即 OpenGL、OpenGL ES 2.x 和 WebGL。因此,GLSL 通常用於桌上型電腦、移動裝置和網路的應用程式。

關於本華夏公益教科書

[編輯 | 編輯原始碼]

本華夏公益教科書是針對那些不喜歡程式設計或數學的學生編寫的。本書的基本動機是觀察到學生在進行具體專案時,對學習程式設計環境、程式語言和 API 的興趣要高得多。這樣的專案通常是在特定平臺上開發的,因此本書的方法是在 Blender 中介紹 GLSL。

本書的第一部分包含帶有工作示例的教程,這些示例會產生某些效果。請注意,這些教程假設你按順序閱讀,即每個教程都會假設你熟悉之前教程中介紹的概念和技術。如果你不熟悉 GLSL 或 Blender,你至少應該通讀“基礎”一章中的教程。

附錄包含有關 OpenGL 管道和 GLSL 語法的一般資訊,這些資訊與 Blender 無關。不熟悉 OpenGL 或 GLSL 的讀者可能希望至少瀏覽一下這部分內容,因為對 OpenGL 管道和 GLSL 語法的基本理解對於理解教程非常有用。

關於 GLSL 在 Blender 中的使用

[編輯 | 編輯原始碼]

Blender 是一款流行的開源建模和動畫工具,支援 Windows、MacOS X、Linux 和 FreeBSD,幷包含遊戲引擎。(透過 GameKit,它將來也可能會支援 Android 和 iOS 的遊戲開發。)由於網格、紋理、光源等可以在圖形使用者介面中編輯,因此比在 OpenGL(ES)或 WebGL 應用程式中更容易定義複雜的場景。Blender 支援 GLSL 中的頂點和片段著色器(即“GLSL 程式”;不要與內建的“GLSL 材質”或“GLSL 著色”混淆)。

Blender 可以從 Blender 基金會下載頁面 下載。需要注意一些事項。

  • 首先,Blender 的 Python API(它用於指定 GLSL 程式和 OpenGL 狀態)在 Blender 2.5 版本中發生了重大變化;因此,你可能在網際網路上找到的大多數關於 Blender 中 GLSL 程式設計的教程和示例在當前版本中都無法使用。
  • 其次,Blender 的 Python API 僅支援單一渲染通道,我不清楚如何為特定材質或物件設定 OpenGL 狀態(混合和統一變數除外)。因此,可能性是有限的。
  • 第三,GLSL 程式僅限於 Blender 的遊戲引擎;因此,它們只在遊戲啟動時顯示。(這在編輯著色器引數時尤其不方便。)


Martin Kraus,2012 年 5 月

華夏公益教科書