[orx-shade-styles] Re-introduce color conversion in GradientBase
This commit is contained in:
@@ -4,10 +4,10 @@ import org.openrndr.color.ColorRGBa
|
|||||||
import org.openrndr.extra.color.spaces.ColorOKLABa
|
import org.openrndr.extra.color.spaces.ColorOKLABa
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
internal fun generateColorTransform(kClass: KClass<*>): String {
|
internal fun generateColorTransform(kClass: KClass<*>, identifier: String): String {
|
||||||
return when (kClass) {
|
return when (kClass) {
|
||||||
ColorRGBa::class -> """"""
|
ColorRGBa::class -> """"""
|
||||||
ColorOKLABa::class -> """gradient = oklab_to_linear_rgb(gradient);"""
|
ColorOKLABa::class -> """$identifier = oklab_to_linear_rgb($identifier);"""
|
||||||
else -> error("color space not supported $kClass")
|
else -> error("color space not supported $kClass")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -74,7 +74,7 @@ open class LinearGradientBase<C>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
vec4 gradient = mix(color0, color1, t);
|
vec4 gradient = mix(color0, color1, t);
|
||||||
${generateColorTransform(color0::class)}
|
${generateColorTransform(color0::class, "gradient")}
|
||||||
x_fill *= gradient;
|
x_fill *= gradient;
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ open class NPointLinearGradientBase<C>(
|
|||||||
float g = (f - p_points[i]) / (p_points[i+1] - p_points[i]);
|
float g = (f - p_points[i]) / (p_points[i+1] - p_points[i]);
|
||||||
vec4 gradient = mix(color0, color1, clamp(g, 0.0, 1.0));
|
vec4 gradient = mix(color0, color1, clamp(g, 0.0, 1.0));
|
||||||
|
|
||||||
${generateColorTransform(colors[0]::class)}
|
${generateColorTransform(colors[0]::class, "gradient")}
|
||||||
|
|
||||||
x_fill *= gradient;
|
x_fill *= gradient;
|
||||||
if (x_fill.a != 0) {
|
if (x_fill.a != 0) {
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ where C : ConvertibleToColorRGBa, C : AlgebraicColor<C>, C: CastableToVector4 {
|
|||||||
vec4 color1 = p_color1;
|
vec4 color1 = p_color1;
|
||||||
|
|
||||||
vec4 gradient = mix(color0, color1, pow(f, p_exponent));
|
vec4 gradient = mix(color0, color1, pow(f, p_exponent));
|
||||||
${generateColorTransform(color0::class)}
|
${generateColorTransform(color0::class, "gradient")}
|
||||||
|
|
||||||
x_fill *= gradient;
|
x_fill *= gradient;
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -129,6 +129,8 @@ open class GradientBase<C>(
|
|||||||
|
|
||||||
float g = (sf - p_points[i]) / (p_points[i+1] - p_points[i]);
|
float g = (sf - p_points[i]) / (p_points[i+1] - p_points[i]);
|
||||||
vec4 m = mix(color0, color1, clamp(g, 0.0, 1.0));
|
vec4 m = mix(color0, color1, clamp(g, 0.0, 1.0));
|
||||||
|
${generateColorTransform(colorType, "m")}
|
||||||
|
|
||||||
m.rgb *= m.a;
|
m.rgb *= m.a;
|
||||||
gradient += m;
|
gradient += m;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package gradients
|
|||||||
|
|
||||||
import org.openrndr.application
|
import org.openrndr.application
|
||||||
import org.openrndr.color.ColorRGBa
|
import org.openrndr.color.ColorRGBa
|
||||||
|
import org.openrndr.extra.color.spaces.ColorOKLABa
|
||||||
|
import org.openrndr.extra.color.spaces.toOKLABa
|
||||||
import org.openrndr.extra.shadestyles.fills.SpreadMethod
|
import org.openrndr.extra.shadestyles.fills.SpreadMethod
|
||||||
import org.openrndr.extra.shadestyles.fills.gradients.gradient
|
import org.openrndr.extra.shadestyles.fills.gradients.gradient
|
||||||
import org.openrndr.math.Vector2
|
import org.openrndr.math.Vector2
|
||||||
|
|||||||
Reference in New Issue
Block a user