着色器编辑器

Shader Editor着色器是一个非常强大的工具,它可以用来操纵你的游戏渲染到屏幕上的图形,允许令人难以置信的快速效果,范围包括,例如,为精灵添加一个微妙的颜色色调,直到全屏的扭曲效果。但什么是着色器?

着色器基本上是一个由两部分组成的程序,直接在显卡本身上运行,由于GPU在做所有的工作,所以速度非常快,并为你的游戏代码释放出CPU周期。完整的着色器由一个顶点着色器程序和一个片段着色器程序(也被称为像素着色器)组成。这两个小程序一起工作,以操纵显卡渲染到屏幕上的内容。这样,你就可以实时操作实际渲染显示缓冲区的位置、颜色和阿尔法值

顶点着色器顶点着色器

顶点着色器是渲染管道中的可编程着色器阶段,它处理单个顶点(用于渲染任何图像的三角形的点),当你正在渲染一个几何体--如精灵或表面--GameMaker创建一个顶点流-- 称为Vertex Buffer --定义 这些三角形的几何。例如,一个精灵会有一个由两个三角形(通常称为多边形)组成的几何体,并被渲染成一个 "四边形"。这个来自顶点缓冲器的顶点流被作为输入输入到顶点着色器,它可以以可编程的方式处理顶点数据。顶点着色器的输出被GPU用来组装三角形,然后对其进行适当的剪裁,并对视图端口和视图相机进行剪裁,然后被发送到GPU的光栅化器块,该块产生一个新的输出流,由称为Fragments的东西组成。这些都是微小的数据结构,每一个都是相对于出现在屏幕上的一个像素的。

片段着色器片段着色器

片段着色器是渲染管道中的可编程着色器阶段,用于处理 "片段"--用于对任何给定的多边形进行纹理的插值像素--它们负责输出每个渲染的三角形像素的最终颜色。基本上,它是这样工作的:片段着色器接收所有由顶点着色器沿管道传递的片段(正在渲染的三角形的单个像素)作为其输入。然后,它可以处理这些片段,以改变将被绘制到屏幕上的最终目标像素的颜色和透明度。

 

关于着色器如何真正工作以及它们在图形管道中的地位的完整概述超出了本文的范围,但你可以在这里找到一个简短的指南:

 

语言支持

GameMaker支持以下着色器语言:

着色器语言目标平台
GLSL ES 1.0All target platforms
GLSLMac and Ubuntu (Linux)
HLSL 11Windows and Xbox
PSSLPlayStation 4 & 5

在编写GLSL ES着色器时,建议尽可能地遵循官方语言规范 ,以避免错误 ,因为一些目标平台 可能比其他平台更严格 (例如HTML5和GX.games目标,在涉及语言限制时可能比 其他平台如Windows、macOS等更严格)。

 

创建一个着色器

要创建一个着色器资源,只需在Asset Browser内右击RMB Icon ,选择Create -> Shader。一旦你创建了基础着色器,你就可以在新资源上使用鼠标右键RMB Icon菜单来选择着色器类型,然后继续编辑代码:

Shader Editor RMB Menu当你创建一个新的着色器时,代码编辑器本身被分成两个 "程序"--顶点(Vertex)和片段(Fragment),每个程序都可以从编辑器顶部的标签中获得。这两个程序都是同时创建的,因为你不能在没有这两个部分的情况下创建一个着色器。即使你只想使用片段着色器,你也必须先创建一个 "通过 "顶点着色器,这就是为什么在默认情况下,任何新的着色器都会有一个已经为你编码的顶点和片段通过着色器(在页面顶部的截图中,你可以看到我们使用了代码编辑器窗格视图来显示这两个并排的程序...在一起处理两个着色器程序时非常有用)。

值得注意的是,你可以在所有目标平台上使用GLSL ES着色器,但要让它们在 HTML5目标平台上工作,你必须在HTML5游戏选项 中启用WebGL,否则它们将无法工作。

有关着色器函数的更多细节以及如何在GameMaker中使用它们,请参见以下页面: