Есть примитивный шейдер типа Diffuse:
Shader "Diff" {
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
}
SubShader {
Tags {"Queue"="Transparent+1000" "IgnoreProjector"="True" "RenderType"="Transparent"}
CGPROGRAM
#pragma surface surf Lambert alpha
sampler2D _MainTex;
fixed4 _Color;
struct Input {
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutput o) {
fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
o.Albedo = c.rgb;
o.Alpha = c.a;
}
ENDCG
}
Fallback "Transparent/Diffuse"
}
Создаю материал и назначаю данный шейдер.
Вывожу частицу с помощью Emit:
p.position = pos;
p.velocity = velocity;
p.startSize = size;
p.startLifetime = 100;
p.startColor = Color.red;
obj.GetComponent<ParticleSystem> ().Emit (p, 1);
Однако вместо красной частицы на экран выводится белая.
При этом
если использовать любой шейдер типа Particle то все нормально цвет указанный при Emit учитывается.
Что нужно добавить в шейдер, чтобы цвет Emit startColor учитывался в нем. Смотрел исходники unity particle шейдеров но понять что нужно добавить не могу.