目次
概要
「RGB444とかRGBA4444て何?」
と、話題になったりたまに聞かれたりしたので、自分の知っている情報を出来るだけ分りやすく書いてみた。
※この記事では、RGB4444への変換については触れない
※なんか間違ってたら連絡ください
まずフルカラー、24bitカラーについて
一般的なモニターや、画像編集ソフトなどで扱うカラー
R:0-255
G:0-255
B:0-255
RGBの各色を0~255 (8bit) の値で扱うのが、フルカラー。
R256通り * G256通り * B256通り = 全16,777,216通りの色が出せる。
画像編集ツール等でも、0~255 や 00~FF で各256までの値を設定している。どこもこの辺は一緒のはず。
RGBAのAって何?
- R:Red 赤
- G:Green 緑
- B:Blue 青
- A:Alpha 透明度
Alpha。透明度。基本的に、値が低いと薄くなる。
RGBA4444の画像とは?
- R : 4bit
- G : 4bit
- B : 4bit
- A : 4bit
のように値を4bitで扱う画像の事。
8bitは0-255までの値を扱えるが、
4bitは0-15までの16通りの値しか扱えない。フルカラーに比べて色がアバウトになる。
bitって?
扱うメモリの量。いっぱい使うとそれだけ、いっぱいメモリが必要。
フルカラーの場合の使用メモリ
R 8bit |
G 8bit |
B 8bit |
R:8bit + G:8bit + B:8bit = 24bitで
1px(1ピクセル,1ドット)に24bit必要。
なんでみんなフルカラーにしないの?
フルカラーの24bitより、12bitとかの方が軽いから。
- 画像を保持するのに必要なVRAM(ビデオメモリ)が少なくて済む
- 描画時に使うVRAMが少なくて済む
- 使うメモリが少ないと、メモリを書き換える回数が少ないので、描画転送速度が速い
- 携帯ゲーム機などはバッテリー使用量も少なくなる
ただし、24bit->12bitと行き来したりすると、変換に時間がかかったりする事も。
いろんなRGB(色深度)
種類 | 1px の bit数 |
扱える値 | 最大 表示色数 |
備考 |
RGB(8,8,8) | 24bit | 0-255 | 16,777,216色 | フルカラー、トゥルーカラー 一般的なモニタ。 プレステ・セガサタも扱える |
RGBA(8,8,8,8) | 32bit | 0-255 | 16,777,216色 | フルカラー+透過8bit Canvasのcontextとかもコレに近い |
RGB(16,16,16) RGB(32,32,32) |
48bit 96bit |
0-65,535 0-すごい |
281兆色強 すごい色 |
16/32bitチャンネルとか言う。 Photoshop等で使えるが・・・ 普通のモニタでは見えない 印刷向け? |
RGB(4,4,4) RGBA(4,4,4,4) |
12bit 16bit |
0-15 | 4,096色 | ゲームギアなど 最近だとunity,cocos等の スマホ向けアプリで扱う |
RGB(5,5,5) RGBA(5,5,5,1) |
15bit 16bit |
0-31 A:0-1 |
32,768色 | ハイカラー SFC,GBA等 透明度はアンチエイリアスなしの ナシ0/アリ1のみ。 |
RGB(6,6,6) | 18bit | 0-63 | 262,144色 | Nintendo DS等 |
RGB(1,1,1) | 3bit | 0-1 | 8色 | デジタルカラー 昔のパソコンゲーム。 ソーサリアンや3までのイース等 |
モノクロ256階調 | 8bit | 0-255 | 白-黒 256色 | あまり使うところを見た事が無い |
モノクロ8階調 | 4bit | 0-7 | 白-黒 8色 | ワンダースワン |
4階調 | 2bit | 0-3 | 白-黒 4色 | GB |
2階調 | 1bit | 0-1 | 白-黒 2色 | 白と黒のみ ウォッチ型ゲームなど |
※コンシューマー系ゲームの場合、最大表示色数のすべてを色を画面に出せる訳ではなく、パレットに設定できる色数になる
ドット風ゲームを作る際の色設定
使える色に気をつけると、より古いゲームっぽさを出せる。
例:ゲームギア風の場合
RGBに使えるのが各4bitなので、0~15までを指定できる。
これは16進数のカラーコード(00~FF)で言えば、
00, 11, 22, 33, 44 … DD, FF
のように1桁目と2桁目を同じ数値にすれば4bitカラーと同じ扱いとなる。
8bitチャンネルの画像編集ソフト上で色を指定する際は、カラーコードを入れると楽!
#1122CC, #FF6655, #99DD00 等
関連 → PhotoshopCS6,CCで塗りつぶしの色がズレてしまう問題
例:オールドPCゲーム風の場合
RGBに使えるのが各1bitのものは、0 か 1を指定できる。
これは単純で、画像編集ソフト上のカラー設定で
0 か 255 (00 か FF)
を入れればヨイだけ。
全8色しか使えないが、それでもすばらしい絵はたくさんあるのだ・・・これとか
ゲームハードの各RGBに使える値を出す
ゲームの仕様等を調べて、最大表示色数が分れば計算できる!計算式は
ただしRGBに均等にbitを割り振られている前提。
適当に16とか32とか64を3回かけても、そのうち当たる…
そのた
bpp
bits per pixel
1pxあたりのbit数を、~bppと言ったりする。
画像ファイルの容量とVRAMは別
画像ファイルを軽くしても、描画処理速度やメモリが軽くなるかは別問題。
大抵のゲームでもパソコンでも言える事ではあるが、CDやHDDの中にある画像ファイルを直接スクリーンに出したりはしない。
CDやHDDの読み込みは遅いので、一度ビデオメモリの中に格納するのだ。また圧縮してある画像ファイルは、圧縮をデコード(展開)する必要がある。
VRAMを確保する領域
たとえば320*320の画像ファイルをVRAMに展開する際、320px*320pxの領域に割り当てられるわけではない。
OSやハードによって異なるが、8の乗数である512px*512pxのスペースに確保されたりする。空白が無駄になってしまう。
必要なメモリを計算する
面倒くさいけど、そんなに難しくない。
例えば横10px*縦10px(ピクセル)の画像があった場合、
10px * 10px = 100px
面積が100px。フルカラーは1pxに対して24bit使うので、
100px * 24bit = 2400bit
bitだと分かりにくいからバイト(byte)に変換。8bitで1byteなので、
2400bit / 8 = 300byte
10px*10pxの画像を扱うのに300byteのメモリが必要になる。
※このメモリは画像を保存したときのファイル容量ではなく、メモリに展開する量
FHD 1920px * 1080px
フルHD画質。最近のモニタは大体この解像度
フルカラーで表示する場合
1920px * 1080px * 24bit = 49,766,400bit = 6,220,800 byte = 6075KB = 5.9326171875MB
約6MBのメモリが必要。
RGB444で表示する場合
1920px * 1080px * 12bit = 24,883,200bit = 3,110,400 byte = 3,037.5KB = 2.96630859375MB
約3MBのメモリが必要。フルカラーに比べると、2枚分使える。