フォト

Google AdSense


  • AdSense
無料ブログはココログ

« 2011年12月 | トップページ | 2012年2月 »

2012.01.31

PIXARの短編集DVDを買ってみた

P1311692

製品紹介
http://disney-studio.jp/product/index.jsp?cid=868&pid=30000000002277

AMDのデモを見ていたらそろそろPIXARの古い短編なんかにあるような表現ってのはリアルタイムでも出来るんじゃ無いかと思って、iTunesなどあさっていたらTwitterでオススメされたので購入。

DISC1では、CGムービーの古典の部分から最近のものまでちょっと振り返るために見る。DISC2があることには届いてから気づいたんですが、PIXARのスタジオの成り立ちから最近の話までと言うことでコレも楽しみです。

DISC2
1980年代半ば、たった1人の青年、ジョン・ラセターの夢と情熱によって、全く新しいアニメーションの歴史が始まろうとしていた。本作は、ピクサー・アニメーション・スタジオの草創期から現在に至るまでの歩みを、ジョン・ラセター、スティーブ・ジョブス、ジョージ・ルーカス、トム・ハンクスらの貴重な証言を挟みながら綴る、ファン必携の完全保存版!

ここからちょっとこれからのリアルタイムを考える。

ピクサー・ショート・フィルム&ピクサー・ストーリー 完全保存版 [DVD]
ピクサー・ショート・フィルム&ピクサー・ストーリー 完全保存版 [DVD]
ウォルト・ディズニー・ジャパン株式会社 2008-11-07
売り上げランキング : 11693


Amazonで詳しく見る
by G-Tools

2012.01.30

AMD Radeon HD 7900シリーズのデモのメモ

デモをちゃんと動作させることができたので、メモ。

http://developer.amd.com/samples/demos/pages/AMDRadeonHD7900SeriesGraphicsReal-TimeDemos.aspx

このデモはフォワードレンダリングでやってるみたいなのですが、GIに関してはvirtual point light sourcesなようですね。ライトのカリング周りはCompute Shaderを使ってるみたいですね。

フォワードレンダリングでやってるのは、やはり複雑なマテリアルや複数のライティングモデルを混在させていきたいということみたいですね。BRDFなんかの物理ベースのライティングをしてるわけですが、金属周り(たぶん、鎧とか城の跳ね橋の鎖とか)は変えてるみたいですね。

Ptexは、Partially resident texturesでやってますが、これはDirect3DではCompute Shaderで実装することはできますが、Radeon HD 7970の新機能なんかをフルに使うには現時点ではOpenGLの拡張を使うしか無いようですね。

それから現時点でバージョン1.0ですが1.1ではEducational Modeが入るみたいでデバッグ表示みたいなのはそのバージョンから付くんじゃないかと思います。

最近はDeferred Renderingブームですが。これはこれでフォワードレンダリングの将来の方向性のひとつなんでしょうね。マテリアルに複雑なライティングモデルを使いたいとなると、こうなんでしょうね。ライトの数で魅せる以外の絵作りではこういった手法になるんでしょうね。

Compute Shaderの話 Pixel Shaderに比べた優位性とか

最近、ようやく現役復帰してきたので、Compute Shaderなんかを書くことが増えてきました。

EA DICEのFrostbite 2.0とかわりとCompute Shaderを上手に使ったエンジンなどが出てきているわけですが、どの辺がCompute ShaderがPixel Shaderに対して優位かなどと言った点もわかってきました。そんなわけで、そんな話。

コンピュート シェーダーの概要
http://msdn.microsoft.com/ja-jp/library/ee417833(v=vs.85).aspx

・出力周り、UAVとか
Pixel Shaderでは、1つのプログラムが1つのピクセルの計算結果を出力する(Multiple Render Targets : MRTsを使えば複数のレンダーターゲットも行けます)わけですが、出力先の座標に関しては任意の場所に出力したり同じレンダーターゲットの複数のピクセルに出したりとかといったことはできません。

Compute Shaderの場合、Unordered Access View(UAV)というのがレンダーターゲットみたいなものなのですが、こちらは任意のアドレスに対してデータを書き込めて、読み込みもシェーダで出来ます。Pixel Shaderではこれから書き込みピクセルにすでに入っている値を読み出すことができません(一部のGPUだとレンダーターゲットテクスチャをセットしながら使えるかも)が、Compute Shaderでは実質的にはそれができます。

書き込みに関しては、1つのCompute Shaderプログラムが1つのアドレスに出力では無く複数の箇所に書き込んだりも出来ます。

ちなみに、実はPSでもUAVは1つだけ使えるのですが、PSには後述のスレッドグループの概念やスレッドグループ共有メモリなどは無いです。

・スレッド周り
Pixel Shaderでは1つのシェーダプログラムが扱うのは1つのピクセルの処理(MRTsの場合は、レンダーターゲットの数分)ですが、Compute Shaderでは1スレッドという単位になります。Compute Shaderでは、スレッドグループと言って複数のスレッドをまとめた概念があります。1つのスレッドグループはDirect3D11では、1024スレッドまでになります。

スレッドグループには32KBのスレッドグループ共有メモリがあって、スレッドグループ内のスレッドが読み書きして同期をとったりができます。ただ、複数のスレッドが読み書きするのでAtomic処理やメモリバリアなどの処理が発生します。この辺の話は次。

・1スレッドグループ = 1タイル
Battlefield 3のTile-based Deferred Renderingなどでは1つのスレッドグループが256スレッド、16x16ピクセル単位の処理をします。これはCompute Shader的には1スレッドグループですが1タイルと呼びます。BF3では、16x16ピクセルの1タイルの空間に何個のライトがライティング処理に使われるか計算することで、旧来のフルシーンでやるDeferred Renderingよりも効率的に計算を行います。

