読者です 読者をやめる 読者になる 読者になる

S.F. Page

Programming,Music,etc...

RIGID GEMS 2.1

グラボを入れ替えてからちょっと興味がCG寄りになってきている。思い出したようにRIGID GEMSを動かしてみている。 RIGID GEMS Website 私のPCでもリアルタイムで上の動画まんまに動く。GPUパワーのすさまじさに驚くばかりだ。

音声ファイルから動画ファイルを生成する(64) – タイトルバーのカスタマイズ~ウィンドウ自前描画

タイトルバーにタブを置く方法を試してみる。 Chromeのようにタブをタイトルバーに置きたいので、「Custom Window Frame Using DWM」ここに書いてある方法を試してみた。 手順としては下記の通りだ。 WM_CREATEメッセージをハンドルし、SWP_FRAMECHANGEDフラ…

DirectX12

とうとう出た。 DirectX12がとうとうアナウンスされた。DirectX Developer Blogによると主としてパフォーマンス改善のための「Pipleline State Object」「Command lists and bundles」「Descriptor heaps and tables」と、「順序に依存しない透明度」「衝突…

音声ファイルから動画ファイルを生成する(24) – 描画 → H.264ファイル化コードを書いている

何となくUIはChildWindowの上にUIコントロール(テキストボックスやボタン等の入力系)を並べ、それとDirect2D/3Dとかで書いたビットマップ(サーフェース)をDirectCompositionで合成する形でいこうかなと。 UIの道筋が見えてきたのでDirect2D/3Dで描画 → H…

音声ファイルから動画ファイルを作成する(11) – 環境の整備

環境の整備 デスクトップアプリとして作り直すためにまずは環境をアップデートすることにした。 ベースとなるプロジェクトを作る 過去作りかけて放置しているプロジェクトを再利用することにした。VS2012プロジェクトであればそのまま読み込める。当然ながら…

音声ファイルから動画ファイルを作成する(7) – 波形データをDirect2Dで描画してみた。

ようやくだが、Direct2Dを使ってテクスチャに波形データを表示することができた。でもちょっと手抜きだ。 ソースコード(変更部分) 720p/30FPSなのになぜか画質が悪い。H.264エンコーダの設定に問題があるのかもしれないが、今のところどうすればいいのかわ…

音声ファイルから動画ファイルを作成する(5) – 凡ミスだった。

OpenAsyncでハマっていた例外は、内部的に発生しているものできちんとキャッチされているから障害ではないことがわかった。どうもデバッガの例外オプションで、すべての例外を発生時にブレークするように設定していたために、気にしなくても良い例外までブレ…

音声ファイルから動画ファイルを作成する(5) – StorageFile::OpenAsyncでまだハマっている。

