[Unity]シェーダー用の小回りが利く3次元ノイズ関数

無題
Pocket

シェーダーを書くときによく使っているノイズ関数があるので、紹介します。

割と短いコードでこんな感じのノイズが出せます。

無題

パーリンノイズ

 

ランダム関数

『GLSL ランダム』で検索して出てくるランダム関数を拡張し、三次元/四次元に対応させて使っています。

56.787はぶっちゃけ適当に決めた数字なので、より良い算出方法があったら誰か教えて下さい。

 

無題

砂嵐

ノイズ関数

smoothstepを用いて補間をなめらかにし、lerpで合成しています。

 

出力イメージ

ノイズ

 

パーリンノイズ

カスケードさせて平均を取ることで、パーリンノイズっぽくなります。

無題

パーリンノイズ

 

活用法

試しにUnityちゃんに乗せてみました。

パーティクルの位置更新用ベクトルとして使ったり、ボリュームレンダリングして雲を描画したりと、様々なところで活用できると思います。

無題

Unityちゃん

 

追記

上記のパーリンノイズでは細かいノイズが汚く見えてしまいますが、平均を取るとき、細かくなるほど影響度合いを下げてやることで改善できます。

無題

改善後

 

無題

改善後Unityちゃん

 

Unityちゃんライセンス

無題

このコンテンツはユニティちゃんライセンス条項の元に提供されています

Pocket

Pingbacks/Trackbacks

  1. [Unity]鉛筆風シェーダーを作ってみた | notargs.com - 2016年7月13日

    […] [Unity]シェーダー用の小回りが利く3次元ノイズ関数 […]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

(Required)

Proudly powered by WordPress   Premium Style Theme by www.gopiplus.com