序言

停止施工

这篇文档未来将会在 新版文档open in new window 中编写。

阅读建议

这是着色器编写的实际教程,如果你仅想对着色器有大致的了解,可以阅读 这篇文档

苦于国内没有系统性和标准化的光影教程,仅存的教程除了特化严重(魔改和目标性实现)还存在诸多不良编程习惯(使用老旧的OpenGL内置变量、声明变量不规范),而且不符合现代 OptiFine GLSL 规范,让光影开发有一个较高的门槛。为了解决这个问题,我们决定推出这个系列教程。这个教程也受到了诸多国内大佬的批评指正,我们对此表示由衷的感谢。

我能学到什么?

  • OptiFine 光影的文件结构、管线
  • 从零开始写一个属于自己的光影
  • 光影开发的小技巧

在开始之前……

要想流畅地阅读这个教程,需要注意以下几点:

  • 了解基本的 C 语法,熟悉在 GLSL 中可能会用到的线性代数知识。如果你在寻求一个了解更加底层的 OpenGL 框架,或者快速入门矩阵相关知识的教程,我们推荐 LearnOpenGLopen in new window
  • 我们约定了一些术语,详见 术语表
  • 我们的教学主要集中在开发环境成熟稳定的 OptiFine GLSL 上,并且不推荐使用较为激进的 Iris 或 Oculus 作为开发平台,因此它们的独占特性我们不会提及,并且内容会与 通用 GLSL 有所差异。
  • 我们的目标是希望大家能理解 OptiFine GLSL 原理,而不仅仅是功利性地做出千篇一律的光影。因此教程主要集中在基础原理和公式上,但是也会给出基本的代码实现。随着教程的编写,我们后期也会推出一些针对某些效果的专题。

视频版?

我们会在 Bilibiliopen in new window 发布图文教程的视频版,视频版有更加流畅的动画来帮助大家理解原理。