BF3では、16x16ピクセルの空間に対して、ライトのバウンディングボリュームが交差するかどうかを計算してカリングをしているようです。タイル単位でやることでPer-pixelでやるよりも計算量が減るメリットがあります。

テクスチャのようなものをCompute Shaderで処理する際には、アルゴリズムによってはタイル単位で処理することで、Pixel Shaderでフルシーンに対して同じ処理を行うよりも速くできることがあります。なお、Tile-based Deferred Rendering以外にもHorizon-Based Ambient Occlusion(HBAO)などもスレッドグループ共有メモリを使ったアルゴリズムの方が速いようです。

NVIDIA SDKのHorizon-Based Ambient Occlusion using Compute Shadersの概要を参照のこと
http://developer.nvidia.com/nvidia-graphics-sdk-11-direct3d

それから最近だとRadeon HD 7970のサンプルでもタイルベースの処理をしてるようです。

Specifically, this demo uses DirectCompute to cull and manage lights in a scene. The end result is a per-pixel or per-tile list of lights that forward-render based shaders use for lighting each pixel.

http://developer.amd.com/samples/demos/pages/AMDRadeonHD7900SeriesGraphicsReal-TimeDemos.aspx

Compute Shaderで流行ってるタイルベースの処理というのは、「周囲の近傍ピクセルでまとめてやった方がいいアルゴリズム」というのをスレッドグループ単位でスレッドグループ共有メモリを使って実現するということですね。

・まとめ
とりあえず、上のあたりの話題からデータの構造によってはCompute Shaderの方が便利な機能があって効率的ということですね。この辺の発想を使ったネタは海外ではどんどん出てきているので追いかけていかないと。ようやく最近、現役復帰してきたので置いてかれないようにしないと。

2012.01.29

モバイル用の13インチディスプレイを買ったので接続してみた

モバイルできる13インチディスプレイのOn-Lap 1301を買ってみました。

ノートPC用セカンダリ液晶ディスプレイを試す GeChic On-Lap 1301
http://www.4gamer.net/games/038/G003884/20120113067/

とりあえず、楽な縦置きをしてみました(接続はD-subです。HDMIも使えます)が、持ち運べるサイズでディスプレイが増えるというのはいいですね。一応、MBAとの接続を考えてますが、普段から使うのもありかも。あと、iPadにも。

P1291683

縦画面表示は、OS側の設定でやってますが、こうやってノートPCでも手軽にメイン画面を作業用、サブ画面をドキュメント表示用というのができるのはいいですね。今度なんかしらのイベントがあったら持って行こう。

P1291690

ちなみに、横置きは吸盤でノートPCの天板に貼り付けるのですが、それが嫌なら何らかのスタンドが必要になります。4Gamerの記事を見ていると純正のスタンドがありますが、これは同梱にして欲しかったなぁ。とりあえず、楽天とか探すと売ってる店がありますね。

参考
http://item.rakuten.co.jp/biccamera/4937699008191/

13型 モバイル液晶モニター ON-LAP 1301
13型 モバイル液晶モニター ON-LAP 1301
'- 2011-12-22
売り上げランキング : 1563


Amazonで詳しく見る
by G-Tools

2012.01.28

RADEON HD 7970のAMDの技術デモ

AMDのサイトで,Radeon HD 7970向けの技術デモが公開になったようですね.

AMD Radeon™ HD 7900 Series Graphics Real-Time Demos
http://developer.amd.com/samples/demos/pages/AMDRadeonHD7900SeriesGraphicsReal-TimeDemos.aspx

Partially resident textures (PRT)を使ったPtexが実機で動いているのを見ることができますね.

ちなみに,自分のところではフレームレートはでないですがRadeon HD 5770では動作しました.

2012.01.25

現役復帰

ここ最近ようやく現役の新しい技術を追えるようになってきました。

MicrosoftのTile ResourcesとAMDのRadeon HD 7970のPartially Resident Texturesの話

Shader.jp: Tiled Resources for Xbox 360 and Direct3D 11 : Direct3D11のメガテクスチャ技術の資料とサンプル
http://www.shader.jp/?p=513

「Radeon HD 7970」ではメガテクスチャ処理のGPUアクセラレーションが可能に!? GPUコンピューティング向けの工夫やディスプレイ周りをチェックする
http://www.4gamer.net/games/135/G013536/20120106063/

ようやくドキュメントに目を通すことが出来たがMicrosoftがこうした発表とサンプルを用意した意図がわかってきた。

新しいハードウェア(Radeon HD 7970)で実現できる機能をソフトウェア的に実装してみるという実験(実装の中身のソースまで公開してきたのは大胆)で、プログラムもDirect3D11.xのAPIに出来るようにクラス名とかがID3D11~で実装されているので、入れる気満々なんだろうな。

そんなことを言ってる間にジョン・カーマックはこんなこと言ってるみたいですし。

Carmack: Doom 4 to support Radeon 7970′s Partially Resident Textures
http://gamingbolt.com/carmack-doom-4-to-support-radeon-7970s-partially-resident-textures

本人のツイート
https://twitter.com/#!/ID_AA_Carmack/status/157512179749371907

こうした技術の実現でテクスチャの解像度は気にしなくて良くなる時代は来るとは思うんだけど、おそらくこの技術をフル活用するとBDですら容量がネックになりそうですね。

ネット回線が速くて遅延が気にならないレベルならテクスチャをサーバに置くということになったりするのかも...とか思いつつもそれならOnLiveとかなのかね。

なんにせよ、テクスチャ(...の解像度やファイルサイズ)に対して考え方を変える時期が来たのかも。

