/* * Copyright 2022-2024 Frederico de Oliveira Linhares * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef CANDY_GEAR_BLUCAT_CORE_H #define CANDY_GEAR_BLUCAT_CORE_H 1 #include #include #include #include #include "command.hpp" #include "device.hpp" #include "descriptor_set_layout.hpp" #include "framebuffer.hpp" #include "graphics_pipeline_2d_solid_layout.hpp" #include "graphics_pipeline_2d_wired_layout.hpp" #include "graphics_pipeline_2d_solid.hpp" #include "graphics_pipeline_2d_wired.hpp" #include "graphics_pipeline_3d_layout.hpp" #include "graphics_pipeline_3d.hpp" #include "graphics_pipeline_3d_skeletal.hpp" #include "graphics_pipeline_sprite_3d.hpp" #include "job_queue.hpp" #include "light.hpp" #include "log.hpp" #include "render_pass.hpp" #include "renderer.hpp" #include "swapchain.hpp" #include "vulkan.hpp" #include "worker.hpp" namespace BluCat { extern std::random_device random_seed; extern std::mt19937 random_number_generator; struct Core { static const CommandChain loader; Log::Logger log; JobQueue job_queue; std::vector workers; std::vector threads; /// Text displayed in the game window. std::string game_name; /** * @{ * This is the ammount of pixel that the games uses when rendering to the * screen. */ uint32_t display_width, display_height; /// @} int game_version_major, game_version_minor, game_version_patch; uint32_t fps; std::chrono::duration max_frame_duration; float delta_time; FT_Library font_library; VkSurfaceKHR window_surface; VkInstance vk_instance; #ifdef DEBUG VkDebugUtilsMessengerEXT vk_callback; #endif // Vulkan devices. std::vector vk_devices; Device *vk_device_with_swapchain; Swapchain *vk_swapchain; Framebuffer *vk_framebuffer; RenderPass *vk_render_pass; DescriptorSetLayout *vk_descriptor_set_layout; GraphicsPipeline3DLayout *vk_graphics_pipeline_3d_layout; GraphicsPipeline2DSolidLayout *vk_graphics_pipeline_2d_solid_layout; GraphicsPipeline2DWiredLayout *vk_graphics_pipeline_2d_wired_layout; Light *vk_light; std::unique_ptr vk_graphics_pipeline_3d; std::unique_ptr vk_graphics_pipeline_3d_skeletal; std::unique_ptr vk_graphics_pipeline_sprite_3d; std::unique_ptr vk_graphics_pipeline_2d_solid; std::unique_ptr vk_graphics_pipeline_2d_wired; Renderer *vk_renderer; }; extern Core core; } #endif /* CANDY_GEAR_BLUCAT_CORE_H */