Closed22

Unity 2023.2.0a19のVFX GraphからCustom HLSL Blockが使えるらしいので調査

にー兄さんにー兄さん

2023.2.0a22で新規プロジェクトを3D Coreで作成
そしてHDRP 16.0.2をインストール

にー兄さんにー兄さん

え!なんかVFX Graph作ろうと思ったらテンプレートでてきた!なんかいい

にー兄さんにー兄さん

なんかVFXが再生されないなぁと思っていたら
HDRPの設定が済んでいなかった(あほ

にー兄さんにー兄さん

InitコンテキストにCustom HLSLブロックを配置
それを選択したらインスペクタからHLSLファイルをアタッチする

(ファイル名がdecrementになってるのはもともとデクリメントのサンプルを作ろうと思ってたから)

にー兄さんにー兄さん

ちなみにEditを押すとこんな感じでUnityのエディタ内でシェーダを編集することも可能

にー兄さんにー兄さん

なんかコンパイル直後にパフォーマンスが悪くなる気がする

にー兄さんにー兄さん

『Unity 2023.2aからVFX GraphでHLSLコードが動くようになった』的なタイトルで記事化したいよね

にー兄さんにー兄さん
  • 球の中にランダムに位置を設定するノード
  • pistonとvelocityとcolorで構成されるstructured bufferを受け取ってC#コードから属性を設定するノード
にー兄さんにー兄さん

球表面上にランダムに位置を設定するように変更

positionSpherre.hlsl
// reference from:
// https://qiita.com/aa_debdeb/items/e416ae8a018692fc07eb#%E7%90%83%E9%9D%A2%E4%B8%8A%E3%81%AE%E4%B8%80%E6%A7%98%E4%B9%B1%E6%95%B0-1
void SetPositionOnSphereSurface(inout VFXAttributes attributes, in float3 positionOffset, in float radius)
{
    const float pi = 3.14159265;
    float cosTheta = -2.0 * VFXRAND + 1.0;
    float sinTheta = sqrt(1.0 - cosTheta * cosTheta);
    float phi = 2.0 * pi * VFXRAND;

    attributes.position = radius * float3(sinTheta * cos(phi), sinTheta * sin(phi), cosTheta) + positionOffset;
}
このスクラップは2023/08/14にクローズされました