mirror of
https://github.com/overte-org/overte.git
synced 2025-04-11 21:52:58 +02:00
fix on android, merge android and windows forward pipelines
This commit is contained in:
parent
2fca77867b
commit
3a437cf190
4 changed files with 10 additions and 30 deletions
|
@ -154,19 +154,13 @@ void NewFramebuffer::run(const render::RenderContextPointer& renderContext, cons
|
|||
glm::uvec2 frameSize(args->_viewport.z, args->_viewport.w);
|
||||
output.reset();
|
||||
|
||||
auto destBlitFbo = args->_blitFramebuffer;
|
||||
if (destBlitFbo && destBlitFbo->getSize() == frameSize) {
|
||||
output = destBlitFbo;
|
||||
return;
|
||||
}
|
||||
|
||||
// Else use the lodal Framebuffer
|
||||
if (_outputFramebuffer && _outputFramebuffer->getSize() != frameSize) {
|
||||
_outputFramebuffer.reset();
|
||||
}
|
||||
|
||||
if (!_outputFramebuffer) {
|
||||
_outputFramebuffer = gpu::FramebufferPointer(gpu::Framebuffer::create("newFramebuffer2.out"));
|
||||
_outputFramebuffer = gpu::FramebufferPointer(gpu::Framebuffer::create("newFramebuffer.out"));
|
||||
auto colorFormat = gpu::Element(gpu::SCALAR, gpu::FLOAT, gpu::R11G11B10);
|
||||
auto defaultSampler = gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_LINEAR);
|
||||
auto colorTexture = gpu::Texture::createRenderBuffer(colorFormat, frameSize.x, frameSize.y, gpu::Texture::SINGLE_MIP, defaultSampler);
|
||||
|
@ -195,7 +189,7 @@ void NewOrDefaultFramebuffer::run(const render::RenderContextPointer& renderCont
|
|||
}
|
||||
|
||||
if (!_outputFramebuffer) {
|
||||
_outputFramebuffer = gpu::FramebufferPointer(gpu::Framebuffer::create("newFramebuffer.out"));
|
||||
_outputFramebuffer = gpu::FramebufferPointer(gpu::Framebuffer::create("newOrDefaultFramebuffer.out"));
|
||||
auto colorFormat = gpu::Element(gpu::SCALAR, gpu::FLOAT, gpu::R11G11B10);
|
||||
auto defaultSampler = gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_LINEAR);
|
||||
auto colorTexture = gpu::Texture::createRenderBuffer(colorFormat, frameSize.x, frameSize.y, gpu::Texture::SINGLE_MIP, defaultSampler);
|
||||
|
|
|
@ -140,22 +140,15 @@ void RenderForwardTask::build(JobModel& task, const render::Varying& input, rend
|
|||
task.addJob<DebugZoneLighting>("DrawZoneStack", debugZoneInputs);
|
||||
}
|
||||
|
||||
//const auto newResolvedFramebuffer = task.addJob<NewFramebuffer>("MakeResolvingFramebuffer");
|
||||
const auto newResolvedFramebuffer = task.addJob<NewFramebuffer>("MakeResolvingFramebuffer");
|
||||
|
||||
#if 1
|
||||
const auto resolveInputs = ResolveFramebuffer::Inputs(scaledPrimaryFramebuffer, static_cast<gpu::FramebufferPointer>(nullptr)).asVarying();
|
||||
#else
|
||||
const auto resolveInputs = ResolveFramebuffer::Inputs(scaledPrimaryFramebuffer, newResolvedFramebuffer).asVarying();
|
||||
#endif
|
||||
|
||||
const auto resolvedFramebuffer = task.addJob<ResolveFramebuffer>("Resolve", resolveInputs);
|
||||
const auto toneMappedBuffer = resolvedFramebuffer;
|
||||
|
||||
//const auto toneMappingInputs = ToneMappingDeferred::Input(resolvedFramebuffer, args->blitFramebuffer).asVarying();
|
||||
const auto primaryFramebuffer = task.addJob<ToneMapAndResample>("ToneMapAndResample", toneMappedBuffer);
|
||||
const auto toneMappedBuffer = task.addJob<ToneMapAndResample>("ToneMapAndResample", resolvedFramebuffer);
|
||||
|
||||
// HUD Layer
|
||||
const auto renderHUDLayerInputs = RenderHUDLayerTask::Input(primaryFramebuffer, lightingModel, hudOpaque, hudTransparent, hazeFrame).asVarying();
|
||||
const auto renderHUDLayerInputs = RenderHUDLayerTask::Input(toneMappedBuffer, lightingModel, hudOpaque, hudTransparent, hazeFrame).asVarying();
|
||||
task.addJob<RenderHUDLayerTask>("RenderHUDLayer", renderHUDLayerInputs);
|
||||
}
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ ToneMapAndResample::ToneMapAndResample() {
|
|||
Parameters parameters;
|
||||
_parametersBuffer = gpu::BufferView(std::make_shared<gpu::Buffer>(sizeof(Parameters), (const gpu::Byte*) ¶meters));
|
||||
}
|
||||
/*
|
||||
|
||||
void ToneMapAndResample::init() {
|
||||
// shared_ptr to gpu::State
|
||||
gpu::StatePointer blitState = gpu::StatePointer(new gpu::State());
|
||||
|
@ -40,7 +40,6 @@ void ToneMapAndResample::init() {
|
|||
_pipeline = gpu::PipelinePointer(gpu::Pipeline::create(gpu::Shader::createProgram(toneMapping), blitState));
|
||||
_mirrorPipeline = gpu::PipelinePointer(gpu::Pipeline::create(gpu::Shader::createProgram(toneMapping_mirrored), blitState));
|
||||
}
|
||||
*/
|
||||
|
||||
void ToneMapAndResample::setExposure(float exposure) {
|
||||
auto& params = _parametersBuffer.get<Parameters>();
|
||||
|
@ -72,21 +71,15 @@ void ToneMapAndResample::run(const RenderContextPointer& renderContext, const In
|
|||
auto lightingBuffer = input->getRenderBuffer(0);
|
||||
|
||||
resampledFrameBuffer = args->_blitFramebuffer;
|
||||
/*
|
||||
|
||||
if (!lightingBuffer || !resampledFrameBuffer) {
|
||||
return;
|
||||
}*/
|
||||
}
|
||||
|
||||
if (resampledFrameBuffer != sourceFramebuffer) {
|
||||
|
||||
if (!_pipeline) {
|
||||
gpu::StatePointer blitState = gpu::StatePointer(new gpu::State());
|
||||
|
||||
blitState->setDepthTest(gpu::State::DepthTest(false, false));
|
||||
blitState->setColorWriteMask(true, true, true, true);
|
||||
|
||||
_pipeline = gpu::PipelinePointer(gpu::Pipeline::create(gpu::Shader::createProgram(toneMapping), blitState));
|
||||
_mirrorPipeline = gpu::PipelinePointer(gpu::Pipeline::create(gpu::Shader::createProgram(toneMapping_mirrored), blitState));
|
||||
init();
|
||||
}
|
||||
|
||||
const auto bufferSize = resampledFrameBuffer->getSize();
|
||||
|
|
|
@ -96,7 +96,7 @@ private:
|
|||
typedef gpu::BufferView UniformBufferView;
|
||||
gpu::BufferView _parametersBuffer;
|
||||
|
||||
void init(RenderArgs* args);
|
||||
void init();
|
||||
};
|
||||
|
||||
#endif // hifi_ToneMapAndResample_h
|
||||
|
|
Loading…
Reference in a new issue