跳转到使用指南
shader-dev作者 MiniMax

Shader Dev Skill.

Claude Code 和 Codex 的图像工作 skill:gLSL 着色器:光线行进、SDF、流体、粒子、程序化视觉效果。

  • Images & Generative Art
  • 生成艺术
MiniMax-AI/skills · skills/shader-dev/SKILL.mdSKILL.md
--- name: shader-dev description: Comprehensive GLSL shader techniques for creating stunning visual effects — ray marching, SDF modeling, fluid simulation, particle systems, procedural generation, lighting, post-processing, and more. --- ## Invocation ## Skill Structure ## How to Use ## Technique Routing Table ## Technique Index ## WebGL2 Adaptation Rules
前言和章节标题读取自上游文件,时间为 2026-09-14 · 完整内容 16,663 字符

01 功能说明

shader-dev Skill 在 Claude Code 和 Codex 中的作用

摘要、工作流与产物,均读自该 skill 的 SKILL.md。

来自 SKILL.md读取于 2026-09-14 · 非实际运行记录

以 skill 自身的术语

一个单一的 GLSL skill,整合了 36 种兼容 ShaderToy 的实时视觉效果着色器技术:SDF 几何、光线步进与光照、流体、粒子与物理模拟、自然现象(海洋、地形、大气、体积渲染)、程序化生成、后期处理、音频以及 WebGL2 调试。

一张路由表会将每个请求映射到 techniques/ 目录下对应的技术文件,其中包含核心原理、实现步骤和完整代码模板,更深入的数学推导则放在 reference/ 中。随后在生成独立 HTML 页面时,它会应用 WebGL2 适配规则——使用 gl_FragCoord.xy 而非 fragCoord,为 mainImage 加上 void main() 包装,用 const 替代函数调用式宏——并在固定的性能预算内完成,配有快速参考方案和可视化调试替换方案。

它产出什么

  • 兼容 ShaderToy 的 GLSL,涉及 36 种效果技术之一,可作为实时视觉效果的基础。
  • 一个独立的 HTML 页面,其 canvas 铺满整个视口,随窗口大小调整,背景为黑色且没有滚动条,并暴露兼容 ShaderToy 的 uniform 变量 iTime、iResolution、iMouse 和 iFrame。
  • 基于 WebGL2 framebuffer 构建的多通道效果,使用 ping-pong 缓冲区实现类似 Buffer A/B 的状态管理。
  • 一条完整的后期处理链,例如结合 ACES 色调映射、2x SSAA 和暗角效果,用于打造照片级真实感场景。
查看示例提示词 ↗

工作方式

  1. 01
    将请求路由到某项技术

    Agent 会将用户的表述与技术路由表进行匹配,从而选出一项主要技术以及可组合使用的其他技术,而不是逐一阅读全部 36 个文件。

  2. 02
    读取技术文件

    techniques/ 目录下的每个文件都是独立自足的,提供原理说明、有序的实现步骤以及该效果的完整代码模板。

  3. 03
    升级到 Reference/ 处理数学问题

    当需要推导或高级模式时,Agent 会沿着技巧文件末尾的链接,进入对应的 reference/ 指南。

  4. 04
    将 ShaderToy 输出迁移到 WebGL2

    对于独立的 HTML 交付物,会在编写页面之前,在 ShaderToy 风格代码之上应用 WebGL2 适配规则。

  5. 05
    将 Recipe 组装成 Pipeline

    快速 Recipe 会把几何、渲染、光照、大气、后处理等模块串联成完整的 Pipeline,而不只是单一效果。

  6. 06
    通过替换输出来调试

    输出会被临时替换为法线、步数、深度或 SDF 带,以在恢复真实颜色之前定位故障。

02 找到适合场景

何时使用 shader-dev Skill

当工作是这类图像工作时,在 Claude Code 或 Codex 中使用 shader-dev skill。以下适用性和限制来自该 skill 自己的文件。

适合场景

  • 纯粹以数学方式建模 3D 对象和场景,由带符号距离场驱动隐式表面,而非加载网格。
  • 需要真实求解器的流体、烟雾和墨水效果,包含在乒乓缓冲区中的对流、扩散和压力投影。
  • 需要 Rayleigh/Mie 散射、god ray 或次表面散射近似的天空与大气镜头。
  • 直接烘焙在 shader 中的程序化音频,从振荡器和包络到滤波器再到 FM 合成。
  • 基于极坐标重映射、万花筒折叠和螺旋坐标系构建的风格化 2D 作品。

了解边界

  • 不适用于无约束的 GPU 预算:目标环境可能是无头软件渲染,因此迭代次数必须保持较低。
  • 宏并不是设置循环边界的安全方式——在某些 ES 版本中,循环内需要使用运行时常量。
  • 地形辅助函数只接受 XZ 坐标,因此传入前必须对完整的 vec3 位置进行 swizzle。

需要提供的信息

  • 用日常语言描述的效果需求该 skill 通过 /shader-dev <request> 调用,请求文本会落入 $ARGUMENTS 中;用效果术语来表述,能让路由表正确匹配。
  • 使用路由表词汇描述的效果类别路由表以 fluid/smoke/ink 等意图为键,将每个意图映射到一种主要技巧,以及应与之组合的其他技巧。

03 Skill 内部

shader-dev Skill 赋予 Claude Code 和 Codex 的规则

