adressmoeistranici
@adressmoeistranici
Делатель

Как объеденить шейдеры?

Не знаю как объеденить три шейдера.
Вот в этот pastebin.com/sULvrjkA
надо довставить вот эти два
pastebin.com/4EfnVaUc
pastebin.com/YePdaq38
я пытаюсь когда это сделать, то они начинают спорить и ругается все...
  • Вопрос задан
  • 906 просмотров
Решения вопроса 1
BasmanovDaniil
@BasmanovDaniil
Геймдизайнер-телепат
В первую очередь открываете мануал и читаете:
https://docs.unity3d.com/Manual/SL-SurfaceShaders.html
https://docs.unity3d.com/Manual/SL-SurfaceShaderEx...
После прочтения оказывается, что "My Shader3" это диффузный шейдер с картой нормалей, "My Shader2" это PBR шейдер с вынесенными параметрами металличности и гладкости, а "My Shader" это диффузный шейдер, который текстурирует только поверхности, у которых нормали смотрят вверх.
Теперь, если мы хотим эти шейдеры объединить, то получается, что нужно сделать PBR шейдер, добавить в него карту нормалей и ползунки гладкости и металличности, а потом вставить условие проверки нормалей.
void surf (Input IN, inout SurfaceOutput o)
{
    o.Albedo = _Color;
    // Металличность и гладкость указываем либо здесь, либо внутри условия
    if(abs(IN.worldNormal.z)>0.5)
    {
        o.Albedo *= tex2D (_MainTex, IN.uv_MainTex).rgb;
        // Применяем диффузную текстуру, карту нормалей и тому подобное
        ...
    }
}

Дополнительно ещё можно скачать архив со встроенными шейдерами с сайта юнити и посмотреть как они работают.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы