重いノイズ計算や法線変形を、描画効率向上のために頂点シェーダー(Vertex)側で行い、ピクセル(Fragment)側へデータを正しく引き渡すための「Custom Interpolator(カスタム補間)」の罠を解消します。
\n\n主な原因
頂点シェーダーで計算された値は、ポリゴンの「頂点」から「頂点」へと流れる際に自動的に線形補間(インターポレート)されてピクセルシェーダーに届きます。この時、**「非線形の変化をする情報(ベクトル方向など)」**をそのまま渡すと、補間時の計算誤差によってピクセル側でねじれが生じます。また、データの型(Vector3とFloat)の受け渡しのズレもエラー要因になります。
具体的な解決方法
Shader Graphにおける正しい Custom Interpolators の運用フローです。
- **Graph Settings** を開き、**Custom Interpolators** を展開して追加します(例: `MyWorldPos (Vector3)`)。
- **Vertex Block**(頂点出力部)に `MyWorldPos` のスロットが自動追加されるので、そこに頂点シェーダーで計算した `Position (World)` などの値を繋ぎます。
- **Fragment Block**(ピクセル入力部)で、追加した `MyWorldPos` ノードを呼び出し、カラーやテクスチャサンプリングの計算へ繋ぎます。
※必ずInputs/Outputsの変数の次元(Vector3ならVector3)が完全に一致していることを確認してください。