now we have UBOs/GLSL450 we can use the same shaders for every backend
authorEleni Maria Stea <estea@igalia.com>
Thu, 15 Mar 2018 10:53:21 +0000 (12:53 +0200)
committerEleni Maria Stea <estea@igalia.com>
Thu, 15 Mar 2018 10:53:21 +0000 (12:53 +0200)
25 files changed:
gl_shaders/debug.f.glsl [deleted file]
gl_shaders/debug.v.glsl [deleted file]
gl_shaders/default.f.glsl [deleted file]
gl_shaders/default.v.glsl [deleted file]
gl_shaders/morphing.f.glsl [deleted file]
gl_shaders/morphing.v.glsl [deleted file]
gl_shaders/sky.f.glsl [deleted file]
gl_shaders/sky.v.glsl [deleted file]
shaders/debug.f.glsl [new file with mode: 0644]
shaders/debug.v.glsl [new file with mode: 0644]
shaders/default.f.glsl [new file with mode: 0644]
shaders/default.v.glsl [new file with mode: 0644]
shaders/morphing.f.glsl [new file with mode: 0644]
shaders/morphing.v.glsl [new file with mode: 0644]
shaders/sky.f.glsl [new file with mode: 0644]
shaders/sky.v.glsl [new file with mode: 0644]
src/gfxapi.cc
vk_shaders/debug.f.glsl [deleted file]
vk_shaders/debug.v.glsl [deleted file]
vk_shaders/default.f.glsl [deleted file]
vk_shaders/default.v.glsl [deleted file]
vk_shaders/morphing.f.glsl [deleted file]
vk_shaders/morphing.v.glsl [deleted file]
vk_shaders/sky.f.glsl [deleted file]
vk_shaders/sky.v.glsl [deleted file]

