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,您至少應該通讀“基礎知識”部分的教程。
- 漫反射(關於每個頂點漫反射光照和不同型別的光源)
- 鏡面高光(關於每個頂點光照)
- 雙面表面(關於雙面每個頂點光照)
- 平滑鏡面高光(關於每個畫素光照)
- 雙面平滑表面(關於雙面每個畫素光照)
- 多個光源(關於處理多個光源的 for 迴圈)
Blender 中進行 GLSL 程式設計的最重要文件似乎是
- http://www.blender.org/documentation/blender_python_api_2_62_release/bge.types.html#bge.types.BL_Shader(用於設定著色器的類)
- http://www.blender.org/documentation/blender_python_api_2_62_release/bge.logic.html#shader(內建統一變數)
- http://www.blender.org/documentation/blender_python_api_2_62_release/bge.types.html#bge.types.KX_BlenderMaterial(用於設定混合方程式的類)
- http://www.blender.org/documentation/blender_python_api_2_62_release/bge.logic.html#blender-material(混合常量)
- http://www.blender.org/documentation/blender_python_api_2_62_release/bgl.html(對 OpenGL 狀態的低階訪問)
有一個指令碼可以匯出 Blender 內部 GLSL 程式的頂點和片段著色器。但是,這些著色器(以及它們使用的統一變數)是自動生成的;因此,它們的可讀性不強,不適合學習 GLSL:http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Game_Engine/Export_GLSL
- http://wiki.blender.org/index.php/Doc:2.6/Manual/Game_Engine/Logic/Actuators/2D_Filters
- http://wiki.blender.org/index.php/Dev:Source/GameEngine/2.49/VideoTexture
- http://sites.google.com/site/blendergameengine/customfilter
- http://blenderartists.org/forum/showthread.php?184102-nicer-and-faster-SSAO
除非另有說明,本頁面上的所有示例原始碼均授予公有領域。