mj177/addons/cyclops_level_builder/shaders/vertex_shader.tres
2025-02-03 19:17:20 +01:00

60 lines
2 KiB
Text

[gd_resource type="Shader" format=3 uid="uid://dewb6ohh2wxv0"]
[resource]
code = "// NOTE: Shader automatically converted from Godot Engine 4.0.2.stable's StandardMaterial3D.
shader_type spatial;
render_mode blend_mix,depth_draw_never,cull_disabled,diffuse_burley,specular_schlick_ggx,ambient_light_disabled,alpha_to_coverage;
uniform float radius = 4;
uniform sampler2D texture_emission : source_color, hint_default_black,filter_linear_mipmap,repeat_enable;
uniform vec4 emission : source_color;
uniform float emission_energy;
uniform float alpha_scissor_threshold;
uniform float alpha_antialiasing_edge;
void vertex() {
//UV=UV*uv1_scale.xy+uv1_offset.xy;
vec4 model_pos_world = MODEL_MATRIX[3];
// vec4 cam_origin_world = INV_VIEW_MATRIX[3];
vec4 model_origin_cam_space = VIEW_MATRIX * model_pos_world;
vec4 model_origin_proj_space = PROJECTION_MATRIX * VIEW_MATRIX * model_pos_world;
model_origin_proj_space /= model_origin_proj_space.w;
vec4 offset_proj_space = model_origin_proj_space + vec4(0.0, radius / VIEWPORT_SIZE.y, 0.0, 0.0);
vec4 offset_cam_space = INV_PROJECTION_MATRIX * offset_proj_space;
offset_cam_space /= offset_cam_space.w;
vec4 radius_offset_cam_space = offset_cam_space - model_origin_cam_space;
// float scale = length(model_origin_cam_space.xyz) * radius * 5.0 / VIEWPORT_SIZE.y;
float scale = length(radius_offset_cam_space.xy) * 10.0;
mat4 SCALE = mat4(vec4(scale, 0.0, 0.0, 0.0),
vec4(0.0, scale, 0.0, 0.0),
vec4(0.0, 0.0, scale, 0.0),
vec4(0.0, 0.0, 0.0, 1.0));
MODELVIEW_MATRIX = VIEW_MATRIX * mat4(INV_VIEW_MATRIX[0], INV_VIEW_MATRIX[1], INV_VIEW_MATRIX[2], MODEL_MATRIX[3]) * SCALE;
MODELVIEW_NORMAL_MATRIX = mat3(MODELVIEW_MATRIX);
}
void fragment() {
vec2 base_uv = UV;
vec4 emission_tex = texture(texture_emission, base_uv);
emission_tex *= COLOR * emission;
ALBEDO = vec3(0.0, 0.0, 0.0);
EMISSION = emission_tex.xyz;
ALPHA = emission_tex.a;
ALPHA_SCISSOR_THRESHOLD = alpha_scissor_threshold;
ALPHA_ANTIALIASING_EDGE = alpha_antialiasing_edge;
ALPHA_TEXTURE_COORDINATE = UV;
}
"