プレイ日記
moh6an moh6an
ARYOPで画像配列生成して GLOADに画像配列を流し込みたいとき、αは最大値255でないと表示されないけど数値範囲として 128~255が-127~-1の範囲である必要があって そこだけ24ビットシフト演算前に処理する必要があるのでだいぶ唸って困った。 (他のRGBチャネルは単純にシフトして足すだけ)
12そうだね
プレイ済み
返信[1]
親投稿
moh6an moh6an
んでもってGLOADに32bit配列を変換して流し込みたい場合 ARGBの順で格納されてるんだけど、juhsyの内部画像配列は、何を血迷ったのかRGBAにしてしまっていた・・・・orz(保存画像も同じ) すごい・・・・不覚・・・・格納チャネルの紐付けを交換すりゃいいんだけど、ソースコードがちょっと(元からだが)汚くなってしまった・・・
0そうだね
プレイ済み
返信[2]
親投稿
moh6an moh6an
不透明度を内部的に処理するにしても、表示は255固定にしないと色自体表示されないから、不透明度値はわざわざ計算しないで ARYOP #AOPADD 出力配列,-127*(1<<24),0で固定でいいのだろう
0そうだね
プレイ済み
返信[3]
親投稿
moh6an moh6an
つまり直値にするとあらかじめ-2130706432を足しておく
0そうだね
プレイ済み
返信[4]
親投稿
moh6an moh6an
思いっきり、計算間違えてた 255が-1なんだから、-1*(1<<24)であり つまり-16777216でした、orz ARYOP #AOPADD 出力配列,-16777216,0 ARYOP #AOPMAD 出力配列,R値配列,1<<16,出力配列 ARYOP #AOPMAD 出力配列,G値配列,1<<8,出力配列 ARYOP #AOPMAD 出力配列,B値配列,1<<0,出力配列
0そうだね
プレイ済み
返信[5]
親投稿
moh6an moh6an
R値計算のときに不透明度値を混ぜられるのだから1処理減らせるな・・・ ついでにビットシフト係数も定数値にすると速くなるらしいから置換 する。となると3行に減らせるね ARYOP #AOPMAD 出力配列,R値配列,65536,-16777216 ARYOP #AOPMAD 出力配列,G値配列,256,出力配列 ARYOP #AOPADD 出力配列,B値配列,出力配列
0そうだね
プレイ済み
返信[6]
親投稿
moh6an moh6an
不透明度α値を考慮した計算を考えてみる ベース色として#WHITEにしておく、これに8bitαを考慮した合成を行う
0そうだね
プレイ済み
返信[7]
親投稿
moh6an moh6an
ちょうど#AOPLIPが通常タイプの画像合成におあつらえ向きなのでこれを使用すると、まず0-255の整数α値配列を小数点の実数α値配列になおして・・・ ARYOP #AOPDIV 実数α値配列,整数α値配列,255 通常合成の公式は色値*α+地色値*(1-α)、これをAOPLIPにあてはめ ARYOP #AOPLIP 出力赤値配列,入力赤値配列,255,実数α配列 ARYOP #AOPLIP 出力緑値配列,入力緑値配列,255,実数α配列 ARYOP #AOPLIP 出力青値配列,入力青値配列,255,実数α配列
0そうだね
プレイ済み
返信[8]
親投稿
moh6an moh6an
クリッピング対応してないけど実装できた 十分早い!!
1そうだね
プレイ済み