No Name Engine
NoNameEngine est un moteur de jeu basé sur un système Entity Component System (ECS) utilisant Vulkan pour le rendu.
Loading...
Searching...
No Matches
NNE::Systems::VulkanManager Class Reference
Collaboration diagram for NNE::Systems::VulkanManager:

Public Member Functions

 VulkanManager ()
 Initialise le gestionnaire Vulkan.
 ~VulkanManager ()
 Libère toutes les ressources Vulkan.
void initVulkan ()
 Configure et lance l'initialisation Vulkan.
void CreateVulkanInstance ()
 Crée l'instance Vulkan principale.
bool checkValidationLayerSupport ()
 Vérifie la disponibilité des couches de validation.
void pickPhysicalDevice ()
 Sélectionne le périphérique physique approprié.
void createLogicalDevice ()
 Crée le périphérique logique Vulkan.
GLFWwindow * CreateGLFWWindow (int width, int height)
 Crée une fenêtre GLFW pour le rendu.
void createSurface ()
 Crée la surface de rendu Vulkan.
void createSwapChain ()
 Met en place la swap chain.
void createImageViews ()
 Crée les vues d'images de la swap chain.
VkImageView createImageView (VkImage image, VkFormat format, VkImageAspectFlags aspectFlags, uint32_t mipLevels)
 Crée une vue sur une image Vulkan.
void createRenderPass ()
 Établit le render pass.
void createShadowRenderPass ()
void createGraphicsPipeline ()
 Génère le pipeline graphique.
void createShadowPipeline ()
void createBuffer (VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties, VkBuffer &buffer, VkDeviceMemory &bufferMemory)
 Crée un buffer Vulkan générique.
void copyBuffer (VkBuffer srcBuffer, VkBuffer dstBuffer, VkDeviceSize size)
 Copie les données d'un buffer à un autre.
void createIndexBuffer ()
 Crée le buffer d'indices.
void createVertexBuffer ()
 Crée le buffer de sommets.
void createFramebuffers ()
 Crée les framebuffers de rendu.
void createCommandPool ()
 Crée le pool de commandes.
void createCommandBuffers ()
 Alloue les buffers de commandes.
void createUniformBuffers ()
 Crée les buffers uniformes.
void recordCommandBuffer (VkCommandBuffer commandBuffer, uint32_t imageIndex, const std::vector< std::pair< NNE::Component::Render::MeshComponent *, NNE::Component::TransformComponent * > > &objects)
 Enregistre les commandes de dessin.
void updateUniformBuffer (uint32_t currentImage)
 Met à jour le buffer uniforme pour une image.
void createDescriptorSetLayout ()
 Crée le layout des descripteurs.
void createShadowDescriptorSetLayout ()
void createDescriptorPool ()
 Crée le pool de descripteurs.
void createDescriptorSets ()
 Alloue et écrit les descripteurs.
void createShadowDescriptorSets ()
void initializeRenderer (const std::vector< std::pair< NNE::Component::Render::MeshComponent *, NNE::Component::TransformComponent * > > &objects)
 Initialise les ressources de rendu.
void renderFrame (const std::vector< std::pair< NNE::Component::Render::MeshComponent *, NNE::Component::TransformComponent * > > &objects)
 Rend une frame.
void drawFrame (const std::vector< std::pair< NNE::Component::Render::MeshComponent *, NNE::Component::TransformComponent * > > &objects)
 Dessine une frame complète.
void createSyncObjects ()
 Crée les objets de synchronisation.
void recreateSwapChain ()
 Reconstruit la swap chain après redimensionnement.
void updateCameraAspectRatio ()
 Met à jour le ratio d'aspect de la caméra active.
void createImage (uint32_t width, uint32_t height, uint32_t mipLevels, VkSampleCountFlagBits numSamples, VkFormat format, VkImageTiling tiling, VkImageUsageFlags usage, VkMemoryPropertyFlags properties, VkImage &image, VkDeviceMemory &imageMemory)
 Crée une image Vulkan avec les paramètres souhaités.
void createTextureImageView (VkImage textureImage, VkImageView &textureImageView, VkFormat format)
 Crée une vue pour une image de texture.
void createTextureSampler (VkSampler &textureSampler)
 Crée un sampler pour les textures.
void createDepthResources ()
 Prépare les ressources de profondeur.
void createShadowResources ()
void generateMipmaps (VkImage image, VkFormat imageFormat, int32_t texWidth, int32_t texHeight, uint32_t mipLevels)
 Génère les mipmaps d'une image.
void createColorResources ()
 Crée les ressources de couleur nécessaires au MSAA.
void loadModel (const std::string &modelPath)
 Charge un modèle 3D depuis le disque.
void generateCube (std::vector< Vertex > &vertexData, std::vector< uint32_t > &indexData)
void generateSphere (std::vector< Vertex > &vertexData, std::vector< uint32_t > &indexData)
void createTextureImage (const std::string &texturePath, VkImage &textureImage, VkDeviceMemory &textureImageMemory, VkFormat &imageFormat)
 Charge une texture depuis le disque.
void LoadMeshes (const std::vector< std::pair< NNE::Component::Render::MeshComponent *, NNE::Component::TransformComponent * > > &objects)
 Charge les meshes des objets fournis.
VkSampleCountFlagBits getMaxUsableSampleCount ()
 Retourne le niveau d'échantillonnage maximal supporté.
VkFormat findSupportedFormat (const std::vector< VkFormat > &candidates, VkImageTiling tiling, VkFormatFeatureFlags features)
 Trouve un format supporté répondant aux critères.
