Показать сообщение отдельно
Старый 22.12.2020, 17:20   #2
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Добавить в шейдер цвет частицы

Подозреваю что надо в шейдер в структуру Input добавить строку
float4 color : COLOR; 
А первую строку функции surf заменить на
fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color * IN.color; 
Т.е. цвет частицы передается через цвета вершин.

Ну и в итоге должно получиться следующее:
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;
            
float4 color : COLOR;
        };

        
void surf (Input IN, inout SurfaceOutput o) {
            
fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color * IN.color;
            
o.Albedo = c.rgb;
            
o.Alpha = c.a;
        }
        
ENDCG
    
}

    
Fallback "Transparent/Diffuse"
} 
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Evgen (25.12.2020)