我打算做一个简单的绘图工具,它支持Photoshop中的多个图层和所有混合模式。Photoshop“混合模式”与OpenGL
我正在考虑在GPU上进行混合(将每个图层放入一个纹理并绘制两个三角形来渲染每个图层)。但我不确定,如果可以通过OpenGL的blendFunc/blendEquation等实现所有blend modes。
另一个选择是将所有纹理+混合模式标志传递给一个片段着色器,并按照我的意愿混合它们,但添加/删除某些图层(sampler2D)时,我将不得不重新编译FS。
那么你怎么看?可能吗?有没有更好的方法来使用GPU进行混合?所以我现在应该关心它,还是应该全部使用CPU并关心未来的增强功能?
顺便说一句。这将是使用WebGL的JavaScript程序,但我认为这并不重要。
*如果可以用OpenGL的blendFunc/blendEquation等实现所有的混合模式*不可能实现所有的混合模式。硬件帧缓冲混合在它可以执行的操作中受到一定的限制。 – Tim
谢谢蒂姆,我认为有些混合模式是不可能的,但我不确定。所以我只会在CPU上实现。 –
如果有帮助,我的开源框架在这里:https://github.com/BradLarson/GPUImage有很多这些混合模式作为OpenGL ES着色器,它们应该很容易移植到WebGL。我将Adobe自己的参考规范用于混合计算,因此它们应该与Photoshop的行为紧密匹配。只需查看各种混合类实现的顶部即可查看我使用的着色器代码。 –