Merge pull request 'Slight cleanup of VulkanDrawContext and binding the node' (#37) from VulkanDrawContext_cleanup into master
Reviewed-on: https://git.madvoxel.net/OpenVulkano/OpenVulkano/pulls/37 Reviewed-by: TymurStrelchyk <tymur.strelchyk.ext@madvoxel.com>
This commit is contained in:
@@ -153,7 +153,7 @@ namespace OpenVulkano::Vulkan
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResourceManager::PrepareNode(Scene::Node* node)
|
VulkanNode* ResourceManager::PrepareNode(Scene::Node* node)
|
||||||
{
|
{
|
||||||
const std::unique_lock lock(mutex);
|
const std::unique_lock lock(mutex);
|
||||||
if (!node->renderNode)
|
if (!node->renderNode)
|
||||||
@@ -181,6 +181,7 @@ namespace OpenVulkano::Vulkan
|
|||||||
vkNode->Init(node, uBuffer);
|
vkNode->Init(node, uBuffer);
|
||||||
node->renderNode = vkNode;
|
node->renderNode = vkNode;
|
||||||
}
|
}
|
||||||
|
return static_cast<VulkanNode*>(node->renderNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
VulkanCamera* ResourceManager::PrepareCamera(Scene::Camera* camera)
|
VulkanCamera* ResourceManager::PrepareCamera(Scene::Camera* camera)
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ namespace OpenVulkano
|
|||||||
class VulkanGeometry;
|
class VulkanGeometry;
|
||||||
class VulkanTexture;
|
class VulkanTexture;
|
||||||
class VulkanCamera;
|
class VulkanCamera;
|
||||||
|
class VulkanNode;
|
||||||
class UniformBuffer;
|
class UniformBuffer;
|
||||||
|
|
||||||
class ResourceManager : public ICloseable, public IShaderOwner
|
class ResourceManager : public ICloseable, public IShaderOwner
|
||||||
@@ -80,7 +81,7 @@ namespace OpenVulkano
|
|||||||
|
|
||||||
void PrepareMaterial(Scene::Material* material);
|
void PrepareMaterial(Scene::Material* material);
|
||||||
|
|
||||||
void PrepareNode(Scene::Node* node);
|
VulkanNode* PrepareNode(Scene::Node* node);
|
||||||
|
|
||||||
VulkanTexture* PrepareTexture(Scene::Texture* texture);
|
VulkanTexture* PrepareTexture(Scene::Texture* texture);
|
||||||
|
|
||||||
|
|||||||
@@ -21,8 +21,7 @@ namespace OpenVulkano::Vulkan
|
|||||||
renderGeo->RecordBind(drawContext->commandBuffer);
|
renderGeo->RecordBind(drawContext->commandBuffer);
|
||||||
for(Node* node : instance->GetNodes())
|
for(Node* node : instance->GetNodes())
|
||||||
{
|
{
|
||||||
if (!node->renderNode) drawContext->renderer->GetResourceManager().PrepareNode(node);
|
drawContext->EncodeNode(node);
|
||||||
static_cast<VulkanNode*>(node->renderNode)->Record(drawContext);
|
|
||||||
renderGeo->RecordDraw(drawContext->commandBuffer);
|
renderGeo->RecordDraw(drawContext->commandBuffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include "Scene/Shader/Shader.hpp"
|
#include "Scene/Shader/Shader.hpp"
|
||||||
#include "Scene/VulkanShader.hpp"
|
#include "Scene/VulkanShader.hpp"
|
||||||
#include "Scene/VulkanCamera.hpp"
|
#include "Scene/VulkanCamera.hpp"
|
||||||
|
#include "Scene/VulkanNode.hpp"
|
||||||
|
|
||||||
namespace OpenVulkano::Vulkan
|
namespace OpenVulkano::Vulkan
|
||||||
{
|
{
|
||||||
@@ -31,9 +32,14 @@ namespace OpenVulkano::Vulkan
|
|||||||
m_lastShader = vkShader;
|
m_lastShader = vkShader;
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanDrawContext::SetNode(Scene::Node* node)
|
void VulkanDrawContext::EncodeNode(Scene::Node* node)
|
||||||
{
|
{
|
||||||
|
VulkanNode* vkNode = static_cast<VulkanNode*>(node->renderNode);
|
||||||
|
if (!vkNode)
|
||||||
|
{
|
||||||
|
vkNode = renderer->GetResourceManager().PrepareNode(node);
|
||||||
|
}
|
||||||
|
vkNode->Record(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanDrawContext::SetCamera(Scene::Camera* camera)
|
void VulkanDrawContext::SetCamera(Scene::Camera* camera)
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ namespace OpenVulkano::Vulkan
|
|||||||
|
|
||||||
void EncodeShader(VulkanShader* shader);
|
void EncodeShader(VulkanShader* shader);
|
||||||
|
|
||||||
void SetNode(Scene::Node* node);
|
void EncodeNode(Scene::Node* node);
|
||||||
|
|
||||||
void SetCamera(Scene::Camera* camera);
|
void SetCamera(Scene::Camera* camera);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user