В Unity стандартный поверхностный шейдер поставляется с функцией серфинга
void surf (Input IN, inout SurfaceOutputStandard o) {
Когда вызывается эта функция и для чего она должна использоваться?Где найти ссылку на язык для функции?
Я не думаю, что вы полностью понимаете концепцию Поверхностные шейдеры .
Как написано здесь :
Поверхностные шейдерыв Unity - это подход к генерации кода, который значительно облегчает написание подсвеченных шейдеров, чем использование программ низкоуровневых вершинных / пиксельных шейдеров.Обратите внимание, что в Surface Shaders нет пользовательских языков, магии или ниндзя;он просто генерирует весь повторяющийся код, который должен быть написан вручную.Вы по-прежнему пишете шейдерный код в HLSL.
Как это работает
Вы определяете «поверхностную функцию», которая принимает любые UV или данные, которые вам нужны, в качестве входных данных и заполняетструктура вывода SurfaceOutput.SurfaceOutput в основном описывает свойства поверхности (это цвет альбедо, нормаль, излучение, зеркальность и т. Д.).Вы пишете этот код в HLSL. Компилятор Surface Shader затем выясняет, какие входные данные необходимы, какие выходные данные заполнены и т. Д., И генерирует фактические вершинные и пиксельные шейдеры, а также отрисовки для обработки прямого и отложенного рендеринга.
Вы определяете «поверхностную функцию», которая принимает любые UV или данные, которые вам нужны, в качестве входных данных и заполняетструктура вывода SurfaceOutput.SurfaceOutput в основном описывает свойства поверхности (это цвет альбедо, нормаль, излучение, зеркальность и т. Д.).Вы пишете этот код в HLSL.
Компилятор Surface Shader затем выясняет, какие входные данные необходимы, какие выходные данные заполнены и т. Д., И генерирует фактические вершинные и пиксельные шейдеры, а также отрисовки для обработки прямого и отложенного рендеринга.