KRRenderPass now selected by KRCamera
This commit is contained in:
@@ -33,6 +33,7 @@
|
|||||||
#include "KRCamera.h"
|
#include "KRCamera.h"
|
||||||
#include "KRStockGeometry.h"
|
#include "KRStockGeometry.h"
|
||||||
#include "KRDirectionalLight.h"
|
#include "KRDirectionalLight.h"
|
||||||
|
#include "KRRenderPass.h"
|
||||||
|
|
||||||
/* static */
|
/* static */
|
||||||
void KRCamera::InitNodeInfo(KrNodeInfo* nodeInfo)
|
void KRCamera::InitNodeInfo(KrNodeInfo* nodeInfo)
|
||||||
@@ -101,7 +102,7 @@ const std::string KRCamera::getSkyBox() const
|
|||||||
return m_skyBox;
|
return m_skyBox;
|
||||||
}
|
}
|
||||||
|
|
||||||
void KRCamera::renderFrame(VkCommandBuffer& commandBuffer, GLint defaultFBO, GLint renderBufferWidth, GLint renderBufferHeight)
|
void KRCamera::renderFrame(VkCommandBuffer& commandBuffer, KRSurface& surface, GLint defaultFBO, GLint renderBufferWidth, GLint renderBufferHeight)
|
||||||
{
|
{
|
||||||
// ----====---- Record timing information for measuring FPS ----====----
|
// ----====---- Record timing information for measuring FPS ----====----
|
||||||
uint64_t current_time = m_pContext->getAbsoluteTimeMilliseconds();
|
uint64_t current_time = m_pContext->getAbsoluteTimeMilliseconds();
|
||||||
@@ -252,8 +253,6 @@ void KRCamera::renderFrame(VkCommandBuffer& commandBuffer, GLint defaultFBO, GLi
|
|||||||
GL_POP_GROUP_MARKER;
|
GL_POP_GROUP_MARKER;
|
||||||
} else {
|
} else {
|
||||||
// ----====---- Opaque Geometry, Forward Rendering ----====----
|
// ----====---- Opaque Geometry, Forward Rendering ----====----
|
||||||
|
|
||||||
// TODO - Vulkan refactoring...
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
GL_PUSH_GROUP_MARKER("Forward Rendering - Opaque");
|
GL_PUSH_GROUP_MARKER("Forward Rendering - Opaque");
|
||||||
@@ -290,14 +289,29 @@ void KRCamera::renderFrame(VkCommandBuffer& commandBuffer, GLint defaultFBO, GLi
|
|||||||
GLDEBUG(glDepthRangef(0.0, 1.0));
|
GLDEBUG(glDepthRangef(0.0, 1.0));
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
KRRenderPass& forwardOpaquePass = surface.getForwardOpaquePass();
|
||||||
|
forwardOpaquePass.begin(commandBuffer, surface);
|
||||||
|
|
||||||
// Render the geometry
|
// Render the geometry
|
||||||
scene.render(commandBuffer, this, m_viewport.getVisibleBounds(), m_viewport, KRNode::RENDER_PASS_FORWARD_OPAQUE, false);
|
scene.render(commandBuffer, this, m_viewport.getVisibleBounds(), m_viewport, KRNode::RENDER_PASS_FORWARD_OPAQUE, false);
|
||||||
|
|
||||||
// TODO - Vulkan refactoring...
|
|
||||||
/*
|
// ---------- Start: Vulkan Debug Code ----------
|
||||||
GL_POP_GROUP_MARKER;
|
KRMeshManager::KRVBOData& testVertices = getContext().getMeshManager()->KRENGINE_VBO_DATA_2D_SQUARE_VERTICES;
|
||||||
*/
|
bool haveMesh = testVertices.isVBOReady();
|
||||||
|
|
||||||
|
if (haveMesh) {
|
||||||
|
KRPipeline* testPipeline = m_pContext->getPipelineManager()->getPipeline(surface, forwardOpaquePass, "vulkan_test", testVertices.getVertexAttributes(), KRMesh::model_format_t::KRENGINE_MODEL_FORMAT_STRIP);
|
||||||
|
testPipeline->bind(commandBuffer);
|
||||||
|
testVertices.bind(commandBuffer);
|
||||||
|
vkCmdDraw(commandBuffer, 4, 1, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------- End: Vulkan Debug Code ----------
|
||||||
|
|
||||||
|
|
||||||
|
forwardOpaquePass.end(commandBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----====---- Sky Box ----====----
|
// ----====---- Sky Box ----====----
|
||||||
|
|||||||
@@ -46,6 +46,7 @@
|
|||||||
class KRModel;
|
class KRModel;
|
||||||
class KRScene;
|
class KRScene;
|
||||||
class KRViewport;
|
class KRViewport;
|
||||||
|
class KRSurface;
|
||||||
|
|
||||||
class KRCamera : public KRNode {
|
class KRCamera : public KRNode {
|
||||||
public:
|
public:
|
||||||
@@ -53,7 +54,7 @@ public:
|
|||||||
KRCamera(KRScene &scene, std::string name);
|
KRCamera(KRScene &scene, std::string name);
|
||||||
virtual ~KRCamera();
|
virtual ~KRCamera();
|
||||||
|
|
||||||
void renderFrame(VkCommandBuffer& commandBuffer, GLint defaultFBO, GLint renderBufferWidth, GLint renderBufferHeight);
|
void renderFrame(VkCommandBuffer& commandBuffer, KRSurface& surface, GLint defaultFBO, GLint renderBufferWidth, GLint renderBufferHeight);
|
||||||
|
|
||||||
KRRenderSettings settings;
|
KRRenderSettings settings;
|
||||||
|
|
||||||
|
|||||||
@@ -151,32 +151,17 @@ void KRPresentationThread::renderFrame()
|
|||||||
// TODO - Add error handling...
|
// TODO - Add error handling...
|
||||||
}
|
}
|
||||||
|
|
||||||
KRRenderPass& forwardOpaquePass = surface.getForwardOpaquePass();
|
// TODO - This needs to be moved to the Render thread...
|
||||||
forwardOpaquePass.begin(commandBuffer, surface);
|
float deltaTime = 0.005; // TODO - Replace dummy value
|
||||||
|
if (scene) {
|
||||||
KRMeshManager::KRVBOData& testVertices = getContext().getMeshManager()->KRENGINE_VBO_DATA_2D_SQUARE_VERTICES;
|
scene->renderFrame(commandBuffer, surface, 0, deltaTime, surface.m_swapChainExtent.width, surface.m_swapChainExtent.height);
|
||||||
bool haveMesh = testVertices.isVBOReady();
|
|
||||||
|
|
||||||
if (haveMesh) {
|
|
||||||
KRPipeline* testPipeline = m_pContext->getPipelineManager()->getPipeline(surface, forwardOpaquePass, "vulkan_test", testVertices.getVertexAttributes(), KRMesh::model_format_t::KRENGINE_MODEL_FORMAT_STRIP);
|
|
||||||
testPipeline->bind(commandBuffer);
|
|
||||||
testVertices.bind(commandBuffer);
|
|
||||||
vkCmdDraw(commandBuffer, 4, 1, 0, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
forwardOpaquePass.end(commandBuffer);
|
|
||||||
|
|
||||||
if (vkEndCommandBuffer(commandBuffer) != VK_SUCCESS) {
|
if (vkEndCommandBuffer(commandBuffer) != VK_SUCCESS) {
|
||||||
m_activeState = PresentThreadState::error;
|
m_activeState = PresentThreadState::error;
|
||||||
// TODO - Add error handling...
|
// TODO - Add error handling...
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO - This needs to be moved to the Render thread...
|
|
||||||
float deltaTime = 0.005; // TODO - Replace dummy value
|
|
||||||
if (scene) {
|
|
||||||
scene->renderFrame(commandBuffer, 0, deltaTime, surface.m_swapChainExtent.width, surface.m_swapChainExtent.height);
|
|
||||||
}
|
|
||||||
|
|
||||||
VkSubmitInfo submitInfo{};
|
VkSubmitInfo submitInfo{};
|
||||||
submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
|
submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
|
||||||
|
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ KRScene::~KRScene() {
|
|||||||
m_pRootNode = NULL;
|
m_pRootNode = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void KRScene::renderFrame(VkCommandBuffer& commandBuffer, GLint defaultFBO, float deltaTime, int width, int height) {
|
void KRScene::renderFrame(VkCommandBuffer& commandBuffer, KRSurface& surface, GLint defaultFBO, float deltaTime, int width, int height) {
|
||||||
getContext().startFrame(deltaTime);
|
getContext().startFrame(deltaTime);
|
||||||
KRCamera *camera = find<KRCamera>("default_camera");
|
KRCamera *camera = find<KRCamera>("default_camera");
|
||||||
if(camera == NULL) {
|
if(camera == NULL) {
|
||||||
@@ -70,7 +70,7 @@ void KRScene::renderFrame(VkCommandBuffer& commandBuffer, GLint defaultFBO, floa
|
|||||||
getContext().getAudioManager()->setReverbMaxLength(camera->settings.siren_reverb_max_length);
|
getContext().getAudioManager()->setReverbMaxLength(camera->settings.siren_reverb_max_length);
|
||||||
getContext().getTextureManager()->setMaxAnisotropy(camera->settings.max_anisotropy);
|
getContext().getTextureManager()->setMaxAnisotropy(camera->settings.max_anisotropy);
|
||||||
|
|
||||||
camera->renderFrame(commandBuffer, defaultFBO, width, height);
|
camera->renderFrame(commandBuffer, surface, defaultFBO, width, height);
|
||||||
getContext().endFrame(deltaTime);
|
getContext().endFrame(deltaTime);
|
||||||
physicsUpdate(deltaTime);
|
physicsUpdate(deltaTime);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,6 +45,7 @@
|
|||||||
#include "KROctree.h"
|
#include "KROctree.h"
|
||||||
class KRModel;
|
class KRModel;
|
||||||
class KRLight;
|
class KRLight;
|
||||||
|
class KRSurface;
|
||||||
|
|
||||||
using std::vector;
|
using std::vector;
|
||||||
|
|
||||||
@@ -69,7 +70,7 @@ public:
|
|||||||
bool rayCast(const Vector3 &v0, const Vector3 &dir, HitInfo &hitinfo, unsigned int layer_mask);
|
bool rayCast(const Vector3 &v0, const Vector3 &dir, HitInfo &hitinfo, unsigned int layer_mask);
|
||||||
bool sphereCast(const Vector3 &v0, const Vector3 &v1, float radius, HitInfo &hitinfo, unsigned int layer_mask);
|
bool sphereCast(const Vector3 &v0, const Vector3 &v1, float radius, HitInfo &hitinfo, unsigned int layer_mask);
|
||||||
|
|
||||||
void renderFrame(VkCommandBuffer& commandBuffer, GLint defaultFBO, float deltaTime, int width, int height);
|
void renderFrame(VkCommandBuffer& commandBuffer, KRSurface& surface, GLint defaultFBO, float deltaTime, int width, int height);
|
||||||
void render(VkCommandBuffer& commandBuffer, KRCamera *pCamera, unordered_map<AABB, int> &visibleBounds, const KRViewport &viewport, KRNode::RenderPass renderPass, bool new_frame);
|
void render(VkCommandBuffer& commandBuffer, KRCamera *pCamera, unordered_map<AABB, int> &visibleBounds, const KRViewport &viewport, KRNode::RenderPass renderPass, bool new_frame);
|
||||||
|
|
||||||
void render(VkCommandBuffer& commandBuffer, KROctreeNode *pOctreeNode, unordered_map<AABB, int> &visibleBounds, KRCamera *pCamera, std::vector<KRPointLight *> &point_lights, std::vector<KRDirectionalLight *> &directional_lights, std::vector<KRSpotLight *>&spot_lights, const KRViewport &viewport, KRNode::RenderPass renderPass, std::vector<KROctreeNode *> &remainingOctrees, std::vector<KROctreeNode *> &remainingOctreesTestResults, std::vector<KROctreeNode *> &remainingOctreesTestResultsOnly, bool bOcclusionResultsPass, bool bOcclusionTestResultsOnly);
|
void render(VkCommandBuffer& commandBuffer, KROctreeNode *pOctreeNode, unordered_map<AABB, int> &visibleBounds, KRCamera *pCamera, std::vector<KRPointLight *> &point_lights, std::vector<KRDirectionalLight *> &directional_lights, std::vector<KRSpotLight *>&spot_lights, const KRViewport &viewport, KRNode::RenderPass renderPass, std::vector<KROctreeNode *> &remainingOctrees, std::vector<KROctreeNode *> &remainingOctreesTestResults, std::vector<KROctreeNode *> &remainingOctreesTestResultsOnly, bool bOcclusionResultsPass, bool bOcclusionTestResultsOnly);
|
||||||
|
|||||||
Reference in New Issue
Block a user