Godot Version
4.2.1
Question
Title, basically. I’m making the buttons in my project rounded, but I can’t figure out if there’s a way to make the Color Picker’s preview rounded as well. Is it possible to edit them?
4.2.1
Title, basically. I’m making the buttons in my project rounded, but I can’t figure out if there’s a way to make the Color Picker’s preview rounded as well. Is it possible to edit them?
what type of node are these 3 colors rectangle?
if the 3 colors are colorRect
then you use shader code like :
the code:
shader_type canvas_item;
uniform float radius_scale: hint_range(0.0, 1.0, 0.1) = 0.1;
uniform bool rounded_corner_top_left = true;
uniform bool rounded_corner_top_right = true;
uniform bool rounded_corner_bottom_left = true;
uniform bool rounded_corner_bottom_right = true;
uniform float width = 1.0;
uniform float height = 1.0;
void fragment() {
vec4 image = texture(TEXTURE, UV);
vec2 pos = vec2(UV.x*width, UV.y*height);
float radius = min(width, height)*radius_scale/2.0;
float dist;
if (rounded_corner_top_left) {
dist = length(pos - vec2(radius));
if (dist > radius && pos.x < radius && pos.y < radius) {
image.a = 0.0;
}
}
if (rounded_corner_top_right) {
dist = length(pos - vec2(width-radius, radius));
if (dist > radius && pos.x > width-radius && pos.y < radius) {
image.a = 0.0;
}
}
if (rounded_corner_bottom_left) {
dist = length(pos - vec2(radius, height-radius));
if (dist > radius && pos.x < radius && pos.y > height-radius) {
image.a = 0.0;
}
}
if (rounded_corner_bottom_right) {
dist = length(pos - vec2(width-radius, height-radius));
if (dist > radius && pos.x > width-radius && pos.y > height-radius) {
image.a = 0.0;
}
}
vec4 color;
color = mix(image.rgba, COLOR.rgba, image.a);
COLOR.rgba = color.rgba;
}
modified version of Rounded corners - Godot Shaders so it can rounded rect the color rect
They are ColorPickerButtons! Thank you for the shader code though, if there isn’t a way to round the preview, I think I could use that to throw together my own version of the button.
here i tested
modified code again:
shader_type canvas_item;
uniform float radius_scale: hint_range(0.0, 1.0, 0.1) = 0.1;
uniform bool rounded_corner_top_left = true;
uniform bool rounded_corner_top_right = true;
uniform bool rounded_corner_bottom_left = true;
uniform bool rounded_corner_bottom_right = true;
uniform float width = 1.0;
uniform float height = 1.0;
uniform vec4 back_color:source_color;
void fragment() {
vec4 image = texture(TEXTURE, UV);
vec2 pos = vec2(UV.x*width, UV.y*height);
float radius = min(width, height)*radius_scale/2.0;
float dist;
if (rounded_corner_top_left) {
dist = length(pos - vec2(radius));
if (dist > radius && pos.x < radius && pos.y < radius) {
image.a = 0.0;
}
}
if (rounded_corner_top_right) {
dist = length(pos - vec2(width-radius, radius));
if (dist > radius && pos.x > width-radius && pos.y < radius) {
image.a = 0.0;
}
}
if (rounded_corner_bottom_left) {
dist = length(pos - vec2(radius, height-radius));
if (dist > radius && pos.x < radius && pos.y > height-radius) {
image.a = 0.0;
}
}
if (rounded_corner_bottom_right) {
dist = length(pos - vec2(width-radius, height-radius));
if (dist > radius && pos.x > width-radius && pos.y > height-radius) {
image.a = 0.0;
}
}
COLOR.rgba = mix(back_color, COLOR.rgba,image.a );
}
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.