VRAM の話書いていたら急に思い出した、オマケの話。
WEB の黎明期、まだ Netscape が標準的な WEB ブラウザったころ、WEB セーフカラー、というものが存在していた。
今でもこの単語を調べれば解説しているページがたくさんある。
でも、どうも書いてあることがおかしい。
すでに失われた技術なので、なぜこんなものが存在したのか覚えている人があまりいないようだ。
・Windows でも Mac でも表示できる色を選んだものだ、という話があった。
・各ブラウザごとに使える色が違ったので、その共通色を選んだものだ、という話があった。
・この色を使えばディザリングなしに表示できるのだ、というような話があった。
そんなことはない。これ以外の色を選んだって、ちゃんと表示は出来た。
ただ、表示は出来るけど悲惨な副作用が待ち構えていただけだ。
Machintosh に 1bit の白黒時代があったことを忘れてはならない。
「すべてがグラフィック」という機械は、VRAM を大量に消費する。
メモリが高価だった時代、そんなに大量のメモリを使うと機械の値段がバカ高くなってしまう。
だから、最初の Mac は白黒だった。
でも、内部のソフトはカラーに対応していた、という有名な話がある。
ソフト的にはカラー対応なのだけど、「メモリが高価だから」白黒になっていただけなんだ。
後で無理なくカラーに拡張され、16色表示できるようになった。
Windows だって、最初は 16色からだった。
そして、Win も Mac も、256色表示できる時代がやってきた。
ちょうどそのころ、WEB が流行し始めたんだ。
たとえば MSX2 は 256色表示ができた。ここでは、RGB を 3:3:2 bit で表現する固定 256色だった。
でも、Win も Mac ももっと自由だった。使える色はたしかに 256色なのだけど、4096色とか、1670万色の中から選ぶことができた。
ただ、一つ問題があった。Win も Mac も、マルチウィンドウだったんだ。
あるウィンドウで、256色の絵Aを表示したとする。ちゃんと表示できる。
別のウィンドウで、256色の絵Bを表示したとする。これもちゃんと表示できる。
ただし、さっき表示したウィンドウの絵Aは、パレットが変更されて酷いことになっている。
Aのウィンドウをアクティブにすると、Aの色は元に戻る。代わりにBが酷いことになる。
これは 256色同時発色の宿命だ。仕方がない。そんなもんだ。
見ようと思ったときには正しく表示できるのだから、まぁ諦めよう。
でも、WEB ではもっと困ったことが起こった。
ひとつのウィンドウの中に、絵が複数表示されるんだ。
最後の絵だけが正しい色合いで、後はぐちゃぐちゃ。
または、最初の絵だけが正しかったり、すべての絵を表示しようと努力して、減色を行ったり…
まぁ、そこらへんは環境依存。
ブラウザだけでなく、OS にもよる。いずれにせよ正しく表示されない。
実は、もっと困った問題だって起きる。
256色で絵を表示されると、ウィンドウの枠とか、メニューの文字とかの色まで変わってしまうのだ。
だって、画面全体で 256色しか使えないのに、絵を表示するために全部のパレットを変えてしまうのだもの。
この説明だけで理解できたと思うけど、必要なのは「すべての絵が同じパレットで描かれている」ことだった。
同じであれば何でもいい。ただ、世界中の人に同じパレットをつかおう、と提案するのだから、それなりに「公平な」ものでないといけなかった。
これが WEB セーフカラーだ。
全部で 256色しか使えない、とわかっている中で、誰もが使いやすいように満遍なく色を決定したい。
RGB の3つのパラメーターの掛け合わせで色が作られる。
1つの色で何階調使えるかは、256の三乗根を求めればいい。
∛256 = 6.349…になる。
だから、RGB 各6段階に設定する。6^3 = 216 で 40色ほど余るけど、これはむしろ好都合。
ウィンドウの枠などを描く色が確保できるからね。
階調が 8bit指定(RGB で 1670万色)だとすれば、00 33 66 99 CC FF の6段階を使えばいい。
4096色から選ばれるようなシステムの場合、適切に変換して、とにかく等間隔の6段階があればいい。
WEB セーフカラーではなくなるけど、256色しか使えないシステムで、ウィンドウの枠とかはないので 256色全部使って良くて、でも同時に違う絵を重ね合わせたりするので使われるパレットは共通化したい…
ゲームなんかではそういう用途が想定される場合があったのだけど、その場合は余った 40色にも色を詰め込んでいい。
R G B と Grayscale の4種類の、次の 10段階のグラデーションを詰め込んでいるのを見たことがある。
11 22 44 55 77 88 AA BB EE DD
間がとびとびだけど、その飛んでいる部分は、ベースとなる 216色に入っている。
だから、10段階追加しただけで、16段階のグラデーションが表示できるようになる。
巧妙に作られたパレットに感心した覚えがある。
どうせオマケ話なので、思い付きでどんどん横道にそれていこう。
「WEB セーフカラーをつかえればどんな環境でも表示で来た」というのは嘘で、MSX2 のような 256色固定表示の WEB 環境も当時普及していた。
i-mode を初めとする、ネット接続可能な携帯電話の、カラーが使えるようになった第二世代。
ほんのわずかな期間で、固定ではなく 4096色などを表示できるものに変わっていくのだけど、当初は固定 256色だった。
そのころに携帯電話の仕事をしていて、僕がプログラムを作り、知人がドット絵を描いていた。
RGB 3:3:2 の固定だと、グラデーションを描くのもままならない。階調が少ない青が邪魔するのだ。
パレットが使えないっていうのは、色表現に想像以上の制約を与える。
それらの携帯電話では、一応普通の WEB ページだって表示できた。
WEB セーフカラーで描かれた絵は、固定カラーに無理やり変換され、ディザリングされた。
非常に珍しい環境だから、見られないことを怒るわけではない。
ただ、「WEB セーフカラーだったら表示できる」と妄信してはいけない、という具体例として挙げたかっただけ。
関係ないついでに。
当時の国際的な定義では、ネットに接続できる携帯電話を「スマートホン」と呼んだ。
世界初のスマートホンは i-mode だ。
でも、世界的に「スマートホン」って概念が普及したころには、日本では i-mode は当然だった。
だから、日本では言葉に特別な意味を持たせ、「QWERTYキーボードが付いている機械」をスマートホンと呼ぶようになっていた。
日本初のスマートホンは W-ZERO3 だ。
今は…どう定義されているかわからない。
アプリをインストールできる機械? それだと i-mode 時代でも可能だった。
キーボードが「ついてない」機械? ついている機種だってあるけど、スマートホンと呼ばれる。
タッチパネルで操作する機械?
…本質ではないけど、これが一番、現在のスマートホンの定義にあっているような気がする。
同じテーマの日記(最近の一覧)
関連ページ
別年同日の日記
11年 Smalltalk,Squeak, Etoys, and Scratch!
申し訳ありませんが、現在意見投稿をできない状態にしています。 |