Отрисовать один из объектов другим цветом
Добавлено: 28 мар 2018, 23:03
У меня на сцене есть множество объектов. В определенный момент мне необходимо сделать два скриншота сцены - один нормальный скриншот, а второй - на котором все объекты отрисованы цветом А, а только один из них цветом Б.
Я пока пришел к такому решению - вторая камера, на нее накладываю ReplacementShader, похожий на дефолтный Unlit shader:
Теперь у меня есть способ быстро отрисовать все объекты одним цветом. Но как один из объектов выделить другим цветом? Как сообщить Replacement шейдеру, что именно этот конкретный объект должен быть зеленого цвета, а не белого? Вот пример на скриншотах. Сцена:
Результат с реплейсмент шейдером:
Желаемый результат:
Я пока пришел к такому решению - вторая камера, на нее накладываю 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
}
}
}
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 шейдеру, что именно этот конкретный объект должен быть зеленого цвета, а не белого? Вот пример на скриншотах. Сцена:
Результат с реплейсмент шейдером:
Желаемый результат: