e.blog

主にUnity/UE周りのことについてまとめていきます

ComputeShader

ComputeShaderで動かす様々な形に変化するパーティクルシステム

概要 今回は1/7〜1/10にかけて開催されたCES2020でMESONが展示した『PORTAL』の中で、メインの演出となったパーティクルシステムについて書きたいと思います。 このパーティクルシステムの特徴は、指定したモデルグループの頂点位置にパーティクルをまとわせ…

Unityで流体シミュレーション ~粒子法編~

はじめに 以前に、格子法を用いた2次元の流体シミュレーションについて概念編と実装編に分けて2つの記事を書きました。 しかし格子法は、その定義領域の範囲を越えてしまうと計算ができなくなってしまうという問題があります。特に今回は3Dに拡張し、AR/VR内…

Unityで流体シミュレーションを実装する 〜 実装編 〜

概要 前回は流体シミュレーションの概念編を書きました。 edom18.hateblo.jp 今回は前回説明した内容を元に実際に実装したプログラムに関して解説していきたいと思います。 ちなみに実行したデモ動画はこちら↓ 前のやつ、ちょっと計算間違っていてちゃんと動…

Unityで流体シミュレーションを実装する 〜 概念編 〜

はじめに 今回の実装をするにあたってナビエ・ストークス方程式を解いて実装していく必要があるのですが、正直、数学・物理としての正確な意味の理解や方程式のしっかりとした理解には至ってません。 式の内容やどういうことを行っているのかというのは理解…

Compute ShaderとGraphics.DrawMeshInstancedIndirectを使ったレンダリングを理解する

概要 ComputeShaderを準備する コード システム全体で利用する構造体を定義する C#コード側でデータを準備し計算を実行する コンピュートシェーダで利用するものと同じレイアウトの構造体を定義する 各データ用変数を定義 データのセットアップ Indirect(間…

カールノイズを使ったパーティクル表現

概要 前回の実装ではパーティクルはすべて常にアップデートされていた 連続してパーティクルをエミットする パーティクルをプールして管理する プールの状態を初期化するInitカーネル Append Buffer、Consume Bufferを利用してプールを管理する パーティクル…

UnityのCompute ShaderでCurl Noiseを実装(衝突判定編)

概要 今回は「衝突判定編」です。 前回の「流体編」の続編です。 edom18.hateblo.jp さて、今回は論文で発表されたカールノイズの『衝突判定』について書きたいと思います。 実際に動いている動画↓ やったー。カールノイズの衝突判定もちゃんと動いた。 pic.…

ComputeShaderを触ってみる その2 ~バッファ・テクスチャ編~

概要 前回の記事(ComputeShaderを触ってみる その1 ~スレッド編~)で、Compute Shaderのスレッドの概念について書きました。 edom18.hateblo.jp 今回は、Compute Shaderを実際に使って、少し意味のある計算をしてみたいと思います。 意味のある計算をさせ…

ComputeShaderを触ってみる その1 ~スレッド編~

概要 並列化可能な、膨大な数の計算を行う場合はCompute Shaderの出番です。 今回はこの「Compute Shader」を触ってみたのでそのメモです。 Compute Shaderの最小単位 Compute Shaderを利用する場合、まずは.computeファイルを作成します。 そして作成したCo…