ボリュームレンダリングの実験

Twitterだと書ききれないのでこちらに。
試行錯誤の独り言です。

Unityの3dテクスチャによるボリュームレンダリングは参考になるサイトもそれなりにあって表示もうまく行ったのだけどAPIが初期化時に実際の8倍以上のメモリを要求する。
部分初期化はサポートしてないようだ。

対策としてComputeBufferを使って処理しようとしたらたしか、4の倍数で2048以下でないとダメというエラーがでたので早々に諦めて
テクスチャを数枚z軸に対して積み重ねるようにしてみた。
例えばzが0.5以下なら0番目のテクスチャを
z値2倍で使う
それより上なら1番目のテクスチャをz値0.5差し引いた上で2倍で使う。
この試みは一応の成功、
問題点としてはつなぎ目がおかしくなる
これはボリューム内のz軸一枚分それぞれ余分に持ち計算式を少し変えれば解決できそうだ。
他にもシェーダー変更後Unityをアクティブにした瞬間Unityがなぜかフリーズというレベルで固まる。
10分以上応答がなくおそらく変換処理をしてるのだろうけど重すぎる。
これにより知識が足りない故のトライアンドエラーがうまくいかなくなる。
テクスチャを3枚以上同じ方法でつかうと
実行する前にループ文にフラグつけろとのエラーがでてつけてみたけど変わらない。(もしかしてマテリアルにシェーダー設定されてる時点で内部実行されてる?)
Unityはさらにフリーズするようになる。

とりあえず次回は
https://developer.microsoft.com/en-us/windows/mixed-reality/volume_rendering
を真似てやはりComputeBufferをつかう方法を再度チャレンジ

コメントを残す

メールアドレスが公開されることはありません。