CUDA

[CUDA]カスタムatomicMinで最小値とそのときのindexとを同時に取得する

値や構造体の配列を入力として、それぞれの入力値に対して何らかの計算式などで何かしらの値を求め、その値の最小値(または最大値)と、そのときの配列のindexとをセットで欲しいときがあります。例えば、std::vector …

C++, Unreal Engine 4

[UE4][C++]UMGでColor Pickerを活用する

Unreal Engine 4で、ランタイム時にテクスチャやマテリアルの色を自由に指定したいときに、UE4 Editorで採用されているColor Pickerを使いたいと思ったことがある方も少なくないのではないでしょう …

C++, ComputeShader, HLSL, Unreal Engine 4

[UE4][ComputeShader][HLSL][C++]Unreal Engine 4で(RW)StructuredBufferを用いたComputeShaderを利用する(その3:実際に用いる)

その1:イントロ、その2:C++側シェーダクラスに続き、今回でようやく完結です。 FGlobalShaderクラスを継承したクラスをどのように呼び出すのかを見ていきましょう。 サンプルソースコード一式をGitHub上で公 …

C++, ComputeShader, HLSL, Unreal Engine 4

[UE4][ComputeShader][HLSL][C++]Unreal Engine 4で(RW)StructuredBufferを用いたComputeShaderを利用する(その2:C++側シェーダクラス)

その1:イントロでは文字通りイントロ(と愚痴…)だけになってしまいましたので、その2では具体的な実装を解説します。 1. C++経由で変数をHLSL側に渡す 2. C++側の変数にはFVectorも入れる 3. Stru …

C++, ComputeShader, HLSL, Unreal Engine 4

[UE4][ComputeShader][HLSL][C++]Unreal Engine 4で(RW)StructuredBufferを用いたComputeShaderを利用する(その1:イントロ)

UnityではGPGPUをフル活用するためにComputeShaderを用いた美しい可視化事例がたくさんあり、特にIndie Visual LabさんによるUnity Graphics Programming (vol. …

HLSL, Unreal Engine 4

[UE4][HLSL]Custom Expressionsによるポストプロセス基礎の基礎

Unreal Engine 4のポストプロセスは、Blueprintsと同様にノードを組み合わせて作ることが基本です。 ノードを駆使することで色々出来るのですが、マテリアルノードにはFor文が無く、ループを回すことが出来 …

C++, Unreal Engine 4

[C++][UE4] std::string -> floatへの変換をtry / catch無しで行う

std::string文字列がfloatになり得るかどうかをチェックしつつfloatへの変換を行う場合、通常はstd::stofを用いて

のように行うかと …

C++, CUDA, Thrust

[C++][CUDA][Thrust]続・単純な二値化処理を4通りの並列化手法で比較してみる

前回、単純な二値化処理を4通りの並列化手法で比較しました。 今回はCUDA関連でもう少し検証してみます。 CUDAのプログラミングで最初に気にするところと言えば、やはりcudaMalloc, cudaFreeのメモリ管理 …

C++, C++ AMP, CUDA, PPL

[C++][CUDA][PPL][AMP]単純な二値化処理を4通りの並列化手法で比較してみる

画像処理の分野において、各ピクセル(空間の場合は各ボクセル)の値を0か1かのどちらかの値に分ける二値化処理が頻繁に行われます。 何を以て0または1とするかがポイントなわけですが、ここでは超簡単に、閾値(threshold …

C++, CUDA, Unreal Engine 4

[C++][CUDA][UE4]CUDA関数をUnreal Engine 4で用いる

ゲームエンジンの強力なグラフィックス能力は、ゲームや映像の範疇を越え、「空間」に関するあらゆるデータの描画に用いることが出来ます。医療もその1つです。 ただ、ゲームエンジンは描画以外のロジック部分は基本的にはCPU上でシ …