VkFormat findDepthFormat ()
 Récupère le format utilisé pour la profondeur.
bool hasDepthComponent (VkFormat format)
 Vérifie si le format possède un composant profondeur.
bool hasStencilComponent (VkFormat format)
 Vérifie si le format possède un composant stencil.
VkCommandBuffer beginSingleTimeCommands ()
 Commence une commande à usage unique.
void endSingleTimeCommands (VkCommandBuffer commandBuffer)
 Termine l'exécution d'une commande à usage unique.
void initImGui ()
void cleanupImGui ()
void beginImGuiFrame ()
void renderImGui (VkCommandBuffer commandBuffer)
void transitionImageLayout (VkImage image, VkFormat format, VkImageLayout oldLayout, VkImageLayout newLayout, uint32_t mipLevels)
 Change l'agencement d'une image.
void copyBufferToImage (VkBuffer buffer, VkImage image, uint32_t width, uint32_t height)
 Copie les données d'un buffer vers une image.
void copyImageToBuffer (VkImage image, VkBuffer buffer, uint32_t width, uint32_t height)
 Copie les données d'une image vers un buffer.
void debugShadowMap ()
 Affiche des statistiques sur la shadow map pour vérifier son contenu.
void requestShadowDebug ()
VkDescriptorSet getShadowMapDebugDescriptor ()
VkShaderModule createShaderModule (const std::vector< char > &code)
 Crée un module de shader à partir de code binaire.
void CleanUp ()
 Nettoie toutes les ressources Vulkan.
void cleanupSwapChain ()
 Détruit les ressources de la swap chain.
bool isDeviceSuitable (VkPhysicalDevice device)
 Vérifie si un périphérique physique convient.
int rateDeviceSuitability (VkPhysicalDevice device)
 Évalue la pertinence d'un périphérique.
QueueFamilyIndices findQueueFamilies (VkPhysicalDevice device)
 Trouve les familles de files nécessaires.
bool checkDeviceExtensionSupport (VkPhysicalDevice device)
 Vérifie le support des extensions requises.
bool hasExtension (VkPhysicalDevice device, const char *extensionName)
SwapChainSupportDetails querySwapChainSupport (VkPhysicalDevice device)
 Interroge les capacités de la swap chain du périphérique.
VkSurfaceFormatKHR chooseSwapSurfaceFormat (const std::vector< VkSurfaceFormatKHR > &availableFormats)
 Choisit le format de surface approprié.
VkPresentModeKHR chooseSwapPresentMode (const std::vector< VkPresentModeKHR > &availablePresentModes)
 Choisit le mode de présentation de la swap chain.
VkExtent2D chooseSwapExtent (const VkSurfaceCapabilitiesKHR &capabilities)
 Détermine les dimensions de la swap chain.
uint32_t findMemoryType (uint32_t typeFilter, VkMemoryPropertyFlags properties)
 Trouve un type de mémoire répondant aux propriétés requises.

Static Public Member Functions

static void framebufferResizeCallback (GLFWwindow *window, int width, int height)
 Callback lors du redimensionnement de la fenêtre.
static std::vector< char > readFile (const std::string &filename)
 Lit un fichier binaire depuis le disque.

Public Attributes

ShadowConfig shadowConfig {}
NNE::Component::Render::CameraComponentactiveCamera = nullptr
NNE::Component::Render::LightComponentactiveLight = nullptr
VkInstance instance = VK_NULL_HANDLE
std::vector< Vertexvertices
std::vector< uint32_t > indices
GLFWwindow * window
VkDevice device = VK_NULL_HANDLE

Protected Attributes

size_t dynamicAlignment
const size_t MAX_OBJECTS = 100
const uint32_t SHADOW_MAP_DIM = 2048
VkPhysicalDevice physicalDevice = VK_NULL_HANDLE
VkQueue graphicsQueue = VK_NULL_HANDLE
VkSurfaceKHR surface = VK_NULL_HANDLE
VkQueue presentQueue = VK_NULL_HANDLE
VkSwapchainKHR swapChain
std::vector< VkImage > swapChainImages
VkFormat swapChainImageFormat
VkExtent2D swapChainExtent
std::vector< VkImageView > swapChainImageViews
VkRenderPass renderPass
VkPipelineLayout pipelineLayout
VkPipeline graphicsPipeline
std::vector< VkFramebuffer > swapChainFramebuffers
VkCommandPool commandPool
std::vector< VkCommandBuffer > commandBuffers
std::vector< VkSemaphore > imageAvailableSemaphores
std::vector< VkSemaphore > renderFinishedSemaphores
std::vector< VkFence > inFlightFences
uint32_t currentFrame = 0
bool framebufferResized = false
VkBuffer indexBuffer
VkDeviceMemory indexBufferMemory
std::vector< VkBuffer > uniformBuffers
std::vector< VkDeviceMemory > uniformBuffersMemory
std::vector< void * > uniformBuffersMapped
std::vector< VkBuffer > objectUniformBuffers
std::vector< VkDeviceMemory > objectUniformBuffersMemory
std::vector< void * > objectUniformBuffersMapped
std::vector< VkBuffer > lightBuffers
std::vector< VkDeviceMemory > lightBuffersMemory
std::vector< void * > lightBuffersMapped
std::vector< NNE::Component::Render::MeshComponent * > loadedMeshes
VkBuffer vertexBuffer
VkDeviceMemory vertexBufferMemory
VkBuffer stagingBuffer
VkDeviceMemory stagingBufferMemory
uint32_t mipLevels
VkImage textureImage
VkDeviceMemory textureImageMemory
VkImageView textureImageView
VkDescriptorSetLayout descriptorSetLayout
VkSampler textureSampler
VkImage colorImage
VkDeviceMemory colorImageMemory
VkImageView colorImageView
VkDescriptorPool descriptorPool
VkDescriptorPool imguiPool
VkImage depthImage
VkDeviceMemory depthImageMemory
VkImageView depthImageView
VkSampleCountFlagBits msaaSamples = VK_SAMPLE_COUNT_8_BIT
bool supportsRenderToSingleSampled = false
VkRenderPass shadowRenderPass
VkFramebuffer shadowFramebuffer
VkImage shadowImage
VkDeviceMemory shadowImageMemory
VkImageView shadowImageView
VkSampler shadowSampler
VkPipeline shadowPipeline
VkImageLayout shadowImageLayout = VK_IMAGE_LAYOUT_UNDEFINED
VkPipelineLayout shadowPipelineLayout
VkDescriptorSetLayout shadowDescriptorSetLayout
std::array< VkDescriptorSet, MAX_FRAMES_IN_FLIGHT > shadowDescriptorSets
VkDescriptorSet shadowDebugDescriptor

