2月の終わり
昨年までは製品に関わってたので、年度末という感じの忙しさはあまりなかったんですが、今年は違うことをやってるので急に色々と決めることが出てきたりとか忙しくなってきました。
2月はあっという間な感じでしたが、来月も忙しくなりそうです。
« 2012年1月 | トップページ | 2012年3月 »
昨年までは製品に関わってたので、年度末という感じの忙しさはあまりなかったんですが、今年は違うことをやってるので急に色々と決めることが出てきたりとか忙しくなってきました。
2月はあっという間な感じでしたが、来月も忙しくなりそうです。
ビデオが面白かったので日本版に来る前にメモ。
Microsoft TechForum unveils three research projects (video)
http://www.engadget.com/2012/02/28/microsoft-techforum-unveils-three-research-projects-video/
Microsoft Researchの3つの研究プロジェクトの動画です。
透過型のディスプレイでキーボードと手の間に斜めに設置されてて、ディスプレイの中のものに触れるような感じで操作ができるみたい。
HoloflectorはインタラクティブなARミラーとのこと。自分が映ってそこに映ったCGとインタラクションが取れるみたい。
Illumishareはデスク上に映ったスクリーンを他の人とシェアして同じ画面にインタラクションしながら協調作業できる仕組みかな?お互いのデスクをカメラで撮って投影してるだけのように見えるので実はローテク?
見ててなかなか楽しいですね。
とりあえず、しばらくC++/CXも追う。
Inside the C++/CX Design
http://blogs.msdn.com/b/vcblog/archive/2011/10/20/10228473.aspx
Windows 8では、Metro styleでないとApp Storeで販売が出来ないと言うことで、Metro styleでDirect3D 11.1アプリケーションを作るサンプルとかを探していたのですがようやくサンプルのソースに目を通しました。
Metro style app samples
http://code.msdn.microsoft.com/windowsapps/
Direct3D 11.1のサンプルに関しては検索すると下記。
見た感じですと、C++/CLIっぽい感じですが、どうやらC++/CX(C++ Component Extension)というらしいですね。C++/CLIからの発展系ならわりとわかるので移行はスムーズに行けそうです。
それからいくつかのC++のサンプルを見ているとXAMLでGUIを作ってるサンプルもありました。現在のWPFアプリケーションだとC#とかになるわけですが、Windows 8ではC++でもXAMLのGUIのアプリケーションが作れるんですね。これで、C#からネイティブコードのDLLを呼び出したりとかしないですむのはありがたいです。
色々と心配だったのですが、思っていたよりも何とかなりそうで良かったです。C++でXAMLアプリケーションが作れるとDirect3D 11.1のツールが作りやすいのがありがたいです。
さて、これでWindows 8時代にはスムーズにPCとタブレットアプリを作ったり出来そうです。
GPU Pro 3到着。
早速読んでく。

