#ifdef USING_SLANG #include #include Shaders::Shaders(vk::Device *device) : m_Device(device) { auto shader = readFile("slang.spv"); vk::ShaderModuleCreateInfo info = {}; info.codeSize = shader.size(); info.pCode = reinterpret_cast(shader.data()); m_ShaderModule = m_Device->createShaderModule(info); vk::PipelineShaderStageCreateInfo vertShaderStageInfo = {}; vertShaderStageInfo.stage = vk::ShaderStageFlagBits::eVertex; vertShaderStageInfo.module = m_ShaderModule; vertShaderStageInfo.pName = "vertMain"; vk::PipelineShaderStageCreateInfo fragShaderStageInfo = {}; fragShaderStageInfo.stage = vk::ShaderStageFlagBits::eFragment; fragShaderStageInfo.module = m_ShaderModule; fragShaderStageInfo.pName = "fragMain"; m_ShaderStages.emplace_back(vertShaderStageInfo); m_ShaderStages.emplace_back(fragShaderStageInfo); m_BindingDescription = Vertex::getBindingDescription(); m_AttributeDescriptions = Vertex::getAttributeDescriptions(); m_VertInput.vertexBindingDescriptionCount = 1; m_VertInput.pVertexBindingDescriptions = &m_BindingDescription; m_VertInput.vertexAttributeDescriptionCount = static_cast(m_AttributeDescriptions.size()); m_VertInput.pVertexAttributeDescriptions = m_AttributeDescriptions.data(); } void Shaders::Finalize() { if (m_ShaderModule) m_Device->destroyShaderModule(m_ShaderModule); } #endif // USING_SLANG