Files
kicking-high/proto3/godot/decals/decal_test1.tres
2020-04-13 12:45:25 +03:00

50 lines
1.4 KiB
Plaintext

[gd_resource type="ShaderMaterial" load_steps=3 format=2]
[ext_resource path="res://decals/scar-texture.png" type="Texture" id=1]
[sub_resource type="Shader" id=1]
code = "shader_type spatial;
render_mode unshaded, depth_draw_never, cull_front, depth_test_disable;
uniform sampler2D decal : hint_black;
uniform vec2 offset;
uniform vec2 scale;
uniform bool emulate_lighting;
uniform float brightness;
varying flat mat4 model_view_matrix;
void vertex(){
model_view_matrix = MODELVIEW_MATRIX;
}
void fragment(){
//float zdepth = textureLod(DEPTH_TEXTURE, SCREEN_UV, 0.0).r * 2.0 - 1.0;
vec4 pos = inverse(model_view_matrix) * INV_PROJECTION_MATRIX * vec4(SCREEN_UV * 2.0 - 1.0, textureLod(DEPTH_TEXTURE, SCREEN_UV, 0.0).r * 2.0 - 1.0, 1.0);
pos.xyz /= pos.w;
bool inside = all(greaterThanEqual(pos.xyz, vec3(-1.0))) && all(lessThanEqual(pos.xyz, vec3(1.0)));
if(inside){
vec4 color = texture(decal, (pos.xy * -0.5 - 0.5) * scale + offset);
if(emulate_lighting){
float lum = dot(textureLod(SCREEN_TEXTURE, SCREEN_UV, 0).rgb, vec3(0.2125, 0.7154, 0.0721));
lum += brightness;
lum = clamp(lum, 0.0, 1.0);
ALBEDO = color.rgb * lum;
}else{
ALBEDO = color.rgb;
}
ALPHA = color.a;
}else{
discard;
}
}"
[resource]
shader = SubResource( 1 )
shader_param/offset = Vector2( 0.5, 0.5 )
shader_param/scale = Vector2( 20, 20 )
shader_param/emulate_lighting = false
shader_param/brightness = null
shader_param/decal = ExtResource( 1 )