2012.01.23

iBooks AuthorでBlenderからのColladaモデルをインポートしてみた

iBooks AuthorでBlenderからのColladaモデルをインポートしてみました。

テストデータ(iPadで落として見てください.iPhoneには対応してないようです)
http://dl.dropbox.com/u/10225794/blendertest.itmsp/blendertest.ibooks

インポートはメニューで下記のような手順で行けました。

挿入→ウィジェット→3D

からインポートができました。ひとまずジオメトリはOKです。

ただ、カメラやライト、マテリアルデータも出したつもりなんですが、反映されてないなぁ...。ちょっと色々と試してみよう。

モバイルでもたまに外部ディスプレイが欲しくなる

Macbook Air 11インチを外出時に持って行くのですが、GameJam的な製作が伴うときには11インチの画面が手狭に感じるのですが、外部ディスプレイを持ち歩く...というのはなかなか大変だと思ってたんですが、なんか持ち運べそうな外部ディスプレイが出たみたいですね。

ノートPC用セカンダリ液晶ディスプレイを試す GeChic On-Lap 1301
http://www.4gamer.net/games/038/G003884/20120113067/

追加1.0kgぐらいで1366×768ってことで同じ解像度の液晶が手に入るのか~。重さを我慢しても2枚画面を外で使いたいときの選択肢としてはアリかもなぁ。

縦置きできるというのもアリだなぁ。

13型 モバイル液晶モニター ON-LAP 1301
13型 モバイル液晶モニター ON-LAP 1301
'- 2011-12-22
売り上げランキング : 959


Amazonで詳しく見る
by G-Tools

2012.01.22

iBooks Authorで使える3Dモデルの形式ってなんだろう?

iBooks Authorでは、3Dモデルの埋め込みができるということだったんですが、どういう形式のファイルが埋め込めるか気になっていたのですがAppleのサポートページによるとCollada(DAE)ファイルのようですね。

iBooks Author:3D モデルを使うための最良の方法
http://support.apple.com/kb/HT5093?viewlocale=ja_JP

テクスチャサイズやライトやカメラの話などもありますね。

エクスポータとしては、OpenCOLLADAのものを使うのがいいという話も書いてあるので、AutodeskのツールでもOpenCOLLADAのエクスポータプラグインとかBlender(2.5以降はOpenCOLLADA)とかのは相性良さそうですね。逆に、Sketchupとかは怪しそうだけど実験してみた方がいいかも。

シェーディングはあまり凝れませんが、3DアーティストやCADの人などがiBooksでコンテンツを配布という展開もアリっぽそうですね。

2012.01.21

Tegra 3タブレットいきなりでるのか...

Tegra 3の「Eee Pad TF201」もう出ちゃうのかぁ。

http://pc.watch.impress.co.jp/docs/news/20120120_506252.html

このサイズはiPadとかぶるのでちょっと購入はしないと思いますが、7インチ版とか早く出て欲しいなぁ。

ASUS タブレットパソコン Eee Pad TF201 TF201-GD64D
ASUS タブレットパソコン Eee Pad TF201 TF201-GD64D
ASUS
売り上げランキング : 2257


Amazonで詳しく見る
by G-Tools

2012.01.19

頂点シェーダテセレーション

へぇ~、AMD GPUで頂点シェーダでテセレーションやる特殊な実装があるのか。

http://developer.amd.com/sdks/wgsdk/Pages/default.aspx

ま~、さすがに今は使わないだろうけど。

AMD_pinned_memory拡張が気になる

「Radeon HD 7970」ではメガテクスチャ処理のGPUアクセラレーションが可能に!? GPUコンピューティング向けの工夫やディスプレイ周りをチェックする
http://www.4gamer.net/games/135/G013536/20120106063/

AMDは,2011年6月に米ワシントン州ベルビュー市で開催した「Fusion Developer Summit 2011」において,GCNでGPUにアドレス変換キャッシュ(ATC:Address Translation Cache)を搭載することで,CPUとGPUが同じ仮想アドレスに64bitポインタでアクセスできるようにすると明らかにしていた。
 CPU側のIOMMU(Input/Output Memory Management Unit,Intel製CPUでいうところの「Vt-d」)がGPU側の仮想メモリアドレスを物理アドレスに変換。一方,GPU側のMMU(Memory Management Unit)も,ATCを用いてCPUの仮想アドレスを物理アドレスに変換し,OSがIOMMUとMMUを管理下に置けるようにする。これにより,仮想メモリ空間上でCPUとGPUのデータ共有を実現するというわけだ。

さて、これはどうやるんだろう...。TwitterでDirect3D11.1にはAPIが無いっぽいと書いてる方がいて、C++ AMPからかなと個人的に予想してたんですが、

GL_AMD_pinned_memory
http://www.opengl.org/registry/specs/AMD/pinned_memory.txt

Overview
This extension defines an interface that allows improved control
of the physical memory used by the graphics device.

It allows the an existing page of system memory allocated by the application
to be used as memory directly accessible graphics processor. One example
application of this functionality would be to be able to avoid an explicit
synchronous copy whith sub-system of your application for instance it is
possible to directly draw from a system memory copy of a video image.

ふ~む、Last Modified Date: November 30, 2011か。

これはこれは。

2012.01.18

Tiled Resources for Xbox 360 and Direct3D 11の話を書いてみた

Shader.jpの方でTiled Resources for Xbox 360 and Direct3D 11の話を書いてみたのですが、最初、メガテクスチャ技術のソースがあるじゃん...ラッキーと思ったらすごく重要な技術だと気づきました。

