GLSL 编程/Blender
外观
< GLSL 编程
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
< GLSL 编程
除非另有说明,本页面上的所有示例源代码均授予公有领域。