如题,大家应该知道 shader是运行在gpu上的,没法很好的像我们平时那样进行调试.所以几年前我就突然萌生了一个想法,也是初生牛犊不怕虎.既然shader是运行在gpu上的,是否我们在cpu上进行一次模拟,就可以实现shader的实时渲染调试了?
说干就干,要解决的问题拆解出来其实分2大步.
1 将shader的 glsl的代码通过ast 进行拆分 再将其自动转换为 ts代码.以实现代码的断点调试.
2 实现所有webgl1的接口, 将对webgl1的接口调用全部转为对自己的软渲染器代码调用.
以上只要实现了这两点,基本就可以实现webgl shader代码.
先来看第一点
原版glsl代码

自动转换后的ts代码:

这样我们基本就实现了一个glsl转ts的框架
第2点 我们hack一下webgl的代码调用

可以设定为将shader代码转换为ts或者直接将内部glsl的调用直接转换为对我们软渲染器的调用.
以上,就可以初步实现webgl1 shader的软渲染调试实现.
来看一段针对顶点着色器的渲染调试

当然,以上两点说起来容易,做起来千难万难,之后也因为总总原因没有继续完善,大家有兴趣的话,也可以研究看看.
如果以后有空,大家有意愿的话。我也给大家好好讲一下内部的一些具体实现.谢谢大家.
另外在打一个小广告,希望大家给我的独立游戏打败黑黑怪兽的稻草人加个愿望单,谢谢大家.
Steam页面:https://store.steampowered.com/app/2607160/_/
哔哩哔哩页面: https://www.bilibili.com/video/BV1e94y1u7dm
想看的人不多