mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2024-11-13 05:53:53 +01:00
[Level] Fix alpha multiplication.
This commit is contained in:
parent
c457dc0dd9
commit
e26b141841
@ -6,7 +6,7 @@ function Node_Colorize(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
|
|||||||
newInput(1, nodeValue_Gradient("Gradient", self, new gradientObject([ cola(c_black), cola(c_white) ])))
|
newInput(1, nodeValue_Gradient("Gradient", self, new gradientObject([ cola(c_black), cola(c_white) ])))
|
||||||
.setMappable(11);
|
.setMappable(11);
|
||||||
|
|
||||||
newInput(2, nodeValue_Float("Gradient shift", self, 0))
|
newInput(2, nodeValue_Float("Gradient Shift", self, 0))
|
||||||
.setDisplay(VALUE_DISPLAY.slider, { range: [ -1, 1, .01 ] })
|
.setDisplay(VALUE_DISPLAY.slider, { range: [ -1, 1, .01 ] })
|
||||||
.setMappable(10);
|
.setMappable(10);
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ function Node_Colorize(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
|
|||||||
newInput(5, nodeValue_Bool("Active", self, true));
|
newInput(5, nodeValue_Bool("Active", self, true));
|
||||||
active_index = 5;
|
active_index = 5;
|
||||||
|
|
||||||
newInput(6, nodeValue_Bool("Multiply alpha", self, true));
|
newInput(6, nodeValue_Bool("Multiply Alpha", self, true));
|
||||||
|
|
||||||
newInput(7, nodeValue_Toggle("Channel", self, 0b1111, { data: array_create(4, THEME.inspector_channel) }));
|
newInput(7, nodeValue_Toggle("Channel", self, 0b1111, { data: array_create(4, THEME.inspector_channel) }));
|
||||||
|
|
||||||
@ -34,9 +34,11 @@ function Node_Colorize(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
|
|||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
newInput(13, nodeValue_Bool("Keep Alpha", self, true));
|
||||||
|
|
||||||
input_display_list = [ 5, 7,
|
input_display_list = [ 5, 7,
|
||||||
["Surfaces", true], 0, 3, 4, 8, 9,
|
["Surfaces", true], 0, 3, 4, 8, 9,
|
||||||
["Colorize", false], 1, 11, 2, 10, 6,
|
["Colorize", false], 1, 11, 2, 10, 6, 13,
|
||||||
];
|
];
|
||||||
|
|
||||||
newOutput(0, nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone));
|
newOutput(0, nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone));
|
||||||
@ -58,11 +60,15 @@ function Node_Colorize(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static processData = function(_outSurf, _data, _output_index, _array_index) {
|
static processData = function(_outSurf, _data, _output_index, _array_index) {
|
||||||
|
var _mlAlp = _data[ 6];
|
||||||
|
var _kpAlp = _data[13];
|
||||||
|
|
||||||
surface_set_shader(_outSurf, sh_colorize);
|
surface_set_shader(_outSurf, sh_colorize);
|
||||||
shader_set_gradient(_data[1], _data[11], _data[12], inputs[1]);
|
shader_set_gradient(_data[1], _data[11], _data[12], inputs[1]);
|
||||||
|
|
||||||
shader_set_f_map("gradient_shift", _data[2], _data[10], inputs[2]);
|
shader_set_f_map("gradient_shift", _data[2], _data[10], inputs[2]);
|
||||||
shader_set_i("multiply_alpha", _data[6]);
|
shader_set_i("multiply_alpha", _mlAlp);
|
||||||
|
shader_set_i("keep_alpha", _kpAlp);
|
||||||
|
|
||||||
draw_surface_safe(_data[0]);
|
draw_surface_safe(_data[0]);
|
||||||
surface_reset_shader();
|
surface_reset_shader();
|
||||||
|
@ -159,7 +159,7 @@ function Node_Grid(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) cons
|
|||||||
shader_set_f("secScale", _data[29]);
|
shader_set_f("secScale", _data[29]);
|
||||||
shader_set_f("secShift", _data[30]);
|
shader_set_f("secShift", _data[30]);
|
||||||
|
|
||||||
shader_set_color("gapCol", _col_gap);
|
shader_set_color("gapCol", _col_gap);
|
||||||
|
|
||||||
shader_set_gradient(_data[5], _data[20], _data[21], inputs[5]);
|
shader_set_gradient(_data[5], _data[20], _data[21], inputs[5]);
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ function Node_Level(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||||||
|
|
||||||
attribute_surface_depth();
|
attribute_surface_depth();
|
||||||
|
|
||||||
level_renderer = new Inspector_Custom_Renderer(function(_x, _y, _w, _m, _hover, _focus) { #region
|
level_renderer = new Inspector_Custom_Renderer(function(_x, _y, _w, _m, _hover, _focus) {
|
||||||
var _h = 128;
|
var _h = 128;
|
||||||
var x0 = _x;
|
var x0 = _x;
|
||||||
var x1 = _x + _w;
|
var x1 = _x + _w;
|
||||||
@ -70,7 +70,7 @@ function Node_Level(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||||||
draw_rectangle(x0, y0, x1, y1, true);
|
draw_rectangle(x0, y0, x1, y1, true);
|
||||||
|
|
||||||
return _h;
|
return _h;
|
||||||
}); #endregion
|
});
|
||||||
|
|
||||||
input_display_list = [ 8, 9,
|
input_display_list = [ 8, 9,
|
||||||
level_renderer,
|
level_renderer,
|
||||||
@ -88,19 +88,19 @@ function Node_Level(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||||||
histogramUpdate(current_data[0]);
|
histogramUpdate(current_data[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static onValueFromUpdate = function(index) { #region
|
static onValueFromUpdate = function(index) {
|
||||||
if(index == 0) {
|
if(index == 0) {
|
||||||
doUpdate();
|
doUpdate();
|
||||||
if(array_length(current_data) > 0)
|
if(array_length(current_data) > 0)
|
||||||
histogramUpdate(current_data[0]);
|
histogramUpdate(current_data[0]);
|
||||||
}
|
}
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static step = function() { #region
|
static step = function() {
|
||||||
__step_mask_modifier();
|
__step_mask_modifier();
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static processData = function(_outSurf, _data, _output_index, _array_index) { #region
|
static processData = function(_outSurf, _data, _output_index, _array_index) {
|
||||||
var _wi = _data[1];
|
var _wi = _data[1];
|
||||||
var _ri = _data[2];
|
var _ri = _data[2];
|
||||||
var _gi = _data[3];
|
var _gi = _data[3];
|
||||||
@ -113,7 +113,7 @@ function Node_Level(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||||||
var _bo = _data[15];
|
var _bo = _data[15];
|
||||||
var _ao = _data[16];
|
var _ao = _data[16];
|
||||||
|
|
||||||
surface_set_shader(_outSurf, sh_level);
|
surface_set_shader(_outSurf, sh_level, true, BLEND.over);
|
||||||
shader_set_2("lwi", _wi);
|
shader_set_2("lwi", _wi);
|
||||||
shader_set_2("lri", _ri);
|
shader_set_2("lri", _ri);
|
||||||
shader_set_2("lgi", _gi);
|
shader_set_2("lgi", _gi);
|
||||||
@ -134,5 +134,5 @@ function Node_Level(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||||||
_outSurf = channel_apply(_data[0], _outSurf, _data[9]);
|
_outSurf = channel_apply(_data[0], _outSurf, _data[9]);
|
||||||
|
|
||||||
return _outSurf;
|
return _outSurf;
|
||||||
} #endregion
|
}
|
||||||
}
|
}
|
||||||
|
@ -764,19 +764,19 @@ function __initNodes() {
|
|||||||
addNodeObject(generator, "Honeycomb Noise", s_node_honey, "Node_Honeycomb_Noise", [1, Node_Honeycomb_Noise],, "Generate honeycomb noise").patreonExtra();
|
addNodeObject(generator, "Honeycomb Noise", s_node_honey, "Node_Honeycomb_Noise", [1, Node_Honeycomb_Noise],, "Generate honeycomb noise").patreonExtra();
|
||||||
|
|
||||||
ds_list_add(generator, "Patterns");
|
ds_list_add(generator, "Patterns");
|
||||||
addNodeObject(generator, "Stripe", s_node_stripe, "Node_Stripe", [1, Node_Stripe],, "Generate stripe pattern.");
|
addNodeObject(generator, "Stripe", s_node_stripe, "Node_Stripe", [1, Node_Stripe],, "Generate stripe pattern.");
|
||||||
addNodeObject(generator, "Zigzag", s_node_zigzag, "Node_Zigzag", [1, Node_Zigzag],, "Generate zigzag pattern.");
|
addNodeObject(generator, "Zigzag", s_node_zigzag, "Node_Zigzag", [1, Node_Zigzag],, "Generate zigzag pattern.");
|
||||||
addNodeObject(generator, "Checker", s_node_checker, "Node_Checker", [1, Node_Checker],, "Generate checkerboard pattern.");
|
addNodeObject(generator, "Checker", s_node_checker, "Node_Checker", [1, Node_Checker],, "Generate checkerboard pattern.");
|
||||||
addNodeObject(generator, "Grid", s_node_grid, "Node_Grid", [1, Node_Grid], ["tile"], "Generate grid pattern.");
|
addNodeObject(generator, "Grid", s_node_grid, "Node_Grid", [1, Node_Grid], ["tile", "mosaic"], "Generate grid pattern.");
|
||||||
addNodeObject(generator, "Triangular Grid", s_node_grid_tri, "Node_Grid_Tri", [1, Node_Grid_Tri],, "Generate triangular grid pattern.");
|
addNodeObject(generator, "Triangular Grid", s_node_grid_tri, "Node_Grid_Tri", [1, Node_Grid_Tri],, "Generate triangular grid pattern.");
|
||||||
addNodeObject(generator, "Hexagonal Grid", s_node_grid_hex, "Node_Grid_Hex", [1, Node_Grid_Hex],, "Generate hexagonal grid pattern.");
|
addNodeObject(generator, "Hexagonal Grid", s_node_grid_hex, "Node_Grid_Hex", [1, Node_Grid_Hex],, "Generate hexagonal grid pattern.");
|
||||||
addNodeObject(generator, "Pentagonal Grid", s_node_grid_pentagonal, "Node_Grid_Pentagonal", [1, Node_Grid_Pentagonal],, "Generate Pentagonal grid pattern.").patreonExtra();
|
addNodeObject(generator, "Pentagonal Grid", s_node_grid_pentagonal, "Node_Grid_Pentagonal", [1, Node_Grid_Pentagonal],, "Generate Pentagonal grid pattern.").patreonExtra();
|
||||||
addNodeObject(generator, "Pytagorean Tile", s_node_pytagorean_tile, "Node_Pytagorean_Tile", [1, Node_Pytagorean_Tile],, "Generate Pytagorean tile pattern.").patreonExtra();
|
addNodeObject(generator, "Pytagorean Tile", s_node_pytagorean_tile, "Node_Pytagorean_Tile", [1, Node_Pytagorean_Tile],, "Generate Pytagorean tile pattern.").patreonExtra();
|
||||||
addNodeObject(generator, "Herringbone Tile", s_node_herringbone_tile, "Node_Herringbone_Tile", [1, Node_Herringbone_Tile],, "Generate Herringbone tile pattern.").patreonExtra();
|
addNodeObject(generator, "Herringbone Tile", s_node_herringbone_tile, "Node_Herringbone_Tile", [1, Node_Herringbone_Tile], "Generate Herringbone tile pattern.").patreonExtra();
|
||||||
addNodeObject(generator, "Random Tile", s_node_random_tile, "Node_Random_Tile", [1, Node_Random_Tile],, "Generate Random tile pattern.").patreonExtra();
|
addNodeObject(generator, "Random Tile", s_node_random_tile, "Node_Random_Tile", [1, Node_Random_Tile],, "Generate Random tile pattern.").patreonExtra();
|
||||||
addNodeObject(generator, "Box Pattern", s_node_box_pattern, "Node_Box_Pattern", [1, Node_Box_Pattern],, "Generate square-based patterns..").setVersion(11750);
|
addNodeObject(generator, "Box Pattern", s_node_box_pattern, "Node_Box_Pattern", [1, Node_Box_Pattern],, "Generate square-based patterns..").setVersion(11750);
|
||||||
addNodeObject(generator, "Quasicrystal", s_node_quasicircle, "Node_Quasicrystal", [1, Node_Quasicrystal],, "Generate Quasicrystal pattern.").setVersion(11660);
|
addNodeObject(generator, "Quasicrystal", s_node_quasicircle, "Node_Quasicrystal", [1, Node_Quasicrystal],, "Generate Quasicrystal pattern.").setVersion(11660);
|
||||||
addNodeObject(generator, "Pixel Sampler", s_node_pixel_sampler, "Node_Pixel_Sampler", [1, Node_Pixel_Sampler],, "Map image on to each individual pixels of another image.").setVersion(11730);
|
addNodeObject(generator, "Pixel Sampler", s_node_pixel_sampler, "Node_Pixel_Sampler", [1, Node_Pixel_Sampler],, "Map image on to each individual pixels of another image.").setVersion(11730);
|
||||||
|
|
||||||
ds_list_add(generator, "Populate");
|
ds_list_add(generator, "Populate");
|
||||||
addNodeObject(generator, "Repeat", s_node_repeat, "Node_Repeat", [0, Node_create_Repeat], global.node_repeat_keys, "Repeat image multiple times linearly, or in grid pattern.").setVersion(1100);
|
addNodeObject(generator, "Repeat", s_node_repeat, "Node_Repeat", [0, Node_create_Repeat], global.node_repeat_keys, "Repeat image multiple times linearly, or in grid pattern.").setVersion(1100);
|
||||||
|
@ -2,6 +2,7 @@ varying vec2 v_vTexcoord;
|
|||||||
varying vec4 v_vColour;
|
varying vec4 v_vColour;
|
||||||
|
|
||||||
uniform int multiply_alpha;
|
uniform int multiply_alpha;
|
||||||
|
uniform int keep_alpha;
|
||||||
|
|
||||||
uniform vec2 gradient_shift;
|
uniform vec2 gradient_shift;
|
||||||
uniform int gradient_shiftUseSurf;
|
uniform int gradient_shiftUseSurf;
|
||||||
@ -142,25 +143,25 @@ uniform sampler2D gradient_shiftSurf;
|
|||||||
|
|
||||||
#endregion //////////////////////////////////// GRADIENT ////////////////////////////////////
|
#endregion //////////////////////////////////// GRADIENT ////////////////////////////////////
|
||||||
|
|
||||||
void main() { #region
|
void main() {
|
||||||
float shf = gradient_shift.x;
|
float shf = gradient_shift.x;
|
||||||
if(gradient_shiftUseSurf == 1) {
|
if(gradient_shiftUseSurf == 1) {
|
||||||
vec4 _vMap = texture2D( gradient_shiftSurf, v_vTexcoord );
|
vec4 _vMap = texture2D( gradient_shiftSurf, v_vTexcoord );
|
||||||
shf = mix(gradient_shift.x, gradient_shift.y, (_vMap.r + _vMap.g + _vMap.b) / 3.);
|
shf = mix(gradient_shift.x, gradient_shift.y, (_vMap.r + _vMap.g + _vMap.b) / 3.);
|
||||||
}
|
}
|
||||||
|
|
||||||
vec4 _col = v_vColour * texture2D( gm_BaseTexture, v_vTexcoord );
|
vec4 _col = texture2D( gm_BaseTexture, v_vTexcoord );
|
||||||
float prog = abs(dot(_col.rgb, vec3(0.2126, 0.7152, 0.0722)) + shf);
|
float prog = abs(dot(_col.rgb, vec3(0.2126, 0.7152, 0.0722)) + shf);
|
||||||
|
|
||||||
if(multiply_alpha == 1)
|
if(multiply_alpha == 1)
|
||||||
prog *= _col.a;
|
prog *= _col.a;
|
||||||
|
|
||||||
if(prog > 1.) {
|
if(prog > 1.)
|
||||||
if(prog == floor(prog))
|
prog = prog == floor(prog)? 1. : fract(prog);
|
||||||
prog = 1.;
|
|
||||||
else
|
|
||||||
prog = fract(prog);
|
|
||||||
}
|
|
||||||
|
|
||||||
vec4 col = gradientEval(prog);
|
vec4 col = gradientEval(prog);
|
||||||
|
if(keep_alpha == 1)
|
||||||
|
col.a = _col.a;
|
||||||
|
|
||||||
gl_FragColor = col;
|
gl_FragColor = col;
|
||||||
} #endregion
|
}
|
Loading…
Reference in New Issue
Block a user