Tiled Resources for Xbox 360 and Direct3D 11 : Direct3D11のメガテクスチャ技術の資料とサンプル
http://www.shader.jp/?p=513

これは、しっかり把握しておかないと。

個人的な宿題 Mega Meshesのスライド読み

わりと今更感ありますけど、昨年のGDC 2011の頃って新技術を見る時間があんまりなかったので、あらためてLionhead StudioのMega Meshesを復習してみる。

Mega Meshesのスライドはワークフローやインハウスツールの話題などもあるので、再現は難しくともヒントはいっぱい。

スライド
http://miciwan.com/GDC2011/GDC2011_Mega_Meshes.pdf

わりと最新のグラフィックス環境で実装したわけでは無いので、アレンジしつつ今風(たとえば、部分的にCompute Shaderを使ったり)にしていくとかもありですよね。

それから下記も復習する。

SIGGRAPH 2007の Battlefield 2のTerrain Renderingのセッションのスライド
http://masafumi.cocolog-nifty.com/masafumis_diary/2011/11/siggraph-2007-b.html

2012.01.17

Direct3D11時代の開発、色々と調査

最近は、ようやく自分がDirect3D11に対応できてきたので、開発のためのツールやプロファイラなどを漁りまくってるんですがなかなかまだまだ効率的にシェーダをテストしたり描画したりという環境が整わんなぁ。

Direct3D9.0時代に使い慣れたツールなどはのきなみ更新終了だったりとかしてねぇ...。

ただ、描画の仕組み、必要なデータの構造などなど持ち越しはできない感じだし、新しい方法を確立しないとなぁ。

やっぱり、できることが広がってるし、古いやり方を捨てる、新しいチャレンジをするってことだよなぁ。

なかなか同じとはいかない

今使っているGalaxz Nexusは二台目のAndroid端末なのですが、前に使ってた端末に比べてまともな端末なのでだいぶiPhoneと同じように使えるようになってきました。

ただ、やっぱりアプリの面でiPhoneの方が使うものが多くてねぇ。例えばこのblogを更新するのもAndroidではちとキツイ。Galaxy Nexusだとアプリ起動しないし。レビューもひどかったなぁ。


2012.01.16

続・AMD PerfStudio 2.0のリモートデバッグ

今日はあらためてAMDのPerfStudio 2.0のドキュメントを読んでいたのですが、やはりリモートデバッグ時のクライアント側のPCは特にGPUの指定は無いようです。

サーバー側はRadeonって書いてありますが、クライアント側は動作環境にRadeonのことはありませんでした。なるほど、これは便利。

2012.01.15

AndroidのNFCで通信してWeb連動できる体重計まで買ってしまった

オムロンのWeb連動できる活動量計のWebサービスのウェルネスリンクを色々とみていたら体重・体脂肪計連動みたいなのがあったのでつい体重計まで新調してみました。

http://www.healthcare.omron.co.jp/product/basic/152

この体重計は、USB接続ができるだけでなく、AndroidのNFC(Fericaのおサイフケータイでも可)で通信して体重計のログを送ってくれる機能があるのがちょっと面白いですね。おサイフケータイは決済のことばっかり考えてましたが、こういう使い方されてるんですねぇ。

P1151680

そんなわけで使ってみました。Galaxy Nexusから無事に送信完了。

いい感じです。活動量計と併せてダイエットのためのログ取りに使っていきます。

OMRON オムロン WellnessLink対応体組成計 HBF-208IT
OMRON オムロン WellnessLink対応体組成計 HBF-208IT
オムロン 2010-11-01
売り上げランキング : 460


Amazonで詳しく見る
by G-Tools

2012.01.14

Macbook Air用のスタンドが届いた

もう一個の買い物が届いた。

BookArc for AirというMacbook Air用(11インチ、13インチ両対応)のスタンドが届きました。

BookArc for Air
http://www.focal.co.jp/products/detail.php?product_id=486

自宅はデュアルディスプレイ環境なのですが、先日のシェーダのリモートデバッグが自宅の環境でもできることがわかりましたが、1枚のディスプレイをMacbook Airに割り当ててやるために購入。

これで、クラムシェルモードで運用しよう。

Apple Portables:クラムシェルモード (内蔵ディスプレイを閉じた状態) で外部ディスプレイを使用する方法
http://support.apple.com/kb/HT3131?viewlocale=ja_JP&locale=ja_JP

BookArc for Air TWS-ST-000005
BookArc for Air TWS-ST-000005
Twelve South 2011-04-30
売り上げランキング : 1962


Amazonで詳しく見る
by G-Tools

ダイエットのためにオムロンの活動量計を買ってみた

Img_2083

ちょっと正月に食べ過ぎてしまったのでオムロンの活動量計 Calori Scanを買ってみました。

http://www.healthcare.omron.co.jp/product/basic/163

とりあえず、ダイエットということで自分の身長体重などからどのぐらいのカロリーを消費すればいいのかなどを知るために導入してみます。

色々な活動量計のなかでも、Webサービスと連動してるのということで管理やモチベーションの維持がしやすそうと言うことで今回はコレにしてみました。

ウェルネスリンク
http://www.wellnesslink.jp/p/

なんか、従来の万歩計のイメージだったんですが結構進化してるんですね。付属の転送用のボードは非接触で通信してくれるんですね。セットアップもサイトでのサービス登録時にドライバとかソフトウェアのインストールとかやってくれますし。

あと、色々とサービス見てるとオムロンの体重計とか血圧計の一部モデルってAndroidのNFCで通信できる製品があるんですね。知らんうちに色々と出てるんですねぇ。

https://market.android.com/details?id=jp.co.omron.healthcare.wl.android.basic

