跳轉到內容

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 的遊戲引擎;因此,它們只在遊戲啟動時顯示。(這在編輯著色器引數時尤其不方便。)

請注意,這些教程假設您按照此處呈現的順序閱讀它們,即每個教程都假設您熟悉之前教程介紹的概念和技術。如果您不熟悉 GLSL 或 Blender,您至少應該通讀“基礎知識”部分的教程。

基礎知識

[編輯 | 編輯原始碼]

透明表面

[編輯 | 編輯原始碼]

基礎光照

[編輯 | 編輯原始碼]

基礎紋理

[編輯 | 編輯原始碼]

高階紋理

[編輯 | 編輯原始碼]


Blender 中進行 GLSL 程式設計的最重要文件似乎是

有一個指令碼可以匯出 Blender 內部 GLSL 程式的頂點和片段著色器。但是,這些著色器(以及它們使用的統一變數)是自動生成的;因此,它們的可讀性不強,不適合學習 GLSL:http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Game_Engine/Export_GLSL

用於影像後處理的 GLSL 著色器

[編輯 | 編輯原始碼]


< GLSL 程式設計

除非另有說明,本頁面上的所有示例原始碼均授予公有領域。
華夏公益教科書