mirror of
https://github.com/lubosz/overte.git
synced 2025-04-23 20:54:25 +02:00
Simple normal map debug
This commit is contained in:
parent
baf93e8a08
commit
c27944ae28
9 changed files with 46 additions and 19 deletions
|
@ -66,6 +66,12 @@ var overlaysCounter = new CounterWidget(panel, "Overlays",
|
|||
var showDisplayStatusFlag = 1;
|
||||
var showNetworkStatusFlag = 2;
|
||||
|
||||
panel.newCheckbox("Debug deferred buffer",
|
||||
function(value) { Scene.setEngineDisplayDebugDeferredBuffer(value > 0); },
|
||||
function() { return Scene.doEngineDisplayDebugDeferredBuffer() > 0; },
|
||||
function(value) { return value > 0; }
|
||||
);
|
||||
|
||||
panel.newCheckbox("Display status",
|
||||
function(value) { Scene.setEngineDisplayItemStatus(value ?
|
||||
Scene.doEngineDisplayItemStatus() | showDisplayStatusFlag :
|
||||
|
|
|
@ -3621,7 +3621,9 @@ void Application::displaySide(RenderArgs* renderArgs, Camera& theCamera, bool se
|
|||
renderContext._maxDrawnOpaqueItems = sceneInterface->getEngineMaxDrawnOpaqueItems();
|
||||
renderContext._maxDrawnTransparentItems = sceneInterface->getEngineMaxDrawnTransparentItems();
|
||||
renderContext._maxDrawnOverlay3DItems = sceneInterface->getEngineMaxDrawnOverlay3DItems();
|
||||
|
||||
|
||||
renderContext._drawDebugDeferredBuffer = sceneInterface->doEngineDisplayDebugDeferredBuffer();
|
||||
|
||||
renderContext._drawItemStatus = sceneInterface->doEngineDisplayItemStatus();
|
||||
if (Menu::getInstance()->isOptionChecked(MenuOption::PhysicsShowOwned)) {
|
||||
renderContext._drawItemStatus |= render::showNetworkStatusFlag;
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include <ViewFrustum.h>
|
||||
|
||||
#include "GeometryCache.h"
|
||||
#include "FramebufferCache.h"
|
||||
|
||||
#include "debug_deferred_buffer_vert.h"
|
||||
#include "debug_deferred_buffer_frag.h"
|
||||
|
@ -33,16 +34,8 @@ const gpu::PipelinePointer& DebugDeferredBuffer::getPipeline() {
|
|||
gpu::Shader::BindingSet slotBindings;
|
||||
gpu::Shader::makeProgram(*program, slotBindings);
|
||||
|
||||
auto state = std::make_shared<gpu::State>();
|
||||
|
||||
state->setDepthTest(false, false, gpu::LESS_EQUAL);
|
||||
|
||||
// Blend on transparent
|
||||
state->setBlendFunction(true,
|
||||
gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA);
|
||||
|
||||
// Good to go add the brand new pipeline
|
||||
_pipeline.reset(gpu::Pipeline::create(program, state));
|
||||
_pipeline.reset(gpu::Pipeline::create(program, std::make_shared<gpu::State>()));
|
||||
}
|
||||
return _pipeline;
|
||||
}
|
||||
|
@ -53,6 +46,9 @@ void DebugDeferredBuffer::run(const SceneContextPointer& sceneContext, const Ren
|
|||
assert(renderContext->args->_viewFrustum);
|
||||
RenderArgs* args = renderContext->args;
|
||||
gpu::doInBatch(args->_context, [&](gpu::Batch& batch) {
|
||||
auto geometryBuffer = DependencyManager::get<GeometryCache>();
|
||||
auto framebufferCache = DependencyManager::get<FramebufferCache>();
|
||||
|
||||
|
||||
glm::mat4 projMat;
|
||||
Transform viewMat;
|
||||
|
@ -64,9 +60,11 @@ void DebugDeferredBuffer::run(const SceneContextPointer& sceneContext, const Ren
|
|||
|
||||
batch.setPipeline(getPipeline());
|
||||
|
||||
batch.setResourceTexture(0, framebufferCache->getPrimaryNormalTexture());
|
||||
|
||||
glm::vec4 color(0.0f, 0.0f, 1.0f, 1.0f);
|
||||
glm::vec2 bottomLeft(0.0f, -1.0f);
|
||||
glm::vec2 topRight(1.0f, 1.0f);
|
||||
DependencyManager::get<GeometryCache>()->renderQuad(batch, bottomLeft, topRight, color);
|
||||
geometryBuffer->renderQuad(batch, bottomLeft, topRight, color);
|
||||
});
|
||||
}
|
|
@ -114,6 +114,8 @@ RenderDeferredTask::RenderDeferredTask() : Task() {
|
|||
_jobs.push_back(Job(new DrawTransparentDeferred::JobModel("TransparentDeferred", _jobs.back().getOutput())));
|
||||
|
||||
_jobs.push_back(Job(new DebugDeferredBuffer::JobModel("DebugDeferredBuffer")));
|
||||
_jobs.back().setEnabled(false);
|
||||
_drawDebugDeferredBufferIndex = _jobs.size() - 1;
|
||||
|
||||
// Grab a texture map representing the different status icons and assign that to the drawStatsuJob
|
||||
auto iconMapPath = PathUtils::resourcesPath() + "icons/statusIconAtlas.svg";
|
||||
|
@ -154,10 +156,13 @@ void RenderDeferredTask::run(const SceneContextPointer& sceneContext, const Rend
|
|||
return;
|
||||
}
|
||||
|
||||
// Make sure we turn the deferred buffer debug on/off
|
||||
setDrawDebugDeferredBuffer(renderContext->_drawDebugDeferredBuffer);
|
||||
|
||||
// Make sure we turn the displayItemStatus on/off
|
||||
setDrawItemStatus(renderContext->_drawItemStatus);
|
||||
|
||||
//Make sure we display hit effect on screen, as desired from a script
|
||||
// Make sure we display hit effect on screen, as desired from a script
|
||||
setDrawHitEffect(renderContext->_drawHitEffect);
|
||||
|
||||
|
||||
|
|
|
@ -93,16 +93,23 @@ public:
|
|||
~RenderDeferredTask();
|
||||
|
||||
render::Jobs _jobs;
|
||||
|
||||
|
||||
int _drawDebugDeferredBufferIndex = -1;
|
||||
int _drawStatusJobIndex = -1;
|
||||
int _drawHitEffectJobIndex = -1;
|
||||
|
||||
|
||||
void setDrawDebugDeferredBuffer(int draw) {
|
||||
if (_drawDebugDeferredBufferIndex >= 0) {
|
||||
_jobs[_drawDebugDeferredBufferIndex].setEnabled(draw > 0);
|
||||
}
|
||||
}
|
||||
bool doDrawDebugDeferredBuffer() const { if (_drawDebugDeferredBufferIndex >= 0) { return _jobs[_drawDebugDeferredBufferIndex].isEnabled(); } else { return false; } }
|
||||
|
||||
void setDrawItemStatus(int draw) {
|
||||
if (_drawStatusJobIndex >= 0) {
|
||||
_jobs[_drawStatusJobIndex].setEnabled(draw > 0);
|
||||
}
|
||||
}
|
||||
|
||||
bool doDrawItemStatus() const { if (_drawStatusJobIndex >= 0) { return _jobs[_drawStatusJobIndex].isEnabled(); } else { return false; } }
|
||||
|
||||
void setDrawHitEffect(bool draw) { if (_drawHitEffectJobIndex >= 0) { _jobs[_drawHitEffectJobIndex].setEnabled(draw); } }
|
||||
|
|
|
@ -12,10 +12,11 @@
|
|||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
//
|
||||
|
||||
<@include DeferredBufferWrite.slh@>
|
||||
<@include DeferredBuffer.slh@>
|
||||
|
||||
in vec2 uv;
|
||||
out vec4 outFragColor;
|
||||
|
||||
void main(void) {
|
||||
outFragColor = vec4(0.0, 0.0, 1.0, 1.0);
|
||||
outFragColor = texture(normalMap, uv);
|
||||
}
|
|
@ -14,6 +14,9 @@
|
|||
|
||||
<@include gpu/Inputs.slh@>
|
||||
|
||||
out vec2 uv;
|
||||
|
||||
void main(void) {
|
||||
uv = (inPosition.xy + 1.0) * 0.5;
|
||||
gl_Position = inPosition;
|
||||
}
|
|
@ -53,6 +53,7 @@ public:
|
|||
int _numDrawnOverlay3DItems = 0;
|
||||
int _maxDrawnOverlay3DItems = -1;
|
||||
|
||||
int _drawDebugDeferredBuffer = 0;
|
||||
int _drawItemStatus = 0;
|
||||
bool _drawHitEffect = false;
|
||||
|
||||
|
|
|
@ -106,7 +106,10 @@ public:
|
|||
Q_INVOKABLE int getEngineMaxDrawnTransparentItems() { return _maxDrawnTransparentItems; }
|
||||
Q_INVOKABLE void setEngineMaxDrawnOverlay3DItems(int count) { _maxDrawnOverlay3DItems = count; }
|
||||
Q_INVOKABLE int getEngineMaxDrawnOverlay3DItems() { return _maxDrawnOverlay3DItems; }
|
||||
|
||||
|
||||
Q_INVOKABLE void setEngineDisplayDebugDeferredBuffer(int display) { _drawDebugDeferredBuffer = display; }
|
||||
Q_INVOKABLE int doEngineDisplayDebugDeferredBuffer() { return _drawDebugDeferredBuffer; }
|
||||
|
||||
Q_INVOKABLE void setEngineDisplayItemStatus(int display) { _drawItemStatus = display; }
|
||||
Q_INVOKABLE int doEngineDisplayItemStatus() { return _drawItemStatus; }
|
||||
|
||||
|
@ -142,7 +145,8 @@ protected:
|
|||
int _maxDrawnOpaqueItems = -1;
|
||||
int _maxDrawnTransparentItems = -1;
|
||||
int _maxDrawnOverlay3DItems = -1;
|
||||
|
||||
|
||||
int _drawDebugDeferredBuffer = 0;
|
||||
int _drawItemStatus = 0;
|
||||
|
||||
bool _drawHitEffect = false;
|
||||
|
|
Loading…
Reference in a new issue