Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

着色器简介

本页面会讲解什么是着色器,会为你综述其在 Godot 中的使用方法。引擎中着色语言的详细参考见 着色语言

着色器(Shader)是一种在图形处理单元(GPU)上运行的特殊程序。他们最初使用来为 3D 场景着色的,不过现在能做的事情就更多了。你可以用它们来控制引擎在屏幕上绘制几何体以及像素的方式,可以用来实现各种特效。

类似 Godot 的现代渲染引擎都会用着色器来执行所有绘制操作:图形卡可以并行执行成千上万条指令,可以达到惊人的渲染速度。

因为天生就是并行的,所以着色器处理信息的方式与普通的程序有所不同。着色器代码是单独针对顶点或像素执行的。你也无法在帧与帧之间存储数据。因此,使用着色器时,你需要使用与其他编程语言不同的编码和思考方式。

假设你想要把纹理中的所有像素点都设置成某个给定的颜色。使用 GDScript,你的代码会用 for 循环:

for x in range(width):
  for y in range(height):
    set_color(x, y, some_color)

在着色器中,你的代码已经是循环的一部分了,所以对应的代码应该类似这样。

void f