mirror of
https://github.com/AleziaKurdis/overte.git
synced 2025-08-10 04:20:58 +02:00
Turn on/off debug AO from menu item
This commit is contained in:
parent
075c9f05de
commit
e0634de403
7 changed files with 28 additions and 10 deletions
|
@ -3336,6 +3336,8 @@ void Application::displaySide(RenderArgs* renderArgs, Camera& theCamera, bool se
|
||||||
|
|
||||||
renderContext._drawItemStatus = sceneInterface->doEngineDisplayItemStatus();
|
renderContext._drawItemStatus = sceneInterface->doEngineDisplayItemStatus();
|
||||||
|
|
||||||
|
renderContext._occlusionStatus = Menu::getInstance()->isOptionChecked(MenuOption::AmbientOcclusion);
|
||||||
|
|
||||||
renderArgs->_shouldRender = LODManager::shouldRender;
|
renderArgs->_shouldRender = LODManager::shouldRender;
|
||||||
|
|
||||||
renderContext.args = renderArgs;
|
renderContext.args = renderArgs;
|
||||||
|
|
|
@ -134,7 +134,7 @@ namespace MenuOption {
|
||||||
const QString AddressBar = "Show Address Bar";
|
const QString AddressBar = "Show Address Bar";
|
||||||
const QString AlignForearmsWithWrists = "Align Forearms with Wrists";
|
const QString AlignForearmsWithWrists = "Align Forearms with Wrists";
|
||||||
const QString AlternateIK = "Alternate IK";
|
const QString AlternateIK = "Alternate IK";
|
||||||
const QString AmbientOcclusion = "Ambient Occlusion";
|
const QString AmbientOcclusion = "Debug Ambient Occlusion";
|
||||||
const QString Animations = "Animations...";
|
const QString Animations = "Animations...";
|
||||||
const QString Atmosphere = "Atmosphere";
|
const QString Atmosphere = "Atmosphere";
|
||||||
const QString Attachments = "Attachments...";
|
const QString Attachments = "Attachments...";
|
||||||
|
|
|
@ -193,8 +193,10 @@ const gpu::PipelinePointer& AmbientOcclusion::getOcclusionPipeline() {
|
||||||
|
|
||||||
gpu::Shader::makeProgram(*program, slotBindings);
|
gpu::Shader::makeProgram(*program, slotBindings);
|
||||||
|
|
||||||
//_drawItemBoundPosLoc = program->getUniforms().findLocation("inBoundPos");
|
_gScaleLoc = program->getUniforms().findLocation("g_scale");
|
||||||
//_drawItemBoundDimLoc = program->getUniforms().findLocation("inBoundDim");
|
_gBiasLoc = program->getUniforms().findLocation("g_bias");
|
||||||
|
_gSampleRadiusLoc = program->getUniforms().findLocation("g_sample_rad");
|
||||||
|
_gIntensityLoc = program->getUniforms().findLocation("g_intensity");
|
||||||
|
|
||||||
gpu::StatePointer state = gpu::StatePointer(new gpu::State());
|
gpu::StatePointer state = gpu::StatePointer(new gpu::State());
|
||||||
|
|
||||||
|
@ -345,7 +347,7 @@ void AmbientOcclusion::run(const render::SceneContextPointer& sceneContext, cons
|
||||||
// Occlusion step
|
// Occlusion step
|
||||||
getOcclusionPipeline();
|
getOcclusionPipeline();
|
||||||
batch.setResourceTexture(0, DependencyManager::get<TextureCache>()->getPrimaryDepthTexture());
|
batch.setResourceTexture(0, DependencyManager::get<TextureCache>()->getPrimaryDepthTexture());
|
||||||
batch.setResourceTexture(1, DependencyManager::get<TextureCache>()->getPrimaryFramebuffer()->getRenderBuffer(0));
|
batch.setResourceTexture(1, DependencyManager::get<TextureCache>()->getPrimaryNormalTexture());
|
||||||
_occlusionBuffer->setRenderBuffer(0, _occlusionTexture);
|
_occlusionBuffer->setRenderBuffer(0, _occlusionTexture);
|
||||||
batch.setFramebuffer(_occlusionBuffer);
|
batch.setFramebuffer(_occlusionBuffer);
|
||||||
|
|
||||||
|
@ -380,12 +382,12 @@ void AmbientOcclusion::run(const render::SceneContextPointer& sceneContext, cons
|
||||||
batch.setPipeline(getHBlurPipeline());
|
batch.setPipeline(getHBlurPipeline());
|
||||||
|
|
||||||
DependencyManager::get<GeometryCache>()->renderQuad(batch, bottomLeft, topRight, texCoordTopLeft, texCoordBottomRight, color);
|
DependencyManager::get<GeometryCache>()->renderQuad(batch, bottomLeft, topRight, texCoordTopLeft, texCoordBottomRight, color);
|
||||||
|
|
||||||
// "Blend" step
|
// "Blend" step
|
||||||
batch.setResourceTexture(0, _hBlurTexture);
|
batch.setResourceTexture(0, _occlusionTexture);
|
||||||
batch.setFramebuffer(DependencyManager::get<TextureCache>()->getPrimaryFramebuffer());
|
batch.setFramebuffer(DependencyManager::get<TextureCache>()->getPrimaryFramebuffer());
|
||||||
|
|
||||||
// bind the fourth gpu::Pipeline we need - for
|
// bind the fourth gpu::Pipeline we need - for blending the primary framefuffer with blurred occlusion texture
|
||||||
batch.setPipeline(getBlendPipeline());
|
batch.setPipeline(getBlendPipeline());
|
||||||
|
|
||||||
glm::vec2 bottomLeftSmall(0.5f, -1.0f);
|
glm::vec2 bottomLeftSmall(0.5f, -1.0f);
|
||||||
|
|
|
@ -61,6 +61,10 @@ RenderDeferredTask::RenderDeferredTask() : Task() {
|
||||||
_jobs.push_back(Job(new RenderDeferred::JobModel("RenderDeferred")));
|
_jobs.push_back(Job(new RenderDeferred::JobModel("RenderDeferred")));
|
||||||
_jobs.push_back(Job(new ResolveDeferred::JobModel("ResolveDeferred")));
|
_jobs.push_back(Job(new ResolveDeferred::JobModel("ResolveDeferred")));
|
||||||
_jobs.push_back(Job(new AmbientOcclusion::JobModel("AmbientOcclusion")));
|
_jobs.push_back(Job(new AmbientOcclusion::JobModel("AmbientOcclusion")));
|
||||||
|
|
||||||
|
_jobs.back().setEnabled(false);
|
||||||
|
_occlusionJobIndex = _jobs.size() - 1;
|
||||||
|
|
||||||
_jobs.push_back(Job(new FetchItems::JobModel("FetchTransparent",
|
_jobs.push_back(Job(new FetchItems::JobModel("FetchTransparent",
|
||||||
FetchItems(
|
FetchItems(
|
||||||
ItemFilter::Builder::transparentShape().withoutLayered(),
|
ItemFilter::Builder::transparentShape().withoutLayered(),
|
||||||
|
@ -79,7 +83,6 @@ RenderDeferredTask::RenderDeferredTask() : Task() {
|
||||||
_jobs.back().setEnabled(false);
|
_jobs.back().setEnabled(false);
|
||||||
_drawStatusJobIndex = _jobs.size() - 1;
|
_drawStatusJobIndex = _jobs.size() - 1;
|
||||||
|
|
||||||
//_jobs.push_back(Job(new AmbientOcclusion::JobModel("AmbientOcclusion")));
|
|
||||||
_jobs.push_back(Job(new DrawOverlay3D::JobModel("DrawOverlay3D")));
|
_jobs.push_back(Job(new DrawOverlay3D::JobModel("DrawOverlay3D")));
|
||||||
|
|
||||||
_jobs.push_back(Job(new ResetGLState::JobModel()));
|
_jobs.push_back(Job(new ResetGLState::JobModel()));
|
||||||
|
@ -110,6 +113,9 @@ void RenderDeferredTask::run(const SceneContextPointer& sceneContext, const Rend
|
||||||
// Make sure we turn the displayItemStatus on/off
|
// Make sure we turn the displayItemStatus on/off
|
||||||
setDrawItemStatus(renderContext->_drawItemStatus);
|
setDrawItemStatus(renderContext->_drawItemStatus);
|
||||||
|
|
||||||
|
// TODO: turn on/off AO through menu item
|
||||||
|
setOcclusionStatus(renderContext->_occlusionStatus);
|
||||||
|
|
||||||
renderContext->args->_context->syncCache();
|
renderContext->args->_context->syncCache();
|
||||||
|
|
||||||
for (auto job : _jobs) {
|
for (auto job : _jobs) {
|
||||||
|
|
|
@ -75,6 +75,11 @@ public:
|
||||||
void setDrawItemStatus(bool draw) { if (_drawStatusJobIndex >= 0) { _jobs[_drawStatusJobIndex].setEnabled(draw); } }
|
void setDrawItemStatus(bool draw) { if (_drawStatusJobIndex >= 0) { _jobs[_drawStatusJobIndex].setEnabled(draw); } }
|
||||||
bool doDrawItemStatus() const { if (_drawStatusJobIndex >= 0) { return _jobs[_drawStatusJobIndex].isEnabled(); } else { return false; } }
|
bool doDrawItemStatus() const { if (_drawStatusJobIndex >= 0) { return _jobs[_drawStatusJobIndex].isEnabled(); } else { return false; } }
|
||||||
|
|
||||||
|
int _occlusionJobIndex = -1;
|
||||||
|
|
||||||
|
void setOcclusionStatus(bool draw) { if (_occlusionJobIndex >= 0) { _jobs[_occlusionJobIndex].setEnabled(draw); } }
|
||||||
|
bool doOcclusionStatus() const { if (_occlusionJobIndex >= 0) { return _jobs[_occlusionJobIndex].isEnabled(); } else { return false; } }
|
||||||
|
|
||||||
virtual void run(const render::SceneContextPointer& sceneContext, const render::RenderContextPointer& renderContext);
|
virtual void run(const render::SceneContextPointer& sceneContext, const render::RenderContextPointer& renderContext);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -39,8 +39,9 @@ void main(void) {
|
||||||
float f = 30.0; // the far plane
|
float f = 30.0; // the far plane
|
||||||
float c = (2.0 * n) / (f + n - z * (f - n)); // convert to linear values
|
float c = (2.0 * n) / (f + n - z * (f - n)); // convert to linear values
|
||||||
|
|
||||||
//gl_FragColor = vec4(c, c, c, 1.0);
|
vec4 linearizedDepthColor = vec4(c, c, c, 1.0);
|
||||||
gl_FragColor = mix(depthColor, normalColor, normalColor.a);
|
gl_FragColor = mix(linearizedDepthColor, normalColor, 0.5);
|
||||||
|
//gl_FragColor = linearizedDepthColor;
|
||||||
|
|
||||||
//vec3 p = getPosition(i.uv);
|
//vec3 p = getPosition(i.uv);
|
||||||
//vec3 n = getNormal(i.uv);
|
//vec3 n = getNormal(i.uv);
|
||||||
|
|
|
@ -51,6 +51,8 @@ public:
|
||||||
|
|
||||||
bool _drawItemStatus = false;
|
bool _drawItemStatus = false;
|
||||||
|
|
||||||
|
bool _occlusionStatus = false;
|
||||||
|
|
||||||
RenderContext() {}
|
RenderContext() {}
|
||||||
};
|
};
|
||||||
typedef std::shared_ptr<RenderContext> RenderContextPointer;
|
typedef std::shared_ptr<RenderContext> RenderContextPointer;
|
||||||
|
|
Loading…
Reference in a new issue