mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2024-11-13 05:53:53 +01:00
Mappable gradient for cpu nodes
This commit is contained in:
parent
38fb8da6fe
commit
7ffec26331
@ -34,7 +34,8 @@ function Node_Plot_Linear(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou
|
|||||||
|
|
||||||
inputs[| 12] = nodeValue("Value Offset", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0);
|
inputs[| 12] = nodeValue("Value Offset", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0);
|
||||||
|
|
||||||
inputs[| 13] = nodeValue("Color Over Sample", self, JUNCTION_CONNECT.input, VALUE_TYPE.gradient, new gradientObject(c_white));
|
inputs[| 13] = nodeValue("Color Over Sample", self, JUNCTION_CONNECT.input, VALUE_TYPE.gradient, new gradientObject(c_white))
|
||||||
|
.setMappable(27);
|
||||||
|
|
||||||
inputs[| 14] = nodeValue("Trim mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
|
inputs[| 14] = nodeValue("Trim mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
|
||||||
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Range", "Window" ]);
|
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Range", "Window" ]);
|
||||||
@ -59,19 +60,32 @@ function Node_Plot_Linear(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou
|
|||||||
inputs[| 23] = nodeValue("Smooth", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
|
inputs[| 23] = nodeValue("Smooth", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
|
||||||
.setDisplay(VALUE_DISPLAY.slider);
|
.setDisplay(VALUE_DISPLAY.slider);
|
||||||
|
|
||||||
inputs[| 24] = nodeValue("Color Over Value", self, JUNCTION_CONNECT.input, VALUE_TYPE.gradient, new gradientObject(c_white));
|
inputs[| 24] = nodeValue("Color Over Value", self, JUNCTION_CONNECT.input, VALUE_TYPE.gradient, new gradientObject(c_white))
|
||||||
|
.setMappable(29);
|
||||||
|
|
||||||
inputs[| 25] = nodeValue("Value range", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 1 ] )
|
inputs[| 25] = nodeValue("Value range", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 1 ] )
|
||||||
.setDisplay(VALUE_DISPLAY.range);
|
.setDisplay(VALUE_DISPLAY.range);
|
||||||
|
|
||||||
inputs[| 26] = nodeValue("Absolute", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
|
inputs[| 26] = nodeValue("Absolute", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
inputs[| 27] = nodeValueMap("Sample Gradient map", self);
|
||||||
|
|
||||||
|
inputs[| 28] = nodeValueGradientRange("Sample Gradient map range", self, inputs[| 13]);
|
||||||
|
|
||||||
|
inputs[| 29] = nodeValueMap("Value Gradient map", self);
|
||||||
|
|
||||||
|
inputs[| 30] = nodeValueGradientRange("Value Gradient map range", self, inputs[| 24]);
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
|
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
|
||||||
|
|
||||||
input_display_list = [ 0,
|
input_display_list = [ 0,
|
||||||
["Data", true], 1, 12, 21, 14, 2, 3, 15, 16,
|
["Data", true], 1, 12, 21, 14, 2, 3, 15, 16,
|
||||||
["Plot", false], 11, 4, 10, 20, 5, 22, 23,
|
["Plot", false], 11, 4, 10, 20, 5, 22, 23,
|
||||||
["Render", false], 6, 13, 24, 25, 26, 7, 17, 18, 19,
|
["Render", false], 6, 13, 27, 24, 29, 25, 26, 7, 17, 18, 19,
|
||||||
["Background", true, 8], 9,
|
["Background", true, 8], 9,
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -97,13 +111,21 @@ function Node_Plot_Linear(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou
|
|||||||
|
|
||||||
inputs[| 4].setVisible(!_use_path);
|
inputs[| 4].setVisible(!_use_path);
|
||||||
inputs[| 10].setVisible(!_use_path);
|
inputs[| 10].setVisible(!_use_path);
|
||||||
|
|
||||||
|
inputs[| 13].mappableStep();
|
||||||
|
inputs[| 24].mappableStep();
|
||||||
}
|
}
|
||||||
|
|
||||||
static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
|
static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
|
||||||
var _use_path = getSingleValue(20) != noone;
|
var _use_path = getSingleValue(20) != noone;
|
||||||
|
|
||||||
if(!_use_path)
|
if(!_use_path) {
|
||||||
inputs[| 4].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
|
var a = inputs[| 4].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
|
||||||
|
active &= !a;
|
||||||
|
}
|
||||||
|
|
||||||
|
var a = inputs[| 28].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny, getSingleValue(0)); active &= !a;
|
||||||
|
var a = inputs[| 30].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny, getSingleValue(0)); active &= !a;
|
||||||
}
|
}
|
||||||
|
|
||||||
static processData = function(_outSurf, _data, _output_index, _array_index) {
|
static processData = function(_outSurf, _data, _output_index, _array_index) {
|
||||||
@ -134,11 +156,15 @@ function Node_Plot_Linear(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou
|
|||||||
var _loop = _data[22];
|
var _loop = _data[22];
|
||||||
var _smt = _data[23];
|
var _smt = _data[23];
|
||||||
|
|
||||||
var _lcl = _data[ 6];
|
var _lcl = _data[ 6];
|
||||||
var _cls = _data[13];
|
var _cls = _data[13];
|
||||||
var _clv = _data[24];
|
var _cls_map = _data[27];
|
||||||
var _clv_r = _data[25];
|
var _cls_rng = _data[28];
|
||||||
var _clv_a = _data[26];
|
var _clv = _data[24];
|
||||||
|
var _clv_map = _data[29];
|
||||||
|
var _clv_rng = _data[30];
|
||||||
|
var _clv_r = _data[25];
|
||||||
|
var _clv_a = _data[26];
|
||||||
|
|
||||||
_outSurf = surface_verify(_outSurf, _dim[0], _dim[1], attrDepth());
|
_outSurf = surface_verify(_outSurf, _dim[0], _dim[1], attrDepth());
|
||||||
|
|
||||||
@ -199,11 +225,11 @@ function Node_Plot_Linear(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou
|
|||||||
|
|
||||||
_ang_nor = _ang + 90;
|
_ang_nor = _ang + 90;
|
||||||
_val = _smp_data[i] + _off;
|
_val = _smp_data[i] + _off;
|
||||||
_col_sam = _cls.eval(i / amo);
|
_col_sam = evaluate_gradient_map(i / amo, _cls, _cls_map, _cls_rng, inputs[| 13]);
|
||||||
|
|
||||||
var _val_p = _clv_a? abs(_val) : _val;
|
var _val_p = _clv_a? abs(_val) : _val;
|
||||||
var _val_prog = (_val_p - _clv_r[0]) / (_clv_r[1] - _clv_r[0]);
|
var _val_prog = (_val_p - _clv_r[0]) / (_clv_r[1] - _clv_r[0]);
|
||||||
_col_val = _clv.eval(_val_prog);
|
_col_val = evaluate_gradient_map(_val_prog, _clv, _clv_map, _clv_rng, inputs[| 24]);
|
||||||
|
|
||||||
var _c1 = colorMultiply(_lcl, _col_sam);
|
var _c1 = colorMultiply(_lcl, _col_sam);
|
||||||
var _c2 = _col_val;
|
var _c2 = _col_val;
|
||||||
|
@ -39,7 +39,8 @@ function Node_Repeat(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||||||
|
|
||||||
inputs[| 13] = nodeValue("Path shift", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0);
|
inputs[| 13] = nodeValue("Path shift", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0);
|
||||||
|
|
||||||
inputs[| 14] = nodeValue("Color over copy", self, JUNCTION_CONNECT.input, VALUE_TYPE.gradient, new gradientObject(cola(c_white)) );
|
inputs[| 14] = nodeValue("Color over copy", self, JUNCTION_CONNECT.input, VALUE_TYPE.gradient, new gradientObject(cola(c_white)) )
|
||||||
|
.setMappable(30);
|
||||||
|
|
||||||
inputs[| 15] = nodeValue("Alpha over copy", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_11 );
|
inputs[| 15] = nodeValue("Alpha over copy", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_11 );
|
||||||
|
|
||||||
@ -81,6 +82,14 @@ function Node_Repeat(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||||||
|
|
||||||
inputs[| 29] = nodeValue("Animator", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false)
|
inputs[| 29] = nodeValue("Animator", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false)
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
inputs[| 30] = nodeValueMap("Gradient map", self);
|
||||||
|
|
||||||
|
inputs[| 31] = nodeValueGradientRange("Gradient map range", self, inputs[| 14]);
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
|
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
|
||||||
|
|
||||||
input_display_list = [
|
input_display_list = [
|
||||||
@ -88,7 +97,7 @@ function Node_Repeat(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||||||
["Pattern", false], 3, 9, 2, 18, 7, 8,
|
["Pattern", false], 3, 9, 2, 18, 7, 8,
|
||||||
["Path", true], 11, 12, 13,
|
["Path", true], 11, 12, 13,
|
||||||
["Transform", false], 4, 26, 19, 5, 6, 10,
|
["Transform", false], 4, 26, 19, 5, 6, 10,
|
||||||
["Render", false], 14,
|
["Render", false], 14, 30,
|
||||||
["Animator", true, 29], 20, 21, 25, 22, 23, 24, 27,
|
["Animator", true, 29], 20, 21, 25, 22, 23, 24, 27,
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -107,8 +116,7 @@ function Node_Repeat(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||||||
}
|
}
|
||||||
|
|
||||||
static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
|
static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
|
||||||
if(inputs[| 9].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny, THEME.anchor))
|
var a = inputs[| 9].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny, THEME.anchor); active &= !a;
|
||||||
active = false;
|
|
||||||
|
|
||||||
var _pat = getInputData(3);
|
var _pat = getInputData(3);
|
||||||
var _spos = getInputData(9);
|
var _spos = getInputData(9);
|
||||||
@ -117,14 +125,22 @@ function Node_Repeat(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||||||
var py = _y + _spos[1] * _s;
|
var py = _y + _spos[1] * _s;
|
||||||
|
|
||||||
if(_pat == 0 || _pat == 1) {
|
if(_pat == 0 || _pat == 1) {
|
||||||
if(inputs[| 4].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny))
|
var a = inputs[| 4].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny);
|
||||||
active = false;
|
active &= !a;
|
||||||
|
|
||||||
} else if(_pat == 2) {
|
} else if(_pat == 2) {
|
||||||
if(inputs[| 8].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny))
|
var a = inputs[| 8].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny);
|
||||||
active = false;
|
active &= !a;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var a = inputs[| 31].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny, getInputData(1)); active &= !a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static step = function() { #region
|
||||||
|
inputs[| 14].mappableStep();
|
||||||
|
} #endregion
|
||||||
|
|
||||||
function doRepeat(_outSurf, _inSurf) {
|
function doRepeat(_outSurf, _inSurf) {
|
||||||
var _dim = getInputData( 1);
|
var _dim = getInputData( 1);
|
||||||
var _amo = getInputData( 2);
|
var _amo = getInputData( 2);
|
||||||
@ -145,7 +161,9 @@ function Node_Repeat(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||||||
var _prng = getInputData(12);
|
var _prng = getInputData(12);
|
||||||
var _prsh = getInputData(13);
|
var _prsh = getInputData(13);
|
||||||
|
|
||||||
var _grad = getInputData(14);
|
var _grad = getInputData(14);
|
||||||
|
var _grad_map = getInputData(30);
|
||||||
|
var _grad_range = getInputData(31);
|
||||||
|
|
||||||
var _arr = getInputData(16);
|
var _arr = getInputData(16);
|
||||||
var _sed = getInputData(17);
|
var _sed = getInputData(17);
|
||||||
@ -240,7 +258,7 @@ function Node_Repeat(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||||||
}
|
}
|
||||||
|
|
||||||
var pos = point_rotate(-sw / 2, -sh / 2, 0, 0, rot);
|
var pos = point_rotate(-sw / 2, -sh / 2, 0, 0, rot);
|
||||||
var cc = _grad.eval(i / (_amo - 1));
|
var cc = evaluate_gradient_map(i / (_amo - 1), _grad, _grad_map, _grad_range, inputs[| 14]);
|
||||||
var aa = _color_get_alpha(cc);
|
var aa = _color_get_alpha(cc);
|
||||||
|
|
||||||
cc = colda(cc);
|
cc = colda(cc);
|
||||||
|
@ -40,7 +40,8 @@ function Node_Scatter(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||||||
|
|
||||||
inputs[| 10] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, irandom(9999999));
|
inputs[| 10] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, irandom(9999999));
|
||||||
|
|
||||||
inputs[| 11] = nodeValue("Random blend", self, JUNCTION_CONNECT.input, VALUE_TYPE.gradient, new gradientObject(c_white) );
|
inputs[| 11] = nodeValue("Random blend", self, JUNCTION_CONNECT.input, VALUE_TYPE.gradient, new gradientObject(c_white) )
|
||||||
|
.setMappable(28);
|
||||||
|
|
||||||
inputs[| 12] = nodeValue("Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
|
inputs[| 12] = nodeValue("Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
|
||||||
.setDisplay(VALUE_DISPLAY.slider_range);
|
.setDisplay(VALUE_DISPLAY.slider_range);
|
||||||
@ -86,6 +87,14 @@ function Node_Scatter(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||||||
inputs[| 27] = nodeValue("Animated array end", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
|
inputs[| 27] = nodeValue("Animated array end", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
|
||||||
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Loop", "Ping Pong" ]);
|
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Loop", "Ping Pong" ]);
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
inputs[| 28] = nodeValueMap("Gradient map", self);
|
||||||
|
|
||||||
|
inputs[| 29] = nodeValueGradientRange("Gradient map range", self, inputs[| 11]);
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
|
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
|
||||||
|
|
||||||
outputs[| 1] = nodeValue("Atlas data", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, [])
|
outputs[| 1] = nodeValue("Atlas data", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, [])
|
||||||
@ -96,7 +105,7 @@ function Node_Scatter(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||||||
["Scatter", false], 5, 6, 13, 14, 17, 9, 2,
|
["Scatter", false], 5, 6, 13, 14, 17, 9, 2,
|
||||||
["Path", false], 19, 20, 21, 22,
|
["Path", false], 19, 20, 21, 22,
|
||||||
["Transform", false], 3, 8, 7, 4,
|
["Transform", false], 3, 8, 7, 4,
|
||||||
["Render", false], 18, 11, 12, 16, 23,
|
["Render", false], 18, 11, 28, 12, 16, 23,
|
||||||
];
|
];
|
||||||
|
|
||||||
attribute_surface_depth();
|
attribute_surface_depth();
|
||||||
@ -104,9 +113,14 @@ function Node_Scatter(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||||||
scatter_data = [];
|
scatter_data = [];
|
||||||
|
|
||||||
static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { #region
|
static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { #region
|
||||||
var _distType = current_data[6];
|
var _distType = current_data[6];
|
||||||
if(_distType < 3)
|
|
||||||
inputs[| 5].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
|
if(_distType < 3) {
|
||||||
|
var a = inputs[| 5].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
|
||||||
|
active &= !a;
|
||||||
|
}
|
||||||
|
|
||||||
|
var a = inputs[| 29].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny, getSingleValue(1)); active &= !a;
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static onValueUpdate = function(index) { #region
|
static onValueUpdate = function(index) { #region
|
||||||
@ -138,6 +152,8 @@ function Node_Scatter(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||||||
inputs[| 27].setVisible(_arr);
|
inputs[| 27].setVisible(_arr);
|
||||||
|
|
||||||
update_on_frame = _arr && (_amn[0] != 0 || _amn[1] != 0);
|
update_on_frame = _arr && (_amn[0] != 0 || _amn[1] != 0);
|
||||||
|
|
||||||
|
inputs[| 11].mappableStep();
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static processData = function(_outSurf, _data, _output_index, _array_index) { #region
|
static processData = function(_outSurf, _data, _output_index, _array_index) { #region
|
||||||
@ -164,6 +180,9 @@ function Node_Scatter(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||||||
|
|
||||||
var seed = _data[10];
|
var seed = _data[10];
|
||||||
var color = _data[11];
|
var color = _data[11];
|
||||||
|
var clr_map = _data[28];
|
||||||
|
var clr_rng = _data[29];
|
||||||
|
|
||||||
var alpha = _data[12];
|
var alpha = _data[12];
|
||||||
var _arr = _data[15];
|
var _arr = _data[15];
|
||||||
var mulpA = _data[16];
|
var mulpA = _data[16];
|
||||||
@ -340,7 +359,7 @@ function Node_Scatter(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||||||
if(vCol && _v != noone)
|
if(vCol && _v != noone)
|
||||||
grSamp *= _v;
|
grSamp *= _v;
|
||||||
|
|
||||||
var clr = color.eval(grSamp);
|
var clr = evaluate_gradient_map(grSamp, color, clr_map, clr_rng, inputs[| 11]);
|
||||||
var alp = random_range_seed(alpha[0], alpha[1], posS); posS++;
|
var alp = random_range_seed(alpha[0], alpha[1], posS); posS++;
|
||||||
|
|
||||||
var _atl = array_safe_get(scatter_data, _sct_len);
|
var _atl = array_safe_get(scatter_data, _sct_len);
|
||||||
|
Loading…
Reference in New Issue
Block a user