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; }