Photoshop画笔的混合算法实现(逆推)
生活随笔
收集整理的這篇文章主要介紹了
Photoshop画笔的混合算法实现(逆推)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
說明
使用OpenGL在一張rgba都為0.0的紋理上開glBlend(GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR)繪制線條后,再渲染到屏幕的時(shí)候發(fā)現(xiàn)有黑白。而PS的畫筆工具在透明圖層進(jìn)行繪制的時(shí)候沒有出現(xiàn)黑邊。于是就有了研究PS顏色疊加混合的實(shí)現(xiàn),下面只是推測…
PS的alpha疊加算法
在OpenGL表示為:glBlend(GL_ONE, GL_ONE_MINUS_SRC_COLOR)。
# sa: 要繪制上去的alpha # da: 已經(jīng)在屏幕的alpha def psAlpha(sa, da):return (sa + (1.0 - sa) * da)PS的顏色疊加算法
如果要使用OpenGL實(shí)現(xiàn)就必須使用gl_LastFragData[0]這個(gè)數(shù)據(jù),或者自己實(shí)現(xiàn)類似獲取屏幕像素的rgba的功能。
# src: 要繪制上去的rgb # dst: 已經(jīng)在屏幕上的rgb # sa: 要繪制上去的alpha # da: 已經(jīng)在屏幕的alpha def psColor(src, dst, sa, da):alpha = ((1.0 - sa) * da) / psAlpha(sa, da)return (1.0 - alpha) * src + alpha * dst完整代碼
import numpy as np# src: 要繪制上去的rgb # dst: 已經(jīng)在屏幕上的rgb # sa: 要繪制上去的alpha # da: 已經(jīng)在屏幕的alpha def psColor(src, dst, sa, da):alpha = (sa * da) / psAlpha(sa, da)return (1.0 - alpha) * src + alpha * dst# sa: 要繪制上去的alpha # da: 已經(jīng)在屏幕的alpha def psAlpha(sa, da):return (sa + (1.0 - sa) * da)# dst沒有任何顏色的情況, 繪制第一個(gè)顏色 srcColor0 = np.array([70.0, 209.0, 201.0]) / 255.0 dstColor0 = np.array([0.0, 0.0, 0.0]) / 255.0 srcAlpha0 = 0.5 dstAlpha0 = 0.0# 繪制第一筆后: dst有顏色 dstColor1 = psColor(srcColor0, dstColor0, srcAlpha0, dstAlpha0) dstAlpha1 = psAlpha(srcAlpha0, dstAlpha0)# 繪制第二個(gè)顏色 srcColor1 = np.array([226.0, 69.0, 69.0]) / 255.0 srcAlpha1 = 0.5dstColor2 = psColor(srcColor1, dstColor1, srcAlpha1, dstAlpha1) dstAlpha2 = psAlpha(srcAlpha1, dstAlpha1)# 繪制第三個(gè)顏色 srcColor2 = np.array([255.0, 0.0, 204.0]) / 255.0 srcAlpha2 = 0.5 dstColor3 = psColor(srcColor2, dstColor2, srcAlpha2, dstAlpha2) dstAlpha3 = psAlpha(srcAlpha2, dstAlpha2)print("---- 0 ----") print(dstColor0 * 255) print(dstAlpha0 * 255)print("---- 1 ----") print(dstColor1 * 255) print(dstAlpha1 * 255)print("---- 2 ----") print(dstColor2 * 255) print(dstAlpha2 * 255)print("---- 3 ----") print(dstColor3 * 255) print(dstAlpha3 * 255)總結(jié)
以上是生活随笔為你收集整理的Photoshop画笔的混合算法实现(逆推)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 杂项(记录工具)
- 下一篇: 张一鸣这一条微博,阿里P8的我,竟然想了