今日もOpenAsyncが出す例外でハマり続けている。今日は下記のコードを書いて試してみた。 create_task(Windows::Storage::KnownFolders::MusicLibrary->CreateFileAsync (L"test.m4v", Windows::Storage::CreationCollisionOption::ReplaceExisting)) .then(…

音声ファイルから動画ファイルを作成する(4) - StorageFile::OpenAsyncでハマっている

FileOpenPickerを使ってWAVファイルを選択してOpenAsyncでファイルを開こうとしている。簡単なコードなのだがよくわからない例外が発生して悩んでいる。 void sfmfMain::OpenFile() { auto openPicker = ref new Windows::Storage::Pickers::FileOpenPicker(…

音声ファイルから動画ファイルを作成する(3)

昨日の話を絵にすると こんな感じになる。ちなみにこれはスクリーンショットにペイントで手書きで追記したものである。ペイントはタッチパネルも考慮しているようである。Windows 8以降のバージョンだけかもしれないが。 昨日は動画テクスチャをプレビュー表…

Media Foundationを使って音声ファイルから動画ファイルを作成する(2)

先週はずっとMedia FoundationのSourceReader/SinkWriterあたりのリファレンスやサンプルコードを観ながら具体的にどう作るかを考えていきつつ、ぼちぼちとコードを書き始めている。ちょっと前にかじっていたはずなのだがすっかり忘れてしまっており、思い出…

DirectX Tool KitのReadme.txt(Documents) を翻訳してみた。

はじめに DirectXTKがかなり有用そうなので、理解を深めるためにDirectXTKのReadme.txtの勝手訳をしてみた。Readme.txtはほぼDocumentsと同じ内容である。英語力がないせいでうまく訳せないところもかなりある。でも概要はなんとなくわかった。コンポーネン…

Geforce 650 Ti Boostの DirectX11.1サポート度合を調べる

はじめに 前にも書いたように中古だがGeforce 650GTX Ti Boostにビデオカードをアップデートした。DirectX11.1対応をうたっているけどもDxDiagで調べると機能レベルは「11.0」までと表示される。 なんか11.1サポートしているかしていないかのかいまいちよく…

テクスチャは表示されるようになった。

テクスチャがマッピングされないのはやっぱり凡ミスだった。BlenderからFBXにエクスポートしたデータにUV情報が含まれていなかった。よく考えるとマテリアルを指定しただけで、UV座標に関する操作を行っていなかったためだと考えられる。Blenderに関して素人…

DirectXTKのModelではBasicEffectで固定されてしまうようだ。

DirectXTKのISSUESに「DGSLEffect for supporting VS 2012 Content Pipeline」というのを見つけた。これは現在のCMOファイルローダーでは常にBasicエフェクトがマップされ、シーンエディタでエフェクトファイル(.dgsl)を指定しても無視されてしまうというも…

BlenderからエクスポートしたFBXファイルにVS2013モデルエディタでテクスチャを貼る

テクスチャー情報はインポートされなかった。 BlenderでテクスチャーマップしたものをFBXでエクスポートしてVS2013のモデルエディタに読み込んでみた。マテリアルの情報はインポートできたけどもテクスチャーマッピングの情報は残念ながら欠損していた。 エ…

VS2013での3Dモデル(シーン)の表示 - FBXファイルの表示

はじめに まずはFBXファイルを表示することにしたが、これは意外と簡単にできた。VS2012でもできたらしい。 .cmoファイルのビルド 「追加」VS2013での3Dモデル新規追加でFBXファイルを作成し、その中にツールボックスからティーポットを選んでドロップする。…

Box2D + WinRTでゲームを作る (10) – Direct3DよるBox2Dオブジェクトの表示

Box2DオブジェクトをなんとかDirect3Dで表示できるようになった。 ソースコード 凸多角形の三角形分割は簡単そうな情報を得たので、8角形まで手で描いてみて規則性を確認してみた。 これで規則性がよくわかったので、分割して表示する方法に変更してみた。描…

Box2D + WinRTでゲームを作る (9) - 凸多角形の三角形分割

Bpx2DオブジェクトをDirect3Dで描画するためのコードをようやく書き始めた。結局コンピュートシェーダーは使わずにオーソドックスの頂点データを渡して描画する方法にした。座標変換はBox2D座標を頂点シェーダーで変換して表示する。といってもDirect2Dで描…

Box2D + WinRTでゲームを作る (8)

私の使っているビデオカードは、Geforce450GTSである。まあ普通のスペックであるがもう1年以上前のもので、Feature Levelは11.0である。このディスプレイカードでどういうオプションが使えるのかD3D11_FEATURE_D3D11_OPTIONSを引数にCheckFeatureSupportで調…

Box2D + WinRTでゲームを作る (7) - FluidCS11サンプル

昨日今日と、今やろうとしていることになんとなくパーティクルあたりのサンプルも参考になるのではということで、「FluidCS11」サンプルのシェーダーコード辺りを読んでいた。 このサンプルは2次元流体シミュレーションをコンピュートシェーダーで行って表示…

Box2D + WinRTでゲームを作る (6) – Box2Dの処理結果をDirect3Dで描画する (2)

今日もどうやってシェイプを描こうか考えていた。考えていたというよりは、シェーダーについて学びかつその技術が描画に使えるかどうかを吟味していたというほうが正しいだろうか。 ヒントになったのは「Direct3D sprite sample」である。頂点データはいわゆ…

Box2D + WinRTでゲームを作る (5) – Box2Dの処理結果をDirect3Dで描画する

Box2Dの処理結果をDirect3Dで描画するため、シェーダー周りをどう作ろうか思案しているところである。実際のゲームではビットマップに置き換わるのだけれども、デバッグの時にシェイプやジョイントを表示できるようにしておけば便利である。頂点シェーダーは…

Box2D + WinRTでゲームを作る (4) – 動画出力できるようになった。

今週はWeb上のDirect3D、Media Foundationのリソースを参考にしながらコードを書いていた。まあなんとかスワップチェインの内容を動画出力できるようになった。 ソースコード ここで考えた手順でほぼうまくいった。 一応720p/30fpsでの出力はできている。今…

Box2D + WinRTでゲームを作る (3) – 動画出力方法を考える

今日はMedia Foundationドキュメントをみながらスワップチェインをどう出力するのかを考えていた。GPUメモリ -> CPUメモリの転送も極力減らしたいし、 拡大縮小もGPUにやらせたい。で以下の手順でいけるのではないかと。 スワップチェインと同じ大きさのテク…

Box2D + WinRTでゲームを作る (2) - 動画出力を試みる

作成中の画面を動画にしていたのだが、ちょっと処理速度的に厳しくなってきた。 アマレココでもExpression Encoderでも15FPSで処理がもたつく。デスクトップのキャプチャーは結構重い処理なのであろう。 Media FoundationのSink Writerを使って、スワップチ…

Box2D + WinRTでゲームを作る

「XAML DirectX 3D shooting game sample」をスケルトン化し、Box2DのコードおよびDirect2Dによる描画コードを追加した。 ソースコード この後でGDC2013 Game テンプレートなるものも見つけ、これでやり直そうかなと思ったけど、サウンドやメッシュ・入力周り…

Box2D + Windows Store Appsで出直し

Musicシーケンサーを作るといいながらなぜかシューティングゲームを作る流れとなっているが、このままデスクトップでシューティングゲームのコードを書いていくと最終的にはWindows Store Appの「XAML DirectX 3D shooting game sample」のようなものに行き…

Box2Dの処理結果をDirect2Dで描画する

ここ1週間はずっとBox2Dのドキュメントを読んだりしていて、なんとなくわかってきたのでコードを書いてみた。Box2Dの処理結果をDirect2Dで描画したもの。 今回Direct2Dのジオメトリ描画を初めて使ってみた。面白いね。簡単にできてしかも結構リアルに動く。

Box2Dをいじっている

物理エンジンをいろいろ見ていたら、Box2Dというのを見つけた。2Dの物理エンジンでC++で作られている。さっそくコンパイルして実行してみた。 やっぱり物理エンジンで動かすとリアルですな。。 私の人生を狂わせたシューティングゲームは何かといえば、 ギャ…

少しゲームの世界に入り込んでみる

Tumblrで「ゲーマーはもっと経営者を目指すべき!」の引用を見てからここ1週間ほどはこの記事をずっと読んでいた。読んでいるとゲームに対する興味が再び高まってきたのと、DirectX周りをいじっていると少しゲームに関する技術を追っかけてみたいなと思い始…

DirectComposition - 3D変換エフェクトを試す

3D変換エフェクトを試してみた。X軸で回転してみている。エフェクトとしては透明度と3D座標変換のみである。とりあえず実験はここまでにして、UIフレームワークを作っていくことにする。 ソースコード

DXGIスワップチェインをDirect2DとDirect3Dとで共有する

DXGIスワップチェインをDirect2DとDirect3Dとで共有することができた。やはりWindows8では比較的簡単にできる。ここまで来るのに2週間ちかくかかっているので簡単というには憚る感じもするが、まあWindows 7よりは簡単になったということである。 ソースコー…

Direct2Dの初期化方法はちょっと変わっている。

ここ2-3日、こちらの記事やMSDNを参考にDirect2Dの初期化コードを書いている。ついでにDirect3Dも一緒に使えるようにしようとしている。バージョンが上がり初期化コードの書き方がが変わり、比較的簡単になっている。初めからDirect3Dとの共存を意識した感じ…

動くようになった。

とりあえず動作するようにはなった。 これから何をするかといえば、これをベースにWASAPIを復習する。まずはマイクからキャプチャしそのまま再生してみようかなと思っている。

DirectXTKはコンパイルできた。

DirectXTKだがVS2012 Express For Windows Desktopでコンパイルすることができた。原因はプロジェクトのプリプロセッサ定義に_WIN32_WINNT=0x0601が含まれていたのでWindows 7をターゲットとしてコンパイルされていたためだった。Windows 7をターゲットとす…

D3DXCreateShaderResourceViewFromFileはDirectXTKのCreateDDSTextureFromFileへ

D3DX11にあったD3DXCreateShaderResourceViewFromFileはDiretXTKのCreateDDSTextureFromFileに移行していた。これがないと面倒だなーと思っていたのだが、ちゃんと移行パスがあったんですな。。 しかしDirectXTKをビルドしようとするとVS 2012 Express For W…

XAudio2でストリーミング再生してみた。

XAudio2 audio stream effect sampleを参考にしてWAVファイルをストリーミング再生してみた。思いのほか簡単にできた。サンプルコードをコピペしただけだから当然か。。 今のところ、OSからの描画イベントがほぼ一定間隔のようなのでこれをVSync割り込みに見…

テクスチャをセル分割して表示できるようにした

テクスチャをセル分割して表示できるようにした。これでスクロールのマッピングやキャラクターアニメーションがやりやすくなる。下記の画面は爆発PNGファイルをアニメーションしてみているところ。 アンチエイリアスもOFFにしたので懐かしさを感じる拡大表示…

テクスチャをセル単位で表示できるようにする

テクスチャをセル単位で表示できるようにSimpleSpriteサンプルを変更している。たとえば下記のテクスチャだと赤い枠で囲った部分だけを表示できるようにする。 やり方はテクスチャのuv座標をいじって対象矩形をマッピングするだけだ。新たにシェーダーに矩形…

結局Z座標でソートした

結局描画前にZ座標でソートすることで優先順位制御をすることにした。下のスクリーンショットは飛行機を右斜めしたに順に優先順位が高くなるように描画してみたものだ。

GPUとCPUとのコミュニケーション

CPUとGPU間のコミュニケーション・コードとかHLSLとかまだよくわかんないな。。でも面白いな。 このあたりをいじっているとFM-7を思い出す。「YAMAUCHI」コマンドとかなんとかでビデオ処理のSUBCPUにプログラムを送って動かしたりできたよね。

スプライトの優先順位に取り組む

SimpleSpriteサンプルをベースにZバッファを使ってスプライトの優先順位を設定できるようにコードを変更し始めた。 HLSLまわりをいじってZバッファーに指定した値を書き込めるようにすればよいのかな? SimpleSpriteサンプルはテッセレーションの機能を使っ…

バックバッファの拡大表示

バックバッファの拡大表示はできた。まあ実画面サイズにスケーリングするだけなので簡単だが。 真ん中に32*32のスプライトを配置してみた。32*32でもでかいね..。アンチエイリアスが効いているのでぼけた感じがする。アンチエイリアスを無効化するか..。

バックバッファの表示

320×240のテクスチャーをバックバッファとして等倍で表示してみた。左上の黒い矩形がそれだ。昔のPCはこんなに小さな領域であったのか。。 これを実際のスクリーンに合わせて拡大表示すれば完成だ。次にZバッファを使ってスプライトの重ね合わせ制御をできる…

SimpleSpritesサンプルにZ座標を導入する

SimpleSpritesサンプルいじっているとZバッファを使ってないことがわかった。描画時の重ね合わせ優先制御はGPUに預けたいのでZ座標を導入してZバッファにその値を書き込むようにしようかなと思う。

ソースコードをいじり始めた

まずは320×240のテクスチャーをバックバッファに見立てて、それをスワップチェーンに拡大して表示するようにしてみる。

SImpleSprites SampleをSwapChainBackgroundPanelで動かせた

ようやくSimpleSprites SampleをSwapChainBackgroundPanelで動かすことができるようになった。Direct3D/2D描画の上にXAMLコントロールを重ねることができている。 DirectX 3D shooting game sample (XAML)を見ながらなので比較的簡単にできた。でもまだ理屈…

スワップチェーンとSwapChainBackgroundPanelとの結び付け

Simple3DGameXAMLサンプルコードをぼちぼちと読んでいる。興味のあるところはスワップチェーンとSwapChainBackgroundPanelとの結び付けの部分だ。こうなっていた。 // Create the swap chain and then associate it with the SwapChainBackgroundPanel DX::T…

SimpleSpritesをSwapChainBackgroundPanelで作りなおしてみる

XAML + Direct3Dの勉強のために、SimpleSpritesサンプルをSwapChainBackgroundPanelで作りなおしてみることにした。まあそんなに難しい作業ではないと思うのだが、どうか。