Что делает шейдерная функция surf? - PullRequest
0 голосов
/ 19 мая 2018

В Unity стандартный поверхностный шейдер поставляется с функцией серфинга

void surf (Input IN, inout SurfaceOutputStandard o)
{

Когда вызывается эта функция и для чего она должна использоваться?Где найти ссылку на язык для функции?

1 Ответ

0 голосов
/ 20 мая 2018

Я не думаю, что вы полностью понимаете концепцию Поверхностные шейдеры .

Как написано здесь :

Поверхностные шейдерыв Unity - это подход к генерации кода, который значительно облегчает написание подсвеченных шейдеров, чем использование программ низкоуровневых вершинных / пиксельных шейдеров.Обратите внимание, что в Surface Shaders нет пользовательских языков, магии или ниндзя;он просто генерирует весь повторяющийся код, который должен быть написан вручную.Вы по-прежнему пишете шейдерный код в HLSL.

Как это работает

Вы определяете «поверхностную функцию», которая принимает любые UV или данные, которые вам нужны, в качестве входных данных и заполняетструктура вывода SurfaceOutput.SurfaceOutput в основном описывает свойства поверхности (это цвет альбедо, нормаль, излучение, зеркальность и т. Д.).Вы пишете этот код в HLSL.

Компилятор Surface Shader затем выясняет, какие входные данные необходимы, какие выходные данные заполнены и т. Д., И генерирует фактические вершинные и пиксельные шейдеры, а также отрисовки для обработки прямого и отложенного рендеринга.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...