GDCのVulkanのセッションの動画がGDC Valutにてアップロードされいるようです。
http://www.gdcvault.com/play/1022018/
ちなみにこのセッションを自分は会場の真ん中あたりで生で聞いていました。
GDCのVulkanのセッションの動画がGDC Valutにてアップロードされいるようです。
http://www.gdcvault.com/play/1022018/
ちなみにこのセッションを自分は会場の真ん中あたりで生で聞いていました。
D3D12のドキュメントがMSDNにて公開されています。
https://msdn.microsoft.com/en-us/library/dn903821(v=vs.85).aspx
ぼちぼちD3D12を組んでいくことにします。
プログラマー飲み会!!の詳細が決定しました。
興味ある方は下記のページにアクセスをして参加登録をお願いいたします。
https://atnd.org/events/63383
ちなみに、食べ放題・飲み放題コースにしたのでちょっと割高です。すいません。
Twitterの方を見ている方は既にご存じかもしれないですが…
パチパチ。
そんなわけで,
お酒は飲めなくても全然かまいません!
プロ・アマ・学生問わずプログラマーで色々と話しましょう。
人に自慢したいこととか,会社で困っていることとか,これから社会人になる不安どうすればいいかとか,アイデアなくて困っているとか,これが流行る!とか,子供が可愛いいんです!とか,物理ベースレンダリングってどうなの?とか,カメラから離れたときのSSAOが気に食わないとか,研究テーマ困っているとか,産学一体で何かやりたいんだけど困っているとか,もう兎に角楽しく酒が飲みたいとか,騒げればいいとか,なもり先生大好きとか,ミクさん好きとか,どっか会社に入りたいんだけど誰か雇ってくれない?とか,VR広げたいから話させてくれとか,UE4について熱く語ろうぜとか,いやいやUnityでしょ?とかCryEngine大丈夫かいな?とか,Direct3D 12来たね~とか,glNext対応しないとね~とか,グラフィックスだけじゃなくてサウンドも語らせろとか,スクラム道話してもいい?とか,いや戦車道について熱く議論しようとか,メガデモの輪を広げたいとか,OpenGLの話したいとか,ゲームプログラムについて語ろうぜとか,日本のCG界なんとかしなきゃとか,山登りの魅力伝えたいとか,ボルダリング仲間集めたいとか,ロードバイク仲間探しているとか,関西地区だからたまには関東の人と話したいとか,九州地区の方がいいぜとか,皆の恋愛事情どうなの?とか,最近結婚しましたとか,フットサルやろうぜとか,バスケやろうぜ,野球野郎やろうぜ,スキー・スノボーやろうぜとか,ユタティーポットについて熱く語るとか,レイトレ野郎求む!とか,業界のつながりをつくりたいとか,好きなAV女優について語るとか,あそこの昼食が凄くおいしいとか,今日はすごくプログラム書けたとか,あのバグが分からんとか,昨日はプログラム書かなかったとか,人と話すのが苦手だからちょっと克服したいとか、SunsetOverdriveちょー楽しいとか,The Orderやった?とか,すれ違い通信したいから今日来たとか,僕は宇宙と交信できますとか
…もう、何でもいいです!
たまには集まって、お酒やジュースのみながら、ちょっと気晴らししましょうよ。
知り合いを是非誘ってご参加くださいませ!
参加希望者は下記ページから参加登録をお願いしやっす。
https://atnd.org/events/63383
ちまちまとLogPSM訳してはいるんですが,ちょっと飽きてきました。
そんなわけで,息抜きとしてプログラム書こうかなと思いました。
いつもはグラフィックス系のプログラムばっかり書いているので,
たまにはちょっとゲーム寄りのプログラムも書いてみたいなぁーと思い立ったが吉日。
早速書いてみました。
最近知り合いの方とボードゲームをやる機会があるのですが,そのボードゲーム教育向けにはすごく良いのですが,ゲームとしてはかなりツマラナイ。
ちょっと手を加えてやれば面白くなりそうなのに残念だなぁーと思っていたのですが,「そうだ!自分でつくればいいんじゃね?」と安直に思い立ちました。
そういうわけで,すごろくゲームをつくってみようかなーと思います。
すごろくゲームの肝といえば,やっぱりサイコロ。
よっしゃ!作るか! …と思い立ちましてサイコロシミュレータ作ってみました。
サイコロを振るプログラム自体は (乱数 % 6) + 1 で速攻で実装が終わるのですが,アニメーションどうしようかな?と詰まりました。
まず困ったのがどうやってサイコロ回転させるということです。
適当に回転させると目が偏るし,縦回転だったやつが急に横回転になるのも何か変な感じするしなぁーと悩む。
HavokとかPhysXとか使ってガチでシミュレーションさせるのもいいんですが,今度は終了条件決めるの面倒じゃね?と悩む。
結局わからないので,桃鉄参考にすればいいんじゃん!と思い,土日でひたすら桃鉄のサイコロを研究・考察して作成したのが,動画のサイコロシミュレータです。
まだ1個しかサイコロ振れませんが,なんとかしてサイコロ5個までは対応したい & 音つけたいです!!
ちなみにサイコロの軌跡は完全に手付けです。そのため,位置決めが結構面倒くさい。だから2個とか3個とかサクッとつくれていないんですよねぇ~。
正射影で計算して45度回転させるのも手かなぁ~なんて思ったのですが,結局実装のコストとか考えて手付けアニメーションにしました。
とりあえず今は普通のサイコロのテクスチャ使っているのですが,「これサイコロのテクスチャ変えれば,”ごきげんよう”できるんじゃね」とか色々と面白いことに使えそうな気がします。
あと,乱数は0 ~ uint32_tの最大値 だと,偏りが出来て各目の確率がぴったり 1/6 にならないので,乱数が6の倍数になるようにきちんと生成範囲は調整を加えています。
※追記
サイコロ5つまで対応してみました!!
あと,折角なのでGithubでソースコードを公開しました。
下記からダウンロードできます。
https://github.com/ProjectAsura/dice
一応,Later of this yearにDirectX12のプレビューがでるということなので,DirectX12についての予習をしておこうかなと思います。
…というか今年残りわずかなんだけど,きちんとプレビュー版をリリースしてくれるんかいな?
まずはYouTubeか,Channel9あたりでプレゼンを見ておきましょう。
ファイルに保存して,携帯等で見たい人はChannel9からダウンロードするのがお勧めです。
http://channel9.msdn.com/Blogs/DirectX-Developer-Blog/DirectX-Evolving-Microsoft-s-Graphics-Platform
http://channel9.msdn.com/events/Build/2014/3-564
あとは,IntelのMicheal Coppockさんという方がBlogで”Direct3D 12 Overview”として説明をしてくださっています。
Overviewの方はPart1 ~ Part8まであるようです。
https://software.intel.com/en-us/blogs/author/1048217
ちなみに,iSUSさんが日本語訳してくているようで以下から閲覧できます。
Direct3D 12 概要 パート 1: ハードウェアに近く
http://www.isus.jp/article/game-special/direct3d-12-overview-part-2-pipeline-state-object/
Direct3D 12 概要 パート 3: リソースバインド
http://www.isus.jp/article/game-special/direct3d-12-overview-part-3-resource-binding/
Direct3D 12 概要 パート 4: ヒープとテーブル
http://www.isus.jp/article/game-special/direct3d-12-overview-part-4-heaps-and-tables/
Direct3D 12 概要 パート 5: バンドル
http://www.isus.jp/article/game-special/direct3d-12-overview-part-5-bundles/
Direct3D 12 概要 パート 6: コマンドリスト
http://www.isus.jp/article/game-special/direct3d-12-overview-part-6-command-lists/
Direct3D 12 概要 パート 7: ダイナミック・ヒープ
http://www.isus.jp/article/game-special/direct3d-12-overview-part-7-dynamic-heaps/
Direct3D 12 概要 パート 8: CPU の並列性
http://www.isus.jp/article/game-special/direct3d-12-overview-part-8-cpu-parallelism/
Visual Studio Community 2013が発表されました。
・大学関係者
・非営利団体従事者
・オープン ソース開発者
・開発者 5 名以下の中小企業
であれば,Visual Studio Communityを使って開発することができるそうです。
詳細は下記を参照。
http://www.microsoft.com/ja-jp/dev/products/community.aspx
次のニュースVisual Studio 2015 Previewが公開されたようです。
http://blogs.msdn.com/b/dotnet/archive/2014/11/12/announcing-net-2015-preview-a-new-era-for-net.aspx
http://www.visualstudio.com/news/vs2015-preview-vs
さらに次のニュース、これが一番驚きなんですが
.NET Core Rutimeおよび.NET Frameworkのオープンソース化が発表されました。
http://news.microsoft.com/2014/11/12/microsoft-takes-net-open-source-and-cross-platform-adds-new-development-capabilities-with-visual-studio-2015-net-2015-and-visual-studio-online/
Github上で公開されているようで,下記のページらしいです。
https://github.com/Microsoft/dotnet
マイクロソフトやりおる。
Siggraph Asia 2014の論文がちょろちょろとネットに上がってきているようです。
http://kesen.realtimerendering.com/siga2014Papers.htm
こんにちわ,Pocolです。
皆さん元気にレイを飛ばしていますか?
今日は,先週参加してきたレイトレ合宿2!!についてレポートすることにします。
まず最初に結果ですが,今年の目標である「ビリ脱出!」をめでたく達成することができ7位入賞(7/15)を果たしました。
商品としてフィギュアで有名なグッドスマイルカンパニーさんのトイレットペーパーを頂きました。
あと,今年レンダリングした画像は下記のようになります。
一応わかりづらいので説明を追加しておくと,一番奥側がミラーになっていて手前のものが反射して見えるようになっています。右側はグロッシー(Phong)を表現するためのマテリアルに設定しています。
プレゼン資料をSlideShareにアップロードしたので興味がある方は見てください。
レイトレ合宿2!!ですが,今年は河口湖カントリーコテージBanにて開催されました。
去年は電車で行きましたが,荷物等を考えると色々と面倒なので,今年は自家用車にて現地に向かいましたが,東名高速で途中ゲリラ豪雨にあい,前が見えない状態で車を運転しました。
本当にマジゲリラ豪雨やばい。後ろから追突されないか非常に不安で,できるだけ車間をとって運転まじで神経使いました。さすがに疲れるので所々のPAで休憩をとりつつ無事に現地に到着。出発前はめちゃくちゃいい天気で,今日はBBQ日和だな~なんて思っていたのですが,現地に着いたら雨。これBBQできるのか?なんて思っていたのですが,屋根つきの場所だったのでみんなでおいしくお肉を頂くことができました!!
BBQの時に自己紹介があったのですが,八田さんが「レイトレ合宿のおかげで転職できました!」と言っていたのが印象深かったです。転職したいときにはレイトレすると良いのかもしれません。
BBQの後は各自お風呂に入って,その後セミナーという流れになりました。
今年のセミナーは内容が凄く濃くて非常に良かったです。以下はセミナーに参加した際のメモ内容です。
2014/09/06(Sat)
21:30~
kgussan 「フォトンマッピングGPU実装最新手法」
詳細は,http://www.slideshare.net/ssuser2e676d/gpu-h2609kgussan2-38830113を参照。
論文を読んでの内容を紹介。
大域照明は現行では2次までが多い。
アルゴリズムの比較について → raytracing.jpを参照。
リアルタイムレイトレーシング → 5FacesのMatt svobodaさん
今回紹介するリアルタイムフォトンマッピング処理 → Deep GBufferと,Alchemy AOやっている人による論文。
実装手法は4つ,3D Bounds, 2.5D Bounds, Hash Grid, Tiled。
手法の違いは,フォトンでループを回すか?ピクセルで回すか?射影するジオメトリ?どの空間?などで異なる。
(1) 3D Bounds
グラフィックスパイプラインのラスタライザを使う。
フォトンは20面体。
フォトンは格納せずラスタライズするときに直接つかっている感じで力技。
デメリット→ラスタライズでブルートフォースなので,ラスタライズの処理能力で頭打ちになる。
(2) 2.5D Bounds
スクリーンスペースでやる。ローカルリフレクションっぽい感じのやつ。
フォトンベースのループで,(1)よりも速い。
オクル―ジョンがある寄与の影響が出ない。
(3) HashGrid Cells
セル上にフォトンを分配して,スクリーンのピクセル座標を3D空間に投影する。
その座標に近いフォトンを3D空間上で探索・収集する。
離散下サンプル手法を使っているけどノイズがでるのでバイラテラルフィルタをかける。
(4)タイルベース手法
スクリーンスペースでタイル状にピクセルを区切って,そのタイルごとにフラスタムを生成。
フラスタムにのりしろをつけてフォトンを分配する。
タイルベースレンダリングのライトの代わりにフォトンを使ったような手法。
実行結果 → 2.5D BoundsとTiled Algorithmの結果が良好。
まとめ
データ構造で性能が大きくことなる。
映画ではフォトンが6桁ぐらい違うので,まだ適していない。
ネックはメモリバンド幅。
メモリレイテンシが追い付かない。
Q&A
・この技術使っているゲームある?
まだない。研究レベルでは多少例がある。
すごく限定的にすれば使えるのではないか?例えば懐中電灯をつかったドアップとか,ダイアを探せとか。
22:10~
shocker 「Monte Carlo Ray Tarcing アルゴリズム超概略」
詳細は,http://www.slideshare.net/shocker_0x15/2-38791622
・モンテカルロ積分
期待値が真値に一致する。
任意のPDFを使える
・重点的サンプリング
理想的なPDFを求めることは困難。
・グローバルイルミネーション
カメラに到達するあらゆる光経路の寄与を積分する。
モンテカルロ積分を使って解く。
・Path Tracing
入射方向を確率的にサンプル。
光源に当たれば寄与が取れる。
でもなかなか当たらない。
・Next Event Estimation
光源上の点を明示的にサンプルし,視線経路と接続する。
スペキュラーは使わない。
・Multiple Importance Sample
光源とつなげる。
一長一短がある。
2つの戦略を重みをつけて合成するのがMIS。いいとこどり。
MISウェイト
バランスヒューリスティック。
・Bidirectional Path Tarcing
MISを一般化。
任意の経路に一般化。
視線パスと光源パスの各頂点を接続。
長さ(3, 1) → 目から3頂点,光源から1頂点を表す。
・Metropolis Light Transport
ごく一部の領域の光輸送経路が重要となるシーンに弱い,そこでMLT。
既存の有効パスへの変異を加えて新たなパスを生成。有効なものだけをとっていく。
・Primatry Sample Space MLT
経路のもとになる乱数レベルで変異を加える。
オリジナルのMLTよりも実装が簡単かつ,元よりもロバスト。
・Photon Mapping
1.フォトントレーシング
2.密度推定
フォトンマッピングは経路をゆるく接続する。
・Progressive Photon Mapping
あらかじめ輝度計算点を生成しておく
フォトントレーシングを繰り返して統計量を更新。
・Stochastic PPM
PPMはアンチエイリアスとかDOFが苦手。
これらの効果は平均放射輝度推定を必要とする。
正確な推定には無限の輝度推定点が必要。
領域内で探索半径などの統計量を共有。
すべてをまとめることで,平均輝度の推定値をプログレッシブに真値に近づけられる。
・PPM:Probabilistic Approach
半径を徐々に小さくしていったオリジナルのフォトンマッピングの結果を重ね合わせるだけ。
・Adaptive Markov Chain Monte Calro PPM
PPM(SPPM)の問題点。
上からくる場合。
不可視なフォトン経路=無駄な経路。
PPM + PSSMLT + α
可視なら採択していく。
変異パラメータの自動調整も行う。
ズームしても破綻しない。自動調整の結果。
・Unified Path Sample(Vertex Connection And Mergin)
BPT
光沢面の多いシーン得意
SDSパス苦手
PPM
光沢面の多いシーン苦手
SDSパス得意
MISを使えばいいんじゃね?
しかし問題がある。
サンプリング次元が違う。
バランスヒューリスティックで問題。単位が違う
視線パスの端点をずらして光線パスの端点を追加。
・Path Space Regularization
パストレをもう一度考える
DRDFをぼかして寄与をとれるようにする。
反復ごとに本来のBSDFへ近づいていく=本質的にはPPMの半径縮減と同じ。
ディフューズ面には適用しない。
Regularized MLT綺麗。
さらに +MEで綺麗。
・Multiplexed MLT
PSSMLTでは1つの提案分布と採択・棄却を組み合わせて目標分布を達成する。
BPT等で実現されるマッピング(=提案分布)があまりよくない→棄却が増える。
PSS内の変異を加えてマッピングの変更も行う。
・最新手法は基本的にMIS and/or (PSS)MLTの理論を使っているイメージ
ボリュームレンダリングに関しては今回触れなかった。
MLT系はアニメーションに向いていない。画面がちらつく,動画向きじゃない。
23:15~
perim 「MCMC based rendreing techniques」
詳細は,http://www.slideshare.net/OtsuHisanari を参照。
難しいシーン グロッシーとか
なぜ難しい?
解決手法
マルコフチェインモンテカルロ
MCMCを用いることによってエネルギー分布に従う光路をサンプリングできる。
目的
ある分布に従うようなマルコフ連鎖を作る
MLT
状態空間:Path space
光路を直接変更することで変異を行う。
Metropolis-Hasting法
採択確率を決める
状態空間
一様乱数列
写像により光路変換。
複雑な関数よりも特徴を抜き出した関数をいくつかサンプリングした方が効率的では?ということ
(このあと以降は難しすぎて理解できなかったのでメモるのをやめた。詳細はスライドを参照してください)
今日は,アプリ開発に便利なライブラリを紹介してみようと思います。
・AntTweakBar
ライセンス: zlib/libpng License
詳細:http://anttweakbar.sourceforge.net/doc/
知人の方に教えてもらったGuiライブラリです。OpenGL, DirectXどちらでも使えるようになっているのが魅力です。
・DirectXSH
ライセンス:Microsoft Public License (MS-PL)
詳細:http://blogs.msdn.com/b/chuckw/archive/2012/07/28/spherical-harmonics-math.aspx
球面調和関数系の演算をまとめたライブラリです。D3DXの時代にあったやつの代用とかしたい場合に使えそうです。
・DirectXTex
ライセンス:Microsoft Public License (MS-PL)
詳細:http://directxtex.codeplex.com/
Direct3D11でテクスチャ読み込みをするのに便利です。
・DirectXTK
ライセンス:Microsoft Public License (MS-PL)
詳細:https://directxtk.codeplex.com/
一通り便利そうなものが整っています。
・DXUT For Direct3D11
ライセンス:Microsoft Public License (MS-PL)
詳細:http://dxut.codeplex.com/
D3D11でDXUTベースで開発したい場合はこちらを利用すると良いです。
・Effects11
ライセンス:Microsoft Public License (MS-PL)
詳細:https://fx11.codeplex.com/
FXファイルを扱うためのライブラリです。
・freeglut
ライセンス:MIT License
詳細:http://freeglut.sourceforge.net/
オリジナルのglutはもうメンテナンスされていないので,こちらを利用すると良いです。
・glew
ライセンス:Modified BSD License, MIT License
詳細:http://glew.sourceforge.net/
言わずと知れたGLEWです。今OpenGLで開発するなら,必須といっても過言ではないでしょう。
・glfw
ライセンス:zlib/libpng License
詳細:http://www.glfw.org/
glutがメンテナンスされていない関係で,自分が最近使うOpenGLのフレームワークです。デフォルトでフォント描画がないのが痛い所ですが,AntTweakBarと組み合わせて使うなら問題ないでしょう。
・lua
ライセンス:MIT License
詳細:http://www.lua.org/home.html
luaスクリプトです。ゲーム開発に重宝すると思います。
・Squirrel
ライセンス:MIT License
詳細:http://www.squirrel-lang.org/
Squirrelスクリプトです。ゲーム開発に重宝すると思います。
・TinyXML-2
ライセンス:zlib License
詳細:https://github.com/leethomason/tinyxml2
XMLを取り扱うライブラリです。ツール周りの実装で役立つかと思います。
・stb
ライセンス:public domain
詳細:https://github.com/nothings/stb
レイトレ合宿で教えもらった,1ファイルヘッダオンリーのライブラリ集です。
・eigen
ライセンス:MPL2 License
詳細:http://eigen.tuxfamily.org/index.php?title=Main_Page
線形代数のライブラリです。自前で演算ライブラリを作るよりもこちらを使った方が良いと思います。