Version: Unity 6.0 (6000.0)
言語 : 日本語
ビルトインレンダーパイプラインのリフレクションサーフェスシェーダーの例
ビルトインレンダーパイプラインのカスタムデータサーフェスシェーダーの例

ビルトインレンダーパイプラインの頂点モディファイアサーフェスシェーダーの例

頂点シェーダー内の受信頂点データを変更する “頂点モディファイア” 機能を使用できます。これはプロシージャルのアニメーションや法線に沿った押し出しなどに使用できます。サーフェスシェーダーのコンパイルディレクティブ vertex:functionNameは、inout appdata_full パラメーターを取る関数でそのために使用されます。

以下は、マテリアルで指定した量だけ法線に沿って頂点を動かすシェーダーです。

  Shader "Example/Normal Extrusion" {
    Properties {
      _MainTex ("Texture", 2D) = "white" {}
      _Amount ("Extrusion Amount", Range(-1,1)) = 0.5
    }
    SubShader {
      Tags { "RenderType" = "Opaque" }
      CGPROGRAM
      #pragma surface surf Lambert vertex:vert
      struct Input {
          float2 uv_MainTex;
      };
      float _Amount;
      void vert (inout appdata_full v) {
          v.vertex.xyz += v.normal * _Amount;
      }
      sampler2D _MainTex;
      void surf (Input IN, inout SurfaceOutput o) {
          o.Albedo = tex2D (_MainTex, IN.uv_MainTex).rgb;
      }
      ENDCG
    } 
    Fallback "Diffuse"
  }
ビルトインレンダーパイプラインのリフレクションサーフェスシェーダーの例
ビルトインレンダーパイプラインのカスタムデータサーフェスシェーダーの例