タグ

ブックマーク / i-saint.hatenablog.com (8)

  • Intel ISPC & SPH on CPU - primitive: blog

    コミケに参加した方々、お疲れ様でした。 サイトの方では告知し忘れていましたが (…) 今回は落選でした。次回の冬コミは既に申し込み済みで、受かれば参加します。牛歩の歩みですが、来年 5 月までには何らかの形で完成した作品を出すつもりです。 前回の冬コミ版は SPH (流体シム) を CUDA で実装しており、ゆえに Radeon では動かないし、GeForce でも 500 系未満だと予想外に遅く、スペックの差をどう解決するかが頭が痛い問題だったんですが、現在 Intel ISPC による CPU 実装で行こうという方針に定まりつつあります。 この Intel ISPC なるものが面白いので紹介。 http://ispc.github.com/ GPGPU 的な並列プログラミングの思想を CPUSIMD で実現するプログラム言語です。SIMD の各要素 (lane) を実行単位と見立

    Intel ISPC & SPH on CPU - primitive: blog
    shader
    shader 2017/04/26
  • EASTL から垣間見るゲームソフトウェア開発現場の現状 その 1

    (2016/02/10 追記: EASTL は長らく EAWebKit の一部としてライセンスが不明瞭なまま公開されていましたが、この日 BSD ライセンスで正式に公開されました https://github.com/electronicarts/EASTL) 若干古いものですが、2007 年に発表された、Electronic Arts によるゲーム開発向けの改良を加えた STL、"EASTL" の仕様。 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html 仕様だけで実装が公開されてないのが非常に残念なのですが、それは別として、何故こんなものが必要なのか、どういう事情でこの機能が盛り込まれたのか、といったゲーム開発現場の事情が細かく解説されていて、とても参考になります。特に、既にある程度 C++ に習熟してい

    EASTL から垣間見るゲームソフトウェア開発現場の現状 その 1
    shader
    shader 2016/02/10
    2016年にソースが公開された https://github.com/electronicarts/EASTL
  • pseudo-instanced drawing in Unity - primitive: blog

    Unity で大量のオブジェクトを描画するスクリプトを書きました。 https://github.com/i-saint/BatchRenderer 簡単な使用例 いつも通り弾幕やらパーティクルやらを描くのを想定した代物ですが、割と簡単に使えてポータブルな作りになっています。Windows で D3D11, D3D9, OpenGL モードでいずれも動作。Android でも動作を確認しています。 スクリプトの使い方については上記ページを参照していただくとして、この記事ではこのスクリプトを作る過程で得られた (バッド) ノウハウ群を書き残しておこうと思います。過去の記事と内容が被ってる部分が多くありますが、その多くは記事でより洗練されています。 まずこれを作った背景。 OpenGL や Direct3D では、大量のオブジェクトを描画するにはインスタンシング描画を用いるのが一般的です。U

    pseudo-instanced drawing in Unity - primitive: blog
    shader
    shader 2015/02/09
  • deferred shading in Unity - primitive: blog

    Unity は標準で deferred rendering をサポートしていますが、これは light pre-pass とか deferred lighting と呼ばれるもので、deferred shading とはちょっと違います。私が必要としているのは deferred shading の方なので、これを Unity で実装してみました。 https://github.com/i-saint/DeferredShading deferred shading 自体の詳しい解説はここでは省略しますが、 大雑把には render target を複数用意し、ポリゴン描画パスではそれらに法線、位置、diffuse 色などシェーディングに使う情報を格納 (これらは geometry buffer、略して G-Buffer と呼ばれます)、その後 G-Buffer を利用してポストエフェクト的

    deferred shading in Unity - primitive: blog
    shader
    shader 2014/07/25
  • restore process state - primitive: blog

    プロセスの内部状態を保存して後で復元したい、ということがゲーム開発ではよくあります (いわゆる state save)。チェックポイントから再開みたいな機能の実現の他、あると開発中何かと役に立ちます。定期的に state save しつつ、気になったところがあったら巻き戻して Alcantarea の実行時コード編集で改良、という TAS みたいなやりかたが最近の私の開発スタイルです。 通常は boost::serialization とかを使って必要なデータを serialize する処理を書いてタイトル毎に実装しますが、これをもっと簡単に、汎用的に、できれば既存のプログラムに外部から適用できる形で実現する方法はないか、と夢見た方も多いんじゃないかと思います。これを実現できるかもしれない方法を思いついて、ある程度のところまで成果を出せたので経過を書き残します。 (Virtual Mach

    restore process state - primitive: blog
    shader
    shader 2014/01/31
  • Alcantarea - primitive: blog

    C++ ソースの変更を実行中のプログラムに反映させる Visual Studio アドインをリリースしました。 Alcantarea - A Visual Studio Add-In for Runtime C++ Code Editing これは DynamicPatcher に改良を加えつつ Visual Studio のアドイン化したもので、既存のプログラムを前準備なしに実行時編集可能にします。Edit and Continue と比べていくつか制限はあるものの、x64 でも最適化が有効なプログラムでも機能するのはゲーム開発で強力に威力を発揮するはずです。 Visual Studio 2013 が x64 の Edit and Continue に対応する、という情報が出て世界中のゲーム開発者が沸き立ち、その後実は .Net しか対応してないことが判明して世界中のゲーム開発者をガッカ

    Alcantarea - primitive: blog
    shader
    shader 2013/12/25
  • WebDebugMenu - primitive: blog

    ゲーム屋の間ではおなじみのデバッグメニューをブラウザで実装してみました。 WebDebugMenu デバッグメニューとは、変数や関数を事前に登録しておき、後でメニューから値を書き換えたり関数を呼んだりできるようにする代物で、周囲の人間の話を聞くにコンソールゲーム屋の間では国内外問わずどこでも開発中こういう機能を入れていて、ほぼ共通認識になっているようです。 通常ゲーム内の 2D レンダリング機能やら UI 機能やらを使って実装するのですが、ブラウザで実装すればそれらとの依存を断てるので汎用性を高められそうです。サーバープログラムのようなグラフィック表示がないプログラムへの応用も考えられますし、ブラウザは超強力な UI エンジンでもあるので、一般的なデバッグメニューでは難しい複雑な編集機能も実装できそうです。(STL などのコンテナの中身を弄るとか、スクリプトやシェーダコードを編集できるよう

    WebDebugMenu - primitive: blog
    shader
    shader 2013/05/21
  • Hooking Direct3D11 - primitive: blog

    Direct3D は、デバッグビルドの場合、終了時に解放されていない ID3D* 系オブジェクトがあるとその旨を警告してくれます。しかし、その時出してくれる情報は、どの class にいくつ開放漏れがあります、というだけでデバッグの助けにはあまりなりません。 これがものすごく不満だったので、もっと親切なリークチェッカを作ってみました。 https://github.com/i-saint/D3DHookInterface/tree/master/LeakChecker (一括ダウンロード) 使い方は、DirectX の Device & SwapChain を作成した後 D3D11LeakCheckerInitialize() を呼び、リークチェックしたい箇所で D3D11LeakCheckerPrintLeakInfo() を呼ぶだけです。その時点で解放されていないリソースの、作成時のコ

    Hooking Direct3D11 - primitive: blog
    shader
    shader 2012/03/13
  • 1