我打算做一個簡單的繪圖工具,它支持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的行爲緊密匹配。只需查看各種混合類實現的頂部即可查看我使用的着色器代碼。 –