S
Shadowblitz16
Guest
can someone tell me how to use multiple color replacement shaders for a single draw?
its seems when I use two shaders the last one just replaces the the first.
I translated this shader from love2d which worked in that engine
here is my draw event for my ship which only replaces 1 color
if this isn't possible it should be. especially without the use of multiple surfaces.
its seems when I use two shaders the last one just replaces the the first.
I translated this shader from love2d which worked in that engine
Code:
//
// Color Replace Shader
//
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
uniform vec4 oldColor;
uniform vec4 newColor;
void main()
{
vec4 curColor = texture2D( gm_BaseTexture, v_vTexcoord ); //This is the current pixel color
if (curColor.rgb == oldColor.rgb) gl_FragColor = newColor * v_vColour;
else gl_FragColor = curColor * v_vColour;
}
Code:
/// @description draw_replace_color()
/// @param old_color
/// @param new_color
if (argument_count == 0)
{
shader_reset();
}
else
{
var old_r = color_get_red (argument[0]) / 255;
var old_g = color_get_green(argument[0]) / 255;
var old_b = color_get_blue (argument[0]) / 255;
var new_r = color_get_red (argument[1]) / 255;
var new_g = color_get_green(argument[1]) / 255;
var new_b = color_get_blue (argument[1]) / 255;
shader_set(shd_default);
shader_set_uniform_f(shader_get_uniform(shd_default, "oldColor"), old_r, old_g, old_b, 1);
shader_set_uniform_f(shader_get_uniform(shd_default, "newColor"), new_r, new_g, new_b, 1);
}
Code:
/// @description Inhert Event and Draw Wrap
if (team == 0)
{
draw_replace_color(global.palette[1], global.palette[2])
draw_replace_color(global.palette[13], global.palette[14])
}
else if (team == 1)
{
draw_replace_color(global.palette[1], global.palette[1])
draw_replace_color(global.palette[13], global.palette[12])
}
else if (team == 2)
{
draw_replace_color(global.palette[1], global.palette[3])
draw_replace_color(global.palette[13], global.palette[11])
}
else if (team == 3)
{
draw_replace_color(global.palette[1], global.palette[9])
draw_replace_color(global.palette[13], global.palette[10])
}
event_inherited();
if (team == 0 || team == 1 || team == 2 || team == 3)
{
draw_replace_color()
}