KRRenderPass now selected by KRCamera
This commit is contained in:
@@ -33,6 +33,7 @@
|
||||
#include "KRCamera.h"
|
||||
#include "KRStockGeometry.h"
|
||||
#include "KRDirectionalLight.h"
|
||||
#include "KRRenderPass.h"
|
||||
|
||||
/* static */
|
||||
void KRCamera::InitNodeInfo(KrNodeInfo* nodeInfo)
|
||||
@@ -101,7 +102,7 @@ const std::string KRCamera::getSkyBox() const
|
||||
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 ----====----
|
||||
uint64_t current_time = m_pContext->getAbsoluteTimeMilliseconds();
|
||||
@@ -252,8 +253,6 @@ void KRCamera::renderFrame(VkCommandBuffer& commandBuffer, GLint defaultFBO, GLi
|
||||
GL_POP_GROUP_MARKER;
|
||||
} else {
|
||||
// ----====---- Opaque Geometry, Forward Rendering ----====----
|
||||
|
||||
// TODO - Vulkan refactoring...
|
||||
/*
|
||||
|
||||
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));
|
||||
|
||||
*/
|
||||
|
||||
KRRenderPass& forwardOpaquePass = surface.getForwardOpaquePass();
|
||||
forwardOpaquePass.begin(commandBuffer, surface);
|
||||
|
||||
// Render the geometry
|
||||
scene.render(commandBuffer, this, m_viewport.getVisibleBounds(), m_viewport, KRNode::RENDER_PASS_FORWARD_OPAQUE, false);
|
||||
|
||||
// TODO - Vulkan refactoring...
|
||||
/*
|
||||
GL_POP_GROUP_MARKER;
|
||||
*/
|
||||
|
||||
|
||||
// ---------- Start: Vulkan Debug Code ----------
|
||||
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 ----====----
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
class KRModel;
|
||||
class KRScene;
|
||||
class KRViewport;
|
||||
class KRSurface;
|
||||
|
||||
class KRCamera : public KRNode {
|
||||
public:
|
||||
@@ -53,7 +54,7 @@ public:
|
||||
KRCamera(KRScene &scene, std::string name);
|
||||
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;
|
||||
|
||||
|
||||
@@ -151,32 +151,17 @@ void KRPresentationThread::renderFrame()
|
||||
// TODO - Add error handling...
|
||||
}
|
||||
|
||||
KRRenderPass& forwardOpaquePass = surface.getForwardOpaquePass();
|
||||
forwardOpaquePass.begin(commandBuffer, surface);
|
||||
|
||||
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);
|
||||
// TODO - This needs to be moved to the Render thread...
|
||||
float deltaTime = 0.005; // TODO - Replace dummy value
|
||||
if (scene) {
|
||||
scene->renderFrame(commandBuffer, surface, 0, deltaTime, surface.m_swapChainExtent.width, surface.m_swapChainExtent.height);
|
||||
}
|
||||
|
||||
forwardOpaquePass.end(commandBuffer);
|
||||
|
||||
if (vkEndCommandBuffer(commandBuffer) != VK_SUCCESS) {
|
||||
m_activeState = PresentThreadState::error;
|
||||
// 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{};
|
||||
submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ KRScene::~KRScene() {
|
||||
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);
|
||||
KRCamera *camera = find<KRCamera>("default_camera");
|
||||
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().getTextureManager()->setMaxAnisotropy(camera->settings.max_anisotropy);
|
||||
|
||||
camera->renderFrame(commandBuffer, defaultFBO, width, height);
|
||||
camera->renderFrame(commandBuffer, surface, defaultFBO, width, height);
|
||||
getContext().endFrame(deltaTime);
|
||||
physicsUpdate(deltaTime);
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
#include "KROctree.h"
|
||||
class KRModel;
|
||||
class KRLight;
|
||||
class KRSurface;
|
||||
|
||||
using std::vector;
|
||||
|
||||
@@ -69,7 +70,7 @@ public:
|
||||
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);
|
||||
|
||||
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, 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