#include #include #include #include #define GLM_FORCE_RADIANS #define GLM_FORCE_DEPTH_ZERO_TO_ONE #define GLM_ENABLE_EXPERIMENTAL #include #include #include #include import Crafter.Graphics; import Crafter.Asset; 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}}}> MeshVulkanShader; typedef VulkanShader<"test2.spirv", "main", VK_SHADER_STAGE_FRAGMENT_BIT, 0, {}> FragmentShader; typedef VulkanPipeline Pipeline; int main() { VulkanDevice::CreateDevice(); MeshVulkanShader::CreateShader(); FragmentShader::CreateShader(); Pipeline::CreatePipeline(); WindowWaylandVulkan window("Crafter.Graphics", 1280, 720); Asset asset; asset.LoadFull("core.cras"); Camera camera; VulkanElement test = VulkanElementFromPipeline(); Mesh* mesh = Mesh::FromAsset(asset.entries[0].data.data()); MeshShader meshShader(mesh, &camera); meshShader.SetGroupSize(&test); meshShader.WriteDescriptors(&test); meshShader.transform = glm::mat4(1.0f); meshShader.Update(); window.vulkanElements.AddComponent(&test); window.Start(); while(true) { } }