【免费下载链接】ShaderToHuman
HLSL/GLSL/Slang library for debugging shaders
ShaderToHuman(简称 S2H)是一款由 Electronic Arts 开源的着色器调试库,支持 HLSL、GLSL 与 Slang 三种着色语言,帮助开发者在 GPU 上直接打印文本、绘制 2D/3D 图形并搭建轻量调试 UI。本文将从其官方 TODO 清单出发,前瞻这个着色器调试库的下一站:高性能的 80x25 文本屏幕、WebGPU/CUDA 多平台支持,以及一整套值得关注的功能改进计划。
一分钟了解 ShaderToHuman
对新手来说,ShaderToHuman 解决的是一个很常见的问题:GPU 上没有现成的"打印"和"画板"。在传统图形 API 里,想查看一个 GPU 变量的值,往往要写 C++ 代码、分配缓冲、回读显存。而 S2H 的设计目标是"易于集成"——只需包含一两个头文件、几行代码,就能在视口里直接输出文字、画表格、画箭头和 3D 框。
它不追求复杂 UI 或极致性能,而是专注"打印几个数字、画几个 2D/3D 元素"这类小而具体的场景,并且采用宽松许可,可自由用于商业用途。核心代码位于 include/s2h.hlsl、include/s2h_3d.hlsl 和 include/s2h_scatter.hlsl,完整示例见 examples/ 目录。
路线图重点一:80x25 复古文本屏幕
在官方 TODO 清单中,80x25 文本屏幕被列为独立的高价值任务(预估 1 天工作量),它将作为新的可选 API 以单独的 .hlsl 头文件形式提供。设计思路非常巧妙:
- 极简数据结构:每个字符用 1 个
uint存储,整个屏幕仅 80×25×4 字节,可同时保存字符与文字/背景颜色 - 像素级放大渲染:由后处理或 Quad 像素着色器把文本屏幕投影为 80×25×8×8 字符像素的画面,官方还提到理想效果是带C64 风格边框
- 零拷贝滚动:通过"环形视图"实现——只需记录起始 Y 坐标,垂直滚动几乎不产生内存拷贝
- 性能定位:相比现有的 Gather/Scatter API 性能更好,适合需要大量文本输出的调试场景
目前 S2H 的文本输出已经相当直观,下面的"Hello World"就来自 examples/HelloQuadVSPS/ 示例,新文本屏幕正是这条路线的自然延伸:
路线图重点二:WebGPU 与 CUDA 支持
在 README.md 的 Roadmap 部分,作者明确写下一句话:"Reach out for suggestions, maybe CUDA support"(欢迎提交建议,也许支持 CUDA)。对应 TODO 清单中预估 5 天工作量的任务:"Implement for other APIs? e.g. WebGPU, CUDA, only if there is interest"——也就是说,WebGPU 与 CUDA 的实现取决于社区兴趣度。
这对浏览器端和 CUDA 生态用户是个明确信号:S2H 目前的集成路径覆盖 HLSL(带预处理器的引擎如 Gigi、Unreal、Unity)和 GLSL(Vulkan/OpenGL 引擎、ShaderToy、WebGL),未来若社区呼声足够,这套"着色器内调试"范式就有望移植到 WebGPU 与 CUDA 环境:
值得注意的配套任务还包括:补充非 WebGL 的真实 GLSL 示例(目标 OpenGL 与 Vulkan,预估 5 天)、修复 GLSL 下表格与函数绘制的前置声明问题(预估 1 天)——这些都是多平台扩展的前置工程。GLSL 无预处理器版本可通过 transpileToGLSL.bat 一键从 HLSL 源码转换生成,核心文件见 include/s2h_glsl.hlsl。
其他值得关注的路边计划
除两大重点外,官方 TODO 清单还包含一系列小而实用的改进:
交互控件全家桶
- 垂直滑杆(1h)与 2D 滑杆(1h)
- 水平/垂直滚动条(4h),并将滚动条与表格视图结合以浏览大表格(1d)——这让 TableTest.png 这类表格调试真正可用:
调试能力深化
- 交互式纹理缩放(4h):在后处理中实现像素化放大 + RGB 颜色调试器
- 交互式缓冲调试(3d):支持 hex/float/int 视图,大内容可滚动
- 操作录制持久化(7d):可选 API 记录调用序列,之后可回放——相当于给 GPU 调试加"录像回放"
3D 与文档体验
- 新增
drawOBB()三维有向包围盒绘制(1d) - 文档补齐 HLSL 像素着色器场景(3d)
- 让文档示例全部可交互或带动画(2d),并修复文档首次编译着色器等待过慢的问题(3d)
- 为不同 GPU 与 API 建立可复现的运行时/编译时基准测试(5d)
版本进展:路线图已在兑现
路线图并非空中楼阁,近两个版本的动作可以快速验证方向:
- v13(2026-03-08):新增
s2h_coordinateSystem(),并附带鼠标平移/缩放的功能示例,实现了交互式平移、缩放和像素颜色调试:
- v14:新增Slang 支持(已在 Vulkan 与 DX12 示例中验证),并在文档侧为未来的多语言扩展打基础——docs/index.html 的配置器中已预留了扩展语言选项的位置
如何跟进与参与
- 本地浏览交互文档:Windows 下双击 startLocalServer.bat 即可启动文档服务器(首次运行会自动安装 express 依赖)
- 运行单元测试:在 Gigi 查看器中选择 File→Run Python Script,运行 unittests/GigiTest.py,应报告零错误
- 贡献功能:任何建议(尤其 WebGPU/CUDA 需求)都可以直接反馈给作者,社区呼声将直接影响排期
总结
ShaderToHuman 的路线图清晰呈现了一个"小而美"的演进逻辑:用 80x25 文本屏幕强化文本调试性能,用滑杆/滚动条/缓冲调试完善交互闭环,再用 WebGPU/CUDA 把这套着色器调试范式推向更广阔的平台。对于正在写 HLSL/GLSL/Slang 着色器的开发者而言,现在关注这个开源着色器调试库正是好时机。
【免费下载链接】ShaderToHuman
HLSL/GLSL/Slang library for debugging shaders
相关推荐
跑通 Folia 全屏歌词动画:folia-major 歌词动画播放器最短路径上手
跑通 Folia 全屏歌词动画:folia major 歌词动画播放器最短路径上手 跑通后,你会点一首歌,看着全屏歌词动画逐字在大屏上亮起。本文带你走 Foli
音视频前端桌面应用Horizon 路线图前瞻:微软登录、干净室着色器包与 AI 队友,下一个版本将带来什么
Horizon 路线图前瞻:微软登录、干净室着色器包与 AI 队友,下一个版本将带来什么 Horizon 是一个用 Rust 从零重写的 Minecraft:
Parchment 路线图前瞻:从 v1.1 到 v2.0,Room、DataStore 与 EPUB 支持的演进计划全解析
Parchment 路线图前瞻:从 v1.1 到 v2.0,Room、DataStore 与 EPUB 支持的演进计划全解析 Parchment 是一款专为 A
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考