rem arr push rend

This commit is contained in:
Tanasart 2025-01-20 15:51:51 +07:00
parent c791220419
commit 41aa0fb7e9
6 changed files with 45 additions and 68 deletions

Binary file not shown.

View file

@ -1283,7 +1283,7 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
} }
__nextNodesToLoop = noone; __nextNodesToLoop = noone;
for(var i = 0; i < array_length(outputs); i++) { for( var i = 0, n = array_length(outputs); i < n; i++ ) {
var _ot = outputs[i]; var _ot = outputs[i];
if(!_ot.forward) continue; if(!_ot.forward) continue;
@ -1300,30 +1300,36 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
if(__nextNodes != noone) return __nextNodes; if(__nextNodes != noone) return __nextNodes;
var nodes = []; var nodes = [];
for(var i = 0; i < array_length(outputs); i++) { for( var i = 0, n = array_length(outputs); i < n; i++ ) {
var _ot = outputs[i]; var _ot = outputs[i];
if(!_ot.forward) continue; if(!_ot.forward) continue;
var arr = _ot.getJunctionTo(); for( var j = 0, m = array_length(_ot.value_to); j < m; j++ ) {
array_map_ext(arr, function(t) /*=>*/ {return t.node}); var _jto = _ot.value_to[j];
nodes = array_concat(nodes, arr); if(_jto.value_from != _jto || !_jto.node.active) continue;
array_push(nodes, _jto.node);
}
} }
for(var i = 0; i < array_length(junc_meta); i++) { for( var i = 0, n = array_length(junc_meta); i < n; i++ ) {
var _ot = junc_meta[i]; var _ot = junc_meta[i];
var arr = _ot.getJunctionTo(); for( var j = 0, m = array_length(_ot.value_to); j < m; j++ ) {
array_map_ext(arr, function(t) /*=>*/ {return t.node}); var _jto = _ot.value_to[j];
nodes = array_concat(nodes, arr); if(_jto.value_from != _jto || !_jto.node.active) continue;
array_push(nodes, _jto.node);
}
} }
for(var i = 0; i < array_length(inputs); i++) { for( var i = 0, n = array_length(inputs); i < n; i++ ) {
var _in = inputs[i]; var _in = inputs[i];
if(_in.bypass_junc == noone) continue; if(_in.bypass_junc == noone) continue;
var arr = _in.bypass_junc.getJunctionTo(); for( var j = 0, m = array_length(_in.value_to); j < m; j++ ) {
array_map_ext(arr, function(t) /*=>*/ {return t.node}); var _jto = _in.value_to[j];
nodes = array_concat(nodes, arr); if(_jto.value_from != _jto || !_jto.node.active) continue;
array_push(nodes, _jto.node);
}
} }
array_unique_ext(nodes); array_unique_ext(nodes);
@ -1405,8 +1411,6 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
} }
static refreshNodeDisplay = function() { static refreshNodeDisplay = function() {
// print("refreshNodeDisplay"); printCallStack();
// if(IS_PLAYING) return;
updateIO(); updateIO();
setHeight(); setHeight();
getJunctionList(); getJunctionList();

View file

@ -1,12 +1,6 @@
function Node_Pixel_Sort(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { function Node_Pixel_Sort(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Pixel Sort"; name = "Pixel Sort";
shader = sh_pixel_sort;
uniform_dim = shader_get_uniform(shader, "dimension");
uniform_itr = shader_get_uniform(shader, "iteration");
uniform_tre = shader_get_uniform(shader, "threshold");
uniform_dir = shader_get_uniform(shader, "direction");
newInput(0, nodeValue_Surface("Surface in", self)); newInput(0, nodeValue_Surface("Surface in", self));
newInput(1, nodeValue_Int("Iteration", self, 2)); newInput(1, nodeValue_Int("Iteration", self, 2));
@ -38,12 +32,14 @@ function Node_Pixel_Sort(_x, _y, _group = noone) : Node_Processor(_x, _y, _group
attribute_surface_depth(); attribute_surface_depth();
static step = function() { #region temp_surface = [ 0, 0 ];
__step_mask_modifier();
} #endregion
static processData = function(_outSurf, _data, _output_index, _array_index) { #region static step = function() {
var _in = _data[0]; __step_mask_modifier();
}
static processData = function(_outSurf, _data, _output_index, _array_index) {
var _surf = _data[0];
var _it = _data[1]; var _it = _data[1];
var _tr = _data[2]; var _tr = _data[2];
@ -52,40 +48,42 @@ function Node_Pixel_Sort(_x, _y, _group = noone) : Node_Processor(_x, _y, _group
if(_it <= 0) { if(_it <= 0) {
surface_set_target(_outSurf); surface_set_target(_outSurf);
BLEND_OVERRIDE BLEND_OVERRIDE
draw_surface_safe(_in); draw_surface_safe(_surf);
BLEND_NORMAL BLEND_NORMAL
surface_reset_target(); surface_reset_target();
return _outSurf; return _outSurf;
} }
var sw = surface_get_width_safe(_outSurf); var sw = surface_get_width_safe(_surf);
var sh = surface_get_height_safe(_outSurf); var sh = surface_get_height_safe(_surf);
temp_surface[0] = surface_verify(temp_surface[0], sw, sh);
temp_surface[1] = surface_verify(temp_surface[1], sw, sh);
var pp = [ surface_create_valid(sw, sh), surface_create_valid(sw, sh) ];
var sBase, sDraw; var sBase, sDraw;
surface_set_target(pp[1]); surface_set_target(temp_surface[1]);
DRAW_CLEAR DRAW_CLEAR
BLEND_OVERRIDE BLEND_OVERRIDE
draw_surface_safe(_in); draw_surface_safe(_surf);
BLEND_NORMAL BLEND_NORMAL
surface_reset_target(); surface_reset_target();
shader_set(shader); shader_set(sh_pixel_sort);
shader_set_uniform_f(uniform_dim, surface_get_width_safe(_in), surface_get_height_safe(_in)); shader_set_2("dimension", [sw, sh]);
shader_set_uniform_f(uniform_tre, _tr); shader_set_f("threshold", _tr);
shader_set_uniform_i(uniform_dir, _dr); shader_set_i("direction", _dr);
for( var i = 0; i < _it; i++ ) { for( var i = 0; i < _it; i++ ) {
var it = i % 2; var it = i % 2;
sBase = pp[it]; sBase = temp_surface[it];
sDraw = pp[!it]; sDraw = temp_surface[!it];
surface_set_target(sBase); surface_set_target(sBase);
DRAW_CLEAR DRAW_CLEAR
BLEND_OVERRIDE BLEND_OVERRIDE
shader_set_uniform_f(uniform_itr, i); shader_set_f("iteration", i);
draw_surface_safe(sDraw); draw_surface_safe(sDraw);
BLEND_NORMAL BLEND_NORMAL
surface_reset_target(); surface_reset_target();
@ -99,13 +97,10 @@ function Node_Pixel_Sort(_x, _y, _group = noone) : Node_Processor(_x, _y, _group
BLEND_NORMAL BLEND_NORMAL
surface_reset_target(); surface_reset_target();
surface_free(pp[0]);
surface_free(pp[1]);
__process_mask_modifier(_data); __process_mask_modifier(_data);
_outSurf = mask_apply(_data[0], _outSurf, _data[4], _data[5]); _outSurf = mask_apply(_data[0], _outSurf, _data[4], _data[5]);
_outSurf = channel_apply(_data[0], _outSurf, _data[7]); _outSurf = channel_apply(_data[0], _outSurf, _data[7]);
return _outSurf; return _outSurf;
} #endregion }
} }

View file

@ -526,6 +526,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
static setVisible = function(inspector) { static setVisible = function(inspector) {
var v = visible; var v = visible;
var _ref = false;
if(connect_type == CONNECT_TYPE.input) { if(connect_type == CONNECT_TYPE.input) {
show_in_inspector = inspector; show_in_inspector = inspector;
@ -534,7 +535,8 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
} else } else
visible = inspector; visible = inspector;
if(NOT_LOAD) node.toRefreshNodeDisplay = true; if(v != visible && NOT_LOAD)
node.toRefreshNodeDisplay = true;
return self; return self;
} }

View file

@ -29,9 +29,6 @@ function Project() constructor {
nodeMap = ds_map_create(); nodeMap = ds_map_create();
nodeNameMap = ds_map_create(); nodeNameMap = ds_map_create();
useRenderList = false;
renderList = [];
pathInputs = []; pathInputs = [];
composer = noone; composer = noone;

View file

@ -41,8 +41,6 @@ function NodeTopoSort() {
array_foreach(PROJECT.allNodes, function(n) /*=>*/ { if(is(n, Node_Collection)) n.refreshNodes(); }); array_foreach(PROJECT.allNodes, function(n) /*=>*/ { if(is(n, Node_Collection)) n.refreshNodes(); });
PROJECT.nodeTopo = []; PROJECT.nodeTopo = [];
PROJECT.renderList = [];
PROJECT.useRenderList = true;
__topoSort(PROJECT.nodeTopo, PROJECT.nodes); __topoSort(PROJECT.nodeTopo, PROJECT.nodes);
// print(PROJECT.nodeTopo); // print(PROJECT.nodeTopo);
@ -171,22 +169,6 @@ function Render(partial = false, runAction = false) {
LOG_BLOCK_START(); LOG_BLOCK_START();
LOG_IF(global.FLAG.render, $"============================== RENDER START [{partial? "PARTIAL" : "FULL"}] [frame {CURRENT_FRAME}] =============================="); LOG_IF(global.FLAG.render, $"============================== RENDER START [{partial? "PARTIAL" : "FULL"}] [frame {CURRENT_FRAME}] ==============================");
// global.getvalue_hit = 0;
// if(PROJECT.useRenderList && !array_empty(PROJECT.renderList)) {
// for( var i = 0, n = array_length(PROJECT.renderList); i < n; i++ ) {
// var render_pt = get_timer();
// var rendering = PROJECT.renderList[i];
// rendering.doUpdate();
// rendering.getNextNodes(true);
// if(PROFILER_STAT) rendering.summarizeReport(render_pt);
// }
// return;
// }
try { try {
var t = get_timer(); var t = get_timer();
var t1 = get_timer(); var t1 = get_timer();
@ -237,14 +219,11 @@ function Render(partial = false, runAction = false) {
rendering = RENDER_QUEUE.dequeue(); rendering = RENDER_QUEUE.dequeue();
renderable = rendering.isRenderable(); renderable = rendering.isRenderable();
if(is(rendering, Node_Iterate_Sort_Inline))
PROJECT.useRenderList = false;
// LOG_IF(global.FLAG.render == 1, $"Rendering {rendering.internalName} ({rendering.display_name}) : {renderable? "Update" : "Pass"} ({rendering.rendered})"); // LOG_IF(global.FLAG.render == 1, $"Rendering {rendering.internalName} ({rendering.display_name}) : {renderable? "Update" : "Pass"} ({rendering.rendered})");
if(renderable) { if(renderable) {
var render_pt = get_timer(); var render_pt = get_timer();
rendering.doUpdate(); rendering.doUpdate();
array_push(PROJECT.renderList, rendering);
_render_time += get_timer() - render_pt; _render_time += get_timer() - render_pt;
var nextNodes = rendering.getNextNodes(); var nextNodes = rendering.getNextNodes();