Static Protected Attributes

static constexpr int MAX_FRAMES_IN_FLIGHT = 2

Detailed Description

Definition at line 130 of file VulkanManager.h.

Constructor & Destructor Documentation

◆ VulkanManager()

NNE::Systems::VulkanManager::VulkanManager ( )

Initialise le gestionnaire Vulkan.

Definition at line 40 of file VulkanManager.cpp.

◆ ~VulkanManager()

NNE::Systems::VulkanManager::~VulkanManager ( )

Libère toutes les ressources Vulkan.

Definition at line 91 of file VulkanManager.cpp.

Member Function Documentation

◆ beginImGuiFrame()

void NNE::Systems::VulkanManager::beginImGuiFrame ( )

Definition at line 1131 of file VulkanManager.cpp.

◆ beginSingleTimeCommands()

VkCommandBuffer NNE::Systems::VulkanManager::beginSingleTimeCommands ( )

Commence une commande à usage unique.

Definition at line 2373 of file VulkanManager.cpp.

◆ checkDeviceExtensionSupport()

bool NNE::Systems::VulkanManager::checkDeviceExtensionSupport ( VkPhysicalDevice device)

Vérifie le support des extensions requises.

Definition at line 161 of file VulkanManager.cpp.

◆ checkValidationLayerSupport()

bool NNE::Systems::VulkanManager::checkValidationLayerSupport ( )

Vérifie la disponibilité des couches de validation.

Definition at line 320 of file VulkanManager.cpp.

◆ chooseSwapExtent()

VkExtent2D NNE::Systems::VulkanManager::chooseSwapExtent ( const VkSurfaceCapabilitiesKHR & capabilities)

Détermine les dimensions de la swap chain.

Definition at line 240 of file VulkanManager.cpp.

◆ chooseSwapPresentMode()

VkPresentModeKHR NNE::Systems::VulkanManager::chooseSwapPresentMode ( const std::vector< VkPresentModeKHR > & availablePresentModes)

Choisit le mode de présentation de la swap chain.

Definition at line 229 of file VulkanManager.cpp.

◆ chooseSwapSurfaceFormat()

VkSurfaceFormatKHR NNE::Systems::VulkanManager::chooseSwapSurfaceFormat ( const std::vector< VkSurfaceFormatKHR > & availableFormats)

Choisit le format de surface approprié.

Definition at line 219 of file VulkanManager.cpp.

◆ CleanUp()

void NNE::Systems::VulkanManager::CleanUp ( )

Nettoie toutes les ressources Vulkan.

Definition at line 2692 of file VulkanManager.cpp.

◆ cleanupImGui()

void NNE::Systems::VulkanManager::cleanupImGui ( )

Definition at line 1143 of file VulkanManager.cpp.

◆ cleanupSwapChain()

void NNE::Systems::VulkanManager::cleanupSwapChain ( )

Détruit les ressources de la swap chain.

Definition at line 2896 of file VulkanManager.cpp.

◆ copyBuffer()

void NNE::Systems::VulkanManager::copyBuffer ( VkBuffer srcBuffer,
VkBuffer dstBuffer,
VkDeviceSize size )

Copie les données d'un buffer à un autre.

Definition at line 992 of file VulkanManager.cpp.

◆ copyBufferToImage()

void NNE::Systems::VulkanManager::copyBufferToImage ( VkBuffer buffer,
VkImage image,
uint32_t width,
uint32_t height )

Copie les données d'un buffer vers une image.

Definition at line 2505 of file VulkanManager.cpp.

◆ copyImageToBuffer()

void NNE::Systems::VulkanManager::copyImageToBuffer ( VkImage image,
VkBuffer buffer,
uint32_t width,
uint32_t height )

Copie les données d'une image vers un buffer.

Definition at line 2538 of file VulkanManager.cpp.

◆ createBuffer()

void NNE::Systems::VulkanManager::createBuffer ( VkDeviceSize size,
VkBufferUsageFlags usage,
VkMemoryPropertyFlags properties,
VkBuffer & buffer,
VkDeviceMemory & bufferMemory )

Crée un buffer Vulkan générique.

Definition at line 963 of file VulkanManager.cpp.

◆ createColorResources()

void NNE::Systems::VulkanManager::createColorResources ( )

Crée les ressources de couleur nécessaires au MSAA.

Definition at line 2497 of file VulkanManager.cpp.

