Показать сообщение отдельно
Старый 19.12.2020, 21:28   #1
Evgen
Разработчик
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 419
Написано 68 полезных сообщений
(для 100 пользователей)
Добавить в шейдер цвет частицы

Есть примитивный шейдер типа 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 шейдеров но понять что нужно добавить не могу.
(Offline)
 
Ответить с цитированием