#include #include #include #include import Crafter.Graphics; using namespace Crafter; typedef VulkanShader<"test.spirv", "main", VK_SHADER_STAGE_MESH_BIT_EXT, 3, {{{VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 0}, {VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1}, {VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 2}}}> MeshShader; typedef VulkanShader<"test2.spirv", "main", VK_SHADER_STAGE_FRAGMENT_BIT, 0, {}> FragmentShader; typedef VulkanPipeline Pipeline; int main() { VulkanDevice::CreateDevice(); MeshShader::CreateShader(); FragmentShader::CreateShader(); Pipeline::CreatePipeline(); WindowWaylandVulkan window("Crafter.Graphics", 128, 128); VulkanElement test = VulkanElementFromPipeline(1, 1, 1); Camera camera; test.WriteDescriptor(0, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 0, &camera.buffer.descriptor); Mesh mesh(3, 3); mesh.verticies.value[0] = {0.0f, -1.0f, 0.0f, 1.0f}; mesh.verticies.value[1] = {-1.0f, 1.0f, 0.0f, 1.0f}; mesh.verticies.value[2] = {1.0f, 1.0f, 0.0f, 1.0f}; mesh.indicies.value[0] = 0; mesh.indicies.value[1] = 1; mesh.indicies.value[2] = 2; test.WriteDescriptor(0, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1, &mesh.verticies.descriptor); test.WriteDescriptor(0, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 2, &mesh.indicies.descriptor); window.vulkanElements.AddComponent(&test); window.Start(); while(true) { } }