simpler
This commit is contained in:
parent
4870c8f283
commit
b302c9b38e
1 changed files with 2 additions and 6 deletions
|
@ -415,22 +415,18 @@ proc applyOpacity*(target: Image | Mask, opacity: float32) {.raises: [].} =
|
||||||
|
|
||||||
if mm_movemask_epi8(mm_cmpeq_epi16(values, zeroVec)) != 0xffff:
|
if mm_movemask_epi8(mm_cmpeq_epi16(values, zeroVec)) != 0xffff:
|
||||||
var
|
var
|
||||||
valuesEven = mm_slli_epi16(mm_andnot_si128(oddMask, values), 8)
|
valuesEven = mm_slli_epi16(values, 8)
|
||||||
valuesOdd = mm_and_si128(values, oddMask)
|
valuesOdd = mm_and_si128(values, oddMask)
|
||||||
|
|
||||||
# values * opacity
|
|
||||||
valuesEven = mm_mulhi_epu16(valuesEven, opacityVec)
|
valuesEven = mm_mulhi_epu16(valuesEven, opacityVec)
|
||||||
valuesOdd = mm_mulhi_epu16(valuesOdd, opacityVec)
|
valuesOdd = mm_mulhi_epu16(valuesOdd, opacityVec)
|
||||||
|
|
||||||
# div 255
|
|
||||||
valuesEven = mm_srli_epi16(mm_mulhi_epu16(valuesEven, div255), 7)
|
valuesEven = mm_srli_epi16(mm_mulhi_epu16(valuesEven, div255), 7)
|
||||||
valuesOdd = mm_srli_epi16(mm_mulhi_epu16(valuesOdd, div255), 7)
|
valuesOdd = mm_srli_epi16(mm_mulhi_epu16(valuesOdd, div255), 7)
|
||||||
|
|
||||||
valuesOdd = mm_slli_epi16(valuesOdd, 8)
|
|
||||||
|
|
||||||
mm_storeu_si128(
|
mm_storeu_si128(
|
||||||
target.data[index].addr,
|
target.data[index].addr,
|
||||||
mm_or_si128(valuesEven, valuesOdd)
|
mm_or_si128(valuesEven, mm_slli_epi16(valuesOdd, 8))
|
||||||
)
|
)
|
||||||
|
|
||||||
i += 16
|
i += 16
|
||||||
|
|
Loading…
Reference in a new issue