オムロン(OMRON) 活動量計 Calori Scan カロリスキャン ブルー HJA-307IT-B
オムロン(OMRON) 活動量計 Calori Scan カロリスキャン ブルー HJA-307IT-B
オムロン(OMRON) 2011-06-14
売り上げランキング : 1154


Amazonで詳しく見る
by G-Tools

近いうちにGPU PerfStudio 2の使い方をまとめとく

リモートデバッグでかなりいい感じで使えることがわかったのでGPU PerfStudio 2に関しては近いうちに使い方をまとめておきます。

予告してるTile-based Deferred Renderingよりも先かな?

AMD GPU PerfStudio 2のリモートデバッグってRadeon1枚でよかったのか...

ここのところDirect3D11のシェーダデバッグをどうしたらやれるか試行錯誤しておりました。

とりあえず、自宅はRadeon HD 5700シリーズを使っているので選択肢としてはGPU PerfStudio 2を使うと言うことになります。

GPU PerfStudio 2
http://developer.amd.com/tools/PerfStudio/Pages/default.aspx

GPU PerfStudio 2はNVIDIAのParallel Nsightと異なりシングルGPUでローカルでシェーダデバッグができます。ここで言うシェーダデバッグは

・ステップ実行
・シェーダ内の変数のウォッチ
・シェーダ内の各種バッファ、リソースの閲覧
・その場でエディタでシェーダを書き換えて変更を適用

などですね。ひとまずデバッグには十分な機能はローカルで使える...とのことでしたが、試してみたところローカルでのデバッグは動作が重すぎて実用的ではありませんでした。そりゃ、GPUは解析するプログラムだけで無くWindowsのシステム上でも利用しているのでデバッグ用に処理を止めちゃいけませんね。

そうなるとやはりParallel Nsightと同じくリモートでの利用ということにせざるをえません。

リモートということはPCが2台必要と言うことになるわけですが、Radeon搭載PCなんてさすがに2台も持っていないのでダメかとあきらめてました...ところが、実はGPU PerfStudio 2ってリモートデバッグの際に解析結果を見る側のPCはRadeon非搭載のPCでも良いと言うことがわかりました。

・・・というわけで、デスクトップでGPU PerfStudio 2のサーバーソフトを起動して解析したい実行ファイルの解析を担当させ、Windowsを起動したMacbook Airの方でGPU PerfStudio 2のクライアントを起動して解析結果を閲覧したり、シェーダデバッガを動かしてみました。結果は、下記の写真のように無事にリモートデバッグ成功です。これで自宅でシェーダ書いてるときにデバッグができます。

P1141660
クリックすると大きなサイズになります

2012.01.12

Windows 8のARM版(タブレット)で3Dゲームを開発するのってどうやるんだろう...という話題

CESではWindows 8のARM版をNVIDIAとかQualcommとかがタブレットでデモしていたけどアレ向けの3Dゲームを開発するにはどうやって作るんだろうというのが疑問としてわいてきました。

まず、ARM版はx86やx64とバイナリが非互換だということは当然なことなので、やっぱり.NETなアプリケーションで作るのでしょうか?

・・・と思って色々と検索していたら、Windows 8のMetro styleのアプリ開発の導入の文章をみつけました。

ARM版は基本的にMetro UIだけのようなのです。Metro UIはx86とかでもアプリケーションは動くはず(バイナリは非互換でそれぞれのプラットフォーム向けにビルドし直す必要はあるとは思いますが)なので読んでみました。

Getting started with Windows Metro style app development
http://msdn.microsoft.com/en-us/library/windows/apps/br211386.aspx

そうしたら意外とあっさりと"Choose your language and technology"という項目に書かれていました。

You can use the language and technology of your choice to create Metro style apps. Choose a Metro style app using JavaScript for app logic and access to all the rich capabilities of modern devices, combined with the power of HTML5 and CSS3 to design the user interface. Metro style apps using C++, C#, or Visual Basic use XAML markup for the user interface, with native C++ or managed C# or Visual Basic for app logic. Metro style games with C++ use Microsoft DirectX 11.1 with native C++ and HLSL to take full advantage of graphics hardware.

HTML5とかCSS3は今回は関係ないので、読んでいくと

. Metro style apps using C++, C#, or Visual Basic use XAML markup for the user interface, with native C++ or managed C# or Visual Basic for app logic.

ふむふむ、従来のVisual Studioで開発できる言語は使えるようですね。それからXAMLね。ネイティブとマネージど両方いけますよという感じみたいですね。さて、肝心の3Dゲームについては、そのあと

Metro style games with C++ use Microsoft DirectX 11.1 with native C++ and HLSL to take full advantage of graphics hardware.

お、普通にC++とDirectX 11.1ですか、それからHLSLというわけで馴染みな感じですね。今、DirectX 11でゲームを開発している開発者はそのままARM版のタブレット向けのアプリケーション開発には容易に移行できそうですね。DirectX 11.1とあるのですが、完全にDirectX 11.1のフル機能が使えるのかFeature Level 9(DirectX 9.0ハードウェア向け)などで動かすのかはわかりませんが、それはまぁどっちでもいいですね。

もう一つネットを検索していたところ、Windows 8のアプリケーションを開発するVisual Studio 11について書かれたVisual C++チームのblogの"Game Debugging in Visual Studio 11"というエントリを見つけました。

Game Debugging in Visual Studio 11
http://blogs.msdn.com/b/vcblog/archive/2011/11/08/10235150.aspx

頭から読んでると、最初の文章で

We believe Metro style games and graphics-intensive apps present a huge opportunity for developers on new devices such as tablets. The primary API for accessing the full power of the underlying graphics hardware on Windows is DirectX 11 (including Direct3D and Direct2D).