diff --git a/gl_shaders/debug.f.glsl b/gl_shaders/debug.f.glsl
deleted file mode 100644 (file)
index 79bdba6..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#version 450
-
-out vec4 color;
-
-void main()
-{
-       color = vec4(1.0, 0.0, 1.0, 1.0);
-}
diff --git a/gl_shaders/debug.v.glsl b/gl_shaders/debug.v.glsl
deleted file mode 100644 (file)
index 8ec32dd..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#version 450
-
-uniform mat4 mmviewproj;
-
-layout(location = 1) in vec3 attr_pos;
-
-void main()
-{
-       gl_Position = mmviewproj * vec4(attr_pos, 1.0);
-}
diff --git a/gl_shaders/default.f.glsl b/gl_shaders/default.f.glsl
deleted file mode 100644 (file)
index fe78fbc..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#version 450
-
-#define SHADING_UNIFORMS 1
-
-layout(binding = 0) uniform sampler2D tex;
-layout(binding = 1) uniform samplerCube dstex;
-
-layout(std140, binding = SHADING_UNIFORMS) uniform fu {
-       vec4 diffuse;
-       vec4 specular;
-       float shininess;
-       float fog_density;
-} s;
-
-const vec3 sky_color = vec3(0.35, 0.5, 0.65);
-// const float fog_density = 0.005;
-
-/* varyings */
-layout(location = 4) in vec3 pos;
-layout(location = 5) in vec2 tex_coord;
-layout(location = 6) in vec3 world_normal;
-
-layout(location = 0) out vec4 color;
-
-void main()
-{
-       vec4 itexel = textureCube(dstex, normalize(world_normal));
-
-       float dist = -pos.z;
-       float fog = clamp(exp(-s.fog_density * dist), 0.0, 1.0);
-
-       vec4 texel = texture2D(tex, tex_coord);
-
-       // vec3 object_color = (diffuse.xyz * cdiff * texel.xyz + specular.xyz * cspec) * itexel.xyz;
-       vec3 object_color = s.diffuse.xyz * texel.xyz * itexel.xyz;
-
-       color.xyz = mix(sky_color, object_color, fog);
-       color.w = 1.0;
-}
diff --git a/gl_shaders/default.v.glsl b/gl_shaders/default.v.glsl
deleted file mode 100644 (file)
index b550308..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#version 450
-
-#define        MATRIX_UNIFORMS 0
-
-layout(std140, binding = MATRIX_UNIFORMS) uniform vu {
-       mat4 mview;
-       uniform mat4 mmviewproj;
-       uniform mat4 mmod;
-} m;
-
-const vec3 lpos = vec3(-10.0, 100.0, 10.0);
-
-/* attributes */
-layout(location = 1) in vec3 attr_pos;
-layout(location = 2) in vec3 attr_normal;
-layout(location = 3) in vec2 attr_tex;
-
-/* varyings */
-layout(location = 4) out vec3 pos;
-layout(location = 5) out vec2 tex_coord;
-layout(location = 6) out vec3 world_normal;
-
-void main()
-{
-       gl_Position = m.mmviewproj * vec4(attr_pos, 1.0);
-
-       pos = (m.mview * vec4(attr_pos, 1.0)).xyz;
-       tex_coord = attr_tex;
-
-       world_normal = (m.mmod * vec4(attr_normal, 1.0)).xyz;
-}
diff --git a/gl_shaders/morphing.f.glsl b/gl_shaders/morphing.f.glsl
deleted file mode 100644 (file)
index de6dda9..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#version 450
-
-#define SHADING_UNIFORMS 1
-
-layout(binding = 0) uniform sampler2D tex;
-layout(binding = 1) uniform samplerCube dstex;
-
-layout(std140, binding = SHADING_UNIFORMS) uniform fu {
-       vec4 diffuse;
-       vec4 specular;
-       float shininess;
-       float fog_density;
-} s;
-
-/* varyings */
-layout(location = 4) in vec3 pos;
-layout(location = 5) in vec2 tex_coord;
-layout(location = 6) in vec3 world_normal; 
-
-layout(location = 0) out vec4 color;
-
-const vec3 sky_color = vec3(0.35, 0.5, 0.65);
-
-void main()
-{
-       vec4 itexel = textureCube(dstex, normalize(world_normal));
-       vec4 texel = texture2D(tex, tex_coord);
-       vec3 object_color = s.diffuse.xyz * texel.xyz * itexel.xyz;
-       float dist = -pos.z;
-       float fog = clamp(exp(-s.fog_density * dist), 0.0, 1.0);
-
-       color.xyz = mix(sky_color, object_color, fog);
-       color.w = 1.0;
-}
diff --git a/gl_shaders/morphing.v.glsl b/gl_shaders/morphing.v.glsl
deleted file mode 100644 (file)
index 80b7e39..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#version 450
-
-#define MATRIX_UNIFORMS 0
-#define MORPHING_UNIFORMS 3
-
-layout(std140, binding = MATRIX_UNIFORMS) uniform vu {
-       mat4 mview;
-       uniform mat4 mmviewproj;
-       uniform mat4 mmod;
-} m;
-
-layout(std140, binding = MORPHING_UNIFORMS) uniform mvu {
-       float t;
-} time;
-
-/* attributes */
-layout(location = 1) in vec3 attr_pos;
-layout(location = 2) in vec3 attr_normal;
-layout(location = 3) in vec2 attr_tex;
-
-/* varyings */
-layout(location = 4) out vec3 pos;
-layout(location = 5) out vec2 tex_coord;
-layout(location = 6) out vec3 world_normal; 
-
-const float half_height = 0.855;
-
-void main()
-{
-       vec3 sph_pos = normalize(vec3(attr_pos.x, attr_pos.y - half_height, attr_pos.z));
-
-       vec3 sph_normal = sph_pos;
-       sph_pos.y += half_height;
-
-       vec3 p = mix(attr_pos, sph_pos, time.t);
-       vec3 n = mix(attr_normal, sph_normal, time.t);
-
-       gl_Position = m.mmviewproj * vec4(p, 1.0);
-
-       pos = (m.mview * vec4(p, 1.0)).xyz;
-
-       tex_coord = attr_tex;
-       world_normal = (m.mmod * vec4(attr_normal, 1.0)).xyz;
-}
diff --git a/gl_shaders/sky.f.glsl b/gl_shaders/sky.f.glsl
deleted file mode 100644 (file)
index 688da43..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#version 450
-
-layout(binding = 0) uniform samplerCube stex;
-
-in vec3 normal;
-out vec4 color;
-
-void main()
-{
-       vec4 texel = textureCube(stex, normalize(normal));
-
-       color.rgb = texel.rgb;
-       color.a = 1.0;
-}
diff --git a/gl_shaders/sky.v.glsl b/gl_shaders/sky.v.glsl
deleted file mode 100644 (file)
index f5ba24f..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#version 450
-
-#define SKY_MATRIX_UNIFORMS 2
-
-layout(std140, binding = SKY_MATRIX_UNIFORMS) uniform svu {
-       mat4 mviewproj;
-} s;
-
-
-layout(location = 1) in vec3 attr_pos;
-layout(location = 2) in vec3 attr_normal;
-
-out vec3 normal;
-
-void main()
-{
-       gl_Position = s.mviewproj * vec4(attr_pos, 1.0);
-       normal = attr_normal;
-}
diff --git a/shaders/debug.f.glsl b/shaders/debug.f.glsl
new file mode 100644 (file)
index 0000000..79bdba6
--- /dev/null
@@ -0,0 +1,8 @@
+#version 450
+
+out vec4 color;
+
+void main()
+{
+       color = vec4(1.0, 0.0, 1.0, 1.0);
+}
diff --git a/shaders/debug.v.glsl b/shaders/debug.v.glsl
new file mode 100644 (file)
index 0000000..8ec32dd
--- /dev/null
@@ -0,0 +1,10 @@
+#version 450
+
+uniform mat4 mmviewproj;
+
+layout(location = 1) in vec3 attr_pos;
+
+void main()
+{
+       gl_Position = mmviewproj * vec4(attr_pos, 1.0);
+}
diff --git a/shaders/default.f.glsl b/shaders/default.f.glsl
new file mode 100644 (file)
index 0000000..fe78fbc
--- /dev/null
@@ -0,0 +1,39 @@
+#version 450
+
+#define SHADING_UNIFORMS 1
+
+layout(binding = 0) uniform sampler2D tex;
+layout(binding = 1) uniform samplerCube dstex;
+
+layout(std140, binding = SHADING_UNIFORMS) uniform fu {
+       vec4 diffuse;
+       vec4 specular;
+       float shininess;
+       float fog_density;
+} s;
+
+const vec3 sky_color = vec3(0.35, 0.5, 0.65);
+// const float fog_density = 0.005;
+
+/* varyings */
+layout(location = 4) in vec3 pos;
+layout(location = 5) in vec2 tex_coord;
+layout(location = 6) in vec3 world_normal;
+
+layout(location = 0) out vec4 color;
+
+void main()
+{
+       vec4 itexel = textureCube(dstex, normalize(world_normal));
+
+       float dist = -pos.z;
+       float fog = clamp(exp(-s.fog_density * dist), 0.0, 1.0);
+
+       vec4 texel = texture2D(tex, tex_coord);
+
+       // vec3 object_color = (diffuse.xyz * cdiff * texel.xyz + specular.xyz * cspec) * itexel.xyz;
+       vec3 object_color = s.diffuse.xyz * texel.xyz * itexel.xyz;
+
+       color.xyz = mix(sky_color, object_color, fog);
+       color.w = 1.0;
+}
diff --git a/shaders/default.v.glsl b/shaders/default.v.glsl
new file mode 100644 (file)
index 0000000..b550308
--- /dev/null
@@ -0,0 +1,31 @@
+#version 450
+
+#define        MATRIX_UNIFORMS 0
+
+layout(std140, binding = MATRIX_UNIFORMS) uniform vu {
+       mat4 mview;
+       uniform mat4 mmviewproj;
+       uniform mat4 mmod;
+} m;
+
+const vec3 lpos = vec3(-10.0, 100.0, 10.0);
+
+/* attributes */
+layout(location = 1) in vec3 attr_pos;
+layout(location = 2) in vec3 attr_normal;
+layout(location = 3) in vec2 attr_tex;
+
+/* varyings */
+layout(location = 4) out vec3 pos;
+layout(location = 5) out vec2 tex_coord;
+layout(location = 6) out vec3 world_normal;
+
+void main()
+{
+       gl_Position = m.mmviewproj * vec4(attr_pos, 1.0);
+
+       pos = (m.mview * vec4(attr_pos, 1.0)).xyz;
+       tex_coord = attr_tex;
+
+       world_normal = (m.mmod * vec4(attr_normal, 1.0)).xyz;
+}
diff --git a/shaders/morphing.f.glsl b/shaders/morphing.f.glsl
new file mode 100644 (file)
index 0000000..de6dda9
--- /dev/null
@@ -0,0 +1,34 @@
+#version 450
+
+#define SHADING_UNIFORMS 1
+
+layout(binding = 0) uniform sampler2D tex;
+layout(binding = 1) uniform samplerCube dstex;
+
+layout(std140, binding = SHADING_UNIFORMS) uniform fu {
+       vec4 diffuse;
+       vec4 specular;
+       float shininess;
+       float fog_density;
+} s;
+
+/* varyings */
+layout(location = 4) in vec3 pos;
+layout(location = 5) in vec2 tex_coord;
+layout(location = 6) in vec3 world_normal; 
+
+layout(location = 0) out vec4 color;
+
+const vec3 sky_color = vec3(0.35, 0.5, 0.65);
+
+void main()
+{
+       vec4 itexel = textureCube(dstex, normalize(world_normal));
+       vec4 texel = texture2D(tex, tex_coord);
+       vec3 object_color = s.diffuse.xyz * texel.xyz * itexel.xyz;
+       float dist = -pos.z;
+       float fog = clamp(exp(-s.fog_density * dist), 0.0, 1.0);
+
+       color.xyz = mix(sky_color, object_color, fog);
+       color.w = 1.0;
+}
diff --git a/shaders/morphing.v.glsl b/shaders/morphing.v.glsl
new file mode 100644 (file)
index 0000000..80b7e39
--- /dev/null
@@ -0,0 +1,44 @@
+#version 450
+
+#define MATRIX_UNIFORMS 0
+#define MORPHING_UNIFORMS 3
+
+layout(std140, binding = MATRIX_UNIFORMS) uniform vu {
+       mat4 mview;
+       uniform mat4 mmviewproj;
+       uniform mat4 mmod;
+} m;
+
+layout(std140, binding = MORPHING_UNIFORMS) uniform mvu {
+       float t;
+} time;
+
+/* attributes */
+layout(location = 1) in vec3 attr_pos;
+layout(location = 2) in vec3 attr_normal;
+layout(location = 3) in vec2 attr_tex;
+
+/* varyings */
+layout(location = 4) out vec3 pos;
+layout(location = 5) out vec2 tex_coord;
+layout(location = 6) out vec3 world_normal; 
+
+const float half_height = 0.855;
+
+void main()
+{
+       vec3 sph_pos = normalize(vec3(attr_pos.x, attr_pos.y - half_height, attr_pos.z));
+
+       vec3 sph_normal = sph_pos;
+       sph_pos.y += half_height;
+
+       vec3 p = mix(attr_pos, sph_pos, time.t);
+       vec3 n = mix(attr_normal, sph_normal, time.t);
+
+       gl_Position = m.mmviewproj * vec4(p, 1.0);
+
+       pos = (m.mview * vec4(p, 1.0)).xyz;
+
+       tex_coord = attr_tex;
+       world_normal = (m.mmod * vec4(attr_normal, 1.0)).xyz;
+}
diff --git a/shaders/sky.f.glsl b/shaders/sky.f.glsl
new file mode 100644 (file)
index 0000000..688da43
--- /dev/null
@@ -0,0 +1,14 @@
+#version 450
+
+layout(binding = 0) uniform samplerCube stex;
+
+in vec3 normal;
+out vec4 color;
+
+void main()
+{
+       vec4 texel = textureCube(stex, normalize(normal));
+
+       color.rgb = texel.rgb;
+       color.a = 1.0;
+}
diff --git a/shaders/sky.v.glsl b/shaders/sky.v.glsl
new file mode 100644 (file)
index 0000000..f5ba24f
--- /dev/null
@@ -0,0 +1,19 @@
+#version 450
+
+#define SKY_MATRIX_UNIFORMS 2
+
+layout(std140, binding = SKY_MATRIX_UNIFORMS) uniform svu {
+       mat4 mviewproj;
+} s;
+
+
+layout(location = 1) in vec3 attr_pos;
+layout(location = 2) in vec3 attr_normal;
+
+out vec3 normal;
+
+void main()
+{
+       gl_Position = s.mviewproj * vec4(attr_pos, 1.0);
+       normal = attr_normal;
+}
index e9f0f73..f50a317 100644 (file)
@@ -114,9 +114,9 @@ char *gfx_get_shader_path()
 {
        switch(api) {
        case GFX_GL:
-               return (char *)"gl_shaders";
+               return (char *)"shaders";
        case GFX_VK:
-               return (char *)"vk_shaders/spirv";
+               return (char *)"shaders/spirv";
        }
        return (char *)"";
 }
