1 回答

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊
libvips(govips 背后的圖像處理庫(kù))是需求驅(qū)動(dòng)的和水平線程的。正在計(jì)算的圖像處理管道以圖形表示,您 PC 上的每個(gè)線程在輸出圖像中選擇一個(gè)圖塊(通常為 128 x 128 像素),并且線程獨(dú)立地從圖形的末端開始計(jì)算像素。
運(yùn)算符(調(diào)用的composite
東西compositeMulti
)計(jì)算使用 PDF 樣式混合模式疊加一組圖層的結(jié)果。對(duì)于每個(gè)圖塊,它選擇在該點(diǎn)可見的圖層子集。它只能在選定的混合模式是“可跳過(guò)”的情況下執(zhí)行此操作,即。在基本圖像上合成黑色(空像素)將無(wú)效。
您可以在此處查看可跳過(guò)性測(cè)試:
https://github.com/libvips/libvips/blob/master/libvips/conversion/composite.cpp#L1273-L1296
層剔除循環(huán)在這里:
https://github.com/libvips/libvips/blob/master/libvips/conversion/composite.cpp#L443-L460
最后,選擇的層被合成,如果可能的話使用矢量算法。它將 RGBA 像素表示為四個(gè)浮點(diǎn)數(shù)的向量,并將它們一起計(jì)算。
tldr:libvips composite 是線程化的、矢量化的,并且(如果可能的話)進(jìn)行平鋪可見性剔除。
- 1 回答
- 0 關(guān)注
- 136 瀏覽
添加回答
舉報(bào)