Combined depth test and depth write modes into PipelineInfo.rasterMode.
This commit is contained in:
@@ -142,14 +142,6 @@ void KRAmbientZone::render(RenderInfo& ri)
|
|||||||
KRPipeline *pPipeline = getContext().getPipelineManager()->getPipeline(*ri.surface, info);
|
KRPipeline *pPipeline = getContext().getPipelineManager()->getPipeline(*ri.surface, info);
|
||||||
|
|
||||||
if(getContext().getPipelineManager()->selectPipeline(*ri.surface, *ri.camera, pPipeline, ri.viewport, sphereModelMatrix, &ri.point_lights, &ri.directional_lights, &ri.spot_lights, 0, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero())) {
|
if(getContext().getPipelineManager()->selectPipeline(*ri.surface, *ri.camera, pPipeline, ri.viewport, sphereModelMatrix, &ri.point_lights, &ri.directional_lights, &ri.spot_lights, 0, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero())) {
|
||||||
|
|
||||||
// Disable z-buffer write
|
|
||||||
GLDEBUG(glDepthMask(GL_FALSE));
|
|
||||||
|
|
||||||
// Enable z-buffer test
|
|
||||||
GLDEBUG(glEnable(GL_DEPTH_TEST));
|
|
||||||
GLDEBUG(glDepthFunc(GL_LEQUAL));
|
|
||||||
GLDEBUG(glDepthRangef(0.0, 1.0));
|
|
||||||
std::vector<KRMesh *> sphereModels = getContext().getMeshManager()->getModel("__sphere");
|
std::vector<KRMesh *> sphereModels = getContext().getMeshManager()->getModel("__sphere");
|
||||||
if(sphereModels.size()) {
|
if(sphereModels.size()) {
|
||||||
for(int i=0; i < sphereModels[0]->getSubmeshCount(); i++) {
|
for(int i=0; i < sphereModels[0]->getSubmeshCount(); i++) {
|
||||||
|
|||||||
@@ -209,14 +209,6 @@ void KRAudioSource::render(RenderInfo& ri)
|
|||||||
KRPipeline *pShader = getContext().getPipelineManager()->getPipeline(*ri.surface, info);
|
KRPipeline *pShader = getContext().getPipelineManager()->getPipeline(*ri.surface, info);
|
||||||
|
|
||||||
if(getContext().getPipelineManager()->selectPipeline(*ri.surface, *ri.camera, pShader, ri.viewport, sphereModelMatrix, &ri.point_lights, &ri.directional_lights, &ri.spot_lights, 0, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero())) {
|
if(getContext().getPipelineManager()->selectPipeline(*ri.surface, *ri.camera, pShader, ri.viewport, sphereModelMatrix, &ri.point_lights, &ri.directional_lights, &ri.spot_lights, 0, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero())) {
|
||||||
|
|
||||||
// Disable z-buffer write
|
|
||||||
GLDEBUG(glDepthMask(GL_FALSE));
|
|
||||||
|
|
||||||
// Enable z-buffer test
|
|
||||||
GLDEBUG(glEnable(GL_DEPTH_TEST));
|
|
||||||
GLDEBUG(glDepthFunc(GL_LEQUAL));
|
|
||||||
GLDEBUG(glDepthRangef(0.0, 1.0));
|
|
||||||
std::vector<KRMesh *> sphereModels = getContext().getMeshManager()->getModel("__sphere");
|
std::vector<KRMesh *> sphereModels = getContext().getMeshManager()->getModel("__sphere");
|
||||||
if(sphereModels.size()) {
|
if(sphereModels.size()) {
|
||||||
for(int i=0; i < sphereModels[0]->getSubmeshCount(); i++) {
|
for(int i=0; i < sphereModels[0]->getSubmeshCount(); i++) {
|
||||||
|
|||||||
@@ -80,12 +80,6 @@ void KRBone::render(RenderInfo& ri)
|
|||||||
if(ri.renderPass == KRNode::RENDER_PASS_FORWARD_TRANSPARENT && bVisualize) {
|
if(ri.renderPass == KRNode::RENDER_PASS_FORWARD_TRANSPARENT && bVisualize) {
|
||||||
Matrix4 sphereModelMatrix = getModelMatrix();
|
Matrix4 sphereModelMatrix = getModelMatrix();
|
||||||
|
|
||||||
// Disable z-buffer write
|
|
||||||
GLDEBUG(glDepthMask(GL_FALSE));
|
|
||||||
|
|
||||||
// Disable z-buffer test
|
|
||||||
GLDEBUG(glDisable(GL_DEPTH_TEST));
|
|
||||||
|
|
||||||
PipelineInfo info{};
|
PipelineInfo info{};
|
||||||
std::string shader_name("visualize_overlay");
|
std::string shader_name("visualize_overlay");
|
||||||
info.shader_name = &shader_name;
|
info.shader_name = &shader_name;
|
||||||
@@ -94,7 +88,7 @@ void KRBone::render(RenderInfo& ri)
|
|||||||
info.directional_lights = &ri.directional_lights;
|
info.directional_lights = &ri.directional_lights;
|
||||||
info.spot_lights = &ri.spot_lights;
|
info.spot_lights = &ri.spot_lights;
|
||||||
info.renderPass = ri.renderPass;
|
info.renderPass = ri.renderPass;
|
||||||
info.rasterMode = PipelineInfo::RasterMode::kAdditive;
|
info.rasterMode = PipelineInfo::RasterMode::kAdditiveNoTest;
|
||||||
|
|
||||||
KRPipeline *pShader = getContext().getPipelineManager()->getPipeline(*ri.surface, info);
|
KRPipeline *pShader = getContext().getPipelineManager()->getPipeline(*ri.surface, info);
|
||||||
|
|
||||||
|
|||||||
@@ -525,11 +525,7 @@ void KRCamera::renderFrame(VkCommandBuffer& commandBuffer, KRSurface& surface)
|
|||||||
GL_PUSH_GROUP_MARKER("Debug Overlays");
|
GL_PUSH_GROUP_MARKER("Debug Overlays");
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if(settings.debug_display == KRRenderSettings::KRENGINE_DEBUG_DISPLAY_OCTREE) {
|
if(settings.debug_display == KRRenderSettings::KRENGINE_DEBUG_DISPLAY_OCTREE) {
|
||||||
// Enable z-buffer test
|
|
||||||
GLDEBUG(glEnable(GL_DEPTH_TEST));
|
|
||||||
GLDEBUG(glDepthRangef(0.0, 1.0));
|
|
||||||
|
|
||||||
|
|
||||||
// Enable backface culling
|
// Enable backface culling
|
||||||
GLDEBUG(glCullFace(GL_BACK));
|
GLDEBUG(glCullFace(GL_BACK));
|
||||||
@@ -554,11 +550,7 @@ void KRCamera::renderFrame(VkCommandBuffer& commandBuffer, KRSurface& surface)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO - Vulkan refactoring...
|
|
||||||
/*
|
/*
|
||||||
// Re-enable z-buffer write
|
|
||||||
GLDEBUG(glDepthMask(GL_TRUE));
|
|
||||||
|
|
||||||
GL_POP_GROUP_MARKER;
|
GL_POP_GROUP_MARKER;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -954,19 +946,12 @@ void KRCamera::renderPost(VkCommandBuffer& commandBuffer, KRSurface& surface)
|
|||||||
// Disable backface culling
|
// Disable backface culling
|
||||||
GLDEBUG(glDisable(GL_CULL_FACE));
|
GLDEBUG(glDisable(GL_CULL_FACE));
|
||||||
|
|
||||||
// Disable z-buffer write
|
|
||||||
GLDEBUG(glDepthMask(GL_FALSE));
|
|
||||||
|
|
||||||
// Disable z-buffer test
|
|
||||||
GLDEBUG(glDisable(GL_DEPTH_TEST));
|
|
||||||
// GLDEBUG(glDepthRangef(0.0, 1.0));
|
|
||||||
|
|
||||||
PipelineInfo info{};
|
PipelineInfo info{};
|
||||||
std::string shader_name("debug_font");
|
std::string shader_name("debug_font");
|
||||||
info.shader_name = &shader_name;
|
info.shader_name = &shader_name;
|
||||||
info.pCamera = this;
|
info.pCamera = this;
|
||||||
info.renderPass = KRNode::RENDER_PASS_FORWARD_TRANSPARENT;
|
info.renderPass = KRNode::RENDER_PASS_FORWARD_TRANSPARENT;
|
||||||
info.rasterMode = PipelineInfo::RasterMode::kAlphaBlend;
|
info.rasterMode = PipelineInfo::RasterMode::kAlphaBlendNoTest;
|
||||||
KRPipeline *fontShader = m_pContext->getPipelineManager()->getPipeline(surface, info);
|
KRPipeline *fontShader = m_pContext->getPipelineManager()->getPipeline(surface, info);
|
||||||
getContext().getPipelineManager()->selectPipeline(surface, *this, fontShader, m_viewport, Matrix4(), nullptr, nullptr, nullptr, 0, KRNode::RENDER_PASS_FORWARD_TRANSPARENT, Vector3::Zero(), 0.0f, Vector4::Zero());
|
getContext().getPipelineManager()->selectPipeline(surface, *this, fontShader, m_viewport, Matrix4(), nullptr, nullptr, nullptr, 0, KRNode::RENDER_PASS_FORWARD_TRANSPARENT, Vector3::Zero(), 0.0f, Vector4::Zero());
|
||||||
|
|
||||||
|
|||||||
@@ -217,14 +217,6 @@ void KRCollider::render(RenderInfo& ri)
|
|||||||
KRPipeline *pShader = getContext().getPipelineManager()->getPipeline(*ri.surface, info);
|
KRPipeline *pShader = getContext().getPipelineManager()->getPipeline(*ri.surface, info);
|
||||||
|
|
||||||
if(getContext().getPipelineManager()->selectPipeline(*ri.surface, *ri.camera, pShader, ri.viewport, getModelMatrix(), &ri.point_lights, &ri.directional_lights, &ri.spot_lights, 0, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero())) {
|
if(getContext().getPipelineManager()->selectPipeline(*ri.surface, *ri.camera, pShader, ri.viewport, getModelMatrix(), &ri.point_lights, &ri.directional_lights, &ri.spot_lights, 0, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero())) {
|
||||||
// Disable z-buffer write
|
|
||||||
GLDEBUG(glDepthMask(GL_FALSE));
|
|
||||||
|
|
||||||
// Enable z-buffer test
|
|
||||||
GLDEBUG(glEnable(GL_DEPTH_TEST));
|
|
||||||
GLDEBUG(glDepthFunc(GL_LEQUAL));
|
|
||||||
GLDEBUG(glDepthRangef(0.0, 1.0));
|
|
||||||
|
|
||||||
for(int i=0; i < m_models[0]->getSubmeshCount(); i++) {
|
for(int i=0; i < m_models[0]->getSubmeshCount(); i++) {
|
||||||
m_models[0]->renderSubmesh(ri.commandBuffer, i, ri.renderPass, getName(), "visualize_overlay", 1.0f);
|
m_models[0]->renderSubmesh(ri.commandBuffer, i, ri.renderPass, getName(), "visualize_overlay", 1.0f);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -521,7 +521,7 @@ void KRLight::renderShadowBuffers(RenderInfo& ri)
|
|||||||
|
|
||||||
// Enable z-buffer test
|
// Enable z-buffer test
|
||||||
GLDEBUG(glEnable(GL_DEPTH_TEST));
|
GLDEBUG(glEnable(GL_DEPTH_TEST));
|
||||||
GLDEBUG(glDepthFunc(GL_LESS));
|
GLDEBUG(glDepthFunc(GL_LESS)); // CAREFUL WHEN REFACTORING! GL_LESS! not GL_LEQUAL
|
||||||
GLDEBUG(glDepthRangef(0.0, 1.0));
|
GLDEBUG(glDepthRangef(0.0, 1.0));
|
||||||
|
|
||||||
// Disable alpha blending as we are using alpha channel for packed depth info
|
// Disable alpha blending as we are using alpha channel for packed depth info
|
||||||
|
|||||||
@@ -46,10 +46,83 @@ class KRRenderPass;
|
|||||||
|
|
||||||
class PipelineInfo {
|
class PipelineInfo {
|
||||||
public:
|
public:
|
||||||
|
// Note: RasterMode is likely to be refactored later to a bitfield
|
||||||
enum class RasterMode : uint32_t {
|
enum class RasterMode : uint32_t {
|
||||||
kOpaque = 0,
|
kOpaque = 0,
|
||||||
|
/*
|
||||||
|
kOpaque is equivalent to:
|
||||||
|
|
||||||
|
// Disable blending
|
||||||
|
glDisable(GL_BLEND));
|
||||||
|
|
||||||
|
// Enable z-buffer write
|
||||||
|
glDepthMask(GL_TRUE);
|
||||||
|
|
||||||
|
// Enable z-buffer test
|
||||||
|
glEnable(GL_DEPTH_TEST))
|
||||||
|
glDepthFunc(GL_LEQUAL);
|
||||||
|
glDepthRangef(0.0, 1.0);
|
||||||
|
*/
|
||||||
kAlphaBlend = 1,
|
kAlphaBlend = 1,
|
||||||
kAdditive = 2
|
/*
|
||||||
|
kAlphaBlend is equivalent to:
|
||||||
|
|
||||||
|
// Enable alpha blending
|
||||||
|
glEnable(GL_BLEND));
|
||||||
|
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA));
|
||||||
|
|
||||||
|
// Disable z-buffer write
|
||||||
|
glDepthMask(GL_FALSE);
|
||||||
|
|
||||||
|
// Enable z-buffer test
|
||||||
|
glEnable(GL_DEPTH_TEST))
|
||||||
|
glDepthFunc(GL_LEQUAL);
|
||||||
|
glDepthRangef(0.0, 1.0);
|
||||||
|
*/
|
||||||
|
kAlphaBlendNoTest = 2,
|
||||||
|
/*
|
||||||
|
kAlphaBlendNoTest is equivalent to:
|
||||||
|
|
||||||
|
// Enable alpha blending
|
||||||
|
glEnable(GL_BLEND));
|
||||||
|
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA));
|
||||||
|
|
||||||
|
// Disable z-buffer write
|
||||||
|
glDepthMask(GL_FALSE);
|
||||||
|
|
||||||
|
// Enable z-buffer test
|
||||||
|
glEnable(GL_DEPTH_TEST))
|
||||||
|
glDepthFunc(GL_LEQUAL);
|
||||||
|
glDepthRangef(0.0, 1.0);
|
||||||
|
*/
|
||||||
|
kAdditive = 3,
|
||||||
|
/*
|
||||||
|
kAdditive is equivalent to:
|
||||||
|
|
||||||
|
// Enable additive blending
|
||||||
|
glEnable(GL_BLEND));
|
||||||
|
glBlendFunc(GL_ONE, GL_ONE));
|
||||||
|
|
||||||
|
// Disable z-buffer write
|
||||||
|
glDepthMask(GL_FALSE);
|
||||||
|
|
||||||
|
// Disalbe z-buffer test
|
||||||
|
glDisable(GL_DEPTH_TEST)
|
||||||
|
*/
|
||||||
|
kAdditiveNoTest = 4,
|
||||||
|
/*
|
||||||
|
kAdditive is equivalent to:
|
||||||
|
|
||||||
|
// Enable additive blending
|
||||||
|
glEnable(GL_BLEND));
|
||||||
|
glBlendFunc(GL_ONE, GL_ONE));
|
||||||
|
|
||||||
|
// Disable z-buffer write
|
||||||
|
glDepthMask(GL_FALSE);
|
||||||
|
|
||||||
|
// Disalbe z-buffer test
|
||||||
|
glDisable(GL_DEPTH_TEST)
|
||||||
|
*/
|
||||||
};
|
};
|
||||||
const std::string* shader_name;
|
const std::string* shader_name;
|
||||||
KRCamera* pCamera;
|
KRCamera* pCamera;
|
||||||
|
|||||||
@@ -218,7 +218,9 @@ KRPipeline *KRPipelineManager::getPipeline(KRSurface& surface, const PipelineInf
|
|||||||
|
|
||||||
stream << "\n#define ALPHA_TEST " << (info.bAlphaTest ? "1" : "0");
|
stream << "\n#define ALPHA_TEST " << (info.bAlphaTest ? "1" : "0");
|
||||||
stream << "\n#define ALPHA_BLEND " << ((info.rasterMode == PipelineInfo::RasterMode::kAlphaBlend
|
stream << "\n#define ALPHA_BLEND " << ((info.rasterMode == PipelineInfo::RasterMode::kAlphaBlend
|
||||||
|| info.rasterMode == PipelineInfo::RasterMode::kAdditive) ? "1" : "0");
|
|| info.rasterMode == PipelineInfo::RasterMode::kAlphaBlendNoTest
|
||||||
|
|| info.rasterMode == PipelineInfo::RasterMode::kAdditive
|
||||||
|
|| info.rasterMode == PipelineInfo::RasterMode::kAdditiveNoTest) ? "1" : "0");
|
||||||
|
|
||||||
stream << "\n#define ENABLE_PER_PIXEL " << (info.pCamera->settings.bEnablePerPixel ? "1" : "0");
|
stream << "\n#define ENABLE_PER_PIXEL " << (info.pCamera->settings.bEnablePerPixel ? "1" : "0");
|
||||||
stream << "\n#define DEBUG_PSSM " << (info.pCamera->settings.bDebugPSSM ? "1" : "0");
|
stream << "\n#define DEBUG_PSSM " << (info.pCamera->settings.bDebugPSSM ? "1" : "0");
|
||||||
|
|||||||
@@ -102,37 +102,29 @@ void KRPointLight::render(RenderInfo& ri)
|
|||||||
info.pCamera = ri.camera;
|
info.pCamera = ri.camera;
|
||||||
info.point_lights = &this_light;
|
info.point_lights = &this_light;
|
||||||
info.renderPass = ri.renderPass;
|
info.renderPass = ri.renderPass;
|
||||||
info.rasterMode = bVisualize ? PipelineInfo::RasterMode::kAdditive : PipelineInfo::RasterMode::kAlphaBlend;
|
if (bInsideLight) {
|
||||||
|
info.rasterMode = bVisualize ? PipelineInfo::RasterMode::kAdditiveNoTest : PipelineInfo::RasterMode::kAlphaBlendNoTest;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
info.rasterMode = bVisualize ? PipelineInfo::RasterMode::kAdditive : PipelineInfo::RasterMode::kAlphaBlend;
|
||||||
|
}
|
||||||
|
|
||||||
KRPipeline *pShader = getContext().getPipelineManager()->getPipeline(*ri.surface, info);
|
KRPipeline *pShader = getContext().getPipelineManager()->getPipeline(*ri.surface, info);
|
||||||
if(getContext().getPipelineManager()->selectPipeline(*ri.surface, *ri.camera, pShader, ri.viewport, sphereModelMatrix, &this_light, nullptr, nullptr, 0, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero())) {
|
if(getContext().getPipelineManager()->selectPipeline(*ri.surface, *ri.camera, pShader, ri.viewport, sphereModelMatrix, &this_light, nullptr, nullptr, 0, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero())) {
|
||||||
|
|
||||||
|
|
||||||
pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_COLOR, m_color);
|
pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_COLOR, m_color);
|
||||||
pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_INTENSITY, m_intensity * 0.01f);
|
pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_INTENSITY, m_intensity * 0.01f);
|
||||||
pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_DECAY_START, getDecayStart());
|
pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_DECAY_START, getDecayStart());
|
||||||
pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_CUTOFF, KRLIGHT_MIN_INFLUENCE);
|
pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_CUTOFF, KRLIGHT_MIN_INFLUENCE);
|
||||||
pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_POSITION, light_position);
|
pShader->setUniform(KRPipeline::KRENGINE_UNIFORM_LIGHT_POSITION, light_position);
|
||||||
|
|
||||||
// Disable z-buffer write
|
|
||||||
GLDEBUG(glDepthMask(GL_FALSE));
|
|
||||||
|
|
||||||
|
|
||||||
if(bInsideLight) {
|
if(bInsideLight) {
|
||||||
|
|
||||||
// Disable z-buffer test
|
|
||||||
GLDEBUG(glDisable(GL_DEPTH_TEST));
|
|
||||||
|
|
||||||
// Render a full screen quad
|
// Render a full screen quad
|
||||||
m_pContext->getMeshManager()->bindVBO(ri.commandBuffer, &m_pContext->getMeshManager()->KRENGINE_VBO_DATA_2D_SQUARE_VERTICES, 1.0f);
|
m_pContext->getMeshManager()->bindVBO(ri.commandBuffer, &m_pContext->getMeshManager()->KRENGINE_VBO_DATA_2D_SQUARE_VERTICES, 1.0f);
|
||||||
GLDEBUG(glDrawArrays(GL_TRIANGLE_STRIP, 0, 4));
|
GLDEBUG(glDrawArrays(GL_TRIANGLE_STRIP, 0, 4));
|
||||||
} else {
|
} else {
|
||||||
// Render sphere of light's influence
|
// Render sphere of light's influence
|
||||||
generateMesh();
|
generateMesh();
|
||||||
|
|
||||||
// Enable z-buffer test
|
|
||||||
GLDEBUG(glEnable(GL_DEPTH_TEST));
|
|
||||||
GLDEBUG(glDepthFunc(GL_LEQUAL));
|
|
||||||
GLDEBUG(glDepthRangef(0.0, 1.0));
|
|
||||||
|
|
||||||
GLDEBUG(glVertexAttribPointer(KRMesh::KRENGINE_ATTRIB_VERTEX, 3, GL_FLOAT, 0, 0, m_sphereVertices));
|
GLDEBUG(glVertexAttribPointer(KRMesh::KRENGINE_ATTRIB_VERTEX, 3, GL_FLOAT, 0, 0, m_sphereVertices));
|
||||||
GLDEBUG(glDrawArrays(GL_TRIANGLES, 0, m_cVertices));
|
GLDEBUG(glDrawArrays(GL_TRIANGLES, 0, m_cVertices));
|
||||||
|
|||||||
@@ -140,14 +140,6 @@ void KRReverbZone::render(RenderInfo& ri)
|
|||||||
info.rasterMode = PipelineInfo::RasterMode::kAdditive;
|
info.rasterMode = PipelineInfo::RasterMode::kAdditive;
|
||||||
|
|
||||||
if(getContext().getPipelineManager()->selectPipeline(*ri.surface, *ri.camera, pShader, ri.viewport, sphereModelMatrix, &ri.point_lights, &ri.directional_lights, &ri.spot_lights, 0, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero())) {
|
if(getContext().getPipelineManager()->selectPipeline(*ri.surface, *ri.camera, pShader, ri.viewport, sphereModelMatrix, &ri.point_lights, &ri.directional_lights, &ri.spot_lights, 0, ri.renderPass, Vector3::Zero(), 0.0f, Vector4::Zero())) {
|
||||||
|
|
||||||
// Disable z-buffer write
|
|
||||||
GLDEBUG(glDepthMask(GL_FALSE));
|
|
||||||
|
|
||||||
// Enable z-buffer test
|
|
||||||
GLDEBUG(glEnable(GL_DEPTH_TEST));
|
|
||||||
GLDEBUG(glDepthFunc(GL_LEQUAL));
|
|
||||||
GLDEBUG(glDepthRangef(0.0, 1.0));
|
|
||||||
std::vector<KRMesh *> sphereModels = getContext().getMeshManager()->getModel("__sphere");
|
std::vector<KRMesh *> sphereModels = getContext().getMeshManager()->getModel("__sphere");
|
||||||
if(sphereModels.size()) {
|
if(sphereModels.size()) {
|
||||||
for(int i=0; i < sphereModels[0]->getSubmeshCount(); i++) {
|
for(int i=0; i < sphereModels[0]->getSubmeshCount(); i++) {
|
||||||
|
|||||||
@@ -276,8 +276,6 @@ void KRScene::render(KRNode::RenderInfo& ri, KROctreeNode* pOctreeNode, unordere
|
|||||||
if(bNeedOcclusionTest) {
|
if(bNeedOcclusionTest) {
|
||||||
pOctreeNode->beginOcclusionQuery();
|
pOctreeNode->beginOcclusionQuery();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Matrix4 matModel = Matrix4();
|
Matrix4 matModel = Matrix4();
|
||||||
matModel.scale(octreeBounds.size() * 0.5f);
|
matModel.scale(octreeBounds.size() * 0.5f);
|
||||||
matModel.translate(octreeBounds.center());
|
matModel.translate(octreeBounds.center());
|
||||||
@@ -286,14 +284,6 @@ void KRScene::render(KRNode::RenderInfo& ri, KROctreeNode* pOctreeNode, unordere
|
|||||||
|
|
||||||
getContext().getMeshManager()->bindVBO(ri.commandBuffer, &getContext().getMeshManager()->KRENGINE_VBO_DATA_3D_CUBE_VERTICES, 1.0f);
|
getContext().getMeshManager()->bindVBO(ri.commandBuffer, &getContext().getMeshManager()->KRENGINE_VBO_DATA_3D_CUBE_VERTICES, 1.0f);
|
||||||
|
|
||||||
if(ri.renderPass == KRNode::RENDER_PASS_FORWARD_OPAQUE ||
|
|
||||||
ri.renderPass == KRNode::RENDER_PASS_DEFERRED_GBUFFER ||
|
|
||||||
ri.renderPass == KRNode::RENDER_PASS_DEFERRED_OPAQUE ||
|
|
||||||
ri.renderPass == KRNode::RENDER_PASS_SHADOWMAP) {
|
|
||||||
|
|
||||||
// Disable z-buffer write
|
|
||||||
GLDEBUG(glDepthMask(GL_FALSE));
|
|
||||||
}
|
|
||||||
PipelineInfo info{};
|
PipelineInfo info{};
|
||||||
std::string shader_name("occlusion_test");
|
std::string shader_name("occlusion_test");
|
||||||
info.shader_name = &shader_name;
|
info.shader_name = &shader_name;
|
||||||
@@ -308,16 +298,7 @@ void KRScene::render(KRNode::RenderInfo& ri, KROctreeNode* pOctreeNode, unordere
|
|||||||
GLDEBUG(glDrawArrays(GL_TRIANGLE_STRIP, 0, 14));
|
GLDEBUG(glDrawArrays(GL_TRIANGLE_STRIP, 0, 14));
|
||||||
m_pContext->getMeshManager()->log_draw_call(ri.renderPass, "octree", "occlusion_test", 14);
|
m_pContext->getMeshManager()->log_draw_call(ri.renderPass, "octree", "occlusion_test", 14);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ri.renderPass == KRNode::RENDER_PASS_FORWARD_OPAQUE ||
|
|
||||||
ri.renderPass == KRNode::RENDER_PASS_DEFERRED_GBUFFER ||
|
|
||||||
ri.renderPass == KRNode::RENDER_PASS_DEFERRED_OPAQUE ||
|
|
||||||
ri.renderPass == KRNode::RENDER_PASS_SHADOWMAP) {
|
|
||||||
|
|
||||||
// Re-enable z-buffer write
|
|
||||||
GLDEBUG(glDepthMask(GL_TRUE));
|
|
||||||
}
|
|
||||||
|
|
||||||
pOctreeNode->endOcclusionQuery();
|
pOctreeNode->endOcclusionQuery();
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -138,20 +138,9 @@ void KRSprite::render(RenderInfo& ri) {
|
|||||||
m_pSpriteTexture = getContext().getTextureManager()->getTexture(m_spriteTexture);
|
m_pSpriteTexture = getContext().getTextureManager()->getTexture(m_spriteTexture);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m_pSpriteTexture) {
|
if(m_pSpriteTexture) {
|
||||||
/*
|
|
||||||
|
|
||||||
// Disable z-buffer write
|
|
||||||
GLDEBUG(glDepthMask(GL_FALSE));
|
|
||||||
*/
|
|
||||||
|
|
||||||
// TODO - Sprites are currently additive only. Need to expose this and allow for multiple blending modes
|
// TODO - Sprites are currently additive only. Need to expose this and allow for multiple blending modes
|
||||||
|
|
||||||
// Enable z-buffer test
|
|
||||||
GLDEBUG(glEnable(GL_DEPTH_TEST));
|
|
||||||
GLDEBUG(glDepthFunc(GL_LEQUAL));
|
|
||||||
GLDEBUG(glDepthRangef(0.0, 1.0));
|
|
||||||
|
|
||||||
// Render light sprite on transparency pass
|
// Render light sprite on transparency pass
|
||||||
PipelineInfo info{};
|
PipelineInfo info{};
|
||||||
std::string shader_name("sprite");
|
std::string shader_name("sprite");
|
||||||
|
|||||||
Reference in New Issue
Block a user