GPG雑学:ゲームで使う画像サイズはなぜ2の乗数なのか?(上)

​ こんにちは。


先日、知り合いの人気ブロガーK先生(仮名)に
このブログを見せました。



K先生(大学教授、人気ブロガー、イケメン?)


K先生は僕のブログをしっかり読んくださり、
こうフィードバックしてくれました。





・・・


確かに、難しい内容が下手な説明で
更に分かりにくいな、と感じられます。


そういうわけで、


今日は少し軽いテーマで話してみたいと思います。




知っておいたら良い、知らなくても良い(どうでも良い)
ゲーム制作の豆知識


今日の話は 画像サイズ です。








ゲーム業界に長く努めたデザイナーさんなら
ゲームで使う画像を作るとき、大体こんなサイズで
納品することが分かります。





「256 x 256」 「512 x 512」 「1024 x 1024」 ...


この数字の共通点は
2の乗数で表現できる定数です。


プログラマーには親密な数字ですが
感覚的に複雑に見えます。


それより 「500 x 500」 や 「1000 x 1000」 の方が
分かりやすくて良さそうです。



Q:こんな複雑な数字で合わせないと
いけないですか?

A:いいえ、実は2の乗数にしなくても
特に問題はありません。
ただし、使っては良くない数字ならあります。






● 良くない数字とは? ●



ゲーム会社に働いているプログラマーHさん



ある日、Hさんに2枚の画像ファイルが納品されました。





Hさんは、B.pngの 「520 x 520」 サイズが
どうしても気になってたまりません。




なぜでしょう?



実際に上の2つの画像を、メモリ上にロードすると
こうなります。



B.png が A.png の2倍になっています。



その理由は、コンピュータが画像を
どうやって処理しているのかに関係あります。




● ビデオメモリの働き方 ●



メモリは画像を載せる領域を確報するとき
2倍ずつ拡張する傾向があります。




大体こんな感じです。


つまり、メモリサイズは

2 → 4 → 8 → 16 → ... → 512 → 1024 → ...

の値で増えていきます。

A.png 「500 x 500」 は 「512 x 512」 の中に入りますが
B.png 「520 x 520」 は 「512 x 512」 を超えてしまうので
結局 「1024 x 1024」 まで拡張しないといけません。


Hさんが感じている不快感は、少しの差で
大きい無駄な領域ができてしまうことが原因です。





まるで20L袋にギリギリ入らないゴミを捨てるため
40Lの袋を用意する気持ちです。



サイズをどう決めるかによって、無駄な領域が
どのくらい出来てしまうのかが決まります。



サイズ事に発生する残り領域の例


そして、その無駄な領域を0にするサイズが2の乗数です。




そういうわけで、デザイナーさんは
効率良くメモリ容量を使うため
2の乗数の形でサイズを合わせてくれるのです。



※最悪のケースは、上の例みたいに
2の乗数をギリギリ超えるサイズです。
会社に嫌いなプログラマーが居たら
こういうサイズで画像を納品してみましょう



では、なぜコンピューターは2倍拡張する方法で
画像をメモリに載せるのでしょうか?

それは、コンピューターがイメージ処理するとき
効率よく計算するためです。




この話は次の記事で詳しく説明します。






※ 元ブログから移転された記事です。

コメント