From a59203b2ebc4f8671d04b743f0c9eb4f40170f3e Mon Sep 17 00:00:00 2001 From: Tomasz Kramkowski Date: Sun, 16 Oct 2022 19:31:21 +0100 Subject: Generate interface block using shaders/data.h --- glprog.c | 10 +++++++++- shaders/data.h | 9 ++++++++- shaders/main/frag.glsl | 9 +-------- shaders/main/vert.glsl | 9 +-------- 4 files changed, 19 insertions(+), 18 deletions(-) diff --git a/glprog.c b/glprog.c index edb819e..58f45f3 100644 --- a/glprog.c +++ b/glprog.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018 Tomasz Kramkowski + * Copyright (C) 2018, 2022 Tomasz Kramkowski * SPDX-License-Identifier: MIT */ #include @@ -28,6 +28,10 @@ static const struct { { GL_VERTEX_SHADER, "vert", true, #define SH_IN(type, name) "in " #type " " #name ";\n" #include "shaders/data.h" + "out iface {\n" +#define SH_IF(type, name) "\t" #type " " #name ";\n" +#include "shaders/data.h" + "} o;\n" }, { GL_TESS_CONTROL_SHADER, "tesc", false, "" }, { GL_TESS_EVALUATION_SHADER, "tese", false, "" }, @@ -36,6 +40,10 @@ static const struct { #define SH_TEX(type, name) "uniform sampler" #type " t" #name ";\n" #define SH_OUT(type, name) "out " #type " " #name ";\n" #include "shaders/data.h" + "in iface {\n" +#define SH_IF(type, name) "\t" #type " " #name ";\n" +#include "shaders/data.h" + "} i;\n" }, }; diff --git a/shaders/data.h b/shaders/data.h index a2d5625..16174b9 100644 --- a/shaders/data.h +++ b/shaders/data.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018 Tomasz Kramkowski + * Copyright (C) 2018, 2022 Tomasz Kramkowski * SPDX-License-Identifier: MIT */ #ifdef SH_PROG @@ -16,6 +16,13 @@ SH_IN(vec2, uv) #undef SH_IN #endif // SH_IN +#ifdef SH_IF + SH_IF(vec3, norm) + SH_IF(vec3, pos) + SH_IF(vec2, uv) + SH_IF(vec3, lipos) +#undef SH_IF +#endif // SH_IF #ifdef SH_UNI SH_UNI(mat4, model) SH_UNI(mat4, view) diff --git a/shaders/main/frag.glsl b/shaders/main/frag.glsl index f6ed7c3..9f8c5de 100644 --- a/shaders/main/frag.glsl +++ b/shaders/main/frag.glsl @@ -1,14 +1,7 @@ /* - * Copyright (C) 2018 Tomasz Kramkowski + * Copyright (C) 2018, 2022 Tomasz Kramkowski * SPDX-License-Identifier: MIT */ -in iface { - vec3 norm; - vec3 pos; - vec2 uv; - vec3 lipos; -} i; - void main() { vec3 fdiff = vec3(texture(tdiff, i.uv)); diff --git a/shaders/main/vert.glsl b/shaders/main/vert.glsl index 3b145e3..39bfc1b 100644 --- a/shaders/main/vert.glsl +++ b/shaders/main/vert.glsl @@ -1,14 +1,7 @@ /* - * Copyright (C) 2018 Tomasz Kramkowski + * Copyright (C) 2018, 2022 Tomasz Kramkowski * SPDX-License-Identifier: MIT */ -out iface { - vec3 norm; - vec3 pos; - vec2 uv; - vec3 lipos; -} o; - void main() { gl_Position = proj * view * model * vec4(pos, 1.0); -- cgit v1.2.3-54-g00ecf