52 lines
2.2 KiB
Plaintext
52 lines
2.2 KiB
Plaintext
shader_type spatial;
|
|
render_mode blend_mix,depth_draw_opaque, cull_disabled,diffuse_burley,specular_schlick_ggx,depth_prepass_alpha;
|
|
uniform vec4 albedo : source_color;
|
|
uniform sampler2D texture_albedo : source_color,filter_linear_mipmap,repeat_enable;
|
|
uniform float point_size : hint_range(0,128) = 0;
|
|
uniform float roughness : hint_range(0,1) = 1;
|
|
uniform sampler2D texture_metallic : hint_default_white,filter_linear_mipmap,repeat_enable;
|
|
uniform vec4 metallic_texture_channel;
|
|
uniform sampler2D texture_roughness : hint_roughness_r,filter_linear_mipmap,repeat_enable;
|
|
uniform float specular = 0.13;
|
|
uniform float metallic = 0;
|
|
uniform sampler2D texture_normal : hint_roughness_normal,filter_linear_mipmap,repeat_enable;
|
|
uniform float normal_scale : hint_range(-16,16) = 1.5;
|
|
uniform vec4 backlight : source_color;
|
|
uniform sampler2D texture_backlight : hint_default_black,filter_linear_mipmap,repeat_enable;
|
|
uniform vec3 uv1_scale = vec3(1,1,1);
|
|
uniform vec3 uv1_offset;
|
|
uniform vec3 uv2_scale = vec3(1,1,1);
|
|
uniform vec3 uv2_offset;
|
|
uniform float sway_speed = 1.5;
|
|
uniform float sway_strength = 1.5;
|
|
uniform float sway_phase_len = 1.5;
|
|
|
|
void vertex() {
|
|
float strength = COLOR.r * sway_strength;
|
|
VERTEX.x += sin(VERTEX.x * sway_phase_len * 1.123 + TIME * sway_speed) * strength;
|
|
VERTEX.y += sin(VERTEX.y * sway_phase_len + TIME * sway_speed * 1.12412) * strength;
|
|
VERTEX.z += sin(VERTEX.z * sway_phase_len * 0.9123 + TIME * sway_speed * 1.3123) * strength;
|
|
UV=UV*uv1_scale.xy+uv1_offset.xy;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void fragment() {
|
|
vec2 base_uv = UV;
|
|
vec4 albedo_tex = texture(texture_albedo,base_uv);
|
|
ALBEDO = albedo.rgb * albedo_tex.rgb;
|
|
float metallic_tex = dot(texture(texture_metallic,base_uv),metallic_texture_channel);
|
|
METALLIC = metallic_tex * metallic;
|
|
vec4 roughness_texture_channel = vec4(1.0,0.0,0.0,0.0);
|
|
float roughness_tex = dot(texture(texture_roughness,base_uv),roughness_texture_channel);
|
|
ROUGHNESS = roughness_tex * roughness;
|
|
SPECULAR = specular;
|
|
NORMAL_MAP = texture(texture_normal,base_uv).rgb;
|
|
NORMAL_MAP_DEPTH = normal_scale;
|
|
ALPHA *= albedo.a * albedo_tex.a;
|
|
vec3 backlight_tex = texture(texture_backlight,base_uv).rgb;
|
|
BACKLIGHT = (backlight.rgb+backlight_tex);
|
|
} |