1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-02-20 19:54:19 +01:00

[dxvk] Optimize meta geometry shaders

This commit is contained in:
Philip Rebohle 2019-03-25 15:30:34 +01:00
parent be1832a348
commit fd0daa5ec7
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
2 changed files with 27 additions and 27 deletions

View File

@ -1,25 +1,26 @@
#version 450
layout(points) in;
layout(triangle_strip, max_vertices = 4) out;
layout(triangle_strip, max_vertices = 3) out;
layout(location = 0) in int i_instance[1];
layout(location = 0) out vec3 o_pos;
const vec4 g_vpos[4] = {
vec4(-1.0f, -1.0f, 0.0f, 1.0f),
vec4(-1.0f, 1.0f, 0.0f, 1.0f),
vec4( 1.0f, -1.0f, 0.0f, 1.0f),
vec4( 1.0f, 1.0f, 0.0f, 1.0f),
};
void main() {
for (int i = 0; i < 4; i++) {
o_pos = vec3(0.5f + 0.5f * g_vpos[i].xy, float(i_instance[0]));
gl_Position = g_vpos[i];
gl_Layer = i_instance[0];
EmitVertex();
}
gl_Position = vec4(-1.0f, 3.0f, 0.0f, 1.0f);
gl_Layer = i_instance[0];
o_pos = vec3(0.0f, 2.0f, float(i_instance[0]));
EmitVertex();
gl_Position = vec4(-1.0f, -1.0f, 0.0f, 1.0f);
gl_Layer = i_instance[0];
o_pos = vec3(0.0f, 0.0f, float(i_instance[0]));
EmitVertex();
gl_Position = vec4( 3.0f, -1.0f, 0.0f, 1.0f);
gl_Layer = i_instance[0];
o_pos = vec3(2.0f, 0.0f, float(i_instance[0]));
EmitVertex();
EndPrimitive();
}

View File

@ -1,23 +1,22 @@
#version 450
layout(points) in;
layout(triangle_strip, max_vertices = 4) out;
layout(triangle_strip, max_vertices = 3) out;
layout(location = 0) in int i_instance[1];
const vec4 g_vpos[4] = {
vec4(-1.0f, -1.0f, 0.0f, 1.0f),
vec4(-1.0f, 1.0f, 0.0f, 1.0f),
vec4( 1.0f, -1.0f, 0.0f, 1.0f),
vec4( 1.0f, 1.0f, 0.0f, 1.0f),
};
void main() {
for (int i = 0; i < 4; i++) {
gl_Position = g_vpos[i];
gl_Layer = i_instance[0];
EmitVertex();
}
gl_Position = vec4(-1.0f, 3.0f, 0.0f, 1.0f);
gl_Layer = i_instance[0];
EmitVertex();
gl_Position = vec4(-1.0f, -1.0f, 0.0f, 1.0f);
gl_Layer = i_instance[0];
EmitVertex();
gl_Position = vec4( 3.0f, -1.0f, 0.0f, 1.0f);
gl_Layer = i_instance[0];
EmitVertex();
EndPrimitive();
}