43 lines
1.4 KiB
Plaintext
43 lines
1.4 KiB
Plaintext
|
shader_type spatial;
|
||
|
|
||
|
render_mode unshaded;
|
||
|
|
||
|
#include "res://addons/rokojori_action_library/Runtime/Shading/Library/Math.gdshaderinc"
|
||
|
#include "res://addons/rokojori_action_library/Runtime/Shading/Library/Transform.gdshaderinc"
|
||
|
#include "res://addons/rokojori_action_library/Runtime/Shading/Library/Noise.gdshaderinc"
|
||
|
#include "res://addons/rokojori_action_library/Runtime/Shading/Library/Light.gdshaderinc"
|
||
|
|
||
|
|
||
|
uniform vec4 albedo : source_color;
|
||
|
uniform sampler2D texture_albedo : source_color, filter_linear_mipmap, repeat_enable;
|
||
|
uniform float alpha_scissor_threshold : hint_range(0.0, 1.0, 0.001);
|
||
|
|
||
|
uniform float alpha_antialiasing_edge : hint_range(0.0, 1.0, 0.01);
|
||
|
uniform ivec2 albedo_texture_size;
|
||
|
|
||
|
uniform float centerDistance = 100;
|
||
|
uniform float rangeDistance = 50;
|
||
|
|
||
|
void vertex()
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
void fragment()
|
||
|
{
|
||
|
vec4 albedo_tex = texture( texture_albedo, UV);
|
||
|
vec3 worldPosition = ( INV_VIEW_MATRIX * vec4( VERTEX, 1.0 ) ).xyz;
|
||
|
float worldDistance = length( worldPosition - CAMERA_POSITION_WORLD );
|
||
|
float range = rangeDistance / 2.0;
|
||
|
float value = normalizeToRange01( worldDistance,
|
||
|
centerDistance - range, centerDistance + range
|
||
|
);
|
||
|
|
||
|
ALBEDO = vec3( 1, 1, 1 ) * value;
|
||
|
|
||
|
ALPHA *= albedo.a * albedo_tex.a;
|
||
|
ALPHA_SCISSOR_THRESHOLD = alpha_scissor_threshold;
|
||
|
ALPHA_ANTIALIASING_EDGE = alpha_antialiasing_edge;
|
||
|
ALPHA_TEXTURE_COORDINATE = UV * vec2(albedo_texture_size);
|
||
|
}
|