Unity 6.3
0 онлайн 25 гостей 3 в системе
Вход

Создание поверхностного шейдера в встроенном Render Pipeline

Выполните следующие действия:

  1. Добавьте блок CGPROGRAM к блоку SubShader в коде шейдера, а не к блоку Pass. Unity автоматически создает несколько проходов при компиляции шейдера поверхности.
  2. Добавить директиву #pragma surface [surfaceFunction] [lightModel].

Шейдеры поверхности несовместимы с HLSLPROGRAM блоков, но вы можете использовать HLSL внутри a CGPROGRAM блок. Для получения дополнительной информации см. Блоки кода шейдера в ShaderLab ссылка.

Пример

Shader "Example/Diffuse Simple" {
  SubShader {
    Tags { "RenderType" = "Opaque" }

    CGPROGRAM

    #pragma surface surf Lambert

    struct Input {
        float4 color : COLOR;
    };

    void surf (Input IN, inout SurfaceOutput o) {
        o.Albedo = 1;
    }

    ENDCG
  }
  Fallback "Diffuse"
}

Вот как это выглядит на модели с двумя огни настроить:

Пример основного поверхностного шейдера.
Пример основного поверхностного шейдера.