X-Git-Url: https://eleni.mutantstargoat.com/git/?p=demo;a=blobdiff_plain;f=vk_shaders%2Fmorphing.f.glsl;fp=vk_shaders%2Fmorphing.f.glsl;h=25b374a16486ec28c747027130d2aeb989eb9a37;hp=0000000000000000000000000000000000000000;hb=855c42d8e50fff743fd7b1be5e91cb0db18def77;hpb=ecb47604bb2b8ab3ac5a133e78ef6cb19a20d9cc diff --git a/vk_shaders/morphing.f.glsl b/vk_shaders/morphing.f.glsl new file mode 100644 index 0000000..25b374a --- /dev/null +++ b/vk_shaders/morphing.f.glsl @@ -0,0 +1,30 @@ +#version 450 + +layout(binding = 0) uniform sampler2D tex; +layout(binding = 0) uniform samplerCube dstex; + +layout(std140, binding = 0) uniform shading_state { + vec4 diffuse; + float fog_density; +} s; + +const vec3 sky_color = vec3(0.35, 0.5, 0.65); + +layout(location = 0) in vec3 pos; +layout(location = 1) in vec2 tex_coord; +layout(location = 2) in vec3 world_normal; + +layout(location = 0) out vec4 color; + +void main() +{ + vec4 itexel = texture(dstex, normalize(world_normal)); + vec4 texel = texture(tex, tex_coord); + + vec3 object_color = s.diffuse.xyz * texel.xyz * itexel.xyz; + float dist = -pos.z; + float fog = clamp(exp(-s.fog_density * dist), 0.0, 1.0); + + color.xyz = mix(sky_color, object_color, fog); + color.w = 1.0; +}