つぎの3Dエンジン

http://www.4gamer.net/games/092/G009273/20090903001/


次世代の描画方式として,Jones氏が挙げていたのは,

  Point Base Rendering(ポイントベースレンダリング)
  Ray Tracing(レイトレーシング)
  Rasterization(ラスタライゼーション)
  Sparse Voxel Octree(スパースボクセルオクトリー:SVO)

氏が強調していたのはプロシージャル処理の可能性と重要性だ。プロシージャル処理は,描画するオブジェクト自体を,実行時に自動的に作り出す技術で,Crysis Warheadでの霜の処理での実装例などを挙げつつ,いろいろなものをプロシージャルで作り出すことを「夢」として語っていた。

プロシージャル地形

WDDM によるタイムアウトの検出と GPU の回復

http://www.microsoft.com/japan/whdc/device/display/wddm_timeout.mspx

レジストリ キー

下記のレジストリ キーは、テスト目的のみのために記載されています。テストまたはデバッグ目的以外では、いかなるアプリケーションによっても、これらのレジストリ キーが操作されることがないようにしてください。

TDR 関連のレジストリ キーは、HKLM\System\CurrentControlSet\Control\GraphicsDrivers にあります。

TdrLevel: REG_DWORD。回復の初期レベル。指定可能な値は、下記のとおりです。

TdrLevelOff (0)– 検出無効。

TdrLevelBugcheck (1) – 検出されたタイムアウトのバグ チェック (回復なしなど)。

TdrLevelRecoverVGA (2) – VGA への回復 (実装なし)。

TdrLevelRecover(3) – タイムアウト時の回復。これは既定値です。

TdrDelay: REG_DWORD。GPU がスケジューラからの回避要求を遅延できる秒数。これは、事実上のタイムアウトのしきい値です。既定値は 2 です。

TdrDdiDelay: REG_DWORD。オペレーティング システムで、スレッドがドライバーの処理を中断することが許可される秒数。指定時間以降、オペレーティング システムは、コード VIDEO_TDR_FAILURE (0x116) を含むシステムのバグ チェックを行います。既定値は 5 です。

TdrTestMode: REG_DWORD: 内部テスト用。

TdrDebugMode: REG_DWORD: TDR プロセスのデバッグ関連動作。

TDR_DEBUG_MODE_OFF (0) は、タイムアウトの調査を許可するよう、回復の前にカーネル デバッガーに割り込みます。

TDR_DEBUG_MODE_IGNORE_TIMEOUT (1) は、すべてのタイムアウトを無視します。

TDR_DEBUG_MODE_RECOVER_NO_PROMPT (2) は、デバッガーへの割り込みはせずに回復処理を実行します。これは既定値です。

TDR_DEBUG_MODE_RECOVER_UNCONDITIONAL (3) は、一部の回復条件が満たされていない場合 (連続してタイムアウトが発生した場合の回復など) も、回復処理を実行します。

TdrLimitTime: REG_DWORD (Windows Vista SP1 以降のバージョンのみ): TDR の "TdrLimitCount" 値による既定回数以内は、システムがクラッシュすることなく許可されます。

TdrLimitCount: REG_DWORD (Windows Vista SP1 以降のバージョンのみ): システムがクラッシュすることなく "TdrLimitTime" で許可される TDR (0x117) の既定値。

2010年12月29日水曜日

Gatherがサンプリングする位置

http://www4.atword.jp/cathy39/2010/05/19/gather_jp/
- Gatherに指定するuv → 中心
- Gatherでサンプリングする位置 → 中心±0.5テクセルの位置

Gatherに指定するuvをPとすると、
RGBA各チャンネルのサンプリングポイントは以下の図のようになる

DX11 Order Independent Transparency

まとめ
http://www.yakiimo3d.com/ja/2010/07/19/dx11-order-independent-transparency-2/
DirectX SDK OITサンプルが320×240の画面サイズで10 fpsぐらいでしたが、今回のATI OITの実装は640×480の画面サイズで700 fpsぐらいでました。普通のID3D11BlendStateを利用したalpha blendingだと画面サイズ640×480で3000 fpsぐらいでます。

アンチエイリアス版
PixelShaderにSampleIndexをとっている
struct QuadPS_Input
{
float4 pos : SV_POSITION;
uint nSampleIndex : SV_SAMPLEINDEX; // specify to run pixel shader per sample instead of per pixel
};
結果SuperSampling

2010年12月21日火曜日

STL イテレート中の削除

http://marupeke296.com/TIPS_No12_ListElementErase.html

list::iterator it;
for ( it=MyList.begin(); it!=MyList.end(); ) { // <-「it++」を削除
if( (*it) == 0 ) {
it = MyList.erase( it );
continue;
}
it++; // ここで次のイテレートに
}

Windowsで時間の計測

http://d.hatena.ne.jp/prog_pc/20090526/1243331369
GetTickCount

システム起動時からの経過時間をミリ秒で返します。

DWORD WINAPI GetTickCount(void); 
GetTickCount64

GetTickCount関数と同様ですが、64bit符号なし整数を返します。Windows VistaかServer 2008が必要とのことです。

ULONGLONG WINAPI GetTickCount64(void); 
QueryPerformanceFrequency

http://msdn.microsoft.com/en-us/library/ms644904%28VS.85%29.aspxより

BOOL QueryPerformanceFrequency(           LARGE_INTEGER *lpFrequency );

2010年12月17日金曜日

床面投射コンテンツ

http://www.ofnt.co.jp/gesturetek/
GroundFX® 設置例図
超短焦点をつかったものなど、バリエーションが豊富

2010年12月15日水曜日

名言


青春時代にさまざまな愚かさを持たなかった人間は、
中年になってからなんの力も持たないだろう。


J・A・コリンズ

2010年12月2日木曜日

これからのBoost

レビューまち
https://svn.boost.org/trac/boost/wiki/ReviewScheduleLibraries

開発中
https://svn.boost.org/trac/boost/wiki/LibrariesUnderConstruction