mirror of
https://github.com/overte-org/overte.git
synced 2025-04-22 02:44:36 +02:00
progress
This commit is contained in:
parent
24f022ec3b
commit
0b51e3c129
5 changed files with 24 additions and 23 deletions
interface/src/ui
libraries/render-utils/src
|
@ -41,7 +41,7 @@
|
|||
#include "MainWindow.h"
|
||||
#include "Snapshot.h"
|
||||
#include "SnapshotUploader.h"
|
||||
#include "ToneMappingEffect.h"
|
||||
#include "ToneMapAndResampleTask.h"
|
||||
|
||||
// filename format: hifi-snap-by-%username%-on-%date%_%time%_@-%location%.jpg
|
||||
// %1 <= username, %2 <= date and time, %3 <= current location
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
#include <shaders/Shaders.h>
|
||||
|
||||
#include <render/BlurTask.h>
|
||||
#include <render/ResampleTask.h>
|
||||
#include "ToneMapAndResampleTask.h"
|
||||
#include "render-utils/ShaderConstants.h"
|
||||
|
||||
#define BLOOM_BLUR_LEVEL_COUNT 3
|
||||
|
|
|
@ -29,7 +29,6 @@
|
|||
#include <render/DrawStatus.h>
|
||||
#include <render/DrawSceneOctree.h>
|
||||
#include <render/BlurTask.h>
|
||||
#include <render/ResampleTask.h>
|
||||
|
||||
#include "RenderHifi.h"
|
||||
#include "render-utils/ShaderConstants.h"
|
||||
|
@ -246,7 +245,7 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren
|
|||
{ // Debug the bounds of the rendered items, still look at the zbuffer
|
||||
const auto extraDebugBuffers = RenderDeferredTaskDebug::ExtraBuffers(linearDepthTarget, surfaceGeometryFramebuffer, ambientOcclusionFramebuffer, ambientOcclusionUniforms, scatteringResource, velocityBuffer);
|
||||
const auto debugInputs = RenderDeferredTaskDebug::Input(fetchedItems, shadowTaskOutputs, lightingStageInputs, lightClusters, prepareDeferredOutputs, extraDebugBuffers,
|
||||
deferredFrameTransform, jitter, lightingModel).asVarying();
|
||||
deferredFrameTransform, jitter, lightingModel).asVarying();
|
||||
task.addJob<RenderDeferredTaskDebug>("DebugRenderDeferredTask", debugInputs);
|
||||
}
|
||||
|
||||
|
@ -412,7 +411,6 @@ void RenderDeferredTaskDebug::build(JobModel& task, const render::Varying& input
|
|||
|
||||
const auto debugZoneInputs = DebugZoneLighting::Inputs(deferredFrameTransform, lightFrame, backgroundFrame).asVarying();
|
||||
task.addJob<DebugZoneLighting>("DrawZoneStack", debugZoneInputs);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
#include <gpu/Texture.h>
|
||||
#include <graphics/ShaderConstants.h>
|
||||
#include <render/ShapePipeline.h>
|
||||
#include <render/ResampleTask.h>
|
||||
|
||||
#include <render/FilterTask.h>
|
||||
|
||||
|
@ -100,6 +99,8 @@ void RenderForwardTask::build(JobModel& task, const render::Varying& input, rend
|
|||
|
||||
// GPU jobs: Start preparing the main framebuffer
|
||||
const auto scaledPrimaryFramebuffer = task.addJob<PreparePrimaryFramebufferMSAA>("PreparePrimaryBuffer");
|
||||
qDebug() << "anna forward " << "scaled " << renderContext->args->_viewport.z << " x " << renderContext->args->_viewport.w;
|
||||
|
||||
|
||||
// Prepare deferred, generate the shared Deferred Frame Transform. Only valid with the scaled frame buffer
|
||||
const auto deferredFrameTransform = task.addJob<GenerateDeferredFrameTransform>("DeferredFrameTransform");
|
||||
|
|
|
@ -34,7 +34,7 @@ void ToneMapAndResample::init(RenderArgs* args) {
|
|||
gpu::StatePointer blitState = gpu::StatePointer(new gpu::State());
|
||||
|
||||
// TODO why was this in the upsample task
|
||||
//blitState->setDepthTest(gpu::State::DepthTest(false, false));
|
||||
blitState->setDepthTest(gpu::State::DepthTest(false, false));
|
||||
blitState->setColorWriteMask(true, true, true, true);
|
||||
|
||||
_pipeline = gpu::PipelinePointer(gpu::Pipeline::create(gpu::Shader::createProgram(toneMapping), blitState));
|
||||
|
@ -63,13 +63,16 @@ gpu::FramebufferPointer ToneMapAndResample::getResampledFrameBuffer(const gpu::F
|
|||
|
||||
auto resampledFramebufferSize = glm::uvec2(glm::vec2(sourceFramebuffer->getSize()) * _factor);
|
||||
|
||||
if (!_destinationFrameBuffer || resampledFramebufferSize != _destinationFrameBuffer->getSize()) {
|
||||
_destinationFrameBuffer = gpu::FramebufferPointer(gpu::Framebuffer::create("ResampledOutput"));
|
||||
_destinationFrameBuffer = gpu::FramebufferPointer(gpu::Framebuffer::create("ResampledOutput"));
|
||||
|
||||
auto sampler = gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_LINEAR);
|
||||
auto target = gpu::Texture::createRenderBuffer(sourceFramebuffer->getRenderBuffer(0)->getTexelFormat(), resampledFramebufferSize.x, resampledFramebufferSize.y, gpu::Texture::SINGLE_MIP, sampler);
|
||||
_destinationFrameBuffer->setRenderBuffer(0, target);
|
||||
|
||||
auto depthFormat = gpu::Element(gpu::SCALAR, gpu::UINT32, gpu::DEPTH_STENCIL); // Depth24_Stencil8 texel format
|
||||
auto primaryDepthTexture = gpu::Texture::createRenderBuffer(depthFormat, resampledFramebufferSize.x, resampledFramebufferSize.y, gpu::Texture::SINGLE_MIP, sampler);
|
||||
_destinationFrameBuffer->setDepthStencilBuffer(primaryDepthTexture, depthFormat);
|
||||
|
||||
auto sampler = gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_LINEAR);
|
||||
auto target = gpu::Texture::createRenderBuffer(sourceFramebuffer->getRenderBuffer(0)->getTexelFormat(), resampledFramebufferSize.x, resampledFramebufferSize.y, gpu::Texture::SINGLE_MIP, sampler);
|
||||
_destinationFrameBuffer->setRenderBuffer(0, target);
|
||||
}
|
||||
return _destinationFrameBuffer;
|
||||
}
|
||||
|
||||
|
@ -84,9 +87,11 @@ void ToneMapAndResample::render(RenderArgs* args, const gpu::TexturePointer& lig
|
|||
return;
|
||||
}
|
||||
|
||||
//auto framebufferSize = glm::ivec2(lightingBuffer->getDimensions());
|
||||
const auto destBufferSize = destinationFramebuffer->getSize();
|
||||
|
||||
auto framebufferSize = destinationFramebuffer->getSize();
|
||||
auto srcBufferSize = glm::ivec2(lightingBuffer->getDimensions());
|
||||
|
||||
glm::ivec4 destViewport{ 0, 0, destBufferSize.x, destBufferSize.y };
|
||||
|
||||
gpu::doInBatch("ToneMapAndResample::render", args->_context, [&](gpu::Batch& batch) {
|
||||
batch.enableStereo(false);
|
||||
|
@ -95,10 +100,10 @@ void ToneMapAndResample::render(RenderArgs* args, const gpu::TexturePointer& lig
|
|||
// FIXME: Generate the Luminosity map
|
||||
//batch.generateTextureMips(lightingBuffer);
|
||||
|
||||
batch.setViewportTransform(args->_viewport);
|
||||
batch.setViewportTransform(destViewport);
|
||||
batch.setProjectionTransform(glm::mat4());
|
||||
batch.resetViewTransform();
|
||||
batch.setModelTransform(gpu::Framebuffer::evalSubregionTexcoordTransform(framebufferSize, args->_viewport));
|
||||
batch.setModelTransform(gpu::Framebuffer::evalSubregionTexcoordTransform(srcBufferSize, args->_viewport));
|
||||
batch.setPipeline(args->_renderMode == RenderArgs::MIRROR_RENDER_MODE ? _mirrorPipeline : _pipeline);
|
||||
|
||||
batch.setUniformBuffer(render_utils::slot::buffer::ToneMappingParams, _parametersBuffer);
|
||||
|
@ -106,13 +111,10 @@ void ToneMapAndResample::render(RenderArgs* args, const gpu::TexturePointer& lig
|
|||
batch.draw(gpu::TRIANGLE_STRIP, 4);
|
||||
});
|
||||
|
||||
destinationFramebuffer = getResampledFrameBuffer(destinationFramebuffer);
|
||||
//Set full final viewport
|
||||
args->_viewport = destViewport;
|
||||
|
||||
const auto bufferSize = destinationFramebuffer->getSize();
|
||||
glm::ivec4 viewport{ 0, 0, bufferSize.x, bufferSize.y };
|
||||
|
||||
//Set full final viewport
|
||||
args->_viewport = viewport;
|
||||
// TODO access violation reading 0xFFFFFFFFFFFFFFFF
|
||||
}
|
||||
|
||||
void ToneMapAndResample::configure(const Config& config) {
|
||||
|
|
Loading…
Reference in a new issue