shaderlib: Remove hsv_multiply and hsv_offset, rename hsv.gdshaderinc to colorspaces.gdshaderinc, update autocomplete and example accordingly; implements #36

This commit is contained in:
ChaoticByte 2025-01-10 21:58:23 +01:00
parent 50ddf6e6d3
commit 3b47d57353
No known key found for this signature in database
3 changed files with 6 additions and 33 deletions

View file

@ -1,6 +1,6 @@
shader_type canvas_item; shader_type canvas_item;
#include "res://shaderlib/hsv.gdshaderinc" #include "res://shaderlib/colorspaces.gdshaderinc"
#include "res://shaderlib/effects.gdshaderinc" #include "res://shaderlib/effects.gdshaderinc"
//!load ./images/swamp.jpg //!load ./images/swamp.jpg
@ -8,6 +8,7 @@ shader_type canvas_item;
void fragment() { void fragment() {
COLOR = pixelate(TEXTURE, UV, 200.0); COLOR = pixelate(TEXTURE, UV, 200.0);
vec4 hsv = rgb2hsv(COLOR); vec4 hsv = rgb2hsv(COLOR);
COLOR = hsv_offset(COLOR, 0.65, .42-(hsv.y*.3), -.125); hsv.xyz += vec3(0.65, .42-(hsv.y*.3), -.125);
COLOR = hsv_multiply(COLOR, 1.0, 1.0, 1.25); hsv.xyz *= vec3(1.0, 1.0, 1.25);
COLOR = hsv2rgb(hsv);
} }

View file

@ -20,31 +20,3 @@ vec4 hsv2rgb(vec4 c) {
vec3 rgb = c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); vec3 rgb = c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
return vec4(rgb.r, rgb.g, rgb.b, c.a); return vec4(rgb.r, rgb.g, rgb.b, c.a);
} }
// Offset the hue, saturation and brightness of a RGB color
vec4 hsv_offset(
vec4 rgba,
float offset_hue,
float offset_saturation,
float offset_brightness
) {
vec4 c = rgb2hsv(rgba);
c.x += offset_hue;
c.y += offset_saturation;
c.z += offset_brightness;
return hsv2rgb(c);
}
// Multiply the hue, saturation and brightness of a RGB color
vec4 hsv_multiply(
vec4 rgba,
float mult_hue,
float mult_saturation,
float mult_brightness
) {
vec4 c = rgb2hsv(rgba);
c.x *= mult_hue;
c.y *= mult_saturation;
c.z *= mult_brightness;
return hsv2rgb(c);
}

View file

@ -129,14 +129,14 @@ const gdshader_preprocessor = [
] ]
# shaderlib # shaderlib
var shaderlib_regex = { var shaderlib_regex = {
"hsv": RegEx.create_from_string(r'\s*\#include\s+\"res\:\/\/shaderlib\/hsv\.gdshaderinc\"'), "colorspaces": RegEx.create_from_string(r'\s*\#include\s+\"res\:\/\/shaderlib\/colorspaces\.gdshaderinc\"'),
"transform": RegEx.create_from_string(r'\s*\#include\s+\"res\:\/\/shaderlib\/transform\.gdshaderinc\"'), "transform": RegEx.create_from_string(r'\s*\#include\s+\"res\:\/\/shaderlib\/transform\.gdshaderinc\"'),
"transparency": RegEx.create_from_string(r'\s*\#include\s+\"res\:\/\/shaderlib\/transparency\.gdshaderinc\"'), "transparency": RegEx.create_from_string(r'\s*\#include\s+\"res\:\/\/shaderlib\/transparency\.gdshaderinc\"'),
"effects": RegEx.create_from_string(r'\s*\#include\s+\"res\:\/\/shaderlib\/effects\.gdshaderinc\"'), "effects": RegEx.create_from_string(r'\s*\#include\s+\"res\:\/\/shaderlib\/effects\.gdshaderinc\"'),
"denoise": RegEx.create_from_string(r'\s*\#include\s+\"res\:\/\/shaderlib\/denoise\.gdshaderinc\"') "denoise": RegEx.create_from_string(r'\s*\#include\s+\"res\:\/\/shaderlib\/denoise\.gdshaderinc\"')
} }
const shaderlib_functions = { const shaderlib_functions = {
"hsv": ["rgb2hsv", "hsv2rgb", "hsv_offset", "hsv_multiply"], "colorspaces": ["rgb2hsv", "hsv2rgb"],
"transform": ["place_texture"], "transform": ["place_texture"],
"transparency": ["alpha_blend"], "transparency": ["alpha_blend"],
"effects": ["pixelate"], "effects": ["pixelate"],