Страница 1 из 1

Отрисовать один из объектов другим цветом

СообщениеДобавлено: 28 мар 2018, 23:03
Shock
У меня на сцене есть множество объектов. В определенный момент мне необходимо сделать два скриншота сцены - один нормальный скриншот, а второй - на котором все объекты отрисованы цветом А, а только один из них цветом Б.
Я пока пришел к такому решению - вторая камера, на нее накладываю ReplacementShader, похожий на дефолтный Unlit shader:

Синтаксис:
Используется csharp
Shader "Replacement_Example" {
        Properties
        {
                _Color ("Color", Color) = (1,1,1,1)
        }
        SubShader
        {
                Tags { "RenderType"="Opaque" }
                LOD 100

                Pass
                {
                        CGPROGRAM
                        #pragma vertex vert
                        #pragma fragment frag

                        struct appdata
                        {
                                float4 vertex : POSITION;
                        };

                        struct v2f
                        {
                                float4 vertex : SV_POSITION;
                        };
                       
                        float4 _Color;
                       
                        v2f vert (appdata v)
                        {
                                v2f o;
                                o.vertex = UnityObjectToClipPos(v.vertex);
                                return o;
                        }
                       
                        fixed4 frag (v2f i) : SV_Target
                        {
                                return _Color;
                        }
                        ENDCG
                }
        }
}


Теперь у меня есть способ быстро отрисовать все объекты одним цветом. Но как один из объектов выделить другим цветом? Как сообщить Replacement шейдеру, что именно этот конкретный объект должен быть зеленого цвета, а не белого? Вот пример на скриншотах. Сцена:
Изображение
Результат с реплейсмент шейдером:
Изображение
Желаемый результат:
Изображение

Re: Отрисовать один из объектов другим цветом

СообщениеДобавлено: 29 мар 2018, 00:54
waruiyume
Material.SetOverrideTag

Re: Отрисовать один из объектов другим цветом

СообщениеДобавлено: 29 мар 2018, 02:13
Shock
Просто волшебно, это именно то, что мне необходимо. Спасибо!