added gun and pain
This commit is contained in:
46
shaders/pbr_glass.gdshader
Normal file
46
shaders/pbr_glass.gdshader
Normal file
@@ -0,0 +1,46 @@
|
||||
shader_type spatial;
|
||||
render_mode diffuse_burley, specular_schlick_ggx, blend_mix;
|
||||
|
||||
group_uniforms albedo;
|
||||
uniform vec4 albedo : source_color = vec4(1.0, 1.0, 1.0, 0.0);
|
||||
uniform sampler2D albedo_texture : source_color, hint_default_white;
|
||||
|
||||
group_uniforms roughness;
|
||||
uniform float roughness : hint_range(0.0, 1.0) = 0.15;
|
||||
uniform sampler2D roughness_texture : hint_roughness_r;
|
||||
|
||||
group_uniforms normal;
|
||||
uniform float normal_strength : hint_range(-16.0, 16.0) = 1.0;
|
||||
uniform sampler2D normal_map : hint_normal;
|
||||
|
||||
group_uniforms misc;
|
||||
uniform vec4 edge_color : source_color = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
|
||||
float SchlickFresnel(float u) {
|
||||
float m = 1.0 - u;
|
||||
float m2 = m * m;
|
||||
return m2 * m2 * m;
|
||||
}
|
||||
|
||||
void fragment() {
|
||||
// calculate fresnel values
|
||||
float VdotN = dot(VIEW, NORMAL);
|
||||
float fresnel = clamp(SchlickFresnel(VdotN), 0.0, 1.0);
|
||||
|
||||
// sample and mix textures
|
||||
vec4 _albedo = texture(albedo_texture, UV) * albedo;
|
||||
float _roughness = texture(roughness_texture, UV).r * roughness;
|
||||
|
||||
// apply glass look
|
||||
float a = mix(0.001, 1.0, _albedo.a);
|
||||
ALPHA = mix(fresnel * edge_color.a, 1.0, a);
|
||||
ALBEDO = mix(edge_color.rgb * edge_color.a, _albedo.rgb, a);
|
||||
|
||||
ROUGHNESS = _roughness;
|
||||
NORMAL_MAP = texture(normal_map, UV).xyz;
|
||||
NORMAL_MAP_DEPTH = normal_strength;
|
||||
|
||||
// function to compensate specular for alpha blend
|
||||
// 0.5 * ALPHA^-0.5
|
||||
SPECULAR = 0.5 * inversesqrt(ALPHA);
|
||||
}
|
Reference in New Issue
Block a user