と書かれています。最初の文章

We believe Metro style games and graphics-intensive apps present a huge opportunity for developers on new devices such as tablets.

を見るとMetro style gamesと新しいデバイス、つまりタブレットということが書かれています。タブレットと言ったらここではARM版と言うことだと思います。つづいて、

. The primary API for accessing the full power of the underlying graphics hardware on Windows is DirectX 11 (including Direct3D and Direct2D).

ということで、DirectX 11がハードウェア性能を引き出すための主要なAPIだということを書いています。

XNAのような仕組みが提供されるかはわかりません(Windows Phoneのこともあるので個人的には提供されるだろうと思っています)が、ひとまずDirectX 11自体は使っていって良さそうです。

もう一つ考えなくてはいけないのがDirectX 9.0のこと。DirectX 9.0で作っていた開発者はタブレットを考えると移行を考えなくちゃいけないのかということですが、それについては今回は情報を得られず。

ただ、現在のDirectX 9.0アプリケーションのバイナリは動かないことは間違いないと思います。気になるのは、ARM向けにDirectX 9.0アプリケーションはビルドができるのかどうか?個人的な予想ではARM向けのSDKは提供されず、ビルドできないと思ってます。

ちょっと話題が変わりますが、Windows 8では他のプラットフォームにあるようなApp Storeができます。これには、ソフトウェア開発者にとって色々とビジネスのチャンスがあると思います。そうなるとゲームも色々とチャンスがあるとは思うのですが、いちいちC++でDirectX 11で書くということをしたくない開発者は多いと思います。そうなるとUnityやUnreal Engine(UDK)とかを使う選択肢があると思うのですが、Unityの場合、現在のWindows版はDirectX 9.0で動いているのでグラフィックス部分をいつDirectX 11に対応させるかが気になります(もしくはWindows Phoneのように対応しないか)。

そんなわけでタブレットでもDirect3D11開発ができると言うことであれば、Metro styleのアプリケーションの開発などはちょっと調べていきたいと思います。

オライリーからGPUプログラミングの洋書が出るみたい

オライリーから"Programming GPUs"と言う本が出るみたいですね。

出版社の紹介ページ:Programming GPUs
http://shop.oreilly.com/product/0636920017981.do

具体的にどういった環境でやるかなどは謎です。

