Fixed directional light vector, which was not rotating correctly
GL calls for debugging are no longer included in non-debug builds (excluded with DEBUG compiler directive)
This commit is contained in:
@@ -199,7 +199,7 @@
|
|||||||
E4AE635D1704FB0A00B460CD /* KRLODGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4AE635B1704FB0A00B460CD /* KRLODGroup.cpp */; };
|
E4AE635D1704FB0A00B460CD /* KRLODGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4AE635B1704FB0A00B460CD /* KRLODGroup.cpp */; };
|
||||||
E4AE635E1704FB0A00B460CD /* KRLODGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4AE635B1704FB0A00B460CD /* KRLODGroup.cpp */; };
|
E4AE635E1704FB0A00B460CD /* KRLODGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4AE635B1704FB0A00B460CD /* KRLODGroup.cpp */; };
|
||||||
E4AE635F1704FB0A00B460CD /* KRLODGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = E4AE635C1704FB0A00B460CD /* KRLODGroup.h */; };
|
E4AE635F1704FB0A00B460CD /* KRLODGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = E4AE635C1704FB0A00B460CD /* KRLODGroup.h */; };
|
||||||
E4AE63601704FB0A00B460CD /* KRLODGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = E4AE635C1704FB0A00B460CD /* KRLODGroup.h */; };
|
E4AE63601704FB0A00B460CD /* KRLODGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = E4AE635C1704FB0A00B460CD /* KRLODGroup.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
E4AFC6B615F7C46800DDB4C8 /* KRAABB.cpp in Headers */ = {isa = PBXBuildFile; fileRef = E40BA45215EFF79500D7C3DD /* KRAABB.cpp */; settings = {ATTRIBUTES = (Public, ); }; };
|
E4AFC6B615F7C46800DDB4C8 /* KRAABB.cpp in Headers */ = {isa = PBXBuildFile; fileRef = E40BA45215EFF79500D7C3DD /* KRAABB.cpp */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
E4AFC6B915F7C7B200DDB4C8 /* KROctree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4924C2415EE95E700B965C6 /* KROctree.cpp */; settings = {ATTRIBUTES = (Public, ); }; };
|
E4AFC6B915F7C7B200DDB4C8 /* KROctree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4924C2415EE95E700B965C6 /* KROctree.cpp */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
E4AFC6BB15F7C7D600DDB4C8 /* KROctreeNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4924C2915EE96AA00B965C6 /* KROctreeNode.cpp */; };
|
E4AFC6BB15F7C7D600DDB4C8 /* KROctreeNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4924C2915EE96AA00B965C6 /* KROctreeNode.cpp */; };
|
||||||
@@ -314,6 +314,7 @@
|
|||||||
E4E6F6BE16BA5E0A00E410F8 /* volumetric_fog_downsampled_osx.vsh in Resources */ = {isa = PBXBuildFile; fileRef = E4E6F62816BA5D8300E410F8 /* volumetric_fog_downsampled_osx.vsh */; };
|
E4E6F6BE16BA5E0A00E410F8 /* volumetric_fog_downsampled_osx.vsh in Resources */ = {isa = PBXBuildFile; fileRef = E4E6F62816BA5D8300E410F8 /* volumetric_fog_downsampled_osx.vsh */; };
|
||||||
E4E6F6BF16BA5E0A00E410F8 /* volumetric_fog_osx.fsh in Resources */ = {isa = PBXBuildFile; fileRef = E4E6F62916BA5D8300E410F8 /* volumetric_fog_osx.fsh */; };
|
E4E6F6BF16BA5E0A00E410F8 /* volumetric_fog_osx.fsh in Resources */ = {isa = PBXBuildFile; fileRef = E4E6F62916BA5D8300E410F8 /* volumetric_fog_osx.fsh */; };
|
||||||
E4E6F6C016BA5E0A00E410F8 /* volumetric_fog_osx.vsh in Resources */ = {isa = PBXBuildFile; fileRef = E4E6F62A16BA5D8300E410F8 /* volumetric_fog_osx.vsh */; };
|
E4E6F6C016BA5E0A00E410F8 /* volumetric_fog_osx.vsh in Resources */ = {isa = PBXBuildFile; fileRef = E4E6F62A16BA5D8300E410F8 /* volumetric_fog_osx.vsh */; };
|
||||||
|
E4EC73B8171F32780065299F /* forsyth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4FE6AAA16B21D7E0058B8CE /* forsyth.cpp */; };
|
||||||
E4F027C716979CCD00D4427D /* KRAudioManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4F027C516979CCD00D4427D /* KRAudioManager.cpp */; };
|
E4F027C716979CCD00D4427D /* KRAudioManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4F027C516979CCD00D4427D /* KRAudioManager.cpp */; };
|
||||||
E4F027C816979CCD00D4427D /* KRAudioManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4F027C516979CCD00D4427D /* KRAudioManager.cpp */; };
|
E4F027C816979CCD00D4427D /* KRAudioManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4F027C516979CCD00D4427D /* KRAudioManager.cpp */; };
|
||||||
E4F027C916979CCD00D4427D /* KRAudioManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E4F027C616979CCD00D4427D /* KRAudioManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
E4F027C916979CCD00D4427D /* KRAudioManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E4F027C616979CCD00D4427D /* KRAudioManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
@@ -1292,9 +1293,9 @@
|
|||||||
E450273C16E0491D00FDEC5C /* KRReverbZone.h in Headers */,
|
E450273C16E0491D00FDEC5C /* KRReverbZone.h in Headers */,
|
||||||
E44F38251683B23000399B5D /* KRRenderSettings.h in Headers */,
|
E44F38251683B23000399B5D /* KRRenderSettings.h in Headers */,
|
||||||
E499BF1D16AE74FF007FCDBE /* KRTextureAnimated.h in Headers */,
|
E499BF1D16AE74FF007FCDBE /* KRTextureAnimated.h in Headers */,
|
||||||
|
E4AE63601704FB0A00B460CD /* KRLODGroup.h in Headers */,
|
||||||
E499BF1F16AE753E007FCDBE /* KRCollider.h in Headers */,
|
E499BF1F16AE753E007FCDBE /* KRCollider.h in Headers */,
|
||||||
E499BF2316AE7636007FCDBE /* kraken-prefix.pch in Headers */,
|
E499BF2316AE7636007FCDBE /* kraken-prefix.pch in Headers */,
|
||||||
E4AE63601704FB0A00B460CD /* KRLODGroup.h in Headers */,
|
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -1564,6 +1565,7 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
E4EC73B8171F32780065299F /* forsyth.cpp in Sources */,
|
||||||
E499BF2516AE8C20007FCDBE /* KREngine.mm in Sources */,
|
E499BF2516AE8C20007FCDBE /* KREngine.mm in Sources */,
|
||||||
10CC33A5168534F000BB9846 /* KRCamera.cpp in Sources */,
|
10CC33A5168534F000BB9846 /* KRCamera.cpp in Sources */,
|
||||||
E460292C166834AB00261BB9 /* KRTextureAnimated.cpp in Sources */,
|
E460292C166834AB00261BB9 /* KRTextureAnimated.cpp in Sources */,
|
||||||
@@ -1668,7 +1670,7 @@
|
|||||||
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
|
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_OPTIMIZATION_LEVEL = 0;
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
|
GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
|
||||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||||
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
@@ -1773,10 +1775,6 @@
|
|||||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||||
GCC_PREFIX_HEADER = "kraken_osx/kraken-prefix.pch";
|
GCC_PREFIX_HEADER = "kraken_osx/kraken-prefix.pch";
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
||||||
"DEBUG=1",
|
|
||||||
"$(inherited)",
|
|
||||||
);
|
|
||||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||||
|
|||||||
@@ -75,8 +75,6 @@ void KRCamera::renderFrame(float deltaTime, GLint renderBufferWidth, GLint rende
|
|||||||
}
|
}
|
||||||
m_last_frame_start = current_time;
|
m_last_frame_start = current_time;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
GLint defaultFBO;
|
GLint defaultFBO;
|
||||||
GLDEBUG(glGetIntegerv(GL_FRAMEBUFFER_BINDING, &defaultFBO));
|
GLDEBUG(glGetIntegerv(GL_FRAMEBUFFER_BINDING, &defaultFBO));
|
||||||
|
|
||||||
@@ -99,9 +97,21 @@ void KRCamera::renderFrame(float deltaTime, GLint renderBufferWidth, GLint rende
|
|||||||
|
|
||||||
scene.updateOctree(m_viewport);
|
scene.updateOctree(m_viewport);
|
||||||
|
|
||||||
|
// ----====---- Generate Shadowmaps for Lights ----====----
|
||||||
|
if(settings.m_cShadowBuffers > 0) {
|
||||||
|
GL_PUSH_GROUP_MARKER("Generate Shadowmaps");
|
||||||
|
|
||||||
|
scene.render(this, m_viewport.getVisibleBounds(), m_viewport, KRNode::RENDER_PASS_GENERATE_SHADOWMAPS, settings.bEnableDeferredLighting);
|
||||||
|
GLDEBUG(glViewport(0, 0, m_viewport.getSize().x, m_viewport.getSize().y));
|
||||||
|
GL_POP_GROUP_MARKER;
|
||||||
|
}
|
||||||
|
|
||||||
if(settings.bEnableDeferredLighting) {
|
if(settings.bEnableDeferredLighting) {
|
||||||
|
|
||||||
// ----====---- Opaque Geometry, Deferred rendering Pass 1 ----====----
|
// ----====---- Opaque Geometry, Deferred rendering Pass 1 ----====----
|
||||||
|
|
||||||
|
GL_PUSH_GROUP_MARKER("Deferred Lighting - Pass 1 (Opaque)");
|
||||||
|
|
||||||
// Set render target
|
// Set render target
|
||||||
GLDEBUG(glBindFramebuffer(GL_FRAMEBUFFER, compositeFramebuffer));
|
GLDEBUG(glBindFramebuffer(GL_FRAMEBUFFER, compositeFramebuffer));
|
||||||
GLDEBUG(glClearColor(0.0f, 0.0f, 0.0f, 0.0f));
|
GLDEBUG(glClearColor(0.0f, 0.0f, 0.0f, 0.0f));
|
||||||
@@ -125,11 +135,15 @@ void KRCamera::renderFrame(float deltaTime, GLint renderBufferWidth, GLint rende
|
|||||||
// Render the geometry
|
// Render the geometry
|
||||||
scene.render(this, m_viewport.getVisibleBounds(), m_viewport, KRNode::RENDER_PASS_DEFERRED_GBUFFER, true);
|
scene.render(this, m_viewport.getVisibleBounds(), m_viewport, KRNode::RENDER_PASS_DEFERRED_GBUFFER, true);
|
||||||
|
|
||||||
// ----====---- Generate Shadowmaps for Lights ----====----
|
|
||||||
scene.render(this, m_viewport.getVisibleBounds(), m_viewport, KRNode::RENDER_PASS_GENERATE_SHADOWMAPS, false);
|
GL_POP_GROUP_MARKER;
|
||||||
GLDEBUG(glViewport(0, 0, m_viewport.getSize().x, m_viewport.getSize().y));
|
|
||||||
|
|
||||||
|
|
||||||
// ----====---- Opaque Geometry, Deferred rendering Pass 2 ----====----
|
// ----====---- Opaque Geometry, Deferred rendering Pass 2 ----====----
|
||||||
|
|
||||||
|
GL_PUSH_GROUP_MARKER("Deferred Lighting - Pass 2 (Opaque)");
|
||||||
|
|
||||||
// Set render target
|
// Set render target
|
||||||
GLDEBUG(glBindFramebuffer(GL_FRAMEBUFFER, lightAccumulationBuffer));
|
GLDEBUG(glBindFramebuffer(GL_FRAMEBUFFER, lightAccumulationBuffer));
|
||||||
GLDEBUG(glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, compositeDepthTexture, 0));
|
GLDEBUG(glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, compositeDepthTexture, 0));
|
||||||
@@ -155,7 +169,12 @@ void KRCamera::renderFrame(float deltaTime, GLint renderBufferWidth, GLint rende
|
|||||||
// Render the geometry
|
// Render the geometry
|
||||||
scene.render(this, m_viewport.getVisibleBounds(), m_viewport, KRNode::RENDER_PASS_DEFERRED_LIGHTS, false);
|
scene.render(this, m_viewport.getVisibleBounds(), m_viewport, KRNode::RENDER_PASS_DEFERRED_LIGHTS, false);
|
||||||
|
|
||||||
|
GL_POP_GROUP_MARKER;
|
||||||
|
|
||||||
// ----====---- Opaque Geometry, Deferred rendering Pass 3 ----====----
|
// ----====---- Opaque Geometry, Deferred rendering Pass 3 ----====----
|
||||||
|
|
||||||
|
GL_PUSH_GROUP_MARKER("Deferred Lighting - Pass 3 (Opaque)");
|
||||||
|
|
||||||
// Set render target
|
// Set render target
|
||||||
GLDEBUG(glBindFramebuffer(GL_FRAMEBUFFER, compositeFramebuffer));
|
GLDEBUG(glBindFramebuffer(GL_FRAMEBUFFER, compositeFramebuffer));
|
||||||
GLDEBUG(glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, compositeDepthTexture, 0));
|
GLDEBUG(glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, compositeDepthTexture, 0));
|
||||||
@@ -194,13 +213,13 @@ void KRCamera::renderFrame(float deltaTime, GLint renderBufferWidth, GLint rende
|
|||||||
m_pContext->getTextureManager()->selectTexture(7, NULL);
|
m_pContext->getTextureManager()->selectTexture(7, NULL);
|
||||||
GLDEBUG(glActiveTexture(GL_TEXTURE7));
|
GLDEBUG(glActiveTexture(GL_TEXTURE7));
|
||||||
GLDEBUG(glBindTexture(GL_TEXTURE_2D, 0));
|
GLDEBUG(glBindTexture(GL_TEXTURE_2D, 0));
|
||||||
|
|
||||||
|
GL_POP_GROUP_MARKER;
|
||||||
} else {
|
} else {
|
||||||
// ----====---- Generate Shadowmaps for Lights ----====----
|
|
||||||
if(settings.m_cShadowBuffers > 0) {
|
|
||||||
scene.render(this, m_viewport.getVisibleBounds(), m_viewport, KRNode::RENDER_PASS_GENERATE_SHADOWMAPS, true);
|
|
||||||
}
|
|
||||||
// ----====---- Opaque Geometry, Forward Rendering ----====----
|
// ----====---- Opaque Geometry, Forward Rendering ----====----
|
||||||
|
|
||||||
|
GL_PUSH_GROUP_MARKER("Forward Rendering - Opaque");
|
||||||
|
|
||||||
// Set render target
|
// Set render target
|
||||||
GLDEBUG(glBindFramebuffer(GL_FRAMEBUFFER, compositeFramebuffer));
|
GLDEBUG(glBindFramebuffer(GL_FRAMEBUFFER, compositeFramebuffer));
|
||||||
GLDEBUG(glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, compositeDepthTexture, 0));
|
GLDEBUG(glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, compositeDepthTexture, 0));
|
||||||
@@ -229,10 +248,15 @@ void KRCamera::renderFrame(float deltaTime, GLint renderBufferWidth, GLint rende
|
|||||||
|
|
||||||
// Render the geometry
|
// Render the geometry
|
||||||
scene.render(this, m_viewport.getVisibleBounds(), m_viewport, KRNode::RENDER_PASS_FORWARD_OPAQUE, true);
|
scene.render(this, m_viewport.getVisibleBounds(), m_viewport, KRNode::RENDER_PASS_FORWARD_OPAQUE, true);
|
||||||
|
|
||||||
|
GL_POP_GROUP_MARKER;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----====---- Sky Box ----====----
|
// ----====---- Sky Box ----====----
|
||||||
|
|
||||||
|
|
||||||
|
GL_PUSH_GROUP_MARKER("Sky Box");
|
||||||
|
|
||||||
// Set render target
|
// Set render target
|
||||||
GLDEBUG(glBindFramebuffer(GL_FRAMEBUFFER, compositeFramebuffer));
|
GLDEBUG(glBindFramebuffer(GL_FRAMEBUFFER, compositeFramebuffer));
|
||||||
GLDEBUG(glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, compositeDepthTexture, 0));
|
GLDEBUG(glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, compositeDepthTexture, 0));
|
||||||
@@ -262,9 +286,13 @@ void KRCamera::renderFrame(float deltaTime, GLint renderBufferWidth, GLint rende
|
|||||||
GLDEBUG(glDrawArrays(GL_TRIANGLE_STRIP, 0, 4));
|
GLDEBUG(glDrawArrays(GL_TRIANGLE_STRIP, 0, 4));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GL_POP_GROUP_MARKER;
|
||||||
|
|
||||||
|
|
||||||
// ----====---- Transparent Geometry, Forward Rendering ----====----
|
// ----====---- Transparent Geometry, Forward Rendering ----====----
|
||||||
|
|
||||||
|
GL_PUSH_GROUP_MARKER("Forward Rendering - Transparent");
|
||||||
|
|
||||||
// Note: These parameters have already been set up by the skybox render above
|
// Note: These parameters have already been set up by the skybox render above
|
||||||
//
|
//
|
||||||
// // Set render target
|
// // Set render target
|
||||||
@@ -289,8 +317,12 @@ void KRCamera::renderFrame(float deltaTime, GLint renderBufferWidth, GLint rende
|
|||||||
// Render all transparent geometry
|
// Render all transparent geometry
|
||||||
scene.render(this, m_viewport.getVisibleBounds(), m_viewport, KRNode::RENDER_PASS_FORWARD_TRANSPARENT, false);
|
scene.render(this, m_viewport.getVisibleBounds(), m_viewport, KRNode::RENDER_PASS_FORWARD_TRANSPARENT, false);
|
||||||
|
|
||||||
|
GL_POP_GROUP_MARKER;
|
||||||
|
|
||||||
// ----====---- Particle Occlusion Tests ----====----
|
// ----====---- Particle Occlusion Tests ----====----
|
||||||
|
|
||||||
|
GL_PUSH_GROUP_MARKER("Particle Occlusion Tests");
|
||||||
|
|
||||||
// Set render target
|
// Set render target
|
||||||
GLDEBUG(glBindFramebuffer(GL_FRAMEBUFFER, compositeFramebuffer));
|
GLDEBUG(glBindFramebuffer(GL_FRAMEBUFFER, compositeFramebuffer));
|
||||||
GLDEBUG(glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, compositeDepthTexture, 0));
|
GLDEBUG(glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, compositeDepthTexture, 0));
|
||||||
@@ -313,8 +345,12 @@ void KRCamera::renderFrame(float deltaTime, GLint renderBufferWidth, GLint rende
|
|||||||
// ----====---- Perform Occlusion Tests ----====----
|
// ----====---- Perform Occlusion Tests ----====----
|
||||||
scene.render(this, m_viewport.getVisibleBounds(), m_viewport, RENDER_PASS_PARTICLE_OCCLUSION, false);
|
scene.render(this, m_viewport.getVisibleBounds(), m_viewport, RENDER_PASS_PARTICLE_OCCLUSION, false);
|
||||||
|
|
||||||
|
GL_POP_GROUP_MARKER;
|
||||||
|
|
||||||
// ----====---- Flares ----====----
|
// ----====---- Flares ----====----
|
||||||
|
|
||||||
|
GL_PUSH_GROUP_MARKER("Additive Particles");
|
||||||
|
|
||||||
// Set render target
|
// Set render target
|
||||||
GLDEBUG(glBindFramebuffer(GL_FRAMEBUFFER, compositeFramebuffer));
|
GLDEBUG(glBindFramebuffer(GL_FRAMEBUFFER, compositeFramebuffer));
|
||||||
GLDEBUG(glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, compositeDepthTexture, 0));
|
GLDEBUG(glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, compositeDepthTexture, 0));
|
||||||
@@ -336,9 +372,14 @@ void KRCamera::renderFrame(float deltaTime, GLint renderBufferWidth, GLint rende
|
|||||||
// Render all flares
|
// Render all flares
|
||||||
scene.render(this, m_viewport.getVisibleBounds(), m_viewport, KRNode::RENDER_PASS_ADDITIVE_PARTICLES, false);
|
scene.render(this, m_viewport.getVisibleBounds(), m_viewport, KRNode::RENDER_PASS_ADDITIVE_PARTICLES, false);
|
||||||
|
|
||||||
|
GL_POP_GROUP_MARKER;
|
||||||
|
|
||||||
// ----====---- Volumetric Lighting ----====----
|
// ----====---- Volumetric Lighting ----====----
|
||||||
|
|
||||||
if(settings.volumetric_environment_enable) {
|
if(settings.volumetric_environment_enable) {
|
||||||
|
|
||||||
|
GL_PUSH_GROUP_MARKER("Volumetric Lighting");
|
||||||
|
|
||||||
KRViewport volumetricLightingViewport = KRViewport(KRVector2(volumetricBufferWidth, volumetricBufferHeight), m_viewport.getViewMatrix(), m_viewport.getProjectionMatrix());
|
KRViewport volumetricLightingViewport = KRViewport(KRVector2(volumetricBufferWidth, volumetricBufferHeight), m_viewport.getViewMatrix(), m_viewport.getProjectionMatrix());
|
||||||
|
|
||||||
if(settings.volumetric_environment_downsample != 0) {
|
if(settings.volumetric_environment_downsample != 0) {
|
||||||
@@ -371,12 +412,16 @@ void KRCamera::renderFrame(float deltaTime, GLint renderBufferWidth, GLint rende
|
|||||||
|
|
||||||
GLDEBUG(glViewport(0, 0, m_viewport.getSize().x, m_viewport.getSize().y));
|
GLDEBUG(glViewport(0, 0, m_viewport.getSize().x, m_viewport.getSize().y));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GL_POP_GROUP_MARKER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ----====---- Debug Overlay ----====----
|
// ----====---- Debug Overlay ----====----
|
||||||
|
|
||||||
|
GL_PUSH_GROUP_MARKER("Debug Overlays");
|
||||||
|
|
||||||
if(settings.bShowOctree) {
|
if(settings.bShowOctree) {
|
||||||
// Enable z-buffer test
|
// Enable z-buffer test
|
||||||
GLDEBUG(glEnable(GL_DEPTH_TEST));
|
GLDEBUG(glEnable(GL_DEPTH_TEST));
|
||||||
@@ -409,12 +454,17 @@ void KRCamera::renderFrame(float deltaTime, GLint renderBufferWidth, GLint rende
|
|||||||
// Re-enable z-buffer write
|
// Re-enable z-buffer write
|
||||||
GLDEBUG(glDepthMask(GL_TRUE));
|
GLDEBUG(glDepthMask(GL_TRUE));
|
||||||
|
|
||||||
|
GL_POP_GROUP_MARKER;
|
||||||
|
|
||||||
|
|
||||||
// fprintf(stderr, "VBO Mem: %i Kbyte Texture Mem: %i/%i Kbyte (active/total) Shader Handles: %i Visible Bounds: %i Max Texture LOD: %i\n", (int)m_pContext->getModelManager()->getMemUsed() / 1024, (int)m_pContext->getTextureManager()->getActiveMemUsed() / 1024, (int)m_pContext->getTextureManager()->getMemUsed() / 1024, (int)m_pContext->getShaderManager()->getShaderHandlesUsed(), (int)m_visibleBounds.size(), m_pContext->getTextureManager()->getLODDimCap());
|
// fprintf(stderr, "VBO Mem: %i Kbyte Texture Mem: %i/%i Kbyte (active/total) Shader Handles: %i Visible Bounds: %i Max Texture LOD: %i\n", (int)m_pContext->getModelManager()->getMemUsed() / 1024, (int)m_pContext->getTextureManager()->getActiveMemUsed() / 1024, (int)m_pContext->getTextureManager()->getMemUsed() / 1024, (int)m_pContext->getShaderManager()->getShaderHandlesUsed(), (int)m_visibleBounds.size(), m_pContext->getTextureManager()->getLODDimCap());
|
||||||
|
GL_PUSH_GROUP_MARKER("Post Processing");
|
||||||
|
|
||||||
GLDEBUG(glBindFramebuffer(GL_FRAMEBUFFER, defaultFBO));
|
GLDEBUG(glBindFramebuffer(GL_FRAMEBUFFER, defaultFBO));
|
||||||
renderPost();
|
renderPost();
|
||||||
m_pContext->getModelManager()->unbindVBO();
|
m_pContext->getModelManager()->unbindVBO();
|
||||||
|
|
||||||
|
GL_POP_GROUP_MARKER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -33,13 +33,14 @@ KRVector3 KRDirectionalLight::getWorldLightDirection() {
|
|||||||
const GLfloat PI = 3.14159265;
|
const GLfloat PI = 3.14159265;
|
||||||
const GLfloat d2r = PI * 2 / 360;
|
const GLfloat d2r = PI * 2 / 360;
|
||||||
|
|
||||||
KRVector3 world_rotation = getLocalRotation();
|
KRVector3 world_rotation = getWorldRotation();
|
||||||
KRVector3 light_rotation = KRVector3(0.0, 0.0, -1.0);
|
KRVector3 light_rotation = KRVector3(0.0, 0.0, 1.0);
|
||||||
|
|
||||||
KRMat4 m;
|
KRMat4 m;
|
||||||
m.rotate(world_rotation.x, X_AXIS);
|
m.rotate(world_rotation.x, X_AXIS);
|
||||||
m.rotate(world_rotation.y, Y_AXIS);
|
m.rotate(world_rotation.y, Y_AXIS);
|
||||||
m.rotate(world_rotation.z, X_AXIS);
|
m.rotate(world_rotation.z, Z_AXIS);
|
||||||
m.rotate(-90.0 * d2r, Y_AXIS);
|
// m.rotate(-90.0 * d2r, Y_AXIS);
|
||||||
KRVector3 light_direction = KRMat4::Dot(m, light_rotation);
|
KRVector3 light_direction = KRMat4::Dot(m, light_rotation);
|
||||||
return light_direction;
|
return light_direction;
|
||||||
}
|
}
|
||||||
@@ -87,7 +88,7 @@ int KRDirectionalLight::configureShadowBufferViewports(const KRViewport &viewpor
|
|||||||
KRAABB prevShadowBounds = KRAABB(-KRVector3::One(), KRVector3::One(), KRMat4::Invert(m_shadowViewports[iShadow].getViewProjectionMatrix()));
|
KRAABB prevShadowBounds = KRAABB(-KRVector3::One(), KRVector3::One(), KRMat4::Invert(m_shadowViewports[iShadow].getViewProjectionMatrix()));
|
||||||
KRAABB minimumShadowBounds = KRAABB(-KRVector3::One(), KRVector3::One(), KRMat4::Invert(newShadowViewport.getViewProjectionMatrix()));
|
KRAABB minimumShadowBounds = KRAABB(-KRVector3::One(), KRVector3::One(), KRMat4::Invert(newShadowViewport.getViewProjectionMatrix()));
|
||||||
minimumShadowBounds.scale(1.0f / KRENGINE_SHADOW_BOUNDS_EXTRA_SCALE);
|
minimumShadowBounds.scale(1.0f / KRENGINE_SHADOW_BOUNDS_EXTRA_SCALE);
|
||||||
if(!prevShadowBounds.contains(minimumShadowBounds) || !shadowValid[iShadow]) {
|
if(!prevShadowBounds.contains(minimumShadowBounds) || !shadowValid[iShadow] || true) { // FINDME, HACK - Re-generating the shadow map every frame. This should only be needed if the shadow contains non-static geometry
|
||||||
m_shadowViewports[iShadow] = newShadowViewport;
|
m_shadowViewports[iShadow] = newShadowViewport;
|
||||||
shadowValid[iShadow] = false;
|
shadowValid[iShadow] = false;
|
||||||
fprintf(stderr, "Kraken - Generate shadow maps...\n");
|
fprintf(stderr, "Kraken - Generate shadow maps...\n");
|
||||||
|
|||||||
@@ -101,6 +101,8 @@ using std::queue;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
#define GLDEBUG(x) \
|
#define GLDEBUG(x) \
|
||||||
x; \
|
x; \
|
||||||
{ \
|
{ \
|
||||||
@@ -110,7 +112,12 @@ while( (e=glGetError()) != GL_NO_ERROR) \
|
|||||||
fprintf(stderr, "Error at line number %d, in file %s. glGetError() returned %i for call %s\n",__LINE__, __FILE__, e, #x ); \
|
fprintf(stderr, "Error at line number %d, in file %s. glGetError() returned %i for call %s\n",__LINE__, __FILE__, e, #x ); \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
#define GLDEBUG(x) x;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
#define ALDEBUG(x) \
|
#define ALDEBUG(x) \
|
||||||
x; \
|
x; \
|
||||||
{ \
|
{ \
|
||||||
@@ -120,7 +127,11 @@ while( (e=alGetError()) != AL_NO_ERROR) \
|
|||||||
fprintf(stderr, "Error at line number %d, in file %s. alGetError() returned %i for call %s\n",__LINE__, __FILE__, e, #x ); \
|
fprintf(stderr, "Error at line number %d, in file %s. alGetError() returned %i for call %s\n",__LINE__, __FILE__, e, #x ); \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
#define ALDEBUG(x) x;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
#define OSDEBUG(x) \
|
#define OSDEBUG(x) \
|
||||||
{ \
|
{ \
|
||||||
OSStatus e = x; \
|
OSStatus e = x; \
|
||||||
@@ -129,6 +140,22 @@ if( e != noErr) \
|
|||||||
fprintf(stderr, "Error at line number %d, in file %s. Returned %d for call %s\n",__LINE__, __FILE__, e, #x ); \
|
fprintf(stderr, "Error at line number %d, in file %s. Returned %d for call %s\n",__LINE__, __FILE__, e, #x ); \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
#define OSDEBUG(x) x;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if GL_EXT_debug_marker && DEBUG
|
||||||
|
|
||||||
|
#define GL_PUSH_GROUP_MARKER(x) glPushGroupMarkerEXT(0, x)
|
||||||
|
#define GL_POP_GROUP_MARKER glPopGroupMarkerEXT()
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define GL_PUSH_GROUP_MARKER(x)
|
||||||
|
#define GL_POP_GROUP_MARKER
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#define KRMIN(x,y) ((x) < (y) ? (x) : (y))
|
#define KRMIN(x,y) ((x) < (y) ? (x) : (y))
|
||||||
#define KRMAX(x,y) ((x) > (y) ? (x) : (y))
|
#define KRMAX(x,y) ((x) > (y) ? (x) : (y))
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ void KRLight::render(KRCamera *pCamera, std::vector<KRLight *> &lights, const KR
|
|||||||
// Render brownian particles for dust floating in air
|
// Render brownian particles for dust floating in air
|
||||||
if(m_cShadowBuffers >= 1 && shadowValid[0] && m_dust_particle_density > 0.0f && m_dust_particle_size > 0.0f && m_dust_particle_intensity > 0.0f) {
|
if(m_cShadowBuffers >= 1 && shadowValid[0] && m_dust_particle_density > 0.0f && m_dust_particle_size > 0.0f && m_dust_particle_intensity > 0.0f) {
|
||||||
float lod_coverage = getBounds().coverage(viewport.getViewProjectionMatrix(), viewport.getSize()); // This also checks the view frustrum culling
|
float lod_coverage = getBounds().coverage(viewport.getViewProjectionMatrix(), viewport.getSize()); // This also checks the view frustrum culling
|
||||||
if(lod_coverage > 0.0f || true) {
|
if(lod_coverage > 0.0f || true) { // FINDME, HACK need to remove "|| true"?
|
||||||
|
|
||||||
float particle_range = 600.0f;
|
float particle_range = 600.0f;
|
||||||
|
|
||||||
@@ -413,8 +413,9 @@ void KRLight::renderShadowBuffers(KRCamera *pCamera)
|
|||||||
|
|
||||||
GLDEBUG(glDisable(GL_DITHER));
|
GLDEBUG(glDisable(GL_DITHER));
|
||||||
|
|
||||||
GLDEBUG(glCullFace(GL_BACK)); // Enable frontface culling, which eliminates some self-cast shadow artifacts
|
//GLDEBUG(glCullFace(GL_BACK)); // Enable frontface culling, which eliminates some self-cast shadow artifacts
|
||||||
GLDEBUG(glEnable(GL_CULL_FACE));
|
//GLDEBUG(glEnable(GL_CULL_FACE));
|
||||||
|
GLDEBUG(glDisable(GL_CULL_FACE));
|
||||||
|
|
||||||
// Enable z-buffer test
|
// Enable z-buffer test
|
||||||
GLDEBUG(glEnable(GL_DEPTH_TEST));
|
GLDEBUG(glEnable(GL_DEPTH_TEST));
|
||||||
@@ -431,6 +432,8 @@ void KRLight::renderShadowBuffers(KRCamera *pCamera)
|
|||||||
|
|
||||||
|
|
||||||
getScene().render(pCamera, m_shadowViewports[iShadow].getVisibleBounds(), m_shadowViewports[iShadow], KRNode::RENDER_PASS_SHADOWMAP, true);
|
getScene().render(pCamera, m_shadowViewports[iShadow].getVisibleBounds(), m_shadowViewports[iShadow], KRNode::RENDER_PASS_SHADOWMAP, true);
|
||||||
|
|
||||||
|
GLDEBUG(glEnable(GL_CULL_FACE));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user