日別アーカイブ: 2006年10月23日

シェーダーが必要なわけ

もうすぐ PS3 が登場して、ようやくメジャーハードでハードウエアシェーダーが
当たり前になります。1年前に登場した Xbox360 を筆頭に、ShaderModel3.0 が
リアルタイムレンダリングで必須になるわけです。

本当は 2002年に発売された Xbox1 に ShaderModel1.x が搭載されており
シェーダーの時代はとっくに始まっていました。

あまり注目されなかったのは販売台数のせいもありますが、ShaderModel1.x では
機能的制約が大きかったのも一因でしょう。

特に PixelShader で使用可能なステップ数は 演算8+テクスチャ4 の 12個で、
演算制度も 9~12bit 程度の固定少数でした。

もちろん海外での事情は異なっており、Xbox も PC ゲームも人気があるので
シェーダーのノウハウの蓄積はずいぶん先行しているといえます。

シェーダーの登場によって、開発するプログラマの手間は結構増大します。
固定機能の時代はハードに設定すれば勝手にやってくれたジオメトリやライトの
演算も、まるで時代が逆行したかのように自分でやらなければいけなくなりました。

特に初期のシェーダーはアセンブリ言語で記述していたため、拒否反応を示す
人も多かったようです。

ではなぜそこまでしてシェーダーが必要なのでしょうか。

ハードウエアロジックでの実装はたいへん時間がかかると考えられます。
設計から試作、量産まで、実際に動いて使えるようになるまでどれだけの手間と
時間がかかるか想像もできません。

それでも GPU はテクノロジの進化によってさまざまな機能を実装できるように
なりました。もちろんひたすら高速化のために並列度を上げていけばいいんですが、
それだとトランジスタ数よりも先に、メモリ速度やバス帯域が限界に到達して
しまいます。

そのため、ただただ速度を上げるよりも、より美しい描画を行うために機能を割く
必要が生じます。

ただしこの分野はアルゴリズムの問題であり、どんなアルゴリズムを、どんな仕様
でハードで実装すればいいのか取捨選択するのが難しいのです。
アルゴリズムの研究の進化も早いですから。

だったらプログラマが自由に命令を選択できる方がいいのではないか、そう考える
のも自然でしょう。

ハードウエアシェーダーの登場によって、プログラマが自由にハードウエアの演算
ロジックを変更できるようになりました。

プログラマがハードの機能を選択するのに必要な時間はごくわずかです。いくらでも
設計と試行、フィードバックを繰り返すことができるのです。
ハードロジックを設計してチップを製造する時間とは比較になりません。

ハードウエアアクセラレーションの恩恵を受けつつ新しいアルゴリズムの開発が
短期間でできるようになり、一気にリアルタイムグラフィックスの分野が華やかに
なりました。

アルゴリズムを開拓する人にとってはたいへん魅力的なものです。

そしてシェーダーはハードウエアでしかできなかったさまざまなアルゴリズムを
アプリケーション化してくれます。他の人が作ったシェーダーをもらってきて
使うこともできるわけです。

もう1点、シェーダーがどうしても必要だった理由があります。

GPU の開発会社や Direct3D 等の API を設計する Microsoft 等と、実際にゲーム
等を開発する現場とはどうしてもそれなりの距離や隔たりがあります。

実際に現場が欲しい、リアルタイムレンダリングで欲しい機能と、ハードに実装
される機能は必ずしも一致していませんでした。

頂点カラーの演算方法、値の持ち方、ジオメトリブレンディングの仕様、ライティ
ングの仕様など。

固定機能の時代は、使わない機能やオーバースペックな機能であってもハードに
実装されているため使わざるを得ませんでした。また API の設計によっても
制限を受けます。

むしろ DirectX3~6 等、CPU だけでジオメトリ演算を行っていた時代の方が
ゲームにあわせて自由に頂点や演算を設計し、不要な演算は徹底的に省いて必要
最小限にすることができました。

DirectX7 世代のハードで Hardware Transform and Lighting が搭載され、
演算が極めて高速になったのは望んでいたことでした。
が、速度は速くなったのだけど、逆に使いづらい制約も増えたなと感じたものです。

DirectX8 でシェーダーが登場し、不満だった部分も全部再設計できるようになり
ました。CPU 演算時代の自由度と、GPU の速度の両方を手に入れたのだから
シェーダーは最高です!

よく見たら解説がありました (WZ Mobile)

きちんと
公式ページ
を見たら、詳しい使い方や設定などが丁寧に解説してありました。

・導入ガイド
http://www.villagecenter.co.jp/soft/wzmobile/guide/

・WZモバイルでブログを作ろう
http://www.villagecenter.co.jp/soft/wzmobile/blog/

先にこれを読んでおけばよかった。

全体的にですが、機能はそれなりに豊富で良く実装してあるのではないでしょうか。

使いにくい印象を与える原因はおそらくこんなところでしょう。

・操作や反応が遅い(テキスト編集部分ではなく、ダイアログやメニュー等の UIが遅い)
・独自の UI 設計なので、WindowsCE/PocketPC の暗黙のルールが通用しない
・基本的にテキストベースなので、全体的に見た目の印象が良くない
・ベータなのでまだ不具合が残ってる

描画などのレスポンスが速くなるだけでも、操作のストレスはだいぶ減って
くるのではないでしょうか。バグや不具合は当然直るものとして。

テキストエディタで文章を入力する分には問題なくて快適です。
個人的には、普段持ち歩く携帯電話(PDA)でこれだけしっかりとテキスト編集が
できるのだからこれだけで満足です。

メール設定とかその他 WZ Mobile

実は ZERO3 でメール使うのははじめてです。
あらためて試してみると W-ZERO3メール も Outlook もその使い勝手に結構苦戦中。

てこずりながらも WZメール も試しました。
pdx メールの自動受信は無いものの、一般的な pop3/smtp アクセスが可能です。

すっかり携帯メールや webメールの気楽さがしみついてしまってるので、久しぶり
にやるメール設定がかなり面倒です。全部ゼロから打ち込むのだと覚悟を決めたら
何とかなりました。

画面構成 メール一覧+プレビュー で前回のエントリの「ウェブ」と同じ。

送受信はバックグラウンドで行われており、待たされることも無くキー操作を妨げる
ダイアログも出たりしません。

動作はかなり重たいです。メニューや操作は試行錯誤と慣れが必要でしょう。

ただ設定は細かくできるので、一旦セッティングが決まってしまえばそれなりに
使えるかもしれません。デフォルトだと返信時に signature が付いてしまいます。
この辺のテンプレートも自由に書き換えることが出来ました。

まだ機能的に不安定な部分があるものの、そこはベータなので今後直っていくで
しょう。標準の電話帳との連動とかその辺は不明です。

メール等のベースフォルダを SDカード に設定すると、サスペンドからの復帰に
時間がかかるようになってしまいました。メインメモリに移動したら大丈夫でした。

メニューの「ツール」>「ベースフォルダ設定」で存在しないフォルダを割り当
てると、WZモバイル が一旦終了してもう一度フォルダ設定画面になるようです。

こんな感じで WZ Mobile に含まれる機能は、メール、ノート(メモ)、ブラウザ、
タスクマネージャ、ファイラーと多岐にわたります。

メールにはアドレス帳が付いているし、データをタイムスタンプ順にカレンダー
表示する機能もあります。ノート機能を使うと一見スケジューラのような使い方が
できます。

なんとなく携帯電話の基本的な機能をカバーしてるようですね。
テキストエディタを中心に据えつつ、独自の携帯電話 UI/アプリ を構築しよう
としてるのかなと、そんな気がします。