月別アーカイブ: 2007年9月

CEDEC2007 開発の鉄人 NVIDIA

もう十分きれいになったから、これ以上いったいハードに何が
必要なんだ、とゲーム開発の現場でもよく聞く話です。
進化する必要が本当にあるのかと。
画面の見た目の変化はある一定以上まではわかりやすいですが、
それを超えると素人目にはあんまり区別がつかないかもしれません。

従来そのままのデータや作り方を続けている限り、ハード機能や
世代が変わっても映像的にはさほど変化が無いというのが1つ。

もう1つは、前処理で作っておくフェイク手法がかなり発達しており、
作業工程も確立していること。プリレンダリングしたり前処理で焼き付けたり、
ムービーを併用していたり。変化しない限り、動かない限りは
遜色ないクオリティを出すことができます。

本来のインタラクティブ性を完全に再現するにはシミュレーションが
必要ですが、これはまだまだパワーが足りません。
物理エンジンにしろアニメーションにしろ、今ようやく本格的な
活用が始まったばかりです。

shader が登場し、ソフトウエア技術者の工夫と努力が可能になって、
GPU のパワーが上がった今行われているのは、フェイクを徐々に
本来のものに置き換える動きだとといえるかもしれません。

見た目ではほとんど変わらなくても、ライティングがリアルタイムに
なって影も動的生成になって、やっと自由に動かせるようになって
きました。
でもまだまだパワーが足りず十分ではありません。
もっともっと欲しいのです。メモリもパワーも。

●流体力学による煙、炎、水

というわけで・・このセッションでは、煙等の流体を GPU 上で
シミュレートする手法について丁寧かつ実践的に詳しく解説が
行われました。シミュレートだけでなく動的なインタラクションと
レンダリングも含まれており、説得力のある煙となっています。
表現上、そしてパフォーマンス的に問題となる点にもきちんと
踏み込んでおり、良く考えられたわかりやすいものでした。
ただしシミュレートはまだ空間上非常に限定された領域に限られ
ています。

注目したのは、ボリュームテクスチャへのレンダリングが実用的に
なる(なっている)という点。これはかなり応用できそうですね。

ボリュームの多用はメモリ容量が心配ですが、毎年発売される
GPU のスペックを見る限り、間違いなく時間が解決するでしょう。

●いつまでもプレイできる (今日と明日のためのゲームアート)

スペックの予測を立てるためのデータとその理由が流暢に
語られます。流暢過ぎるために若干流れの趣旨がつかみづらい
ことと、少々冗長に感じてしまう部分があります。
というのも、対象が純粋な技術者ではなく、アーティストや
プロデューサーを含めた幅広いものだったからのようです。

昔作られたゲームのグラフィックスを、時代に合わせて改善する
手間のかからない いくつかのテクニックが紹介されます。
とはいっても具体的な手法そのものにフォーカスした内容では
なく、最新 GPU によってパワーがあまってもこんな感じで
さまざまな「工夫が可能なのだ」ということ。
あきらめるな、ということです。

●高度なスキンレンダリング

GeForce8800 のデモのひとつ、リアルな皮膚表現の解説でした。
GPU Gems3 の表紙でもおなじみのあれです。
プログラマはもちろん、むしろCGデザイナー(アーティスト)の方
が見ても大変参考になる内容だったと思います。
効果の比較もわかりやすく、なぜそのような処理が必要なのか、
なぜこのような構造になっているのか、さまざまな工夫とともに
詳しく説明されました。

テクスチャスペースにおけるライティングやエフェクトは非常に
魅力的なものです。メモリさえあれば。
メモリ容量の増加によって、できることや可能性が増えている
ことが良くわかります。

●みんなのためのシェーダつくり (一般向けのシェーダ)

FX Composer2 の紹介です。
さまざまなフィードバックにより、さまざまな用途、さまざまな
目的に利用できる完成度の高いツールに進化しています。
基本的には拡張性とカスタマイズ性を持った、開発に必要な
機能を統合するための入れ物的なポジションです。
豊富なシェーダーライブラリから、目玉のシェーダーデバッガまで
ありとあらゆる。実演も行われました。

これまでこの手のツールに消極的だったのは、機能や使い勝手
以前のところに理由がありました。例えば NVIDIA 以外の GPU で
の動作確認。使えない機能があるのではないかという危惧です。
本格的にコンテンツパイプラインに組み込むならば検証して
おきたいところです。
D3D10 以降では基本的に機能差が無い前提なので、もしかしたら
特に問題ないのかもしれません。

