mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2024-12-24 14:06:23 +01:00
[Particle] Fix gradient evaluation error when after load.
This commit is contained in:
parent
8e2f4b8071
commit
4468f26107
2 changed files with 33 additions and 34 deletions
|
@ -165,19 +165,6 @@
|
||||||
var b = min(b1 * b2 / 255, 255);
|
var b = min(b1 * b2 / 255, 255);
|
||||||
|
|
||||||
return (a << 24) | (r << 16) | (g << 8) | b;
|
return (a << 24) | (r << 16) | (g << 8) | b;
|
||||||
|
|
||||||
// var r1 = _color_get_red(c1);
|
|
||||||
// var g1 = _color_get_green(c1);
|
|
||||||
// var b1 = _color_get_blue(c1);
|
|
||||||
// var a1 = _color_get_alpha(c1);
|
|
||||||
|
|
||||||
// var r2 = _color_get_red(c2);
|
|
||||||
// var g2 = _color_get_green(c2);
|
|
||||||
// var b2 = _color_get_blue(c2);
|
|
||||||
// var a2 = _color_get_alpha(c2);
|
|
||||||
|
|
||||||
// if(is_real(c1)) return make_color_rgb((r1 * r2) * 255, (g1 * g2) * 255, (b1 * b2) * 255);
|
|
||||||
// return make_color_rgba((r1 * r2) * 255, (g1 * g2) * 255, (b1 * b2) * 255, (a1 * a2) * 255);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function colorAdd(c1, c2) {
|
function colorAdd(c1, c2) {
|
||||||
|
@ -227,42 +214,54 @@ function color_diff(c1, c2) {
|
||||||
#region merge
|
#region merge
|
||||||
#macro merge_color merge_color_ext
|
#macro merge_color merge_color_ext
|
||||||
#macro __merge_color merge_color
|
#macro __merge_color merge_color
|
||||||
|
//!#mfunc __clamp255 {"args":["v"],"order":[0]}
|
||||||
|
#macro __clamp255_mf0 clamp(round(
|
||||||
|
#macro __clamp255_mf1 ), 0, 255)
|
||||||
|
|
||||||
function merge_color_ext(c0, c1, t) {
|
function merge_color_ext(c0, c1, t) {
|
||||||
INLINE
|
INLINE
|
||||||
if(is_real(c0) && is_real(c1)) return __merge_color(c0, c1, t);
|
if(is_real(c0) && is_real(c1)) return __merge_color(c0, c1, t);
|
||||||
|
|
||||||
return make_color_rgba(
|
return make_color_rgba(
|
||||||
clamp(round(lerp(color_get_red(c0), color_get_red(c1), t)), 0, 255),
|
__clamp255_mf0 lerp(color_get_red(c0), color_get_red(c1), t) __clamp255_mf1,
|
||||||
clamp(round(lerp(color_get_green(c0), color_get_green(c1), t)), 0, 255),
|
__clamp255_mf0 lerp(color_get_green(c0), color_get_green(c1), t) __clamp255_mf1,
|
||||||
clamp(round(lerp(color_get_blue(c0), color_get_blue(c1), t)), 0, 255),
|
__clamp255_mf0 lerp(color_get_blue(c0), color_get_blue(c1), t) __clamp255_mf1,
|
||||||
clamp(round(lerp(color_get_alpha(c0), color_get_alpha(c1), t)), 0, 255),
|
__clamp255_mf0 lerp(color_get_alpha(c0), color_get_alpha(c1), t) __clamp255_mf1,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function merge_color_a(c0, c1, t) {
|
function merge_color_rgba(c0, c1, t) {
|
||||||
INLINE
|
INLINE
|
||||||
return make_color_rgba(
|
return make_color_rgba(
|
||||||
clamp(round(lerp(color_get_red(c0), color_get_red(c1), t)), 0, 255),
|
__clamp255_mf0 lerp(color_get_red(c0), color_get_red(c1), t) __clamp255_mf1,
|
||||||
clamp(round(lerp(color_get_green(c0), color_get_green(c1), t)), 0, 255),
|
__clamp255_mf0 lerp(color_get_green(c0), color_get_green(c1), t) __clamp255_mf1,
|
||||||
clamp(round(lerp(color_get_blue(c0), color_get_blue(c1), t)), 0, 255),
|
__clamp255_mf0 lerp(color_get_blue(c0), color_get_blue(c1), t) __clamp255_mf1,
|
||||||
clamp(round(lerp(color_get_alpha(c0), color_get_alpha(c1), t)), 0, 255),
|
__clamp255_mf0 lerp(color_get_alpha(c0), color_get_alpha(c1), t) __clamp255_mf1,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function merge_color_hsva(c0, c1, t) {
|
||||||
|
return make_color_hsva(
|
||||||
|
__clamp255_mf0 lerp(color_get_hue(c0), color_get_hue(c1), t) __clamp255_mf1,
|
||||||
|
__clamp255_mf0 lerp(color_get_saturation(c0), color_get_saturation(c1), t) __clamp255_mf1,
|
||||||
|
__clamp255_mf0 lerp(color_get_value(c0), color_get_value(c1), t) __clamp255_mf1,
|
||||||
|
__clamp255_mf0 lerp(color_get_alpha(c0), color_get_alpha(c1), t) __clamp255_mf1,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
function merge_color_hsv(c0, c1, t) {
|
function merge_color_hsv(c0, c1, t) {
|
||||||
INLINE
|
INLINE
|
||||||
if(is_real(c0)) return make_color_hsv(
|
if(is_real(c0)) return make_color_hsv(
|
||||||
clamp(round(lerp(color_get_hue(c0), color_get_hue(c1), t)), 0, 255),
|
__clamp255_mf0 lerp(color_get_hue(c0), color_get_hue(c1), t) __clamp255_mf1,
|
||||||
clamp(round(lerp(color_get_saturation(c0), color_get_saturation(c1), t)), 0, 255),
|
__clamp255_mf0 lerp(color_get_saturation(c0), color_get_saturation(c1), t) __clamp255_mf1,
|
||||||
clamp(round(lerp(color_get_value(c0), color_get_value(c1), t)), 0, 255),
|
__clamp255_mf0 lerp(color_get_value(c0), color_get_value(c1), t) __clamp255_mf1,
|
||||||
);
|
);
|
||||||
|
|
||||||
return make_color_hsva(
|
return make_color_hsva(
|
||||||
clamp(round(lerp(color_get_hue(c0), color_get_hue(c1), t)), 0, 255),
|
__clamp255_mf0 lerp(color_get_hue(c0), color_get_hue(c1), t) __clamp255_mf1,
|
||||||
clamp(round(lerp(color_get_saturation(c0), color_get_saturation(c1), t)), 0, 255),
|
__clamp255_mf0 lerp(color_get_saturation(c0), color_get_saturation(c1), t) __clamp255_mf1,
|
||||||
clamp(round(lerp(color_get_value(c0), color_get_value(c1), t)), 0, 255),
|
__clamp255_mf0 lerp(color_get_value(c0), color_get_value(c1), t) __clamp255_mf1,
|
||||||
clamp(round(lerp(color_get_alpha(c0), color_get_alpha(c1), t)), 0, 255),
|
__clamp255_mf0 lerp(color_get_alpha(c0), color_get_alpha(c1), t) __clamp255_mf1,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -278,7 +277,7 @@ function color_diff(c1, c2) {
|
||||||
lerp(ok0[2], ok1[2], t),
|
lerp(ok0[2], ok1[2], t),
|
||||||
];
|
];
|
||||||
|
|
||||||
var a = is_real(c0)? 255 : clamp(round(lerp(color_get_alpha(c0), color_get_alpha(c1), t)), 0, 255);
|
var a = __clamp255_mf0 lerp(color_get_alpha(c0), color_get_alpha(c1), t) __clamp255_mf1;
|
||||||
|
|
||||||
return make_color_oklab(ok, a);
|
return make_color_oklab(ok, a);
|
||||||
}
|
}
|
||||||
|
@ -295,7 +294,7 @@ function color_diff(c1, c2) {
|
||||||
lerp(sr0[2], sr1[2], t),
|
lerp(sr0[2], sr1[2], t),
|
||||||
];
|
];
|
||||||
|
|
||||||
var a = is_real(c0)? 255 : clamp(round(lerp(color_get_alpha(c0), color_get_alpha(c1), t)), 0, 255);
|
var a = __clamp255_mf0 lerp(color_get_alpha(c0), color_get_alpha(c1), t) __clamp255_mf1;
|
||||||
|
|
||||||
return make_color_srgba(sr, a);
|
return make_color_srgba(sr, a);
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,15 +92,15 @@ function gradientObject(color = c_black) constructor {
|
||||||
var rat = (position - _pkey.time) / (_key.time - _pkey.time);
|
var rat = (position - _pkey.time) / (_key.time - _pkey.time);
|
||||||
|
|
||||||
switch(type) {
|
switch(type) {
|
||||||
case GRADIENT_INTER.smooth : return merge_color_a (_pkey.value, _key.value, rat);
|
case GRADIENT_INTER.smooth : return merge_color_rgba (_pkey.value, _key.value, rat);
|
||||||
case GRADIENT_INTER.hue : return merge_color_hsv (_pkey.value, _key.value, rat);
|
case GRADIENT_INTER.hue : return merge_color_hsva (_pkey.value, _key.value, rat);
|
||||||
case GRADIENT_INTER.oklab : return merge_color_oklab(_pkey.value, _key.value, rat);
|
case GRADIENT_INTER.oklab : return merge_color_oklab(_pkey.value, _key.value, rat);
|
||||||
case GRADIENT_INTER.srgb : return merge_color_srgb (_pkey.value, _key.value, rat);
|
case GRADIENT_INTER.srgb : return merge_color_srgb (_pkey.value, _key.value, rat);
|
||||||
case GRADIENT_INTER.none : return _pkey.value;
|
case GRADIENT_INTER.none : return _pkey.value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return keys[array_length(keys) - 1].value; //after last color
|
return keys[_len - 1].value; //after last color
|
||||||
}
|
}
|
||||||
|
|
||||||
static evalFast = function(position) {
|
static evalFast = function(position) {
|
||||||
|
|
Loading…
Reference in a new issue