Blender: Stripe Transition Shader

昨日は事務所で湿気に殺されそうでした、レンダリングPCはサウナ石ですか?

さてレンダリング中のヒマつぶし、BlenderでShader遊び。シマシマのトランジション効果。

以前にも書いたと思いますがノードのつなぎ方、特に任意の座標のテスクチャのルックアップやシェイピングなどGLSL等のシェーダプログラミングと似ているので、プロシージャルに作ろうとするなら「The Book of Shaders」が大変参考になります。

UnityのShaderGraphも同様ですが、3Dのノイズテスクチャなどが無いので手間はかかりそうですね。


Tiling Procedural Texture

Image TextureノードはRepeat設定でタイリングできますが、Noise等のプロシージャルテクスチャノードはタイリング設定がありません。ノイズなどはタイリングする事はありませんが、Gradient Textureのタイリングは頻繁に使います。

プロシージャルテクスチャをタイリングしたい場合はTexture Coordinateノードから適当な座標を取り出し、タイリングしたい分だけ乗算(Multiply)し、折り返したい長さで剰余(modulo、割った余り)します。上の画像はUVそれぞれに2.0をかけて、1.0で割った余りを、テクスチャのVector入力へ渡しています。

実際にテクスチャを縮小しているわけでは無くテクスチャの読み取り位置を歪めている事になります。少し前に記事にした、放射状や渦巻変形も同じです。ゲームなどで使うシェーダプログラムと同じ考え方ですね。

Vector Mathノードに乗算とか割り算があるのはちょっと気持ち悪いですね(実際にはベクトル同士の乗算とかないですからね)。