em1key Bluetooth keyboard RBK-2000BTII の日本語カスタマイズ例

RBK-2000BT2 の日本語キーボード化カスタマイズ例です。
リュウド RBK-2000BTII

RBK-2000BT2 は英語キーボードですが WindowsMobile ではデフォルトで
日本語キーボードとして認識されます。そのためもともとキー刻印を
無視して日本語配列で使いたい方にとってはうってつけなのですが、
キーの数が少ないので入力できない文字が存在します。

em1key でこれらのキー割り当てをカスタマイズしてみました。
キー刻印を完全に無視していますので、キーを見ないで打つ方
向けです。

(1) 入力できない [\|] キーを右下の [del] キーに割り当てる

(2) (1) の設定で Delete キーがなくなってしまうので Ctrl+[bs]
  に [Delete] を割り当てる

(3) 入力できない文字 [_] を Ctrl+[:*] に割り当てる。(暫定仕様)

(4) Ctrl と Capslock を入れ替え
  (em1key デフォルト設定が元から持っている機能、お好みで)

(5) Esc キーが小さくて押しづらいので、Esc と [全/半] を入れ替え
  (em1key デフォルト設定が元から持っている機能、お好みで)

(6) (5) の設定で[全/半] が遠くなってしまうので、スペースキー横の
  [alt] でも IME の On/Off 可能にする。

この設定でもまだ入力できない文字 Ctrl+[_] があります。
[_] キーの割り当てに関しては再考の余地ありです。

em1key デフォルトの設定ファイルの一番最後に後述の設定を
追加しています。また、func TABLE_FUNC 0 の中の

SETSYSFLAG SYSFLAG_CTRLSWAP
SETSYSFLAG SYSFLAG_ESCSWAP

の2行を有効にしています。(この2行はお好みで)

追加する設定

# [半] ([全/半]キー処理用)
func TABLE_ALLMODE	VK_DBE_SBCSCHAR
		TESTSYSFLAG	SYSFLAG_SCANVALID
		IF_TRUE	20
		TESTSYSFLAG	SYSFLAG_ESCSWAP
		IF_TRUE	30
	LABEL	20
		# ESC swap しない
		EXIT		FALSE
	LABEL	30
		#
		# ESC キーとして実行
		IF_UP	10
		# down
		RAWDOWN		VK_ESCAPE
		EXIT		TRUE
	LABEL	10
		# up
		RAWUP		VK_ESCAPE
		EXIT		TRUE
endfunc

# [全] ([全/半]キー処理用)
func TABLE_ALLMODE	VK_DBE_DBCSCHAR
		TESTSYSFLAG	SYSFLAG_SCANVALID
		IF_TRUE	20
		TESTSYSFLAG	SYSFLAG_ESCSWAP
		IF_TRUE	30
	LABEL	20
		# ESC swap しない
		EXIT		FALSE
	LABEL	30
		#
		# ESC キーとして実行
		IF_UP	10
		# down
		RAWDOWN		VK_ESCAPE
		EXIT		TRUE
	LABEL	10
		# up
		RAWUP		VK_ESCAPE
		EXIT		TRUE
endfunc

# [DEL] ([\|]キーに変更)
func TABLE_ALLMODE	VK_DELETE
		TESTSYSFLAG	SYSFLAG_SCANVALID
		IF_TRUE	20
		# [\|]
		IF_UP	40
		RAWDOWN	VK_BACKSLASH
		EXIT		TRUE
	LABEL	40
		RAWUP	VK_BACKSLASH
		EXIT		TRUE
	LABEL	20
		EXIT	FALSE
endfunc

# [BS] (Ctrl+BS で Delete)
func TABLE_ALLMODE	VK_BACK
		TESTSYSFLAG	SYSFLAG_SCANVALID
		IF_TRUE		20
		IF_CTRL		10
	LABEL	20
		EXIT	FALSE
		# [DELETE]
	LABEL	10
		IF_UP	40
		RAWUP	VK_CONTROL
		RAWDOWN	VK_DELETE
		EXIT		TRUE
	LABEL	40
		RAWUP	VK_CONTROL
		RAWUP	VK_DELETE
		EXIT		TRUE
endfunc

# [:*] (Ctrl+[:*]で _)
func TABLE_ALLMODE	VK_APOSTROPHE
		TESTSYSFLAG	SYSFLAG_SCANVALID
		IF_TRUE		20
		IF_CTRL		10
	LABEL	20
		EXIT	FALSE
		# [_]
	LABEL	10
		IF_UP	40
		RAWUP	VK_CONTROL
		RAWDOWN	VK_SHIFT
		RAWDOWN	VK_OEM_102
		EXIT		TRUE
	LABEL	40
		RAWUP	VK_CONTROL
		RAWUP	VK_OEM_102
		RAWUP	VK_SHIFT
		EXIT		TRUE
