1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-02-21 22:54:16 +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 #version 450
layout(points) in; 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) in int i_instance[1];
layout(location = 0) out vec3 o_pos; 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() { void main() {
for (int i = 0; i < 4; i++) { gl_Position = vec4(-1.0f, 3.0f, 0.0f, 1.0f);
o_pos = vec3(0.5f + 0.5f * g_vpos[i].xy, float(i_instance[0])); gl_Layer = i_instance[0];
gl_Position = g_vpos[i]; o_pos = vec3(0.0f, 2.0f, float(i_instance[0]));
gl_Layer = i_instance[0]; EmitVertex();
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(); EndPrimitive();
} }

View File

@ -1,23 +1,22 @@
#version 450 #version 450
layout(points) in; 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) 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() { void main() {
for (int i = 0; i < 4; i++) { gl_Position = vec4(-1.0f, 3.0f, 0.0f, 1.0f);
gl_Position = g_vpos[i]; gl_Layer = i_instance[0];
gl_Layer = i_instance[0]; EmitVertex();
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(); EndPrimitive();
} }