GLSL ShaderCraft 技能——36种着色器技术,用于创建令人惊叹的实时视觉效果。 触发条件:需要光线步进/SDF建模/流体模拟/粒子系统/程序化生成/光照/后处理等视觉效果时。 兼容:ShaderToy、WebGL2(需适配)。
36种 GLSL 着色器技术,用于创建实时视觉效果。
| 用户想要创建… | 主要技术 | 组合技术 |
|---|---|---|
| 3D物体/场景 | ray-marching + sdf-3d | lighting-model, shadow-techniques |
| 复杂3D形状(布尔运算) | csg-boolean-operations | sdf-3d, ray-marching |
| 无限重复3D图案 | domain-repetition | sdf-3d, ray-marching |
| 有机/变形形状 | domain-warping | procedural-noise |
| 流体/烟雾/墨水效果 | fluid-simulation | multipass-buffer |
| 粒子效果(火花/雪) | particle-system | procedural-noise, color-palette |
| 物理模拟 | simulation-physics | multipass-buffer |
| 海洋/水面 | water-ocean | atmospheric-scattering, lighting-model |
| 地形/景观 | terrain-rendering | atmospheric-scattering, procedural-noise |
| 云/雾/体积火 | volumetric-rendering | procedural-noise, atmospheric-scattering |
| 天空/日落/大气 | atmospheric-scattering | volumetric-rendering |
| 真实感光照(PBR) | lighting-model | shadow-techniques, ambient-occlusion |
| 阴影(软/硬) | shadow-techniques | lighting-model |
| 过程噪声/FBM纹理 | procedural-noise | domain-warping |
| 瓷砖2D图案 | procedural-2d-pattern | polar-uv-manipulation |
| Voronoi/细胞图案 | voronoi-cellular-noise | color-palette |
| 分形(Mandelbrot) | fractal-rendering | color-palette |
| 颜色分级/调色板 | color-palette | — |
| 后处理(Bloom/色调映射) | post-processing | multipass-buffer |
| 多通道 ping-pong 缓冲 | multipass-buffer | — |
| 2D形状/UI来自SDF | sdf-2d | color-palette |
ShaderToy 使用 GLSL 风格。生成独立 HTML 页面时应用以下适配:
Shader 版本与输出:
// 使用 canvas.getContext("webgl2")
// Shader 第一行:#version 300 es
// Fragment 必须声明:out vec4 fragColor;
// Vertex: attribute → in, varying → out
// Fragment: varying → in, gl_FragColor → fragColor
// texture2D() → texture()
Fragment Coordinate:
// 错误
vec2 uv = (2.0 * fragCoord - iResolution.xy) / iResolution.y;
// 正确
vec2 uv = (2.0 * gl_FragCoord.xy - iResolution.xy) / iResolution.y;
main() 包装器(ShaderToy → WebGL2):
void mainImage(out vec4 fragColor, in vec2 fragCoord) {
// shader code...
fragColor = vec4(col, 1.0);
}
void main() {
mainImage(fragColor, gl_FragCoord.xy);
}
函数声明顺序: GLSL 要求函数在使用前声明——在使用前定义或重新排序。
宏限制: #define 不能使用函数调用——使用 const 替代。
每个技术文件底部有参考链接,指向 reference/ 目录下的深度数学推导和高级用法。
关键参考:
reference/ray-marching.md — 步进数学推导与高级模式reference/sdf-3d.md — 扩展SDF理论reference/lighting-model.md — 光照数学深度解析reference/procedural-noise.md — 噪声函数理论reference/webgl-pitfalls.md — 常见 WebGL2/GLSL 错误