◆ createCommandBuffers()

void NNE::Systems::VulkanManager::createCommandBuffers ( )

Alloue les buffers de commandes.

Definition at line 1172 of file VulkanManager.cpp.

◆ createCommandPool()

void NNE::Systems::VulkanManager::createCommandPool ( )

Crée le pool de commandes.

Definition at line 1158 of file VulkanManager.cpp.

◆ createDepthResources()

void NNE::Systems::VulkanManager::createDepthResources ( )

Prépare les ressources de profondeur.

Definition at line 2269 of file VulkanManager.cpp.

◆ createDescriptorPool()

void NNE::Systems::VulkanManager::createDescriptorPool ( )

Crée le pool de descripteurs.

Definition at line 1681 of file VulkanManager.cpp.

◆ createDescriptorSetLayout()

void NNE::Systems::VulkanManager::createDescriptorSetLayout ( )

Crée le layout des descripteurs.

Definition at line 1611 of file VulkanManager.cpp.

◆ createDescriptorSets()

void NNE::Systems::VulkanManager::createDescriptorSets ( )

Alloue et écrit les descripteurs.

Definition at line 1708 of file VulkanManager.cpp.

◆ createFramebuffers()

void NNE::Systems::VulkanManager::createFramebuffers ( )

Crée les framebuffers de rendu.

Definition at line 1049 of file VulkanManager.cpp.

◆ CreateGLFWWindow()

GLFWwindow * NNE::Systems::VulkanManager::CreateGLFWWindow ( int width,
int height )

Crée une fenêtre GLFW pour le rendu.

Definition at line 444 of file VulkanManager.cpp.

◆ createGraphicsPipeline()

void NNE::Systems::VulkanManager::createGraphicsPipeline ( )

Génère le pipeline graphique.

Definition at line 683 of file VulkanManager.cpp.

◆ createImage()

void NNE::Systems::VulkanManager::createImage ( uint32_t width,
uint32_t height,
uint32_t mipLevels,
VkSampleCountFlagBits numSamples,
VkFormat format,
VkImageTiling tiling,
VkImageUsageFlags usage,
VkMemoryPropertyFlags properties,
VkImage & image,
VkDeviceMemory & imageMemory )

Crée une image Vulkan avec les paramètres souhaités.

Definition at line 2112 of file VulkanManager.cpp.

◆ createImageView()

VkImageView NNE::Systems::VulkanManager::createImageView ( VkImage image,
VkFormat format,
VkImageAspectFlags aspectFlags,
uint32_t mipLevels )

Crée une vue sur une image Vulkan.

Definition at line 532 of file VulkanManager.cpp.

◆ createImageViews()

void NNE::Systems::VulkanManager::createImageViews ( )

Crée les vues d'images de la swap chain.

Definition at line 523 of file VulkanManager.cpp.

◆ createIndexBuffer()

void NNE::Systems::VulkanManager::createIndexBuffer ( )

Crée le buffer d'indices.

Definition at line 1003 of file VulkanManager.cpp.

◆ createLogicalDevice()

void NNE::Systems::VulkanManager::createLogicalDevice ( )

Crée le périphérique logique Vulkan.

Definition at line 375 of file VulkanManager.cpp.

◆ createRenderPass()

void NNE::Systems::VulkanManager::createRenderPass ( )

Établit le render pass.

Definition at line 553 of file VulkanManager.cpp.

◆ createShaderModule()

VkShaderModule NNE::Systems::VulkanManager::createShaderModule ( const std::vector< char > & code)

Crée un module de shader à partir de code binaire.

Definition at line 2649 of file VulkanManager.cpp.

◆ createShadowDescriptorSetLayout()

void NNE::Systems::VulkanManager::createShadowDescriptorSetLayout ( )

Definition at line 1662 of file VulkanManager.cpp.

◆ createShadowDescriptorSets()

void NNE::Systems::VulkanManager::createShadowDescriptorSets ( )

Definition at line 1784 of file VulkanManager.cpp.

◆ createShadowPipeline()

void NNE::Systems::VulkanManager::createShadowPipeline ( )

Definition at line 834 of file VulkanManager.cpp.

◆ createShadowRenderPass()

void NNE::Systems::VulkanManager::createShadowRenderPass ( )

Definition at line 630 of file VulkanManager.cpp.

◆ createShadowResources()

void NNE::Systems::VulkanManager::createShadowResources ( )

Definition at line 2278 of file VulkanManager.cpp.

◆ createSurface()

void NNE::Systems::VulkanManager::createSurface ( )

Crée la surface de rendu Vulkan.

Definition at line 461 of file VulkanManager.cpp.

◆ createSwapChain()

void NNE::Systems::VulkanManager::createSwapChain ( )

Met en place la swap chain.

Definition at line 468 of file VulkanManager.cpp.

◆ createSyncObjects()

void NNE::Systems::VulkanManager::createSyncObjects ( )

Crée les objets de synchronisation.

Definition at line 1918 of file VulkanManager.cpp.

◆ createTextureImage()

void NNE::Systems::VulkanManager::createTextureImage ( const std::string & texturePath,
VkImage & textureImage,
VkDeviceMemory & textureImageMemory,
VkFormat & imageFormat )

Charge une texture depuis le disque.

Definition at line 1995 of file VulkanManager.cpp.

◆ createTextureImageView()

void NNE::Systems::VulkanManager::createTextureImageView ( VkImage textureImage,
VkImageView & textureImageView,
VkFormat format )

Crée une vue pour une image de texture.

Definition at line 2148 of file VulkanManager.cpp.

