mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2025-02-13 13:50:29 +01:00
fix crash surface extrude
This commit is contained in:
parent
239f52018f
commit
d73d2de662
9 changed files with 127 additions and 102 deletions
|
@ -30,12 +30,13 @@ function vertex_add_pntc(buffer, position, normal, texture, color = c_white, alp
|
||||||
vertex_color(buffer, color, alpha);
|
vertex_color(buffer, color, alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
function __vertex_add_pntc(buffer, _px, _py, _pz, _nx, _ny, _nz, _u, _v, color = c_white, alpha = 1) {
|
function __vertex_add_pntc(buffer, _px, _py, _pz, _nx, _ny, _nz, _u, _v, color = c_white, alpha = 1, bx = 1, by = 0, bz = 0) {
|
||||||
INLINE
|
INLINE
|
||||||
vertex_position_3d(buffer, _px, _py, _pz);
|
vertex_position_3d(buffer, _px, _py, _pz);
|
||||||
vertex_normal(buffer, _nx, _ny, _nz);
|
vertex_normal(buffer, _nx, _ny, _nz);
|
||||||
vertex_texcoord(buffer, _u, _v);
|
vertex_texcoord(buffer, _u, _v);
|
||||||
vertex_color(buffer, color, alpha);
|
vertex_color(buffer, color, alpha);
|
||||||
|
vertex_float3(buffer, bx, by, bz);
|
||||||
}
|
}
|
||||||
|
|
||||||
function vertex_add_2pc(buffer, _x, _y, color, alpha = 1) {
|
function vertex_add_2pc(buffer, _x, _y, color, alpha = 1) {
|
||||||
|
|
|
@ -25,7 +25,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
|
||||||
|
|
||||||
newInput(10, nodeValue_Vec2_Range("Spawn scale", self, [ 1, 1, 1, 1 ] , { linked : true }));
|
newInput(10, nodeValue_Vec2_Range("Spawn scale", self, [ 1, 1, 1, 1 ] , { linked : true }));
|
||||||
|
|
||||||
newInput(11, nodeValue_Curve("Scale over time", self, CURVE_DEF_11 ));
|
newInput(11, nodeValue_Curve("Scale over time", self, CURVE_DEF_11));
|
||||||
|
|
||||||
newInput(12, nodeValue_Gradient("Color over lifetime", self, new gradientObject(cola(c_white))));
|
newInput(12, nodeValue_Gradient("Color over lifetime", self, new gradientObject(cola(c_white))));
|
||||||
|
|
||||||
|
|
|
@ -167,118 +167,118 @@ function __3dSurfaceExtrude(surface = noone, height = noone, smooth = false) : _
|
||||||
: dep;
|
: dep;
|
||||||
depb = -depb;
|
depb = -depb;
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i1, j0, depb, 0, 0, -1, tb1, ty0);
|
__vertex_add_pntc(_vb, i1, j0, depb, 0, 0, -1, tb1, ty0,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j0, depb, 0, 0, -1, tb0, ty0);
|
__vertex_add_pntc(_vb, i0, j0, depb, 0, 0, -1, tb0, ty0,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j1, depb, 0, 0, -1, tb1, ty1);
|
__vertex_add_pntc(_vb, i1, j1, depb, 0, 0, -1, tb1, ty1,,, 0, 0, 255);
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i1, j1, depb, 0, 0, -1, tb1, ty1);
|
__vertex_add_pntc(_vb, i1, j1, depb, 0, 0, -1, tb1, ty1,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j0, depb, 0, 0, -1, tb0, ty0);
|
__vertex_add_pntc(_vb, i0, j0, depb, 0, 0, -1, tb0, ty0,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j1, depb, 0, 0, -1, tb0, ty1);
|
__vertex_add_pntc(_vb, i0, j1, depb, 0, 0, -1, tb0, ty1,,, 0, 0, 255);
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i1, j0, dep, 0, 0, 1, tx1, ty0);
|
__vertex_add_pntc(_vb, i1, j0, dep, 0, 0, 1, tx1, ty0,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j1, dep, 0, 0, 1, tx1, ty1);
|
__vertex_add_pntc(_vb, i1, j1, dep, 0, 0, 1, tx1, ty1,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j0, dep, 0, 0, 1, tx0, ty0);
|
__vertex_add_pntc(_vb, i0, j0, dep, 0, 0, 1, tx0, ty0,,, 0, 0, 255);
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i1, j1, dep, 0, 0, 1, tx1, ty1);
|
__vertex_add_pntc(_vb, i1, j1, dep, 0, 0, 1, tx1, ty1,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j1, dep, 0, 0, 1, tx0, ty1);
|
__vertex_add_pntc(_vb, i0, j1, dep, 0, 0, 1, tx0, ty1,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j0, dep, 0, 0, 1, tx0, ty0);
|
__vertex_add_pntc(_vb, i0, j0, dep, 0, 0, 1, tx0, ty0,,, 0, 0, 255);
|
||||||
|
|
||||||
if(back) {
|
if(back) {
|
||||||
|
|
||||||
if((useH && dep * 2 > buffer_read_at(h_buff, (round(i * hgtW) + max(0, round((j - 1) * hgtH)) * hg_ww) * 2, buffer_u16) / 65536)
|
if((useH && dep * 2 > buffer_read_at(h_buff, (round(i * hgtW) + max(0, round((j - 1) * hgtH)) * hg_ww) * 2, buffer_u16) / 65536)
|
||||||
|| (j == 0 || buffer_read_at(c_buff, (j - 1) * ww + (i), buffer_u8) == 0)) { //y side
|
|| (j == 0 || buffer_read_at(c_buff, (j - 1) * ww + (i), buffer_u8) == 0)) { //y side
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i0, j0, dep, 0, 1, 0, tx1, ty0);
|
__vertex_add_pntc(_vb, i0, j0, dep, 0, 1, 0, tx1, ty0,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j0, 0, 0, 1, 0, tx0, ty0);
|
__vertex_add_pntc(_vb, i0, j0, 0, 0, 1, 0, tx0, ty0,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j0, dep, 0, 1, 0, tx1, ty1);
|
__vertex_add_pntc(_vb, i1, j0, dep, 0, 1, 0, tx1, ty1,,, 0, 0, 255);
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i0, j0, 0, 0, 1, 0, tx1, ty1);
|
__vertex_add_pntc(_vb, i0, j0, 0, 0, 1, 0, tx1, ty1,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j0, 0, 0, 1, 0, tx0, ty0);
|
__vertex_add_pntc(_vb, i1, j0, 0, 0, 1, 0, tx0, ty0,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j0, dep, 0, 1, 0, tx0, ty1);
|
__vertex_add_pntc(_vb, i1, j0, dep, 0, 1, 0, tx0, ty1,,, 0, 0, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((useH && abs(depb) * 2 > buffer_read_at(hb_buff, (round(i * hgtW) + max(0, round((j - 1) * hgtH)) * hg_ww) * 2, buffer_u16) / 65536)
|
if((useH && abs(depb) * 2 > buffer_read_at(hb_buff, (round(i * hgtW) + max(0, round((j - 1) * hgtH)) * hg_ww) * 2, buffer_u16) / 65536)
|
||||||
|| (j == 0 || buffer_read_at(c_buff, (j - 1) * ww + (i), buffer_u8) == 0)) { //y side
|
|| (j == 0 || buffer_read_at(c_buff, (j - 1) * ww + (i), buffer_u8) == 0)) { //y side
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i0, j0, 0, 0, 1, 0, tb1, ty0);
|
__vertex_add_pntc(_vb, i0, j0, 0, 0, 1, 0, tb1, ty0,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j0, depb, 0, 1, 0, tb0, ty0);
|
__vertex_add_pntc(_vb, i0, j0, depb, 0, 1, 0, tb0, ty0,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j0, 0, 0, 1, 0, tb1, ty1);
|
__vertex_add_pntc(_vb, i1, j0, 0, 0, 1, 0, tb1, ty1,,, 0, 0, 255);
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i0, j0, depb, 0, 1, 0, tb1, ty1);
|
__vertex_add_pntc(_vb, i0, j0, depb, 0, 1, 0, tb1, ty1,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j0, depb, 0, 1, 0, tb0, ty0);
|
__vertex_add_pntc(_vb, i1, j0, depb, 0, 1, 0, tb0, ty0,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j0, 0, 0, 1, 0, tb0, ty1);
|
__vertex_add_pntc(_vb, i1, j0, 0, 0, 1, 0, tb0, ty1,,, 0, 0, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((useH && dep * 2 > buffer_read_at(h_buff, (round(i * hgtW) + min(round((j + 1) * hgtH), hg_hh - 1) * hg_ww) * 2, buffer_u16) / 65536)
|
if((useH && dep * 2 > buffer_read_at(h_buff, (round(i * hgtW) + min(round((j + 1) * hgtH), hg_hh - 1) * hg_ww) * 2, buffer_u16) / 65536)
|
||||||
|| (j == hh - 1 || buffer_read_at(c_buff, (j + 1) * ww + (i), buffer_u8) == 0)) { //y side
|
|| (j == hh - 1 || buffer_read_at(c_buff, (j + 1) * ww + (i), buffer_u8) == 0)) { //y side
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i0, j1, dep, 0, -1, 0, tx1, ty0);
|
__vertex_add_pntc(_vb, i0, j1, dep, 0, -1, 0, tx1, ty0,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j1, dep, 0, -1, 0, tx1, ty1);
|
__vertex_add_pntc(_vb, i1, j1, dep, 0, -1, 0, tx1, ty1,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j1, 0, 0, -1, 0, tx0, ty0);
|
__vertex_add_pntc(_vb, i0, j1, 0, 0, -1, 0, tx0, ty0,,, 0, 0, 255);
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i0, j1, 0, 0, -1, 0, tx1, ty1);
|
__vertex_add_pntc(_vb, i0, j1, 0, 0, -1, 0, tx1, ty1,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j1, dep, 0, -1, 0, tx0, ty1);
|
__vertex_add_pntc(_vb, i1, j1, dep, 0, -1, 0, tx0, ty1,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j1, 0, 0, -1, 0, tx0, ty0);
|
__vertex_add_pntc(_vb, i1, j1, 0, 0, -1, 0, tx0, ty0,,, 0, 0, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((useH && abs(depb) * 2 > buffer_read_at(hb_buff, (round(i * hgtW) + min(round((j + 1) * hgtH), hg_hh - 1) * hg_ww) * 2, buffer_u16) / 65536)
|
if((useH && abs(depb) * 2 > buffer_read_at(hb_buff, (round(i * hgtW) + min(round((j + 1) * hgtH), hg_hh - 1) * hg_ww) * 2, buffer_u16) / 65536)
|
||||||
|| (j == hh - 1 || buffer_read_at(c_buff, (j + 1) * ww + (i), buffer_u8) == 0)) { //y side
|
|| (j == hh - 1 || buffer_read_at(c_buff, (j + 1) * ww + (i), buffer_u8) == 0)) { //y side
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i0, j1, 0, 0, -1, 0, tb1, ty0);
|
__vertex_add_pntc(_vb, i0, j1, 0, 0, -1, 0, tb1, ty0,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j1, 0, 0, -1, 0, tb1, ty1);
|
__vertex_add_pntc(_vb, i1, j1, 0, 0, -1, 0, tb1, ty1,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j1, depb, 0, -1, 0, tb0, ty0);
|
__vertex_add_pntc(_vb, i0, j1, depb, 0, -1, 0, tb0, ty0,,, 0, 0, 255);
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i0, j1, depb, 0, -1, 0, tb1, ty1);
|
__vertex_add_pntc(_vb, i0, j1, depb, 0, -1, 0, tb1, ty1,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j1, 0, 0, -1, 0, tb0, ty1);
|
__vertex_add_pntc(_vb, i1, j1, 0, 0, -1, 0, tb0, ty1,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j1, depb, 0, -1, 0, tb0, ty0);
|
__vertex_add_pntc(_vb, i1, j1, depb, 0, -1, 0, tb0, ty0,,, 0, 0, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((useH && dep * 2 > buffer_read_at(h_buff, (max(0, round((i - 1) * hgtW)) + round(j * hgtH) * hg_ww) * 2, buffer_u16) / 65536)
|
if((useH && dep * 2 > buffer_read_at(h_buff, (max(0, round((i - 1) * hgtW)) + round(j * hgtH) * hg_ww) * 2, buffer_u16) / 65536)
|
||||||
|| (i == 0 || buffer_read_at(c_buff, (j) * ww + (i - 1), buffer_u8) == 0)) { //x side
|
|| (i == 0 || buffer_read_at(c_buff, (j) * ww + (i - 1), buffer_u8) == 0)) { //x side
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i0, j0, dep, -1, 0, 0, tx1, ty0);
|
__vertex_add_pntc(_vb, i0, j0, dep, -1, 0, 0, tx1, ty0,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j1, dep, -1, 0, 0, tx1, ty1);
|
__vertex_add_pntc(_vb, i0, j1, dep, -1, 0, 0, tx1, ty1,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j0, 0, -1, 0, 0, tx0, ty0);
|
__vertex_add_pntc(_vb, i0, j0, 0, -1, 0, 0, tx0, ty0,,, 0, 0, 255);
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i0, j0, 0, -1, 0, 0, tx1, ty1);
|
__vertex_add_pntc(_vb, i0, j0, 0, -1, 0, 0, tx1, ty1,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j1, dep, -1, 0, 0, tx0, ty1);
|
__vertex_add_pntc(_vb, i0, j1, dep, -1, 0, 0, tx0, ty1,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j1, 0, -1, 0, 0, tx0, ty0);
|
__vertex_add_pntc(_vb, i0, j1, 0, -1, 0, 0, tx0, ty0,,, 0, 0, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((useH && abs(depb) * 2 > buffer_read_at(hb_buff, (max(0, round((i - 1) * hgtW)) + round(j * hgtH) * hg_ww) * 2, buffer_u16) / 65536)
|
if((useH && abs(depb) * 2 > buffer_read_at(hb_buff, (max(0, round((i - 1) * hgtW)) + round(j * hgtH) * hg_ww) * 2, buffer_u16) / 65536)
|
||||||
|| (i == 0 || buffer_read_at(c_buff, (j) * ww + (i - 1), buffer_u8) == 0)) { //x side
|
|| (i == 0 || buffer_read_at(c_buff, (j) * ww + (i - 1), buffer_u8) == 0)) { //x side
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i0, j0, 0, -1, 0, 0, tb1, ty0);
|
__vertex_add_pntc(_vb, i0, j0, 0, -1, 0, 0, tb1, ty0,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j1, 0, -1, 0, 0, tb1, ty1);
|
__vertex_add_pntc(_vb, i0, j1, 0, -1, 0, 0, tb1, ty1,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j0, depb, -1, 0, 0, tb0, ty0);
|
__vertex_add_pntc(_vb, i0, j0, depb, -1, 0, 0, tb0, ty0,,, 0, 0, 255);
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i0, j0, depb, -1, 0, 0, tb1, ty1);
|
__vertex_add_pntc(_vb, i0, j0, depb, -1, 0, 0, tb1, ty1,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j1, 0, -1, 0, 0, tb0, ty1);
|
__vertex_add_pntc(_vb, i0, j1, 0, -1, 0, 0, tb0, ty1,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j1, depb, -1, 0, 0, tb0, ty0);
|
__vertex_add_pntc(_vb, i0, j1, depb, -1, 0, 0, tb0, ty0,,, 0, 0, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((useH && dep * 2 > buffer_read_at(h_buff, (min(round((i + 1) * hgtW), hg_ww - 1 ) + round(j * hgtH) * hg_ww) * 2, buffer_u16) / 65536)
|
if((useH && dep * 2 > buffer_read_at(h_buff, (min(round((i + 1) * hgtW), hg_ww - 1 ) + round(j * hgtH) * hg_ww) * 2, buffer_u16) / 65536)
|
||||||
|| (i == ww - 1 || buffer_read_at(c_buff, (j) * ww + (i + 1), buffer_u8) == 0)) { //x side
|
|| (i == ww - 1 || buffer_read_at(c_buff, (j) * ww + (i + 1), buffer_u8) == 0)) { //x side
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i1, j0, dep, 1, 0, 0, tx1, ty0);
|
__vertex_add_pntc(_vb, i1, j0, dep, 1, 0, 0, tx1, ty0,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j0, 0, 1, 0, 0, tx0, ty0);
|
__vertex_add_pntc(_vb, i1, j0, 0, 1, 0, 0, tx0, ty0,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j1, dep, 1, 0, 0, tx1, ty1);
|
__vertex_add_pntc(_vb, i1, j1, dep, 1, 0, 0, tx1, ty1,,, 0, 0, 255);
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i1, j0, 0, 1, 0, 0, tx1, ty1);
|
__vertex_add_pntc(_vb, i1, j0, 0, 1, 0, 0, tx1, ty1,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j1, 0, 1, 0, 0, tx0, ty0);
|
__vertex_add_pntc(_vb, i1, j1, 0, 1, 0, 0, tx0, ty0,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j1, dep, 1, 0, 0, tx0, ty1);
|
__vertex_add_pntc(_vb, i1, j1, dep, 1, 0, 0, tx0, ty1,,, 0, 0, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((useH && abs(depb) * 2 > buffer_read_at(hb_buff, (min(round((i + 1) * hgtW), hg_ww - 1 ) + round(j * hgtH) * hg_ww) * 2, buffer_u16) / 65536)
|
if((useH && abs(depb) * 2 > buffer_read_at(hb_buff, (min(round((i + 1) * hgtW), hg_ww - 1 ) + round(j * hgtH) * hg_ww) * 2, buffer_u16) / 65536)
|
||||||
|| (i == ww - 1 || buffer_read_at(c_buff, (j) * ww + (i + 1), buffer_u8) == 0)) { //x side
|
|| (i == ww - 1 || buffer_read_at(c_buff, (j) * ww + (i + 1), buffer_u8) == 0)) { //x side
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i1, j0, 0, 1, 0, 0, tb1, ty0);
|
__vertex_add_pntc(_vb, i1, j0, 0, 1, 0, 0, tb1, ty0,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j0, depb, 1, 0, 0, tb0, ty0);
|
__vertex_add_pntc(_vb, i1, j0, depb, 1, 0, 0, tb0, ty0,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j1, 0, 1, 0, 0, tb1, ty1);
|
__vertex_add_pntc(_vb, i1, j1, 0, 1, 0, 0, tb1, ty1,,, 0, 0, 255);
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i1, j0, depb, 1, 0, 0, tb1, ty1);
|
__vertex_add_pntc(_vb, i1, j0, depb, 1, 0, 0, tb1, ty1,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j1, depb, 1, 0, 0, tb0, ty0);
|
__vertex_add_pntc(_vb, i1, j1, depb, 1, 0, 0, tb0, ty0,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j1, 0, 1, 0, 0, tb0, ty1);
|
__vertex_add_pntc(_vb, i1, j1, 0, 1, 0, 0, tb0, ty1,,, 0, 0, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -286,49 +286,49 @@ function __3dSurfaceExtrude(surface = noone, height = noone, smooth = false) : _
|
||||||
if((useH && dep * 2 > buffer_read_at(h_buff, (round(i * hgtW) + max(0, round((j - 1) * hgtH)) * hg_ww) * 2, buffer_u16) / 65536)
|
if((useH && dep * 2 > buffer_read_at(h_buff, (round(i * hgtW) + max(0, round((j - 1) * hgtH)) * hg_ww) * 2, buffer_u16) / 65536)
|
||||||
|| (j == 0 || buffer_read_at(c_buff, (j - 1) * ww + (i), buffer_u8) == 0)) { //y side
|
|| (j == 0 || buffer_read_at(c_buff, (j - 1) * ww + (i), buffer_u8) == 0)) { //y side
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i0, j0, dep, 0, 1, 0, tx1, ty0);
|
__vertex_add_pntc(_vb, i0, j0, dep, 0, 1, 0, tx1, ty0,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j0, depb, 0, 1, 0, tx0, ty0);
|
__vertex_add_pntc(_vb, i0, j0, depb, 0, 1, 0, tx0, ty0,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j0, dep, 0, 1, 0, tx1, ty1);
|
__vertex_add_pntc(_vb, i1, j0, dep, 0, 1, 0, tx1, ty1,,, 0, 0, 255);
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i0, j0, depb, 0, 1, 0, tx1, ty1);
|
__vertex_add_pntc(_vb, i0, j0, depb, 0, 1, 0, tx1, ty1,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j0, depb, 0, 1, 0, tx0, ty0);
|
__vertex_add_pntc(_vb, i1, j0, depb, 0, 1, 0, tx0, ty0,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j0, dep, 0, 1, 0, tx0, ty1);
|
__vertex_add_pntc(_vb, i1, j0, dep, 0, 1, 0, tx0, ty1,,, 0, 0, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((useH && dep * 2 > buffer_read_at(h_buff, (round(i * hgtW) + min(round((j + 1) * hgtH), hg_hh - 1) * hg_ww) * 2, buffer_u16) / 65536)
|
if((useH && dep * 2 > buffer_read_at(h_buff, (round(i * hgtW) + min(round((j + 1) * hgtH), hg_hh - 1) * hg_ww) * 2, buffer_u16) / 65536)
|
||||||
|| (j == hh - 1 || buffer_read_at(c_buff, (j + 1) * ww + (i), buffer_u8) == 0)) { //y side
|
|| (j == hh - 1 || buffer_read_at(c_buff, (j + 1) * ww + (i), buffer_u8) == 0)) { //y side
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i0, j1, dep, 0, -1, 0, tx1, ty0);
|
__vertex_add_pntc(_vb, i0, j1, dep, 0, -1, 0, tx1, ty0,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j1, dep, 0, -1, 0, tx1, ty1);
|
__vertex_add_pntc(_vb, i1, j1, dep, 0, -1, 0, tx1, ty1,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j1, depb, 0, -1, 0, tx0, ty0);
|
__vertex_add_pntc(_vb, i0, j1, depb, 0, -1, 0, tx0, ty0,,, 0, 0, 255);
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i0, j1, depb, 0, -1, 0, tx1, ty1);
|
__vertex_add_pntc(_vb, i0, j1, depb, 0, -1, 0, tx1, ty1,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j1, dep, 0, -1, 0, tx0, ty1);
|
__vertex_add_pntc(_vb, i1, j1, dep, 0, -1, 0, tx0, ty1,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j1, depb, 0, -1, 0, tx0, ty0);
|
__vertex_add_pntc(_vb, i1, j1, depb, 0, -1, 0, tx0, ty0,,, 0, 0, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((useH && dep * 2 > buffer_read_at(h_buff, (max(0, round((i - 1) * hgtW)) + round(j * hgtH) * hg_ww) * 2, buffer_u16) / 65536)
|
if((useH && dep * 2 > buffer_read_at(h_buff, (max(0, round((i - 1) * hgtW)) + round(j * hgtH) * hg_ww) * 2, buffer_u16) / 65536)
|
||||||
|| (i == 0 || buffer_read_at(c_buff, (j) * ww + (i - 1), buffer_u8) == 0)) { //x side
|
|| (i == 0 || buffer_read_at(c_buff, (j) * ww + (i - 1), buffer_u8) == 0)) { //x side
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i0, j0, dep, -1, 0, 0, tx1, ty0);
|
__vertex_add_pntc(_vb, i0, j0, dep, -1, 0, 0, tx1, ty0,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j1, dep, -1, 0, 0, tx1, ty1);
|
__vertex_add_pntc(_vb, i0, j1, dep, -1, 0, 0, tx1, ty1,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j0, depb, -1, 0, 0, tx0, ty0);
|
__vertex_add_pntc(_vb, i0, j0, depb, -1, 0, 0, tx0, ty0,,, 0, 0, 255);
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i0, j0, depb, -1, 0, 0, tx1, ty1);
|
__vertex_add_pntc(_vb, i0, j0, depb, -1, 0, 0, tx1, ty1,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j1, dep, -1, 0, 0, tx0, ty1);
|
__vertex_add_pntc(_vb, i0, j1, dep, -1, 0, 0, tx0, ty1,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i0, j1, depb, -1, 0, 0, tx0, ty0);
|
__vertex_add_pntc(_vb, i0, j1, depb, -1, 0, 0, tx0, ty0,,, 0, 0, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((useH && dep * 2 > buffer_read_at(h_buff, (min(round((i + 1) * hgtW), hg_ww - 1 ) + round(j * hgtH) * hg_ww) * 2, buffer_u16) / 65536)
|
if((useH && dep * 2 > buffer_read_at(h_buff, (min(round((i + 1) * hgtW), hg_ww - 1 ) + round(j * hgtH) * hg_ww) * 2, buffer_u16) / 65536)
|
||||||
|| (i == ww - 1 || buffer_read_at(c_buff, (j) * ww + (i + 1), buffer_u8) == 0)) { //x side
|
|| (i == ww - 1 || buffer_read_at(c_buff, (j) * ww + (i + 1), buffer_u8) == 0)) { //x side
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i1, j0, dep, 1, 0, 0, tx1, ty0);
|
__vertex_add_pntc(_vb, i1, j0, dep, 1, 0, 0, tx1, ty0,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j0, depb, 1, 0, 0, tx0, ty0);
|
__vertex_add_pntc(_vb, i1, j0, depb, 1, 0, 0, tx0, ty0,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j1, dep, 1, 0, 0, tx1, ty1);
|
__vertex_add_pntc(_vb, i1, j1, dep, 1, 0, 0, tx1, ty1,,, 0, 0, 255);
|
||||||
|
|
||||||
__vertex_add_pntc(_vb, i1, j0, depb, 1, 0, 0, tx1, ty1);
|
__vertex_add_pntc(_vb, i1, j0, depb, 1, 0, 0, tx1, ty1,,, 255, 0, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j1, depb, 1, 0, 0, tx0, ty0);
|
__vertex_add_pntc(_vb, i1, j1, depb, 1, 0, 0, tx0, ty0,,, 0, 255, 0);
|
||||||
__vertex_add_pntc(_vb, i1, j1, dep, 1, 0, 0, tx0, ty1);
|
__vertex_add_pntc(_vb, i1, j1, dep, 1, 0, 0, tx0, ty1,,, 0, 0, 255);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,8 @@ function Node_3D_Transform(_x, _y, _group = noone) : Node_3D_Object(_x, _y, _gro
|
||||||
newInput(in_d3d + 0, nodeValue_D3Mesh("Mesh", self, noone))
|
newInput(in_d3d + 0, nodeValue_D3Mesh("Mesh", self, noone))
|
||||||
.setVisible(true, true);
|
.setVisible(true, true);
|
||||||
|
|
||||||
|
// newInput(in_d3d + 1, nodeValue_D3Mesh("Mesh", self, noone));
|
||||||
|
|
||||||
newOutput(0, nodeValue_Output("Mesh", self, VALUE_TYPE.d3Mesh, noone));
|
newOutput(0, nodeValue_Output("Mesh", self, VALUE_TYPE.d3Mesh, noone));
|
||||||
|
|
||||||
input_display_list = [ in_d3d + 0,
|
input_display_list = [ in_d3d + 0,
|
||||||
|
|
|
@ -36,11 +36,13 @@ function Node_Blur_Zoom(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
|
||||||
|
|
||||||
newInput(13, nodeValue_Bool("Gamma Correction", self, false));
|
newInput(13, nodeValue_Bool("Gamma Correction", self, false));
|
||||||
|
|
||||||
|
newInput(14, nodeValue_Int("Samples", self, 64));
|
||||||
|
|
||||||
newOutput(0, nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone));
|
newOutput(0, nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone));
|
||||||
|
|
||||||
input_display_list = [ 8, 9,
|
input_display_list = [ 8, 9,
|
||||||
["Surfaces", true], 0, 6, 7, 10, 11,
|
["Surfaces", true], 0, 6, 7, 10, 11,
|
||||||
["Blur", false], 1, 12, 2, 4, 5, 13
|
["Blur", false], 1, 12, 2, 4, 5, 13, 14,
|
||||||
];
|
];
|
||||||
|
|
||||||
attribute_surface_depth();
|
attribute_surface_depth();
|
||||||
|
@ -77,6 +79,7 @@ function Node_Blur_Zoom(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
|
||||||
shader_set_i("blurMode", _data[4]);
|
shader_set_i("blurMode", _data[4]);
|
||||||
shader_set_i("sampleMode", _sam);
|
shader_set_i("sampleMode", _sam);
|
||||||
shader_set_i("gamma", _data[13]);
|
shader_set_i("gamma", _data[13]);
|
||||||
|
shader_set_i("samples", _data[14]);
|
||||||
|
|
||||||
shader_set_i("useMask", is_surface(_data[5]));
|
shader_set_i("useMask", is_surface(_data[5]));
|
||||||
shader_set_surface("mask", _data[5]);
|
shader_set_surface("mask", _data[5]);
|
||||||
|
|
|
@ -22,6 +22,8 @@ enum MATH_OPERATOR {
|
||||||
clamp, // 15
|
clamp, // 15
|
||||||
snap, // 16
|
snap, // 16
|
||||||
fract, // 17
|
fract, // 17
|
||||||
|
|
||||||
|
length,
|
||||||
}
|
}
|
||||||
|
|
||||||
global.node_math_keys = [ "add", "subtract", "multiply", "divide", "power", "root",
|
global.node_math_keys = [ "add", "subtract", "multiply", "divide", "power", "root",
|
||||||
|
|
|
@ -26,7 +26,9 @@ function Node_Pixel_Math(_x, _y, _group = noone) : Node_Processor(_x, _y, _group
|
||||||
|
|
||||||
__init_mask_modifier(2); // inputs 5, 6,
|
__init_mask_modifier(2); // inputs 5, 6,
|
||||||
|
|
||||||
newInput(7, nodeValue_Enum_Scroll("Operator", self, 0, global.node_math_scroll));
|
_scroll = array_clone(global.node_math_scroll, 1);
|
||||||
|
array_append(_scroll, ["Less than", "Greater than"]);
|
||||||
|
newInput(7, nodeValue_Enum_Scroll("Operator", self, 0, _scroll));
|
||||||
|
|
||||||
newInput(8, nodeValue_Vec4("Operand", self, [ 0, 0, 0, 0 ]));
|
newInput(8, nodeValue_Vec4("Operand", self, [ 0, 0, 0, 0 ]));
|
||||||
|
|
||||||
|
@ -53,14 +55,14 @@ function Node_Pixel_Math(_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 type = _data[7];
|
var type = _data[7];
|
||||||
var op4 = _data[8];
|
var op4 = _data[8];
|
||||||
var op2 = _data[9];
|
var op2 = _data[9];
|
||||||
var opType = _data[10];
|
var opType = _data[10];
|
||||||
var opS = _data[11];
|
var opS = _data[11];
|
||||||
var mixAmo = _data[12];
|
var mixAmo = _data[12];
|
||||||
|
|
||||||
var _oprand = global.node_math_names[type];
|
var _oprand = type < array_length(global.node_math_names)? global.node_math_names[type] : _scroll[type];
|
||||||
setDisplayName(_oprand);
|
setDisplayName(_oprand);
|
||||||
|
|
||||||
inputs[ 8].setVisible(false);
|
inputs[ 8].setVisible(false);
|
||||||
|
@ -70,14 +72,16 @@ function Node_Pixel_Math(_x, _y, _group = noone) : Node_Processor(_x, _y, _group
|
||||||
|
|
||||||
if(opType == 0) {
|
if(opType == 0) {
|
||||||
switch(type) {
|
switch(type) {
|
||||||
case MATH_OPERATOR.add :
|
case MATH_OPERATOR.add :
|
||||||
case MATH_OPERATOR.subtract :
|
case MATH_OPERATOR.subtract :
|
||||||
case MATH_OPERATOR.multiply :
|
case MATH_OPERATOR.multiply :
|
||||||
case MATH_OPERATOR.divide :
|
case MATH_OPERATOR.divide :
|
||||||
case MATH_OPERATOR.power :
|
case MATH_OPERATOR.power :
|
||||||
case MATH_OPERATOR.root :
|
case MATH_OPERATOR.root :
|
||||||
case MATH_OPERATOR.modulo :
|
case MATH_OPERATOR.modulo :
|
||||||
case MATH_OPERATOR.snap :
|
case MATH_OPERATOR.snap :
|
||||||
|
case MATH_OPERATOR.length + 1 :
|
||||||
|
case MATH_OPERATOR.length + 2 :
|
||||||
inputs[8].setVisible( true);
|
inputs[8].setVisible( true);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -88,7 +92,7 @@ function Node_Pixel_Math(_x, _y, _group = noone) : Node_Processor(_x, _y, _group
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
surface_set_shader(_outSurf, sh_pixel_math);
|
surface_set_shader(_outSurf, sh_pixel_math, true, BLEND.over);
|
||||||
shader_set_i("operator", type);
|
shader_set_i("operator", type);
|
||||||
|
|
||||||
shader_set_i("operandType", opType );
|
shader_set_i("operandType", opType );
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
|
|
||||||
varying vec2 v_vTexcoord;
|
varying vec2 v_vTexcoord;
|
||||||
varying vec4 v_vColour;
|
varying vec4 v_vColour;
|
||||||
|
uniform int samples;
|
||||||
|
|
||||||
uniform vec2 center;
|
uniform vec2 center;
|
||||||
uniform int blurMode;
|
uniform int blurMode;
|
||||||
|
@ -65,7 +66,7 @@ void main() { #region
|
||||||
vec2 uv = v_vTexcoord - center;
|
vec2 uv = v_vTexcoord - center;
|
||||||
|
|
||||||
float _str = sampleParameter(0, str) * sampleMask();
|
float _str = sampleParameter(0, str) * sampleMask();
|
||||||
float nsamples = 64.;
|
float nsamples = float(samples);
|
||||||
float scale_factor = _str * (1. / (nsamples * 2. - 1.));
|
float scale_factor = _str * (1. / (nsamples * 2. - 1.));
|
||||||
vec4 color = vec4(0.0);
|
vec4 color = vec4(0.0);
|
||||||
float blrStart = 0.;
|
float blrStart = 0.;
|
||||||
|
|
|
@ -102,6 +102,18 @@ void main() {
|
||||||
res.b = fract(res.b);
|
res.b = fract(res.b);
|
||||||
res.a = fract(res.a);
|
res.a = fract(res.a);
|
||||||
|
|
||||||
|
} else if(operator == 18) {
|
||||||
|
res.r = res.r < op.r? 1. : 0.;
|
||||||
|
res.g = res.g < op.g? 1. : 0.;
|
||||||
|
res.b = res.b < op.b? 1. : 0.;
|
||||||
|
res.a = 1.;
|
||||||
|
|
||||||
|
} else if(operator == 19) {
|
||||||
|
res.r = res.r > op.r? 1. : 0.;
|
||||||
|
res.g = res.g > op.g? 1. : 0.;
|
||||||
|
res.b = res.b > op.b? 1. : 0.;
|
||||||
|
res.a = 1.;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gl_FragColor = res;
|
gl_FragColor = res;
|
||||||
|
|
Loading…
Reference in a new issue