31 lines
888 B
Plaintext
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
|
|
}
|