diff --git a/projects/mesh_shader/resources/shaders/shader.mesh b/projects/mesh_shader/resources/shaders/shader.mesh
index c9039c1179aad7b9e45e2fda62a1e5fbd202f08f..4f6e1fa572f7501cbb35006f93cfcce6753298aa 100644
--- a/projects/mesh_shader/resources/shaders/shader.mesh
+++ b/projects/mesh_shader/resources/shaders/shader.mesh
@@ -7,12 +7,16 @@ layout(local_size_x=32) in;
 layout(triangles) out;
 layout(max_vertices=64, max_primitives=126) out;
 
+layout( push_constant ) uniform constants{
+    mat4 mvp;
+};
+
 // out uint gl_PrimitiveCountNV;
 // out uint gl_PrimitiveIndicesNV[];
 
-out gl_MeshPerVertexNV {
-    vec4 gl_Position;
-} gl_MeshVerticesNV[];
+//out gl_MeshPerVertexNV {
+//    vec4 gl_Position;
+//} gl_MeshVerticesNV[];
 
 void main()	{
 	if(gl_LocalInvocationID.x == 0)
@@ -22,8 +26,8 @@ void main()	{
 		gl_PrimitiveIndicesNV[1] = 1;
 		gl_PrimitiveIndicesNV[2] = 2;
 		
-		gl_MeshVerticesNV[0].gl_Position = vec4(-0.5,  0.5, 0.5, 1);
-		gl_MeshVerticesNV[1].gl_Position = vec4( 0.5,  0.5, 0.5, 1);
-		gl_MeshVerticesNV[2].gl_Position = vec4( 0  , -0.5, 0.5, 1);
+		gl_MeshVerticesNV[0].gl_Position = mvp * vec4(-0.5,  0.5, 0.5, 1);
+		gl_MeshVerticesNV[1].gl_Position = mvp * vec4( 0.5,  0.5, 0.5, 1);
+		gl_MeshVerticesNV[2].gl_Position = mvp * vec4( 0  , -0.5, 0.5, 1);
 	}
 }
\ No newline at end of file
diff --git a/projects/mesh_shader/src/main.cpp b/projects/mesh_shader/src/main.cpp
index 6fa6c8f65b6b584df6af398e5a56494b75cf67d9..8a42334528719b5725b9d32cab39abdc0a6d177f 100644
--- a/projects/mesh_shader/src/main.cpp
+++ b/projects/mesh_shader/src/main.cpp
@@ -152,7 +152,7 @@ int main(int argc, const char** argv) {
 			cmdStream,
 			renderPass,
 			meshShaderPipeline,
-			vkcv::PushConstantData(nullptr, 0),
+			pushConstantData,
 			{ vkcv::MeshShaderDrawcall({}, 1) },
 			{ swapchainInput });