From 28869431fb94502f2be66dadf823c404b304e70b Mon Sep 17 00:00:00 2001 From: bjorn Date: Thu, 15 Sep 2022 20:45:26 -0700 Subject: [PATCH] Fix stereo mirror window; --- etc/shaders.h | 2 +- etc/shaders/{fill_stereo.frag => fill_layer.frag} | 2 +- src/api/l_graphics.c | 2 +- src/modules/graphics/graphics.c | 7 +++---- src/modules/graphics/graphics.h | 2 +- 5 files changed, 7 insertions(+), 8 deletions(-) rename etc/shaders/{fill_stereo.frag => fill_layer.frag} (80%) diff --git a/etc/shaders.h b/etc/shaders.h index e9990d23..447f6800 100644 --- a/etc/shaders.h +++ b/etc/shaders.h @@ -7,7 +7,7 @@ #include "shaders/equirect.frag.h" #include "shaders/fill.vert.h" #include "shaders/fill_array.frag.h" -#include "shaders/fill_stereo.frag.h" +#include "shaders/fill_layer.frag.h" #include "shaders/animator.comp.h" #include "shaders/timewizard.comp.h" #include "shaders/logo.frag.h" diff --git a/etc/shaders/fill_stereo.frag b/etc/shaders/fill_layer.frag similarity index 80% rename from etc/shaders/fill_stereo.frag rename to etc/shaders/fill_layer.frag index 2f0ef3ae..c207b582 100644 --- a/etc/shaders/fill_stereo.frag +++ b/etc/shaders/fill_layer.frag @@ -8,5 +8,5 @@ layout(set = 1, binding = 1) uniform texture2DArray ArrayTexture; vec4 lovrmain() { vec2 uv = vec2(2 * UV.x, UV.y); - return Color * getPixel(ArrayTexture, uv, round(UV.x)); + return Color * getPixel(ArrayTexture, uv, 0); } diff --git a/src/api/l_graphics.c b/src/api/l_graphics.c index 091d399c..e3c938a9 100644 --- a/src/api/l_graphics.c +++ b/src/api/l_graphics.c @@ -60,7 +60,7 @@ StringEntry lovrDefaultShader[] = { [SHADER_EQUIRECT] = ENTRY("equirect"), [SHADER_FILL] = ENTRY("fill"), [SHADER_FILL_ARRAY] = ENTRY("fillarray"), - [SHADER_FILL_STEREO] = ENTRY("fillstereo"), + [SHADER_FILL_LAYER] = ENTRY("filllayer"), [SHADER_LOGO] = ENTRY("logo"), { 0 } }; diff --git a/src/modules/graphics/graphics.c b/src/modules/graphics/graphics.c index 928b56e9..811f4264 100644 --- a/src/modules/graphics/graphics.c +++ b/src/modules/graphics/graphics.c @@ -1627,9 +1627,9 @@ ShaderSource lovrGraphicsGetDefaultShaderSource(DefaultShader type, ShaderStage { lovr_shader_fill_vert, sizeof(lovr_shader_fill_vert) }, { lovr_shader_fill_array_frag, sizeof(lovr_shader_fill_array_frag) } }, - [SHADER_FILL_STEREO] = { + [SHADER_FILL_LAYER] = { { lovr_shader_fill_vert, sizeof(lovr_shader_fill_vert) }, - { lovr_shader_fill_stereo_frag, sizeof(lovr_shader_fill_stereo_frag) } + { lovr_shader_fill_layer_frag, sizeof(lovr_shader_fill_layer_frag) } }, [SHADER_LOGO] = { { lovr_shader_unlit_vert, sizeof(lovr_shader_unlit_vert) }, @@ -5026,8 +5026,7 @@ void lovrPassFill(Pass* pass, Texture* texture) { lovrCheck(texture->info.layers == pass->viewCount, "Texture layer counts must match to fill between them"); shader = SHADER_FILL_ARRAY; } else if (pass->viewCount == 1 && texture->info.layers > 1) { - lovrCheck(texture->info.layers == 2, "To draw an array texture to a mono texture, it must have 2 layers"); - shader = SHADER_FILL_STEREO; + shader = SHADER_FILL_LAYER; } else { lovrUnreachable(); } diff --git a/src/modules/graphics/graphics.h b/src/modules/graphics/graphics.h index 04ed5b11..41a13e9f 100644 --- a/src/modules/graphics/graphics.h +++ b/src/modules/graphics/graphics.h @@ -275,7 +275,7 @@ typedef enum { SHADER_EQUIRECT, SHADER_FILL, SHADER_FILL_ARRAY, - SHADER_FILL_STEREO, + SHADER_FILL_LAYER, SHADER_LOGO, DEFAULT_SHADER_COUNT } DefaultShader;