stick-the-quick/vfx/technicolor.gdshader

31 lines
888 B
Plaintext

shader_type spatial;
#include "res://vfx/util.gdshaderinc"
UNIVERSAL_SOLID_PARAMS
uniform sampler2D image: TEXTURE_HINTS;
instance uniform float hue_shift = 0.0;
uniform float hue_range = 1.0;
uniform float reflectivity = 0.0;
uniform float radiance = 0.0;
void fragment() {
ALBEDO = texture(image, UV).rgb;
SPECULAR = reflectivity;
CLEARCOAT = reflectivity;
CLEARCOAT_ROUGHNESS = 1.0 - reflectivity;
ROUGHNESS = 1.0 - reflectivity;
METALLIC = reflectivity;
RIM = reflectivity;
RIM_TINT = 1.0 - reflectivity;
EMISSION = ALBEDO*radiance;
vec3 albedo_hsv = rgb2hsv(ALBEDO);
vec3 emission_hsv = rgb2hsv(EMISSION);
float real_hue_shift = -hue_range*atan(hue_shift)/PI;
albedo_hsv.x = fract(albedo_hsv.x + real_hue_shift);
emission_hsv.x = fract(emission_hsv.x + real_hue_shift);
ALBEDO = hsv2rgb(albedo_hsv);
EMISSION = hsv2rgb(emission_hsv);
UNIVERSAL_SOLID_PROCESSING
}