SuperTuxKart 1.5 upstream source (from official release tarball)
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
layout(location = 0) in vec4 f_vertex_color;
|
||||
layout(location = 1) in vec2 f_uv;
|
||||
layout(location = 3) flat in int f_material_id;
|
||||
|
||||
layout(location = 0) out vec4 o_color;
|
||||
|
||||
layout(push_constant) uniform Constants
|
||||
{
|
||||
vec4 m_displace_direction;
|
||||
} u_push_constants;
|
||||
|
||||
#include "utils/camera.glsl"
|
||||
#include "utils/constants_utils.glsl"
|
||||
#include "utils/sample_mesh_texture.glsl"
|
||||
#include "../utils/displace_utils.frag"
|
||||
|
||||
layout (set = 3, binding = 0) uniform sampler2D u_displace_mask;
|
||||
layout (set = 3, binding = 1) uniform sampler2D u_displace_ssr;
|
||||
|
||||
void main()
|
||||
{
|
||||
#ifdef PBR_ENABLED
|
||||
vec4 color = sampleMeshTexture0(f_material_id, f_uv) * f_vertex_color;
|
||||
vec3 mixed_color = color.xyz;
|
||||
float alpha = color.w;
|
||||
mixed_color = convertColor(mixed_color);
|
||||
if (u_ssr)
|
||||
{
|
||||
float alpha = sampleMeshTexture0(f_material_id, f_uv).a;
|
||||
if (alpha == 0.0)
|
||||
{
|
||||
o_color = vec4(mixed_color * alpha, alpha);
|
||||
return;
|
||||
}
|
||||
float horiz = sampleMeshTexture2(f_material_id, f_uv + u_push_constants.m_displace_direction.xy * 150.).x;
|
||||
float vert = sampleMeshTexture2(f_material_id, (f_uv.yx + u_push_constants.m_displace_direction.zw * 150.) * vec2(0.9)).x;
|
||||
vec2 shift = getDisplaceShift(horiz, vert);
|
||||
ivec2 uv = getDisplaceUV(shift, u_camera.m_viewport, u_displace_mask);
|
||||
vec3 reflection = texelFetch(u_displace_ssr, uv, 0).xyz;
|
||||
o_color = vec4(mixed_color * alpha * 0.5 + reflection * alpha * 0.5 ,
|
||||
alpha);
|
||||
}
|
||||
else
|
||||
{
|
||||
o_color = vec4(mixed_color * alpha, alpha);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
Reference in New Issue
Block a user