◆ createTextureSampler()

void NNE::Systems::VulkanManager::createTextureSampler ( VkSampler & textureSampler)

Crée un sampler pour les textures.

Definition at line 2153 of file VulkanManager.cpp.

◆ createUniformBuffers()

void NNE::Systems::VulkanManager::createUniformBuffers ( )

Crée les buffers uniformes.

Definition at line 1188 of file VulkanManager.cpp.

◆ createVertexBuffer()

void NNE::Systems::VulkanManager::createVertexBuffer ( )

Crée le buffer de sommets.

Definition at line 1026 of file VulkanManager.cpp.

◆ CreateVulkanInstance()

void NNE::Systems::VulkanManager::CreateVulkanInstance ( )

Crée l'instance Vulkan principale.

Definition at line 275 of file VulkanManager.cpp.

◆ debugShadowMap()

void NNE::Systems::VulkanManager::debugShadowMap ( )

Affiche des statistiques sur la shadow map pour vérifier son contenu.

Definition at line 2567 of file VulkanManager.cpp.

◆ drawFrame()

void NNE::Systems::VulkanManager::drawFrame ( const std::vector< std::pair< NNE::Component::Render::MeshComponent *, NNE::Component::TransformComponent * > > & objects)

Dessine une frame complète.

Definition at line 1837 of file VulkanManager.cpp.

◆ endSingleTimeCommands()

void NNE::Systems::VulkanManager::endSingleTimeCommands ( VkCommandBuffer commandBuffer)

Termine l'exécution d'une commande à usage unique.

Definition at line 2393 of file VulkanManager.cpp.

◆ findDepthFormat()

VkFormat NNE::Systems::VulkanManager::findDepthFormat ( )

Récupère le format utilisé pour la profondeur.

Definition at line 2336 of file VulkanManager.cpp.

◆ findMemoryType()

uint32_t NNE::Systems::VulkanManager::findMemoryType ( uint32_t typeFilter,
VkMemoryPropertyFlags properties )

Trouve un type de mémoire répondant aux propriétés requises.

Definition at line 261 of file VulkanManager.cpp.

◆ findQueueFamilies()

NNE::Systems::QueueFamilyIndices NNE::Systems::VulkanManager::findQueueFamilies ( VkPhysicalDevice device)

Trouve les familles de files nécessaires.

Definition at line 123 of file VulkanManager.cpp.

◆ findSupportedFormat()

VkFormat NNE::Systems::VulkanManager::findSupportedFormat ( const std::vector< VkFormat > & candidates,
VkImageTiling tiling,
VkFormatFeatureFlags features )

Trouve un format supporté répondant aux critères.

Definition at line 2319 of file VulkanManager.cpp.

◆ framebufferResizeCallback()

void NNE::Systems::VulkanManager::framebufferResizeCallback ( GLFWwindow * window,
int width,
int height )
static

Callback lors du redimensionnement de la fenêtre.

Definition at line 455 of file VulkanManager.cpp.

◆ generateCube()

void NNE::Systems::VulkanManager::generateCube ( std::vector< Vertex > & vertexData,
std::vector< uint32_t > & indexData )

Definition at line 1492 of file VulkanManager.cpp.

◆ generateMipmaps()

void NNE::Systems::VulkanManager::generateMipmaps ( VkImage image,
VkFormat imageFormat,
int32_t texWidth,
int32_t texHeight,
uint32_t mipLevels )

Génère les mipmaps d'une image.

Definition at line 2181 of file VulkanManager.cpp.

◆ generateSphere()

void NNE::Systems::VulkanManager::generateSphere ( std::vector< Vertex > & vertexData,
std::vector< uint32_t > & indexData )

Definition at line 1574 of file VulkanManager.cpp.

◆ getMaxUsableSampleCount()

VkSampleCountFlagBits NNE::Systems::VulkanManager::getMaxUsableSampleCount ( )

Retourne le niveau d'échantillonnage maximal supporté.

Definition at line 2357 of file VulkanManager.cpp.

◆ getShadowMapDebugDescriptor()

VkDescriptorSet NNE::Systems::VulkanManager::getShadowMapDebugDescriptor ( )

Definition at line 2639 of file VulkanManager.cpp.

◆ hasDepthComponent()

bool NNE::Systems::VulkanManager::hasDepthComponent ( VkFormat format)

Vérifie si le format possède un composant profondeur.

Definition at line 2345 of file VulkanManager.cpp.

◆ hasExtension()

bool NNE::Systems::VulkanManager::hasExtension ( VkPhysicalDevice device,
const char * extensionName )

Definition at line 178 of file VulkanManager.cpp.

◆ hasStencilComponent()

bool NNE::Systems::VulkanManager::hasStencilComponent ( VkFormat format)

Vérifie si le format possède un composant stencil.

Definition at line 2352 of file VulkanManager.cpp.

◆ initializeRenderer()

void NNE::Systems::VulkanManager::initializeRenderer ( const std::vector< std::pair< NNE::Component::Render::MeshComponent *, NNE::Component::TransformComponent * > > & objects)

Initialise les ressources de rendu.

Definition at line 1814 of file VulkanManager.cpp.

◆ initImGui()

void NNE::Systems::VulkanManager::initImGui ( )

Definition at line 1075 of file VulkanManager.cpp.

◆ initVulkan()

void NNE::Systems::VulkanManager::initVulkan ( )

Configure et lance l'initialisation Vulkan.

Definition at line 96 of file VulkanManager.cpp.

◆ isDeviceSuitable()

