frame-of-mind/src/vfx/particle_mixer.gdshader

23 lines
827 B
Plaintext

shader_type spatial;
render_mode blend_add, specular_disabled;
uniform sampler2D particle_texture;
uniform vec4 particle_color : source_color;
void vertex() {
mat4 mat_world = mat4(normalize(INV_VIEW_MATRIX[0]), normalize(INV_VIEW_MATRIX[1]) ,normalize(INV_VIEW_MATRIX[2]), MODEL_MATRIX[3]);
mat_world = mat_world * mat4(vec4(cos(INSTANCE_CUSTOM.x), -sin(INSTANCE_CUSTOM.x), 0.0, 0.0), vec4(sin(INSTANCE_CUSTOM.x), cos(INSTANCE_CUSTOM.x), 0.0, 0.0), vec4(0.0, 0.0, 1.0, 0.0), vec4(0.0, 0.0, 0.0, 1.0));
MODELVIEW_MATRIX = VIEW_MATRIX * mat_world;
MODELVIEW_NORMAL_MATRIX = mat3(MODELVIEW_MATRIX);
UV += vec2(float(INSTANCE_ID%2), float(INSTANCE_ID/2%2));
}
void fragment() {
ALBEDO = texture(particle_texture,UV/2.0).xyz * COLOR.xyz;
EMISSION = ALBEDO/8.0;
BACKLIGHT = ALBEDO;
SPECULAR = 0.0;
}