しかし、そんな表紙には釣られない(ry...ってことなんですかね。

Programming Gpus
Programming GpusAndrew Sheppard

Oreilly & Associates Inc 2012-04-30
売り上げランキング : 192189


Amazonで詳しく見る
by G-Tools

2012.01.11

仕事始め

長い休暇が終わって今日から会社行きます。

今年も先行き不透明ですが、現在締め切りが激しい仕事を抱えてないので色々な場に出たりShader.jp更新したりとかそういうのはしばらくは行けるんじゃないかと思います。

2012.01.10

ARM版Windows 8のDirect3Dで気になること...

ARM版のWindows 8のDirect3Dで気になるのは、ARM版がDirect3D 9.0以前のAPIをサポートするかどうかですね。

今のx86やx64のアプリが動かないというのは当然なんですが、新規にDirect3D 9.0のプログラムをARMでビルドできるのか出来ないのかが気になります(ARM版のDirect3D9のライブラリが提供されるのか?たぶん、されないと思ってますけど)。

わりとありそうなのは、Direct3D11.1をFeature Level 9.3にして作るかXNAということになると思うんですが、そうなるとUnityであったりUDKであったりで当初からARM版向けにゲームを提供するのは難しそうだよなぁ・・・(UDKはDirect3D11版があるから対応早いかもしれないけど)。

まぁ、そんなこと考えるよりもPreview版入れたり、ドキュメント読めばいいわけなので、そろそろためしてみるかな。もしくは、ARM版Windows 8のドキュメントを探すか。

明日から

とりあえず、明日から会社に行きます。

今年は、正月休みにプロジェクト休暇3日を足してここまで休みにしてましたが、ようやく休み終わりです。

2012.01.09

GoogleのWeb Store経由じゃないところのNative Clientアプリを動かす設定

とりあえず、自分メモ。

これやらないとUnityで自作アプリをWeb Player(Native Clientあり)でローカルで動かせないので。

Google Chromeはデフォルトの設定ではセキュリティ的な観点からWeb Storeから入手したNative Clientアプリ以外は実行できないようになっています。なので、それをONにするメモ。

まずは、アドレスバーで下記を入力。

about:flags

設定画面が出てくるので、下記のスクリーンショットのところのように

ネイティブ クライアント
Chrome ウェブストアからインストールしたもの以外でも、すべてのウェブ アプリケーションについてネイティブ クライアントを有効にします。

を設定すればOK。

Nacl

レーザーキーボードもうひとこえ

「MAGICCUBE」は少しだけ実売価格が下がってるのか~。

もうちょい安いと買うんだけど、このぐらいだと悩むなぁ。

celluon Bluetoothレーザー・プロジェクションキーボード MAGICCUBE
celluon Bluetoothレーザー・プロジェクションキーボード MAGICCUBE
Celluon
売り上げランキング : 1535


Amazonで詳しく見る
by G-Tools

RADEON HD 7970が出たみたいなのでDirect3D11.1の話題

RADEON 7970が出たようなので久々にDirect3D11.1の話題でも。

以前からなんどか話題にしてるけど、Direct3D11.1の新機能などはすでに発表されていて、現時点ではWindows 8のPreview版やSDKなどでは動きそうな感じのようです(今まではGPUがなかったので実際に動くかは謎でしたが)。

Direct3D 11.1 Features
http://msdn.microsoft.com/en-us/library/hh404562(v=VS.85).aspx

とりあえず、新機能は下記のような感じですね。

・Shader tracing
・Direct3D device sharing
・Check support of new Direct3D 11.1 features and formats
・Create larger constant buffers than a shader can access
・Use logical operations in a render target
・Force the sample count to create a rasterizer state
・Process video resources with shaders
・Change subresources with new copy options
・Discard resources and resource views
・Support a larger number of UAVs
・Bind a subrange of a constant buffer to a shader
・Retrieve the subrange of a constant buffer that is bound to a shader
・Clear all or part of a resource view
・Map SRVs of dynamic buffers with NO_OVERWRITE
・Use UAVs at every pipeline stage

結構、細かい新機能の追加は多いです。シェーダステージの追加などはありません。

このあと、順番にメモを書いていきます(現状、新機能が加わることで何が変わるかよくわからないところは簡易メモ)。気になるところやこう仕えそうなど。なお、従来のDirect3D 11の各種リソースの制限などを見返すためMSDNのリンクを貼っておきます。

Resource Limits (Direct3D 11)
http://msdn.microsoft.com/en-us/library/windows/desktop/ff819065(v=vs.85).aspx

なお、新機能では、従来の機能から使えるリソースが増えたりアクセスできるメモリ量が増えたりとかありますが、その辺の具体的な数値に関しては書かれてないものも結構あります。

・Shader tracing
シェーダのトレース機能。パフォーマンス解析などに便利そうな関数が追加になってます。

・Direct3D device sharing
Direct3D11.1では、1つのレンダリングデバイスからDirect3D10と11のAPIの呼び出しができるようですね。おそらく、Direct3D10ベースの他のAPI(Direct2DとかDirectWriteとか)との連携を考慮して、とかかな?

・Check support of new Direct3D 11.1 features and formats
新しいフォーマットや機能のサポート。DXGI はバージョン1.2。

後述の論理演算向けのサポートのチェックとかビデオリソース(ビデオのデコード結果をDirect3D11.1では簡単に使える?)まわりの話とか色々と。あと、Feature Level 9.3向けの精度に関するモノとか。

・Create larger constant buffers than a shader can access
従来より大きなコンスタントバッファを生成してシェーダからアクセスできる。

ただし、シェーダがアクセスできるコンスタントバッファの範囲は1スロットで4096要素(32bit* 4 * 4096 = 64KB)のまま。

これは1つのコンスタントバッファを大きく確保して、オフセットを指定してその中からどの4096要素を使うかというのを決めてバインドするってことなんでしょうね...というかセットとかゲット周りは後述。

・Use logical operations in a render target
レンダーターゲットに対する論理演算のサポート。

レンダーターゲットのブレンディングの段階で論理演算ができるみたいです。ちなみに、複数の論理演算処理を一回でやることはできないとのこと。

どう使うかはあんまり思いついてないんですが、テクスチャに対して論理演算的な処理ができるハードも世の中には無いわけでは無いのでそういうところで使われてるテクニックを持ってくるってところでしょうか?

・Force the sample count to create a rasterizer state
サンプルカウントを強制化をラスタライザーステートで指定できる。

D3D11_RASTERIZER_DESC1のForcedSampleCountを見ているとUAVをレンダーターゲットにした際に使うことになりそうですねぇ。

http://msdn.microsoft.com/en-us/library/hh404489(v=VS.85).aspx

・Process video resources with shaders
ビデオ処理したリソースへのシェーダアクセス。

Direct3D11.1では、どうやらビデオ処理(ビデオをデコードした)したリソースを使えるようでSRV/RTV/UAVのビューでアクセスも出来るようですね。

ただ、ビデオ側のAPIはどうなってるのかは謎ですが。

・Change subresources with new copy options
UpdateSubresourceとかCopySubresourceRegionなどのリソースコピーや更新関数に新しいコピーフラグが追加とのことですね。引数が増えた新しい関数ができてます。

・Discard resources and resource views
リソースやビューの破棄。専用の関数が用意されてます。

・Support a larger number of UAVs
従来よりも多くのUAVの利用ができるようになる。

DX11では、8枚でしたが具体的な枚数は不明。

・Bind a subrange of a constant buffer to a shader
・Retrieve the subrange of a constant buffer that is bound to a shader
この2つはセットで、コンスタントバッファのバインド時にサブレンジを指定してセットとゲットができる。

これは前述の"Create larger constant buffers than a shader can acces"ともセットで大きなコンスタントバッファを作った場合にどの範囲を使用するかやどの範囲を取り出すかなどの指定がSetConstantBuffers1系関数でできるようになったとのこと。

・Clear all or part of a resource view
すべてのビュー、もしくは単一のビューのクリア関数の追加。

ID3D11DeviceContext1::ClearViewと言う関数でビューに対するクリアができるようですね。

・Map SRVs of dynamic buffers with NO_OVERWRITE
動的バッファのShader Resource ViewでもD3D11_MAP_WRITE_NO_OVERWRITEを指定して生成ができるように(従来は頂点バッファとインデックスバッファのみ)。

D3D11_MAP_WRITE_NO_OVERWRITEについてはここ
http://msdn.microsoft.com/ja-jp/library/ee416245(v=vs.85).aspx

・Use UAVs at every pipeline stage
UAVがどのシェーダステージからでも利用可能。

最後に来たコレが個人的には、一番大きな機能追加だと思っています。UAVって従来までCompute Shaderと制限付きでPixel Shaderからアクセスが出来たわけですが、これでジオメトリを処理するようなステージでもUAVが使えるようになるわけですね。Compute Shaderの演算結果をジオメトリ側で使う場合の選択肢が増えるわけですね。

個人的には、この機能追加が地形のジオメトリ処理とかスキンアニメーションのボーンの持たせ方、GPUパーティクルのデータの持たせ方や処理方法で新しいテクニックが出てくると期待してます。

一方で、UAVは読み出すだけならいいんですが書き込むことを考えるとマルチスレッドでの同期周りが色々と頭痛い問題になりそうなのですが、Compute Shaderと同じくアトミック命令は使えるようですが...。

・まとめ
Direct3D11.1は、バージョン的には0.1しか違わないのですが、個人的には結構大きいアップデートだと思ってます。UAVまわりの機能強化はどう使っていくかが楽しみですね。

Windows 8専用っぽいのが、ちょっとアレですが、今年はこのあたりの追加機能を含めて今後のエンジン作りや新しいグラフィックスのテクニックを考えていかないとなぁ。

facebookでの気になるサービス終了

そういえば、2012年現在、下記の2つのゲームがすでにサービス終了になっていることが最近気になっています。

ゲームロフト、ブラウザ上でオンライン対戦できる3DFPS
Facebook「N.O.V.A. Near Orbit Vanguard Alliance: Elite」
http://game.watch.impress.co.jp/docs/news/20110421_441211.html

「オーダー&カオス オンライン」のFacebook版が登場。Facebookのコミュニティ機能と連動し,招待やコミュニケーションがよりスムーズに
http://www.4gamer.net/games/124/G012479/20110722036/

Facebook オーダー&カオス オンライン(2011/12/20に終了したらしい)
http://apps.facebook.com/orderandchaos/

どちらもFacebookの上で、FPSやMMORPGというソーシャルゲームよりもがっつりしたゲーム(Unity製だったんだけど、Unityがサポートしない機能(Facebook連携やアイテム課金通信関連)を)でした。

サービス開始は、上の記事だと

N.O.V.A. Near Orbit Vanguard Alliance: Elite 4/20サービス開始
オーダー&カオス オンライン 7/21サービス開始

みたいですね。それにしても半年程度でサービスが終了ってすごく見切りが速いのでこれは儲からなかったんでしょうねぇ(ちなみに、N.O.V.AのYahoo!モバゲー版はまだサービスやってた)。

ゲームとして面白かったかそうでなかったかという点は置いておいて、どちらのゲームも今もiOSやAndroid版はサービスが続いているのでFacebook上でブラウザでがっつり従来型のゲームを展開しようというのはちょっと注意がいるのかもなぁ。

とにかく、こんなに速くサービス終了の判断になった理由とかデータとか知りたいけど、表には出てこないだろうなぁ...。

2012.01.07

Unity 3.5のWebCamTextureはiOSデバイスで動くのか?

[Unity][Unity3d]Unity 3.5の新機能、 WebCamTexture を使ってみた
http://d.hatena.ne.jp/nakamura001/20120107/

上のエントリを見ていて、そういやiOSの場合どうなんだろう...と気になって実験してみました。

とりあえず、Unity FreeとiOS(Proじゃない)の組み合わせでやってみました。

結果としては無事に動きました。nakamura001ではQVGA(320x240)で動かしてますが、自分のところではVGA(640x480)に変えてみましたが無事に動いてます。もっと高い解像度もいけるかも。

ちょっとまだスクリプトのリファレンスを見てないのですがどのぐらいカメラ側の設定がいじれるのかが気になるところで、オート露出を切ったりとかしないと結構画像解析にはきついです。あと、フロントカメラとバックカメラの切り替えとかも。

さすがにUnityのC#やJavasciptでカメラ画像の画像処理をするのは遅すぎると思われるのでこれでAR向けの画像解析はきついと思いますので、それ以外でどういう利用用途があるか悩みどころ。

2012.01.05

冬休みの宿題的に...

とりあえず、自宅用コードを書き中。

最近のDX11いじってたのを整理しながらライブラリから作り直す。

2012.01.04

Parallel Nsight か GPU PerfStudioか?

ここのところわりとがっつりDX11環境でシェーダを書く機会が増えてきたのですが、シェーダのデバッグ(Compute Shaderあると特に重要性を感じてきてます)や分析環境に関してはあたまを悩ませているところです。

GeForceもRadeonもどちらも使用するんで、Parallel Nsight と GPU PerfStudioそれぞれ使えるんですがどっちがいいんでしょうかねぇ。

Parallel Nsight
http://developer.nvidia.com/nvidia-parallel-nsight

GPU PerfStudio
http://developer.amd.com/tools/PerfStudio/Pages/default.aspx

Parallel NsightはVisual Studio組み込みはいい感じなんですが、シェーダデバッグは複数のGPUかリモートでしか出来ないのがめんどいんですよね。GPU PerfStudioはVisual Studio組み込みでは無いですが、シングルGPUでいけるんでいい感じなんですけどGeForce環境で作業することも多いんですよねぇ...。

なんかいい感じのツール無いんでしょうかねぇ。OpenGLやOpenCLするわけじゃないので、そっち方面のツールはナシです。

2012.01.02

4日ぐらいから始動したいなぁ...

今年は休暇を色々とつけて11日から仕事開始なんですが、4日ぐらいからは何か個人的なこと(Shader.jpの更新とか)をやっていきたいところですねぇ。

SPモード落ちてるのか...

docomoのSPモードメールが落ちてるのか。

Galaxy NexusにしてからSPモードメールを使わないようにしてるから先月からまったく使ってないし、見れないのであまり自分には関係が無くなってきたんですが、課金まわりもあるみたいですねぇ。

2012.01.01

あけましておめでとうございます2012

あけましておめでとうございます。

そんなわけで、本年もよろしくお願いします。

« 2011年12月 | トップページ | 2012年2月 »