bool NNE::Systems::VulkanManager::isDeviceSuitable ( VkPhysicalDevice device)

Vérifie si un périphérique physique convient.

Definition at line 3033 of file VulkanManager.cpp.

◆ LoadMeshes()

void NNE::Systems::VulkanManager::LoadMeshes ( const std::vector< std::pair< NNE::Component::Render::MeshComponent *, NNE::Component::TransformComponent * > > & objects)

Charge les meshes des objets fournis.

Definition at line 2066 of file VulkanManager.cpp.

◆ loadModel()

void NNE::Systems::VulkanManager::loadModel ( const std::string & modelPath)

Charge un modèle 3D depuis le disque.

Definition at line 1446 of file VulkanManager.cpp.

◆ pickPhysicalDevice()

void NNE::Systems::VulkanManager::pickPhysicalDevice ( )

Sélectionne le périphérique physique approprié.

Definition at line 346 of file VulkanManager.cpp.

◆ querySwapChainSupport()

NNE::Systems::SwapChainSupportDetails NNE::Systems::VulkanManager::querySwapChainSupport ( VkPhysicalDevice device)

Interroge les capacités de la swap chain du périphérique.

Definition at line 195 of file VulkanManager.cpp.

◆ rateDeviceSuitability()

int NNE::Systems::VulkanManager::rateDeviceSuitability ( VkPhysicalDevice device)

Évalue la pertinence d'un périphérique.

Definition at line 3050 of file VulkanManager.cpp.

◆ readFile()

std::vector< char > NNE::Systems::VulkanManager::readFile ( const std::string & filename)
static

Lit un fichier binaire depuis le disque.

Definition at line 2672 of file VulkanManager.cpp.

◆ recordCommandBuffer()

void NNE::Systems::VulkanManager::recordCommandBuffer ( VkCommandBuffer commandBuffer,
uint32_t imageIndex,
const std::vector< std::pair< NNE::Component::Render::MeshComponent *, NNE::Component::TransformComponent * > > & objects )

Enregistre les commandes de dessin.

Definition at line 1237 of file VulkanManager.cpp.

◆ recreateSwapChain()

void NNE::Systems::VulkanManager::recreateSwapChain ( )

Reconstruit la swap chain après redimensionnement.

Definition at line 1941 of file VulkanManager.cpp.

◆ renderFrame()

void NNE::Systems::VulkanManager::renderFrame ( const std::vector< std::pair< NNE::Component::Render::MeshComponent *, NNE::Component::TransformComponent * > > & objects)

Rend une frame.

Definition at line 1832 of file VulkanManager.cpp.

◆ renderImGui()

void NNE::Systems::VulkanManager::renderImGui ( VkCommandBuffer commandBuffer)

Definition at line 1138 of file VulkanManager.cpp.

◆ requestShadowDebug()

void NNE::Systems::VulkanManager::requestShadowDebug ( )

Definition at line 2634 of file VulkanManager.cpp.

◆ transitionImageLayout()

void NNE::Systems::VulkanManager::transitionImageLayout ( VkImage image,
VkFormat format,
VkImageLayout oldLayout,
VkImageLayout newLayout,
uint32_t mipLevels )

Change l'agencement d'une image.

Definition at line 2408 of file VulkanManager.cpp.

◆ updateCameraAspectRatio()

void NNE::Systems::VulkanManager::updateCameraAspectRatio ( )

Met à jour le ratio d'aspect de la caméra active.

Definition at line 1983 of file VulkanManager.cpp.

◆ updateUniformBuffer()

void NNE::Systems::VulkanManager::updateUniformBuffer ( uint32_t currentImage)

Met à jour le buffer uniforme pour une image.

Definition at line 1389 of file VulkanManager.cpp.

Member Data Documentation

◆ activeCamera

NNE::Component::Render::CameraComponent* NNE::Systems::VulkanManager::activeCamera = nullptr

Definition at line 228 of file VulkanManager.h.

◆ activeLight

NNE::Component::Render::LightComponent* NNE::Systems::VulkanManager::activeLight = nullptr

Definition at line 229 of file VulkanManager.h.

◆ colorImage

VkImage NNE::Systems::VulkanManager::colorImage
protected

Definition at line 194 of file VulkanManager.h.

◆ colorImageMemory

VkDeviceMemory NNE::Systems::VulkanManager::colorImageMemory
protected

Definition at line 195 of file VulkanManager.h.

◆ colorImageView

VkImageView NNE::Systems::VulkanManager::colorImageView
protected

Definition at line 196 of file VulkanManager.h.

◆ commandBuffers

std::vector<VkCommandBuffer> NNE::Systems::VulkanManager::commandBuffers
protected

Definition at line 155 of file VulkanManager.h.

◆ commandPool

VkCommandPool NNE::Systems::VulkanManager::commandPool
protected

Definition at line 154 of file VulkanManager.h.

◆ currentFrame

uint32_t NNE::Systems::VulkanManager::currentFrame = 0
protected

Definition at line 159 of file VulkanManager.h.

◆ depthImage

VkImage NNE::Systems::VulkanManager::depthImage
protected

Definition at line 201 of file VulkanManager.h.

◆ depthImageMemory

VkDeviceMemory NNE::Systems::VulkanManager::depthImageMemory
protected

Definition at line 202 of file VulkanManager.h.

◆ depthImageView

VkImageView NNE::Systems::VulkanManager::depthImageView
protected

Definition at line 203 of file VulkanManager.h.

◆ descriptorPool

VkDescriptorPool NNE::Systems::VulkanManager::descriptorPool
protected

