Добавить стандартные (шероховатые) свойства шейдера Unity в пользовательский шейдер? - PullRequest
1 голос
/ 28 октября 2019

Я создал пользовательский шейдер, который используется для простого смешивания двух материалов. Как включить свойства, такие как карта нормалей, свойства выбросов и другие свойства, а также из стандартного (шероховатости) шейдера Unity?

Shader "Myshaders/ChangeMaterial" {
    Properties {
        _Tint ("Tint Color", Color) = (.9, .9, .9, 1.0)
        _TexMat1 ("Base (RGB)", 2D) = "white" {}
        _TexMat2 ("Base (RGB)", 2D) = "white" {}
        _Blend ("Blend", Range(0.0,1.0)) = 0.0
    }

    Category {
        ZWrite On
        Alphatest Greater 0
        Tags {Queue=Transparent}
        Blend SrcAlpha OneMinusSrcAlpha
        ColorMask RGB
    SubShader {
        Pass {

            Material {
                Diffuse [_Tint]
                Ambient [_Tint]
            }
            Lighting On

            SetTexture [_TexMat1] { combine texture }
            SetTexture [_TexMat2] { constantColor (0,0,0,[_Blend]) combine texture lerp(constant) previous }
            SetTexture [_TexMat2] { combine previous +- primary, previous * primary }
        }
    }
    FallBack " Diffuse", 1
}
}

1 Ответ

0 голосов
/ 29 октября 2019

В вашем примере вы неправильно используете устаревшие проходы ShaderLab, которые не применяются ни к конвейеру рендеринга на основе физических данных (современный), ни к конвейеру рендеринга с возможностью сценариев (передний край).

Вам следует ознакомиться свстроенный код шейдера, расположенный по адресу https://github.com/TwoTailsGames/Unity-Built-in-Shaders. Обратите внимание на операторы #include, расположенные на различных проходах здесь: https://github.com/TwoTailsGames/Unity-Built-in-Shaders/blob/master/DefaultResourcesExtra/Standard.shader

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