SKILL.md 为 Agent 设定的 8 条具体指令、默认值与限制——文件中真正改变结果的部分。

  1. 生成 WebGL2 Shader 头部

    每个生成的 shader 都以 #version 300 es 开头,片段 shader 添加 precision highp float; 并声明 out vec4 fragColor,同时将 varying 转换为 in/out。

  2. 使用 gl_FragCoord.xy,绝不使用 fragCoord

    ShaderToy 的 fragCoord 在 WebGL2 中不存在,因此坐标运算必须读取 gl_FragCoord.xy,否则 shader 无法编译。

  3. 将 mainImage 包装进一个真正的 Main()

    ShaderToy 模板保留 void mainImage(out vec4 fragColor, in vec2 fragCoord),并由标准的 void main() 用真实的片元坐标调用它。

  4. 在调用者之前声明被调用者

    GLSL 没有前向声明,因此像 getSunDirection() 这样的函数必须定义在调用它的 getAtmosphere() 之上,否则就要重新排列代码顺序。

  5. 永远不要在 #define 中放函数调用

    像 #define SUN_DIR normalize(vec3(...)) 这样的宏是无效的;应替换为一个持有预先计算好的归一化值的 const。

  6. 避免使用 GLSL 保留字作为名称

    包括 patch、cast、sample、filter、input、output、common、partition 和 active 的标识符都是保留字,不能用作变量名。

  7. 在顶部声明 JS 状态

    在 HTML 页面中,let/const 变量要放在 script 块的顶部,位于任何引用它们的函数之前,否则会触发暂时性死区(Temporal Dead Zone)错误,画布会保持白屏。

  8. 保持在性能预算内

    光线步进主循环上限为 128 步,体积采样和光照内部循环上限为 32 步,FBM 上限为 6 个八度,因为部署环境可能使用有限的无头软件渲染。

04 投入使用

在 Claude Code 或 Codex 中安装 shader-dev

一条 npx skills add 命令,然后在你的 Agent 中执行第一个任务和对结果的清单检查。

将 shader-dev 添加到 Claude Code、Codex 或你的 Agent

在你的项目中运行;安装程序会询问要把它添加到哪个 Agent。

Terminal
npx skills add https://github.com/MiniMax-AI/skills --skill shader-dev

用于 skills/shader-dev/SKILL.md 的通用 skills CLI 形式;具体仓库可能记录了自己的路径。

给 Skill 一个首次图像工作任务

使用你自己的内容和约束调整此提示,然后在 Claude Code 或 Codex 中运行它。

Example prompt
create a raymarched SDF scene with soft shadows

来源:SKILL.md 示例(原文照录)。

检查首次结果

SKILL.md 本身如何描述正确的结果:

  • 检查每一次调用是否与其定义匹配,包括参数数量和类型 —— float fbm(vec3 p) 不能接收 vec2 uv。
  • 强制执行严格的类型匹配:标量需要显式构造函数,vec2 不能用 .z 读取。
  • 把任何在结构体值之间选择的三元表达式改写为 if/else,因为 ESSL 不允许这种写法。
  • 统计每个像素的嵌套循环迭代次数,与 1000 次迭代上限进行对比,超出会导致浏览器冻结。
  • 用 col = nor * 0.5 + 0.5 将法线可视化,观察是否出现条带现象,这说明 epsilon 太大。
  • 如果某个 uniform 的位置返回 null,说明编译器把该 uniform 优化掉了 —— 应以一种无法被移除的方式使用它。

在 OpenDesign 中shader-dev 已内置:Plugins → Skills,在顶部栏中选择它。

05 开源、可追溯

来源、许可与验证

本页面事实的来源,以及最后检查时间。

Author
MiniMax
Repository
github.com/MiniMax-AI/skills 分支 main
Skill 文件
skills/shader-dev/SKILL.md 验证时记录的内容校验和;commit 60aaae5
License
MIT 来自 LICENSE;SKILL.md 中注明「MIT」。
仓库星标数
13,547 GitHub 快照拍摄于 2026-09-14,针对整个 MiniMax-AI/skills 仓库,该仓库在此目录中包含 6 个 skill。不是 shader-dev 的评分或使用计数。
已由 OpenDesign 验证
2026-09-14 已检查源文件、路径、许可证文本和星标数。已捆绑在 OpenDesign 主版本中(检查于 2026-08-28);此页面尚未记录实际运行。

SKILL.md 内部

  1. 调用方式以 /shader-dev <request> 的形式运行,请求通过 $ARGUMENTS 传入。
  2. Skill 结构SKILL.md 的布局、techniques/ 目录下的各技法指南,以及更深入的 reference/ 文件。
  3. 使用方法四个步骤:路由、阅读技法文件、追踪参考链接、应用 WebGL2 规则。
  4. 技法路由表将每种用户意图映射到一个主要技法,以及可组合使用的其他技法。
  5. 技法索引按类别分组的 36 种技法,每种都配有一句话说明。
  6. WebGL2 适配规则ShaderToy 转 WebGL2:version、fragCoord、main 包装、宏、常见陷阱。
  7. HTML 页面设置独立页面要求:完整
Skill 自身的描述
全面的 GLSL 着色器技术,用于创建令人惊艳的视觉效果——光线步进、SDF 建模、流体模拟、粒子系统、程序化生成、光照、后期处理等。

来自 SKILL.md 的前置描述。完整文件约 16,663 字符。在 GitHub 上阅读完整文件。

Shader Dev

在真实图像工作任务上运行 shader-dev。

shader-dev skill 内置于 OpenDesign 中。下载应用,在 Plugins → Skills 中选择该 skill,粘贴上面的提示词,并在生成结果前阅读计划。

终端
npx skills add https://github.com/MiniMax-AI/skills --skill shader-dev