Definition at line 198 of file VulkanManager.h.

◆ descriptorSetLayout

VkDescriptorSetLayout NNE::Systems::VulkanManager::descriptorSetLayout
protected

Definition at line 191 of file VulkanManager.h.

◆ device

VkDevice NNE::Systems::VulkanManager::device = VK_NULL_HANDLE

Definition at line 246 of file VulkanManager.h.

◆ dynamicAlignment

size_t NNE::Systems::VulkanManager::dynamicAlignment
protected

Definition at line 133 of file VulkanManager.h.

◆ framebufferResized

bool NNE::Systems::VulkanManager::framebufferResized = false
protected

Definition at line 160 of file VulkanManager.h.

◆ graphicsPipeline

VkPipeline NNE::Systems::VulkanManager::graphicsPipeline
protected

Definition at line 152 of file VulkanManager.h.

◆ graphicsQueue

VkQueue NNE::Systems::VulkanManager::graphicsQueue = VK_NULL_HANDLE
protected

Definition at line 139 of file VulkanManager.h.

◆ imageAvailableSemaphores

std::vector< VkSemaphore> NNE::Systems::VulkanManager::imageAvailableSemaphores
protected

Definition at line 156 of file VulkanManager.h.

◆ imguiPool

VkDescriptorPool NNE::Systems::VulkanManager::imguiPool
protected

Definition at line 199 of file VulkanManager.h.

◆ indexBuffer

VkBuffer NNE::Systems::VulkanManager::indexBuffer
protected

Definition at line 164 of file VulkanManager.h.

◆ indexBufferMemory

VkDeviceMemory NNE::Systems::VulkanManager::indexBufferMemory
protected

Definition at line 165 of file VulkanManager.h.

◆ indices

std::vector<uint32_t> NNE::Systems::VulkanManager::indices

Definition at line 232 of file VulkanManager.h.

◆ inFlightFences

std::vector< VkFence> NNE::Systems::VulkanManager::inFlightFences
protected

Definition at line 158 of file VulkanManager.h.

◆ instance

VkInstance NNE::Systems::VulkanManager::instance = VK_NULL_HANDLE

Definition at line 230 of file VulkanManager.h.

◆ lightBuffers

std::vector<VkBuffer> NNE::Systems::VulkanManager::lightBuffers
protected

Definition at line 175 of file VulkanManager.h.

◆ lightBuffersMapped

std::vector<void*> NNE::Systems::VulkanManager::lightBuffersMapped
protected

Definition at line 177 of file VulkanManager.h.

◆ lightBuffersMemory

std::vector<VkDeviceMemory> NNE::Systems::VulkanManager::lightBuffersMemory
protected

Definition at line 176 of file VulkanManager.h.

◆ loadedMeshes

std::vector<NNE::Component::Render::MeshComponent*> NNE::Systems::VulkanManager::loadedMeshes
protected

Definition at line 179 of file VulkanManager.h.

◆ MAX_FRAMES_IN_FLIGHT

int NNE::Systems::VulkanManager::MAX_FRAMES_IN_FLIGHT = 2
staticconstexprprotected

Definition at line 135 of file VulkanManager.h.

◆ MAX_OBJECTS

const size_t NNE::Systems::VulkanManager::MAX_OBJECTS = 100
protected

Definition at line 134 of file VulkanManager.h.

◆ mipLevels

uint32_t NNE::Systems::VulkanManager::mipLevels
protected

Definition at line 187 of file VulkanManager.h.

◆ msaaSamples

VkSampleCountFlagBits NNE::Systems::VulkanManager::msaaSamples = VK_SAMPLE_COUNT_8_BIT
protected

Definition at line 204 of file VulkanManager.h.

◆ objectUniformBuffers

std::vector<VkBuffer> NNE::Systems::VulkanManager::objectUniformBuffers
protected

Definition at line 171 of file VulkanManager.h.

◆ objectUniformBuffersMapped

std::vector<void*> NNE::Systems::VulkanManager::objectUniformBuffersMapped
protected

Definition at line 173 of file VulkanManager.h.

◆ objectUniformBuffersMemory

std::vector<VkDeviceMemory> NNE::Systems::VulkanManager::objectUniformBuffersMemory
protected

Definition at line 172 of file VulkanManager.h.

◆ physicalDevice

VkPhysicalDevice NNE::Systems::VulkanManager::physicalDevice = VK_NULL_HANDLE
protected

Definition at line 137 of file VulkanManager.h.

◆ pipelineLayout

VkPipelineLayout NNE::Systems::VulkanManager::pipelineLayout
protected

Definition at line 151 of file VulkanManager.h.

◆ presentQueue

VkQueue NNE::Systems::VulkanManager::presentQueue = VK_NULL_HANDLE
protected

Definition at line 141 of file VulkanManager.h.

◆ renderFinishedSemaphores

std::vector< VkSemaphore> NNE::Systems::VulkanManager::renderFinishedSemaphores
protected

Definition at line 157 of file VulkanManager.h.

◆ renderPass

VkRenderPass NNE::Systems::VulkanManager::renderPass
protected

Definition at line 150 of file VulkanManager.h.

◆ SHADOW_MAP_DIM

const uint32_t NNE::Systems::VulkanManager::SHADOW_MAP_DIM = 2048
protected

Definition at line 136 of file VulkanManager.h.

◆ shadowConfig

ShadowConfig NNE::Systems::VulkanManager::shadowConfig {}

Definition at line 227 of file VulkanManager.h.

◆ shadowDebugDescriptor

