#include #include #include #include namespace lt::renderer { [[nodiscard]] /* static */ auto IPass::create( lt::renderer::Api target_api, IDevice *device, ISwapchain *swapchain, const lt::assets::ShaderAsset &vertex_shader, const lt::assets::ShaderAsset &fragment_shader ) -> memory::Scope { ensure(device, "Failed to create renderer::IPass: null device"); ensure(swapchain, "Failed to create renderer::IPass: null swapchain"); switch (target_api) { case Api::vulkan: return memory::create_scope(device, swapchain, vertex_shader, fragment_shader); case Api::none: case Api::metal: case Api::direct_x: throw std::runtime_error { "Invalid API" }; } } } // namespace lt::renderer