Closed22
Unity 2023.2.0a19のVFX GraphからCustom HLSL Blockが使えるらしいので調査
これになってます
久しぶりにVFX Graphのロードマップ見ていたのですが、いつの間にかカスタムHLSLブロックがリリースされていた
公式docsではここ
OperatorもContextも作れるみたいな感じ?
2023.2.0a22で新規プロジェクトを3D Coreで作成
そしてHDRP 16.0.2をインストール
え!なんかVFX Graph作ろうと思ったらテンプレートでてきた!なんかいい
とりまMinimalを選択して新規作成
なんかVFXが再生されないなぁと思っていたら
HDRPの設定が済んでいなかった(あほ
あ~こういう感じね(完全理解
例えばRiderでも何でもいいのでHLSLファイルを作りますと
ここではランダムに生成したVector3とオフセットを加算した値をpositionに入れる簡単なロジックを組んだ
ランダムな値はコンテキストノードで取得できるらしいんで
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;
}
ということでここまでの内容をGitHubで公開
記事公開
このスクラップは2023/08/14にクローズされました