VkDescriptorSet NNE::Systems::VulkanManager::shadowDebugDescriptor
protected

Definition at line 221 of file VulkanManager.h.

◆ shadowDescriptorSetLayout

VkDescriptorSetLayout NNE::Systems::VulkanManager::shadowDescriptorSetLayout
protected

Definition at line 219 of file VulkanManager.h.

◆ shadowDescriptorSets

std::array<VkDescriptorSet, MAX_FRAMES_IN_FLIGHT> NNE::Systems::VulkanManager::shadowDescriptorSets
protected

Definition at line 220 of file VulkanManager.h.

◆ shadowFramebuffer

VkFramebuffer NNE::Systems::VulkanManager::shadowFramebuffer
protected

Definition at line 209 of file VulkanManager.h.

◆ shadowImage

VkImage NNE::Systems::VulkanManager::shadowImage
protected

Definition at line 210 of file VulkanManager.h.

◆ shadowImageLayout

VkImageLayout NNE::Systems::VulkanManager::shadowImageLayout = VK_IMAGE_LAYOUT_UNDEFINED
protected

Definition at line 216 of file VulkanManager.h.

◆ shadowImageMemory

VkDeviceMemory NNE::Systems::VulkanManager::shadowImageMemory
protected

Definition at line 211 of file VulkanManager.h.

◆ shadowImageView

VkImageView NNE::Systems::VulkanManager::shadowImageView
protected

Definition at line 212 of file VulkanManager.h.

◆ shadowPipeline

VkPipeline NNE::Systems::VulkanManager::shadowPipeline
protected

Definition at line 214 of file VulkanManager.h.

◆ shadowPipelineLayout

VkPipelineLayout NNE::Systems::VulkanManager::shadowPipelineLayout
protected

Definition at line 218 of file VulkanManager.h.

◆ shadowRenderPass

VkRenderPass NNE::Systems::VulkanManager::shadowRenderPass
protected

Definition at line 208 of file VulkanManager.h.

◆ shadowSampler

VkSampler NNE::Systems::VulkanManager::shadowSampler
protected

Definition at line 213 of file VulkanManager.h.

◆ stagingBuffer

VkBuffer NNE::Systems::VulkanManager::stagingBuffer
protected

Definition at line 184 of file VulkanManager.h.

◆ stagingBufferMemory

VkDeviceMemory NNE::Systems::VulkanManager::stagingBufferMemory
protected

Definition at line 185 of file VulkanManager.h.

◆ supportsRenderToSingleSampled

bool NNE::Systems::VulkanManager::supportsRenderToSingleSampled = false
protected

Definition at line 205 of file VulkanManager.h.

◆ surface

VkSurfaceKHR NNE::Systems::VulkanManager::surface = VK_NULL_HANDLE
protected

Definition at line 140 of file VulkanManager.h.

◆ swapChain

VkSwapchainKHR NNE::Systems::VulkanManager::swapChain
protected

Definition at line 143 of file VulkanManager.h.

◆ swapChainExtent

VkExtent2D NNE::Systems::VulkanManager::swapChainExtent
protected

Definition at line 146 of file VulkanManager.h.

◆ swapChainFramebuffers

std::vector<VkFramebuffer> NNE::Systems::VulkanManager::swapChainFramebuffers
protected

Definition at line 153 of file VulkanManager.h.

◆ swapChainImageFormat

VkFormat NNE::Systems::VulkanManager::swapChainImageFormat
protected

Definition at line 145 of file VulkanManager.h.

◆ swapChainImages

std::vector<VkImage> NNE::Systems::VulkanManager::swapChainImages
protected

Definition at line 144 of file VulkanManager.h.

◆ swapChainImageViews

std::vector<VkImageView> NNE::Systems::VulkanManager::swapChainImageViews
protected

Definition at line 148 of file VulkanManager.h.

◆ textureImage

VkImage NNE::Systems::VulkanManager::textureImage
protected

Definition at line 188 of file VulkanManager.h.

◆ textureImageMemory

VkDeviceMemory NNE::Systems::VulkanManager::textureImageMemory
protected

Definition at line 189 of file VulkanManager.h.

◆ textureImageView

VkImageView NNE::Systems::VulkanManager::textureImageView
protected

Definition at line 190 of file VulkanManager.h.

◆ textureSampler

VkSampler NNE::Systems::VulkanManager::textureSampler
protected

Definition at line 192 of file VulkanManager.h.

◆ uniformBuffers

std::vector<VkBuffer> NNE::Systems::VulkanManager::uniformBuffers
protected

Definition at line 167 of file VulkanManager.h.

◆ uniformBuffersMapped

std::vector<void*> NNE::Systems::VulkanManager::uniformBuffersMapped
protected

Definition at line 169 of file VulkanManager.h.

◆ uniformBuffersMemory

std::vector<VkDeviceMemory> NNE::Systems::VulkanManager::uniformBuffersMemory
protected

Definition at line 168 of file VulkanManager.h.

◆ vertexBuffer

VkBuffer NNE::Systems::VulkanManager::vertexBuffer
protected

Definition at line 181 of file VulkanManager.h.

◆ vertexBufferMemory

VkDeviceMemory NNE::Systems::VulkanManager::vertexBufferMemory
protected

Definition at line 182 of file VulkanManager.h.

◆ vertices

std::vector<Vertex> NNE::Systems::VulkanManager::vertices

Definition at line 231 of file VulkanManager.h.

◆ window

GLFWwindow* NNE::Systems::VulkanManager::window

Definition at line 233 of file VulkanManager.h.


The documentation for this class was generated from the following files: