我正在开发一个渲染引擎(很小的一个啊哈)
我想编写回归测试,以确保添加新功能时不会引入错误。
如果我开发了计算着色器,或将数据从缓冲区传输到缓冲区的工具,则测试很容易。我们填充第一个缓冲区,然后在传输后检查第二个缓冲区是否具有相应的数据。
但是对于渲染,似乎很难...我最终得到了几种解决方案
第一个解决方案是……不是解决方案。第二种解决方案看起来不错,但是我觉得很遗憾我们失去了自动的东西...
第三种解决方案似乎是最好的解决方案。但是,要真正发挥作用,就意味着一种算法(如果在Nvidia卡,AMD,intel或...上执行)必须产生完全相同的结果。
因此,这里的问题是,我们可以依靠屏幕截图和一点一点的比较来进行回归测试吗?还是取决于驱动程序和/或制造商?
Vulkan和OpenGL都不对跨不同实现的二进制相同结果提供任何保证。甚至同一张卡的驱动程序更新也会产生不同的结果。
对于此类事情,你可以做的最好的事情就是获得与预期结果“接近”的结果。