09/09/04 13:34:43
DXライブラリに実装されているSetDrawBrightという関数と同じような振舞いをする
振舞いをする画像処理関数が必要になったんですが、
現在使用しているライブラリには用意されていなかったのでCで安直に実装しましたところ、
しかし泣けるぐらい重くなってしまいました。
処理の内容としては
それぞれ1Byteのデータr g b aと適用前のピクセルpの成分pr pg pb paが与えられたときに
適用後のピクセルqの各成分である
qr = pr * r/0xff, qg = pg * g/0xff, qb = pb * b/0xff, qa = pa * a/0xff
を計算し合成しqの値を求めるというものです。
1.こういうのって正式な呼び方ありますかね?
DxライブラリではSetDrawBrightというような名前で使われていたので、
明度と関係がありそうなんですが、それだけでは上手く絞り切れませんでした。
今後自力で調べるときのキーワードとして上手く機能する呼び方というものは
知っておきたいです
2.また、効率のよい実装例、方針があれば知りたいです。
自力ではSIMDを使って乗除と最終的に各色成分をシフトして&合成する処理を、
それぞれ一纏めにできそうというぐらいしか思いつきません。