概念页
Godot 着色器入门
Godot Shading Language
GDShader 是面向 Godot 的 GLSL 简化方言。shader_type 决定用途:canvas_item(2D)、spatial(3D)、particles、sky、fog。材质引用 Shader;uniform 暴露参数。理论公式见图形学页;此处只谈引擎形态与入门路径。
原理
- 并行心智:写「一个顶点/一个片元」的程序,GPU 对所有图元并行执行。
- 阶段:
vertex()改几何;fragment()出颜色(2D 入门几乎只写 fragment)。 - 内建:
UV/TIME/COLOR/TEXTURE等;读写限定随阶段变化。 - 类型:
canvas_item:Sprite、Control 等 2Dspatial:MeshInstance3D 等particles:粒子sky/fog:环境特效
- VisualShader 节点图可编译到同类着色器。
应用路径
- 官方 your_first_shader(2D/3D)。
- GDQuest「Your First Shader from ZERO」:距离场圆、smoothstep、遮罩、噪声扰动(门户案例)——笔记见 raw。
- 社区:godotshaders.com 分类检索(索引页);Book of Shaders 补数学直觉。
取舍
- 改默认材质着色器前,先问能否用 AnimationPlayer/粒子/内建效果达成。
- 从社区粘贴代码注意许可证与 Godot 大版本(3→4 语法差)。
- 屏幕空间效果依赖渲染器能力(Compatibility 限制更多)。
参见
出处
- Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
- Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
- Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
- Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
- Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
- Your First Shader from ZERO in Godot 4(GDQuest) GDQuest First Shader
- Godot Shaders 社区库笔记 GodotShaders 社区库说明
- docs.godotengine.org/en/stable/tutorials/shaders/introduction_to_shaders.html
- docs.godotengine.org/en/stable/tutorials/shaders/index.html
相关页面
图形学可编程着色器与 GPU 管线Programmable Shaders & GPU PipelineGPU 把第 2 章的概念管线实现为一组硬件阶段,分为完全可编程、可配置但不可编程、完全固定三类。现代 GPU 采用统一着色器架构:各类着色器共用同一套编程模型和核心,由 GPU 自行分配负载。着色器用 HLSL、GLSL 等类 C 语言编写,输入分为 uniform 和 varying 两类。图形学片元着色器与 GLSL 基础Fragment Shaders & GLSL Basics片元着色器(fragment shader)是在每个像素(片元)上并行执行的小程序:输入位置等信息,输出颜色。GLSL 是 OpenGL / OpenGL ES / WebGL 共用的着色语言;本书用全屏 billboard 上的像素着色练习,建立程序化图形的基础心智模型。图形学顶点着色器Vertex Shader顶点着色器是程序员直接控制的第一个管线阶段,逐个处理输入顶点,至少要输出顶点在齐次裁剪空间里的位置。它不能创建或删除顶点,顶点之间也不能传递结果,正因如此可以大规模并行。图形学像素着色器Pixel Shader像素着色器(OpenGL 里叫片元着色器)对光栅化产生的每个片元运行,用插值后的顶点数据算出颜色,也可以输出不透明度、修改深度或直接丢弃片元。多渲染目标让它一次输出多组数据,催生了延迟着色。它通常只能写自己所在的像素,但能通过 2×2 quad 拿到相邻像素的导数。图形学着色器中的颜色Color in Shaders在 GLSL 里颜色与空间坐标共用 vec2/vec3/vec4:可用 .rgba / .xyzw / .stpq 或下标访问,并 swizzle 任意重排。mix 在 [0,1] 上混合;HSB(HSV)比 RGB 更直观,还可映到极坐标色轮。图形学着色器纹理采样Shader Texture SamplingGPU 把图像存成 sampler2D:一张浮点向量的「表」,坐标连续时硬件做插值。片元里用 texture2D(sampler, uv)(现代 GLSL 为 texture)按归一化 UV 取色。BoS 强调:通道是 [0,1] 连续域、可越界重复、可用噪声扭曲 UV——图像变成可拉伸的「数码软垫」,为后处理与光学玩具式特效铺路。图形学着色器伪随机Shader Pseudorandom片元着色器里没有真正的「每次调用都不同」的随机:rand(x) 必须是确定性伪随机——同一输入永远同一输出。常用手法是 fract(sin(x)大数);二维则用 dot 把 vec2 压成标量再喂给同一套路。把空间 floor 成格子后,格子共享一个随机值,就能在秩序与混沌之间做生成设计。游戏开发 · GodotGodot Shaders 社区库索引Godot Shaders Library Indexgodotshaders.com 是社区驱动的 Godot 着色器库:按 Canvas Item / Spatial / Particle / Sky 等浏览与下载片段。本 wiki 只建索引与抽样要点,不镜像上千源码。游戏开发 · GodotGodot 常见着色技巧对照Common Godot Shader Techniques把社区与教程里反复出现的 2D/3D 技巧对照到图形学概念:溶解、描边、风摆、水面、后处理边缘——实现细节以 raw 抽样与官方为准,公式见图形学页。图形学渲染管线Rendering Pipeline渲染管线是实时图形的核心:给定虚拟相机、三维物体、光源等,把场景转换成一张二维图像。RTR4 把它粗分为四个功能阶段:应用、几何处理、光栅化、像素处理,各阶段并行执行,整体速度由最慢的阶段决定。