// // Created by atdunbg on 2026/9/23. // #include #include #include namespace Engine { Scope VulkanAssetUploader::LoadModel(const std::string& path) { // GPU 上传在此发生:解析(assimp)+ buffer/image 创建一步完成 return CreateScope( m_Device, m_Allocator, m_Descriptors, m_TextureLayout, path); } Scope VulkanAssetUploader::LoadModel(const std::string& path, ParsedModel&& parsed) { // 异步路径:assimp 解析已在 worker 线程完成,此处只剩 GPU 构建 return Model::FromParsed(m_Device, m_Allocator, m_Descriptors, m_TextureLayout, std::move(parsed)); } Scope VulkanAssetUploader::CreatePlane(f32 halfSize, u8 r, u8 g, u8 b) { return Model::CreatePlane(m_Device, m_Allocator, m_Descriptors, m_TextureLayout, halfSize, r, g, b); } Scope VulkanAssetUploader::CreateTransparentPlane( f32 halfSize, u8 r, u8 g, u8 b, u8 a) { return Model::CreateTransparentPlane(m_Device, m_Allocator, m_Descriptors, m_TextureLayout, halfSize, r, g, b, a); } Scope VulkanAssetUploader::LoadEnvironment(const std::string& path) { // compute 预积分(毫秒级):HDR → cube + irradiance/prefilter/LUT return m_Ibl.FromHdrEquirect(path, 1024); } Scope VulkanAssetUploader::LoadEnvironment( const std::string& path, DecodedEquirect&& decoded) { // 异步路径:decode 已在 worker 线程完成,此处只剩 GPU 段 return m_Ibl.FromDecoded(decoded, 1024, path); } } // namespace Engine