vulkan: Split generic code off
No need to duplicate code in shaders when it can be shared.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
#version 420 core
|
||||
|
||||
#include "clip.vert.glsl"
|
||||
#include "common.vert.glsl"
|
||||
#include "rect.vert.glsl"
|
||||
|
||||
layout(location = 0) in vec4 inRect;
|
||||
@@ -10,19 +10,9 @@ layout(location = 0) out vec2 outPos;
|
||||
layout(location = 1) out flat Rect outRect;
|
||||
layout(location = 2) out flat vec4 outColor;
|
||||
|
||||
vec2 offsets[6] = { vec2(0.0, 0.0),
|
||||
vec2(1.0, 0.0),
|
||||
vec2(0.0, 1.0),
|
||||
vec2(0.0, 1.0),
|
||||
vec2(1.0, 0.0),
|
||||
vec2(1.0, 1.0) };
|
||||
|
||||
void main() {
|
||||
Rect rect = rect_round_larger (clip_rect (rect_from_gsk (inRect)));
|
||||
|
||||
vec2 pos = mix (rect.bounds.xy, rect.bounds.zw, offsets[gl_VertexIndex]);
|
||||
gl_Position = push.mvp * vec4 (pos, 0.0, 1.0);
|
||||
outPos = pos;
|
||||
outRect = rect_from_gsk (inRect);
|
||||
Rect r = rect_from_gsk (inRect);
|
||||
outPos = set_position_from_rect (r);
|
||||
outRect = r;
|
||||
outColor = inColor;
|
||||
}
|
||||
|
||||
34
gsk/vulkan/resources/common.vert.glsl
Normal file
34
gsk/vulkan/resources/common.vert.glsl
Normal file
@@ -0,0 +1,34 @@
|
||||
#ifndef _COMMON_VERT_
|
||||
#define _COMMON_VERT_
|
||||
|
||||
#include "clip.vert.glsl"
|
||||
#include "constants.glsl"
|
||||
#include "rect.glsl"
|
||||
|
||||
vec2 offsets[6] = { vec2(0.0, 0.0),
|
||||
vec2(1.0, 0.0),
|
||||
vec2(0.0, 1.0),
|
||||
vec2(0.0, 1.0),
|
||||
vec2(1.0, 0.0),
|
||||
vec2(1.0, 1.0) };
|
||||
|
||||
vec2
|
||||
set_position_from_rect (Rect rect)
|
||||
{
|
||||
Rect r = rect_round_larger (clip_rect (rect));
|
||||
|
||||
vec2 pos = mix (r.bounds.xy, r.bounds.zw, offsets[gl_VertexIndex]);
|
||||
gl_Position = push.mvp * vec4 (pos, 0.0, 1.0);
|
||||
|
||||
return pos;
|
||||
}
|
||||
|
||||
vec2
|
||||
scale_tex_coord (vec2 in_pos,
|
||||
Rect in_rect,
|
||||
vec4 tex_rect)
|
||||
{
|
||||
return tex_rect.xy + (in_pos - in_rect.bounds.xy) / rect_size (in_rect) * tex_rect.zw;
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -1,6 +1,7 @@
|
||||
gsk_private_vulkan_include_shaders = [
|
||||
'clip.frag.glsl',
|
||||
'clip.vert.glsl',
|
||||
'common.vert.glsl',
|
||||
'constants.glsl',
|
||||
'rect.glsl',
|
||||
'rect.frag.glsl',
|
||||
|
||||
Reference in New Issue
Block a user