[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 kotlin.reflect.KClass
|
||||
|
||||
internal fun generateColorTransform(kClass: KClass<*>): String {
|
||||
internal fun generateColorTransform(kClass: KClass<*>, identifier: String): String {
|
||||
return when (kClass) {
|
||||
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")
|
||||
}
|
||||
}
|
||||
@@ -74,7 +74,7 @@ open class LinearGradientBase<C>(
|
||||
}
|
||||
|
||||
vec4 gradient = mix(color0, color1, t);
|
||||
${generateColorTransform(color0::class)}
|
||||
${generateColorTransform(color0::class, "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]);
|
||||
vec4 gradient = mix(color0, color1, clamp(g, 0.0, 1.0));
|
||||
|
||||
${generateColorTransform(colors[0]::class)}
|
||||
${generateColorTransform(colors[0]::class, "gradient")}
|
||||
|
||||
x_fill *= gradient;
|
||||
if (x_fill.a != 0) {
|
||||
|
||||
@@ -63,7 +63,7 @@ where C : ConvertibleToColorRGBa, C : AlgebraicColor<C>, C: CastableToVector4 {
|
||||
vec4 color1 = p_color1;
|
||||
|
||||
vec4 gradient = mix(color0, color1, pow(f, p_exponent));
|
||||
${generateColorTransform(color0::class)}
|
||||
${generateColorTransform(color0::class, "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]);
|
||||
vec4 m = mix(color0, color1, clamp(g, 0.0, 1.0));
|
||||
${generateColorTransform(colorType, "m")}
|
||||
|
||||
m.rgb *= m.a;
|
||||
gradient += m;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,8 @@ package gradients
|
||||
|
||||
import org.openrndr.application
|
||||
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.gradients.gradient
|
||||
import org.openrndr.math.Vector2
|
||||
|
||||
Reference in New Issue
Block a user