diff --git a/vk_shaders/debug.f.glsl b/vk_shaders/debug.f.glsl
deleted file mode 100644 (file)
index 79bdba6..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#version 450
-
-out vec4 color;
-
-void main()
-{
-       color = vec4(1.0, 0.0, 1.0, 1.0);
-}
diff --git a/vk_shaders/debug.v.glsl b/vk_shaders/debug.v.glsl
deleted file mode 100644 (file)
index 8ec32dd..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#version 450
-
-uniform mat4 mmviewproj;
-
-layout(location = 1) in vec3 attr_pos;
-
-void main()
-{
-       gl_Position = mmviewproj * vec4(attr_pos, 1.0);
-}
diff --git a/vk_shaders/default.f.glsl b/vk_shaders/default.f.glsl
deleted file mode 100644 (file)
index 6f3e896..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-#version 450
-
-layout(binding = 0) uniform sampler2D tex;
-layout(binding = 0) uniform samplerCube dstex;
-
-layout(std140, binding = 0) uniform shading_state {
-       vec4 diffuse;
-       vec4 specular;
-       float shininess;
-       float fog_density;
-} s;
-
-layout(location = 0) in vec3 pos;
-layout(location = 1) in vec2 tex_coord;
-layout(location = 2) in vec3 world_normal;
-
-// const float fog_density = 0.005;
-const vec3 sky_color = vec3(0.35, 0.5, 0.65);
-
-layout(location = 0) out vec4 color;
-
-void main()
-{
-       /*vec4 itexel = textureCube(dstex, normalize(world_normal)); */
-       vec4 itexel = texture(dstex, normalize(world_normal));
-
-/*     vec3 p = normalize(pos); // view space dir
-       vec3 n = normalize(normal);
-       vec3 l = normalize(ldir);
-
-       vec3 r = normalize(-reflect(l, n));
-       vec3 vdir = normalize(-p);
-
-       float cdiff = max(dot(l, n), 0.0);
-       float cspec = pow(max(dot(r, vdir), 0.0), shininess);
-*/
-
-       float dist = -pos.z;
-       float fog = clamp(exp(-s.fog_density * dist), 0.0, 1.0);
-
-       vec4 texel = texture(tex, tex_coord);
-
-       // vec3 object_color = (diffuse.xyz * cdiff * texel.xyz + specular.xyz * cspec) * itexel.xyz;
-       vec3 object_color = s.diffuse.xyz * texel.xyz * itexel.xyz;
-
-       color.xyz = mix(sky_color, object_color, fog);
-       color.w = 1.0;
-}
diff --git a/vk_shaders/default.v.glsl b/vk_shaders/default.v.glsl
deleted file mode 100644 (file)
index 2548deb..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#version 450
-//#extension GL_ARB_separate_shader_objects : enable
-
-layout(std140, binding = 0) uniform matrix_state {
-       uniform mat4 mview;
-       uniform mat4 mmviewproj;
-       uniform mat4 mmod;
-} m;
-
-layout(location = 0) out vec3 pos;
-layout(location = 1) out vec2 tex_coord;
-layout(location = 2) out vec3 world_normal;
-
-const vec3 lpos = vec3(-10.0, 100.0, 10.0);
-
-/* attributes */
-layout(location = 1) in vec3 attr_pos;
-layout(location = 2) in vec3 attr_normal;
-layout(location = 3) in vec2 attr_tex;
-
-void main()
-{
-       gl_Position = m.mmviewproj * vec4(attr_pos, 1.0);
-
-       pos = (m.mview * vec4(attr_pos, 1.0)).xyz;
-       tex_coord = attr_tex;
-
-       world_normal = (m.mmod * vec4(attr_normal, 1.0)).xyz;
-}
diff --git a/vk_shaders/morphing.f.glsl b/vk_shaders/morphing.f.glsl
deleted file mode 100644 (file)
index 25b374a..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#version 450
-
-layout(binding = 0) uniform sampler2D tex;
-layout(binding = 0) uniform samplerCube dstex;
-
-layout(std140, binding = 0) uniform shading_state {
-       vec4 diffuse;
-       float fog_density;
-} s;
-
-const vec3 sky_color = vec3(0.35, 0.5, 0.65);
-
-layout(location = 0) in vec3 pos;
-layout(location = 1) in vec2 tex_coord;
-layout(location = 2) in vec3 world_normal;
-
-layout(location = 0) out vec4 color;
-
-void main()
-{
-       vec4 itexel = texture(dstex, normalize(world_normal));
-       vec4 texel = texture(tex, tex_coord);
-
-       vec3 object_color = s.diffuse.xyz * texel.xyz * itexel.xyz;
-       float dist = -pos.z;
-       float fog = clamp(exp(-s.fog_density * dist), 0.0, 1.0);
-
-       color.xyz = mix(sky_color, object_color, fog);
-       color.w = 1.0;
-}
diff --git a/vk_shaders/morphing.v.glsl b/vk_shaders/morphing.v.glsl
deleted file mode 100644 (file)
index a93a40f..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-#version 450
-
-layout(std140, binding = 0) uniform matrix_state {
-       mat4 mview;
-       mat4 mmviewproj;
-       mat4 mmod;
-       float t;
-} m;
-
-const float half_height = 0.855;
-
-layout(location = 0) out vec3 pos;
-layout(location = 1) out vec2 tex_coord;
-layout(location = 2) out vec3 world_normal;
-
-/* attributes */
-layout(location = 1) in vec3 attr_pos;
-layout(location = 2) in vec3 attr_normal;
-layout(location = 3) in vec2 attr_tex;
-
-void main()
-{
-       vec3 sph_pos = normalize(vec3(attr_pos.x, attr_pos.y - half_height, attr_pos.z));
-
-       vec3 sph_normal = sph_pos;
-       sph_pos.y += half_height;
-
-       vec3 p = mix(attr_pos, sph_pos, m.t);
-       vec3 n = mix(attr_normal, sph_normal, m.t);
-
-       gl_Position = m.mmviewproj * vec4(p, 1.0);
-
-       pos = (m.mview * vec4(p, 1.0)).xyz;
-       // ldir = (mview * vec4(lpos, 1.0)).xyz;
-
-       // mat3 normal_matrix = mat3(mview);
-       // normal = normal_matrix * n;
-
-       tex_coord = attr_tex;
-       world_normal = (m.mmod * vec4(attr_normal, 1.0)).xyz;
-}
diff --git a/vk_shaders/sky.f.glsl b/vk_shaders/sky.f.glsl
deleted file mode 100644 (file)
index 07d63d2..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#version 450
-
-layout(binding = 0) uniform samplerCube stex;
-
-layout (location = 0) in vec3 normal;
-layout (location = 0) out vec4 color;
-
-void main()
-{
-       vec4 texel = texture(stex, normalize(normal));
-
-       color.rgb = texel.rgb;
-       color.a = 1.0;
-}
diff --git a/vk_shaders/sky.v.glsl b/vk_shaders/sky.v.glsl
deleted file mode 100644 (file)
index 6c70245..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#version 450
-
-layout(binding = 0) uniform matrix_state {
-       mat4 mviewproj;
-} m;
-
-layout(location = 1) in vec3 attr_pos;
-layout(location = 2) in vec3 attr_normal;
-
-layout(location = 0) out vec3 normal;
-
-void main()
-{
-       gl_Position = m.mviewproj * vec4(attr_pos, 1.0);
-       normal = attr_normal;
-}