跳转到内容

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 编程

除非另有说明,本页面上的所有示例源代码均授予公有领域。
华夏公益教科书