ShaderToyX Vibe 项目
面向 Windows 平台的原生 GLSL 着色器编程工具
ShaderToyX 是一款面向 Windows 平台的原生 GLSL 着色器编程工具,可以在本地运行与 Shadertoy.com 完全兼容的着色器代码,无需浏览器、无需安装任何运行时环境、无需第三方依赖库。与在线 Shadertoy 不同,ShaderToyX 将所有计算完全放在本地 GPU 上执行,用户在内置编辑器中编写 GLSL mainImage() 函数,按下 F5 即可在本地渲染窗口中看到实时效果。项目代码采用纯 C 风格 C++ 编写,基于 Win32 API 和 OpenGL 3.3 Core 标准,由作者独立开发维护,不属于也不依附于 Shadertoy.com 或 Beautypi。最新版本为 v0.1.0,提供预编译 Windows 64 位可执行文件下载,解压即用,完全绿色。 ShaderToyX 完整实现了 Shadertoy 的标准 uniform 接口,包括 iResolution(画布分辨率)、iTime(运行时间秒数)、iTimeDelta(帧间隔秒数)、iFrame(帧计数器)、iMouse(鼠标状态)、iDate(当前日期时间)、iSampleRate(采样率)、iChannelTime(各通道时间)、iChannelResolution(各通道分辨率)以及 iChannel0~iChannel3(四个纹理通道)全部支持。在渲染管线方面,程序支持一个 Image 主通道加四个独立的 Buffer 通道(A~D),每个 Buffer 通道背后维护一对 ping-pong 结构的 RGBA16F 帧缓冲,支持多路后处理、反馈和复合渲染效果,与 Shadertoy 的 Buffer 机制基本对应(唯一的已知差异在于 Buffer 通道间的数据反馈时序,ShaderToyX 中 Buffer B 读取 Buffer A 时看到的是 A 上一帧的输出,而非当前帧结果)。编辑器按标签页管理每个通道的源码和编译错误,每个标签页维护独立的源码缓冲区和错误日志,编译错误显示精确行号,点击错误信息可直接跳转到对应代码行。按 F1 可隐藏编辑器获得全窗口画布,按 F5 或工具栏 Compile 按钮触发全量编译,所有可见标签页同步重新构建。工具栏还提供暂停/恢复运行、重置时间、显示 FPS 和分辨率读数等实用功能。 ShaderToyX 的实现完全坚持零第三方库依赖原则,整个项目仅包含五个核心源文件,全部代码行数可控且结构清晰。main.cpp 负责 Win32 窗口创建、OpenGL 渲染上下文初始化和主事件循环;editor. 负责编辑器面板的 UI 实现,使用纯 Win32 原生控件(静态文本、编辑框、按钮等)构建标签页、代码编辑区和错误显示区;renderer. 负责全屏四边形渲染和 Buffer 通道的 ping-pong 帧缓冲管理;shader. 负责将用户编写的 mainImage() 函数包装进标准 Shadertoy 风格片段着色器框架,完成 uniform 注入和着色器程序链接;gl_lite. 是一个最小化的 OpenGL 3.3 Core 函数加载器,只包含项目实际用到的几十个 GL 函数,按需从显卡驱动动态获取,无需 GLAD、GLFW 或 GLEW 等任何第三方 GL 加载库。整个项目不依赖任何第三方 C++ 库或框架,不使用 MFC、不使用 STL 容器(主要使用 C 风格数组和手动管理内存),适合作为学习现代 GPU 渲染编程和 Win32 API 编程的精简参考项目。项目还配置了完整的 GitHub Actions CI 流程,每次推送自动在 Windows runner 上执行 Debug 和 Release 两种构建配置,并额外用 MSBuild 做一致性检查,确保各构建方式输出一致。 第一步,下载并解压。从 GitHub Releases 页面下载最新版本的 ShaderToyX--win64.zip 文件,将压缩包解压到任意目录(如 D:ShaderToyX),整个目录可以任意移动,不依赖注册表或系统路径。 第二步,直接运行。双击解压目录中的 ShaderToyX.exe,程序启动后默认以左右分栏布局显示:左侧是代码编辑器面板(初始为 Image 标签页),右侧是渲染画布区域。 第三步,编写着色器代码。在编辑器中编写 GLSL 代码,函数签名为 void mainImage(out vec4 fragColor, in vec2 fragCoord),可以使用与 Shadertoy 完全一致的 uniform 变量语义。 第四步,编译运行。按 F5 键或点击工具栏中的 Compile 按钮,程序将所有可见标签页的着色器代码同步编译,编译结果(成功或错误)显示在编辑器下方的错误日志区域;若编译成功,渲染画布立即显示 shader 运行效果;若编译失败,点击错误信息可跳转到对应代码行。 第五步,添加多通道效果。点击标签栏的 + 按钮可添加 Buffer A~D 通道,每个通道有独立的源码编辑器和渲染目标,Buffer 通道的输出自动绑定到后续通道的 iChannel0~iChannel3 输入(依次对应 A~D),可实现多级后处理效果。 第六步,发布打包。如需自行编译发行版,在装有 Visual Studio 2026 或 MSVC Build Tools 的 Windows 机器上,打开 x64 Native Tools Command Prompt,进入源码目录运行 build.bat package ,脚本自动完成 Debug 和 Release 两种构建并将结果打包为与 GitHub Release 完全一致的 zip 文件。 ShaderToyX 适合以下几类用户:需要在无法访问外网的 Windows 服务器或工控机上运行 GPU 计算任务的开发者;希望深入研究 Shadertoy 着色器内部机制(如 Buffer 渲染管线、uniform 时序、ping-pong 帧缓冲原理)的图形学学习者;以及正在从浏览器版 Shadertoy 向本地工具链迁移、需要一个与 Shadertoy 语义完全一致但运行不离线的本地替代品的专业 shader 开发者。此外,由于项目代码量小、结构清晰、无依赖,也适合作为 Win32 + OpenGL 组合编程的学习参考。 运行环境为 Windows 10 或更高版本,显卡需支持 OpenGL 3.3 Core(所有现代显卡均满足)。自行编译时仅需 MSVC x64 工具链(Visual Studio 2026 或独立 Build Tools),build.bat 直接调用 cl.exe 编译,无需 CMake 或 MSBuild。项目采用 MIT License,允许个人和商业免费使用。
评论与建议
登录 后参与评论或提建议