VRAMにゃの水平型にゃを垂直型にゃへ変換するにゃ
ちょっとにゃル気がにゃくにゃったにゃので、きばらしにゃに、某にゃエミュのソースをうにゃうにゃとにゃがめてみたですにゃ。
ぼうにゃはVRAMが水平にゃんですにゃね。
PC98とかにゃPC88にゃかにゃとにてるんかにゃ〜。
CPUで頑張って変換してるっぽいけどにゃ、GPUにゃでにゃんとかすると、にゃんとかにゃるんかにゃ〜っと考えてみたりですにゃです。
256色にゃ32bitパレットとにゃ、ステンシルにゃを使うとうまく変換できそうですにゃね。
CPUにゃの負荷が下がるけどにゃ、逆にゃにGPUにゃのフィルレートにゃは上がっちゃうけどにゃ。全部VRAMにゃに乗っけとけば、それにゃりには、動きそうですにゃね。
少しにゃってみようかにゃ〜。
xyzw.... | xyzw.... | xyzw.... | xyzw.... | 16色にゃセルデータ |
.......x | .......y | .......z | .......w | 0バイト目 |
......x. | ......y. | ......z. | ......w. | 1バイト目 |
.....x.. | .....y.. | .....z.. | .....w.. | 2バイト目 |
....x... | ....y... | ....z... | ....w... | 3バイト目 |
xにゃはステンシルでORにゃでにゃっちゃう。
y,z,wはパレットにゃでにゃ。
ビットは書き込みのマスクで設定すると1テーブルで出来るかもにゃ。もしくは頂点カラーで1/4とか1/2とかで右シフトするって方法もあるかもにゃ。*1
この場合にゃは、8ドットにゃを描画するにゃのに8回描画(水平型にゃから垂直型への変換)+1回転送(パレットを設定して実際に描画)の9回必要にゃににゃっちゃうにゃですにゃね。*2
速いか遅いかは不明ですにゃ。*3