endfunc

# [ALT] (IME On/Off)
func TABLE_ALLMODE	VK_MENU
		IF_UP	40
		RAWUP	VK_LMENU
		WINCMD	WINCMD_IMESW	# IME の On/Off
		EXIT		TRUE
	LABEL	40
		EXIT		TRUE
endfunc

PS3 に Bluetooth キーボード RBK-2000BT2 をつなぐ

Playstation3 に折りたたみ携帯型 Bluetooth キーボードを
登録してみました。こないだ届いたこれです。
リュウド RBK-2000BTII

PS3 は Bluetooth を内蔵しているので、Bluetooth 周辺機器を
登録することが出来ます。そもそも標準のコントローラや
専用リモコンが Bluetooth らしいです。

登録メニューには、今のところ
 ・BDリモートコントローラ
 ・ヘッドセット
 ・キーボード/マウス
の3つの登録メニューがあります。(今後のファームアップデートで
増えるかもしれません。)

試したことは無いですが、ボイスチャット用のヘッドセットも無線で
できるなら結構便利かもしれません。

PS3 Linux 上でもきちんと Bluetooth は見えているので、Linux 上
ならもっといろいろなデバイスがつながるかもしれません。
実際 debian の yaegashi さんが Wii コントローラをつないでいます。
ほげめも Wii Remote on PS3 Linux

●機器登録

Bluetooth キーボード RBK-2000BT2 の登録手順は下記の通りです。
PS3 のクロスメディアバーでの操作です。

(1) 周辺機器設定 → Bluetooth機器登録 → キーボード/マウスの登録

(2) [検索開始] を選択する機器検索を始めるので、
  RBK-2000BT2 側も [Fn] + [~`] を長押しして認識モードにする。
  (キーボード右上の Bluetooth LED が点灯)

(3) 検索してみつかった機器がリストアップされます。
  RBK-2000BT2 は PS3 上で「 Bluetooth Keyboard 」と
  表示されました。これを選択。

(4) 画面にパスキーが数字で表示されるので、RBK-2000BT2 側でも
  この数字を入力します。
  数字キーで入力し、最後に [Enter] を押します。
  この [Enter] を忘れがちなので注意。

(5) 「登録が完了しました」と表示されておしまいです。

以後、クロスメディアバー上の操作がキーボードだけでできるよう
になります。カーソルキーが使えます。

●キーボード言語選択

そのままでも使えますが、WindowsMobile への登録時と同じように
デフォルトでは日本語キーボードとして認識しています。PS3 では
これを簡単に切り替えることが出来ます。

(1) 周辺機器設定 → キーボードのタイプ

(2) 「英語キーボード」を選ぶ (US側)

これで ASCII(英語)キーボードでも、キーボードの刻印通りに
文字入力できるようになります。

●キーボードによるクロスメディアバーの操作

カーソルキー、Enterキー、ESCキーでほとんどの操作が出来るようです。
オプション表示の(△) キーは [F1] でいけます。
残念ながら (PS) ボタンは見つかりませんでした。
キーボードをつなぐことによって、文字入力は各段に使いやすくなります。
ただしこれらの操作は、必ずしもゲームで使えるわけではないようです。

・カーソルキー
・(○) [Enter]
・(×) [ESC]
・(△) [F1]

●再認識

PS3 本体の電源を入れた後、キーボード側の何らかのキーを押すと
再認識されてすぐ使えるようになります。いちいち PS ボタンを
押さなくてもよく、なかなか便利です。

Folding@Home PS3で 1PETA FLOPS

ついこの間 Folding@Home で 1PETA 超えた
と思ったら、もう 1264TFLOPS です。
Playstation3 だけでも 1000TFLOPS いってます。
かなり増えていますね。

Fonding@Home Client statistics by OS

OS Type           Current TFLOPS   Active CPUs  Total CPUs 
Windows           164              172703       1798091 
Mac OS X/PowerPC  8                9391         105647 
Mac OS X/Intel    13               4188         23712 
Linux             36               21449        245348 
GPU               43               732          4246 
PLAYSTATIONR3     1000             40305        255338 
Total             1264             248768       2432382 

Last updated at Sun, 23 Sep 2007 09:49:22