| GPU PRO 3: Advanced Rendering Techniques | |
![]() | Wolfgang Engel A K Peters/CRC Press 2012-02-14 売り上げランキング : 1300 Amazonで詳しく見る by G-Tools |
AltDevConfのセッション動画が公開になってますね。
AltDevConf Session Videos
http://altdevblogaday.com/2012/02/27/altdevconf-session-videos/
とりあえず、気になるグラフィックス系セッションの動画をメモ。
・Real Time Area Lighting – Now and Next
Geometrics社(Enlightenの開発会社)のSam Martin氏のセッション。
・PowerVR Hardware Architecture and Application Performance Guidelines
PowerVRの話。
・Dynamic Global Illumination
Wolfgang Engle氏のセッション。
昨日、GPU Pro 3の発送メールが来ました。届くのは今日かな?
公式サイト
http://gpupro3.blogspot.com/
| GPU PRO 3: Advanced Rendering Techniques | |
![]() | Wolfgang Engel A K Peters/CRC Press 2012-02-14 売り上げランキング : 2776 Amazonで詳しく見る by G-Tools |
そろそろいい加減、Compute ShaderでのTile-based Deferred Renderingの解説を書きます。1月にやるって言ったままでしたが、今度こそやります。
とりあえず、今の時点でオススメなのがIntelのサンプル。このエントリでは、軽くどんな話かだけ書いておく。
Deferred Rendering for Current and Future Rendering Pipelines
http://software.intel.com/en-us/articles/deferred-rendering-for-current-and-future-rendering-pipelines/
このサンプルでは、1024個までのポイントライトを1フレームで処理するのですが、Compute Shaderの神髄みたいなのを味わえるいい感じの実装なのでオススメです。
Compute Shaderでやってることは簡単に言うと、
・16x16のタイルに分割して処理する
→1スレッドグループは16x16x1の256スレッドでやる
→16x16は、G-bufferの16x16ピクセルにあたる
・タイル内の深度値の最手前、最奥を求める・・・ピクセル単位の並列
→Atomicなminとmaxでgruopshared memoryに保存してスレッド同期
→次のFrustumのNearとFarに使う
・タイル単位でまずやることはカリング・・・ライト単位の並列
→16x16が担当する空間のFrustumを作成してポイントライト交差判定
→1024個のライトなら1スレッドあたり4個のライトのカリングをすればおk
・カリングを通過したライトだけ各ピクセルライティング処理をする・・・ピクセル単位並列
この実装がCompute Shaderを学ぶ上で素晴らしいと言われてるのは、
・最手前、最奥算出・・・ピクセル単位並列
・ライトのカリング・・・ライト単位の並列
・ピクセル単位のライティング・・・ピクセル単位のライティング
のように1つのCompute Shader処理で並列の単位の違う処理を上手に混在させてやってること。それから、スレッドグループ共有メモリの使用方法がいい感じで、スレッドグループ同期やAtomicの使い方を学ぶにはいい感じだと言うことですね。
そんなわけで、もうちょっとコードを取り上げながら解説をしたいところ。
以前からEye-Fi Pro X2を使ってたんですが、最近調子が悪いので2枚目購入。
久々にダイレクトモードの設定とかやってましたが、最近はプロビジョニングファイル方式で簡単なんですねぇ。
| Eye-Fi Pro X2 8GB EFJ-PR-8G | |
![]() | Eye-Fi Japan 2010-05-20 売り上げランキング : 372 Amazonで詳しく見る by G-Tools |
Amazonから注文していたGPU Pro 3が予定より早めにお届けできますよ、メールが来ました。
公式サイト
http://gpupro3.blogspot.com/
すでに発送準備に入ってるので2/27には届きそうです。
| GPU PRO 3: Advanced Rendering Techniques | |
![]() | Wolfgang Engel A K Peters/CRC Press 2012-02-14 売り上げランキング : 2776 Amazonで詳しく見る by G-Tools |
Visual Studio 11のタイミングで、TFS Expressが出るのか。
http://blogs.msdn.com/b/bharry/archive/2012/02/23/coming-soon-tfs-express.aspx
ソースコード管理や自動ビルド、アジャイルタスクボードなどの機能が無料か~。5ユーザーまでしか使えなかったり制約もあるけど、小規模でやってるような人たちにとってはありがたいかもなぁ。
使うところがあれば試してみたいところ。
お、Visual Studio 11のベータ版は2/29からダウンロード開始なんですね。
http://www.microsoft.com/visualstudio/en-us/visual-studio-11
とりあえず、Direct3D開発者向けの機能がテクノロジープレビューからどう変わるのか?とか、C++ AMPまわりとか色々と気になるところ。
本当は、Windows 8周りも試したいんだけど試す用PCがちょっとないからなぁ。
5月開催でSIGGRAPH 2012より前なのにEurographics 2012の論文は忘れてた...。
http://kesen.realtimerendering.com/eg2012Papers.htm
Eurographicsって全然縁が無かったのでイマイチなじみが無いんですよね。
"Secrets of CryENGINE 3 Graphics Technology"を読んでいたところ、ページ25の"Soft Shadows Approximation"で、"Compute Shader option: fetch all taps to CS shared memory and reuse them for both distance estimation and shadow computation"と言う記載がある。
Secrets of CryENGINE 3 Graphics Technology
http://www.crytek.com/cryengine/presentations/secrets-of-cryengine-3-graphics-technology
そうなんか、テクスチャフェッチした値をshared memoryに格納しておいてキャッシュして使うのがいいのか...。
...ほんとなんかと他の資料を探す。
Direct Compute – Bring GPU Computing to the Mainstream
http://www.nvidia.com/content/GTC/documents/1015_GTC09.pdf
まずは、13ページ
Shared variables are stored in on-chip (SM) memory
Cache to minimize off-chip bandwidth use
Efficient communication with a thread group
なるほどなぁ~。それから32ページ目、
Shared memory → Read gbuffers & depth only once
ほうほう。そんで、35ページにCompute Shaderでのメモリの配置について
・ローカル変数・・・on chip(レジスタ)
・ローカル配列・・・off chip
・shared変数・・・on chip(RAM)
・コンスタントバッファ・・・on chip(キャッシュ)
・シェーダーリソースビュー・・・off chip
・UAV・・・off chip
は置き場所が違うからアクセス速度が違うわけか。シェーダーリソースビューやUAVに比べるとshared変数は置き場所が速いわけか、なるほど。あと、ローカル配列はどうなっとるんじゃ?これは遅くなる?
それから、39ページ、
Shared memory Latency ~100x smaller than global memory
ここで言うグローバルメモリは、コンスタントバッファ、シェーダーリソースビュー、UAV。コンスタントバッファに関しては、 global memoryだけどアクセスは速いので残りの2つ。
これは最適化に独特のアプローチが必要になりそうだ。あと、AMDの場合も同じ事情なのかも調べないとなぁ。
NVIDIAのGDC 2012のセッション一覧ページが公開になっています.
http://developer.nvidia.com/gdc-2012
Direct3D11, PhysX, Tegra 3といったトピックが多いですね.
UnityのDirect3D11対応などの話は気になるところです.
それから、FXAAでおなじみのTimothy Lottes氏のセッションなども。
#AltDevConfのSam Martin氏(Geometrics, Enlightenの会社)の“Real Time Area Lighting – Now and Nextのデモの動画があったのでメモ
セッションの概要
http://altdevblogaday.com/2012/01/28/altdevconf-programming-sam-martin/
エリアライトのリアルタイム調整の動画みたいですね。動画の概要(下記)を見てるとEnlightenの新機能になるみたいですね。拡大してツールのUIの他の部分とかを見てるとRadiosityとかのボタンもあるんですが、これがEnlightenのツールの一部なんでしょうかねぇ。セッション自体を見逃したので気になる。
Supplementary video for my #AltDevConf talk of the same name. It's a video of a work in progress implementation, and will no doubt improve before it ships with Enlighten (www.geomerics.com/enlighten)
EnlithenとFrostbite 2.0のSIGGRAPH 2010のセッションの"A Real-time Radiosity Architecture"のデモ動画らしきものがあったのでメモ。
とりあえず、Enlightenの前処理とかその辺が動画でわかる感じですね。
おっと、いつものようにSIGGRAPH 2012のPapers採択者が公開になってきたか。
http://kesen.realtimerendering.com/sig2012.html
チェックせねば。
SIGGRAPH 2010のEA DICEのレンダリングアーキテクトJohan Andersson氏のインタラクティブレンダリングの5つの大きなチャレンジと言う話。レンダリングの話やプロダクションコストなどの課題について。
SIGGRAPH 2010とか読み忘れてる資料の復習ですね。
Direct3D11.1への以降を考えると今のところWindows 8に行くということなのですが、せっかくなのでタブレット(ARMの)とかの開発にも手を出していきたいよなぁ。
http://msdn.microsoft.com/library/windows/apps/br211386
とりあえず、Windows 7の段階である技術でMetro Style Appに繋がる部分は勉強していかんとなぁ。
なんだかんだEnlighten自身がどういったことをやっていて、Frostbite 2.0のレンダリングパイプラインの中で何を担当しているかよく知らなかったので色々と資料を探していたところ、ちょうどSIGGRAPH 2010にGeometricsの方とEA DICEの方のセッションの発表資料があったので読んでみた(2010年の資料なので現在は違うかもしれません)。
A Real Time Radiosity Architecture for Video Games
http://www.geomerics.com/downloads/radiosity_architecture.pdf
まず読んだ瞬間理解したのはEnlightenはリアルタイムラジオシティをやるということ。
で、Battlefield 3の中では、Indirect Lighting(間接光のライティング)を支えてると言うこと、Direct LightingはそもそもTile-based Deferred Lightingですね。
とりあえず、27、28ページの流れから乱暴に要約すると
・CPUでリアルタイムラジオシティ計算(この発表は2010年版。現在のバージョンではCUDAを使うこともできる)をやる(29ページ)
・このときの計算結果は、LightmapとLightprobesの情報に分かれる。(29ページ下の文章)
・Lightprobes情報に関しては、3D Textureに格納(28ページに記載あり)
・Direct Lightのライティング(Tile-based Deferred Lighting. 30ページ)。※ここはEnlightenではない
・ライトマップ処理。これは静的なオブジェクト(具体的には背景)のみに適用(31ページ)。31ページで黒い部分は動的なオブジェクト。動的なオブジェクト部分はステンシルバッファでマスクして処理を飛ばす。
・Lightprobes処理。これは動的オブジェクト。32ページ目。黒い箇所は静的オブジェクト。たぶん、ステンシルバッファのマスクの逆処理で除外できるはず。
・Direct Lightingと合成で終了(33ページ目)
なるほどなぁ~。とりあえず、Enlightenが何をやるものなのかようやく把握。CPUでのラジオシティ箇所に関しては、色々とスライドで書かれてますが、とりあえず今回は割愛。ひとまず、何をやるものでどういう効果があるものなのか、と言うことを理解。
Enlighten Portfolio from Jesper Mortensen on Vimeo.
新機能一覧を見ながらダウンロード待ちです。
Enlighten使用タイトルについての2012年1月版動画。
・Need for Speed The Run
・Battlefield 3
・Quantum Conundrum(Unreal Engine スクウェア・エニックス)
・Command & Conquer: Generals 2(Frostbite 2.0, Bioware)
って感じかな?
しかし、Quantum ConundrumってUnreal Engineでしかもパブリッシャーがスクウェア・エニックスだったのか。日本語ローカライズお願いしたいなぁ。
“Portal”ライクな一人称視点パズル『Quantum Conundrum』発表!
http://gs.inside-games.jp/news/295/29541.html
Enlighten Portfolio from Jesper Mortensen on Vimeo.
Aperture Cutscene EditorというカットシーンエディターがUntyのアセットストアで販売されていたので購入してみました($40)。
http://u3d.as/content/kurt-loeffler/aperture-cutscene-editor/2F2
公式サイト
http://www.aperturecutscene.com/
フォーラム
http://forum.unity3d.com/threads/106442-Aperture-Cutscene-Editor
いや~、これは良いですね。ツールのイメージは下記のスクリーンショットのページをどうぞ。Unityってタイムラインでカメラとかオブジェクトを制御する仕組みが無いんですが、これを導入するとそれがUnityに組み込まれるのでカメラとか非インタラクティブなオブジェクトの制御がグラフィカルになっていい感じです。パスとかもちゃんとシーンビューに表示されてくれますし。これがあるとアーティストがUnity二感じてる不満を少しは取り払ってくれそうですね。有料ですが、$40ぐらいなら本格的にUnityを使ってる人からすると安いと思います。
スクリーンショット
http://www.aperturecutscene.com/?page_id=50
フォーラムに書かれてる機能一覧
・Intuitive Interface.
・Extremely powerful.
・Animate any number or vector variable on any script/component on an object.
・Trigger almost any function with custom parameters using Events.
・Easily extendable.
・Open source!
・Editor play preview button.
・Easily create animations with Curve Tracks.
・Trigger functions with Events.
・Trigger cutscenes from within other cutscenes.
・Cutscenes can be anything from traditional camera and object animation to scripted gameplay
events to invisible event chain triggering for non-programmers.
・3 types of Curve Track update modes, Action, Direct Variable Access, and Custom Expression.
・Easily add custom Actions and Events with a little programming.
サンプルをちょっと動かしてみた動画を撮ってみました。1080pで撮ってるので解像度変えてフルスクリーン再生するとGUIまわりもわかると思います。
C++ AMPのサンプル集を見ていたらC++ AMP: N-Body Simulation Sampleは、CPUのシングルスレッド、マルチスレッド、C++ AMPフラット、C++ AMPのタイル、GPUのマルチデバイスの比較ができるのでいいですね。CPUはちゃんとSSEやSSE4版の実装とかあるというのもいいですね。
サンプル集一覧
http://blogs.msdn.com/b/nativeconcurrency/archive/2012/01/30/c-amp-sample-projects-for-download.aspx
C++ AMP: N-Body Simulation Sample(Visual Studio 11のソリューションがついてます)
http://blogs.msdn.com/b/nativeconcurrency/archive/2011/09/20/c-amp-n-body-simulation-sample.aspx
動かしてみてパフォーマンスを見てみたところ、やっぱり、C++ AMPでもCompute Shaderを直接書くときに注意するようにタイルでやるというのが効率的なんですねぇ。それから実際には、AMDならWavefront(NVIDIAならWarp)のことも意識する必要はあるんだろうなぁ。
・・・ということでC++ AMPはちょっとずつ自分環境では試していこう。
昨晩、Galaxy Nexusのバージョンアップの通知が来たのでアップデートしました。
Android 4.0.1から4.0.2になったので機能的な違いを確認しておかないと。
今週はなんとなく忙しくなりそうな週です。
そういや、Galaxy NexusにChrome for Android入れてみました。
いや~、標準ブラウザよりもブックマークの呼び出しとかやりやすいので自分的には合ってる感じです。
あと、インラインフレーム周りの挙動も標準のブラウザとは違うかな?
ただ、標準ブラウザにある「デスクトップ版サイトをリクエスト」(モバイル表示じゃ無くなる)はわりと重宝してるのでつけて欲しいなぁ。
おお、アップデート再開か。それとテザリングは3月か。
たまたまWindows 8の"Windows Display Driver Model Enhancements in Windows Developer Preview"というドキュメントを見つけたので読んでました。
Windows Display Driver Model Enhancements in Windows Developer Preview
http://msdn.microsoft.com/en-us/library/windows/hardware/br259098.aspx
Direct3D 11.1 Features
http://msdn.microsoft.com/en-us/library/windows/desktop/hh404562(v=vs.85).aspx
Direct3D11.1 GPUの必須要件とかハードウェア仕様みたいなのが記載されていたのですが、以下の点がちょっと解決。
・Direct3D11.1のCompute Shaderで使えるUAVsの数...64個ぐらいは使わせてくれそう
・Logical Operationsの話
・Windows 8にはStereo 3Dモードがある
・全シェーダステージでUAVsが使えるけど、デバッグとかで使ってみたらという提案。
などなど。UAVsをデバッグで使ってみるというのは、ピクセルシェーダや頂点シェーダなどのシェーダで計算のエラーなどが合った場合にどこのフラグメント or 頂点で起きてるか記録したり、途中計算の結果を入れておく、などが出来そうですね。
それから、Radeon HD 7970のMMUみたいなのは必須機能なのかというのも気になってたんですが、それが必須だったりPRTまわりの機能に関しては記載がありませんでした。どういう形で実装されるんだろうなぁ...。
Micropolygonを使ったレンダリングの流れを前々から知りたかったのでSIGGRAPHのコース資料のメモ。
SIGGRAPH '09: A Real-time Micropolygon Rendering Pipeline
http://s09.idav.ucdavis.edu/talks/08_kayvonf_micropolygons.pdf
SIGGRAPH '10: Evolving the Direct3D Pipeline'for Real-time Micropolygon Rendering
http://bps10.idav.ucdavis.edu/talks/10-fatahalian_MicropolygonsRealTime_BPS_SIGGRAPH2010.pdf
今のネタの合間に読んでいく。
おお、Geforce LAN 6の時のBattlefield 3のスライドがあがってるのか、全然チェックしてなかった。
以前見た動画
http://masafumi.cocolog-nifty.com/masafumis_diary/2011/10/dicepcbattlefie.html
今までBattlefield 3のスライドって色々とあったけど、おそらくこれが最終製品のレンダリングに関するモノなんだよな。
全部入りなんだけど、65枚目のシーンを作るために18のレンダリング処理をやってるんだけど、それが1手順1手順変化を見ながら確認できるのがよいですね。
それからもう1つ12月のスライド。WebとかBattlelogとかその辺のスライド。今やこうした連動は当たり前だけど、やっぱり売れたソフトで規模が違うので気になるところです。
ボーンデジタルの今後刊行予定の書籍が色々と気になるなぁ。
「テクニカルアーティストスタートキット」はOLMの方々が書かれていて、「Game Development Essentials QA & Test(仮)」は日本語だとあんまり無いタイプだしねぇ。
テクニカルアーティストスタートキット
http://borndigital.co.jp/book/detail.php?id=235
Game Development Essentials QA & Test(仮)
http://borndigital.co.jp/book/detail.php?id=233
この土日は2日とも飲みに行くことになっちゃってるなぁ。
UDNにFPS、TPS以外のスターターキットのサンプルとドキュメントの日本語版がきてますね。
横スクロール
http://udn.epicgames.com/Three/DevelopmentKitGemsPlatformerStarterKitJP.html
レースゲーム
http://udn.epicgames.com/Three/DevelopmentKitGemsRacerStarterKitJP.html
これはちょっと見ておきたいですね。
#AltDevBlogADayがカンファレンスAltDevConf 2012をやるみたいですね。
スケジュール
http://altdevblogaday.com/2012/02/02/altdevconf-schedule/
AltDevConf 2012
http://www.altdevconf.org/
2/11と2/12にやるみたい(JSTで日本時間もわかるのはありがたいです)ですが、なかなか気になるセッションがありますね。
グラフィックス関連だと、
・Accelerating Game Physics for Heterogeneous CPUs & GPUs by Erwin Coumans
・Real Time Area Lighting – Now and Next by Sam Martin
・PowerVR Hardware Architecture and Application Performance Guidelines by Gordon MacLauchlan
・Dynamic Global Illumination by Wolfgang Engel and Tim Martin
は気になります。講演者も豪華です。
他にもAIのセッションも気になりますし、スクラムなんかも。
ちょっと早起きして見たいところです。
最近のコメント