broken on android again somehow

This commit is contained in:
Anna 2019-07-29 13:45:08 -07:00
parent db49a0b9d6
commit 2fca77867b
5 changed files with 27 additions and 15 deletions

View file

@ -60,8 +60,7 @@ void BloomThreshold::run(const render::RenderContextPointer& renderContext, cons
auto colorTexture = gpu::TexturePointer(gpu::Texture::createRenderBuffer(inputBuffer->getTexelFormat(), bufferSize.x, bufferSize.y, auto colorTexture = gpu::TexturePointer(gpu::Texture::createRenderBuffer(inputBuffer->getTexelFormat(), bufferSize.x, bufferSize.y,
gpu::Texture::SINGLE_MIP, gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_LINEAR_MIP_POINT, gpu::Sampler::WRAP_CLAMP))); gpu::Texture::SINGLE_MIP, gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_LINEAR_MIP_POINT, gpu::Sampler::WRAP_CLAMP)));
//_outputBuffer = gpu::FramebufferPointer(gpu::Framebuffer::create("BloomThreshold")); _outputBuffer = gpu::FramebufferPointer(gpu::Framebuffer::create("BloomThreshold"));
_outputBuffer = args->_blitFramebuffer;
_outputBuffer->setRenderBuffer(0, colorTexture); _outputBuffer->setRenderBuffer(0, colorTexture);
_parameters.edit()._deltaUV = { 1.0f / bufferSize.x, 1.0f / bufferSize.y }; _parameters.edit()._deltaUV = { 1.0f / bufferSize.x, 1.0f / bufferSize.y };

View file

@ -154,13 +154,19 @@ void NewFramebuffer::run(const render::RenderContextPointer& renderContext, cons
glm::uvec2 frameSize(args->_viewport.z, args->_viewport.w); glm::uvec2 frameSize(args->_viewport.z, args->_viewport.w);
output.reset(); output.reset();
auto destBlitFbo = args->_blitFramebuffer;
if (destBlitFbo && destBlitFbo->getSize() == frameSize) {
output = destBlitFbo;
return;
}
// Else use the lodal Framebuffer // Else use the lodal Framebuffer
if (_outputFramebuffer && _outputFramebuffer->getSize() != frameSize) { if (_outputFramebuffer && _outputFramebuffer->getSize() != frameSize) {
_outputFramebuffer.reset(); _outputFramebuffer.reset();
} }
if (!_outputFramebuffer) { if (!_outputFramebuffer) {
_outputFramebuffer = gpu::FramebufferPointer(gpu::Framebuffer::create("newFramebuffer.out")); _outputFramebuffer = gpu::FramebufferPointer(gpu::Framebuffer::create("newFramebuffer2.out"));
auto colorFormat = gpu::Element(gpu::SCALAR, gpu::FLOAT, gpu::R11G11B10); auto colorFormat = gpu::Element(gpu::SCALAR, gpu::FLOAT, gpu::R11G11B10);
auto defaultSampler = gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_LINEAR); 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); auto colorTexture = gpu::Texture::createRenderBuffer(colorFormat, frameSize.x, frameSize.y, gpu::Texture::SINGLE_MIP, defaultSampler);

View file

@ -140,7 +140,7 @@ void RenderForwardTask::build(JobModel& task, const render::Varying& input, rend
task.addJob<DebugZoneLighting>("DrawZoneStack", debugZoneInputs); task.addJob<DebugZoneLighting>("DrawZoneStack", debugZoneInputs);
} }
const auto newResolvedFramebuffer = task.addJob<NewFramebuffer>("MakeResolvingFramebuffer"); //const auto newResolvedFramebuffer = task.addJob<NewFramebuffer>("MakeResolvingFramebuffer");
#if 1 #if 1
const auto resolveInputs = ResolveFramebuffer::Inputs(scaledPrimaryFramebuffer, static_cast<gpu::FramebufferPointer>(nullptr)).asVarying(); const auto resolveInputs = ResolveFramebuffer::Inputs(scaledPrimaryFramebuffer, static_cast<gpu::FramebufferPointer>(nullptr)).asVarying();
@ -149,12 +149,13 @@ void RenderForwardTask::build(JobModel& task, const render::Varying& input, rend
#endif #endif
const auto resolvedFramebuffer = task.addJob<ResolveFramebuffer>("Resolve", resolveInputs); const auto resolvedFramebuffer = task.addJob<ResolveFramebuffer>("Resolve", resolveInputs);
const auto toneMappedBuffer = resolvedFramebuffer;
//const auto toneMappingInputs = ToneMappingDeferred::Input(resolvedFramebuffer, args->blitFramebuffer).asVarying(); //const auto toneMappingInputs = ToneMappingDeferred::Input(resolvedFramebuffer, args->blitFramebuffer).asVarying();
const auto toneMappedBuffer = task.addJob<ToneMapAndResample>("ToneMapAndResample", resolvedFramebuffer); const auto primaryFramebuffer = task.addJob<ToneMapAndResample>("ToneMapAndResample", toneMappedBuffer);
// HUD Layer // HUD Layer
const auto renderHUDLayerInputs = RenderHUDLayerTask::Input(toneMappedBuffer, lightingModel, hudOpaque, hudTransparent, hazeFrame).asVarying(); const auto renderHUDLayerInputs = RenderHUDLayerTask::Input(primaryFramebuffer, lightingModel, hudOpaque, hudTransparent, hazeFrame).asVarying();
task.addJob<RenderHUDLayerTask>("RenderHUDLayer", renderHUDLayerInputs); task.addJob<RenderHUDLayerTask>("RenderHUDLayer", renderHUDLayerInputs);
} }

View file

@ -29,9 +29,8 @@ ToneMapAndResample::ToneMapAndResample() {
Parameters parameters; Parameters parameters;
_parametersBuffer = gpu::BufferView(std::make_shared<gpu::Buffer>(sizeof(Parameters), (const gpu::Byte*) &parameters)); _parametersBuffer = gpu::BufferView(std::make_shared<gpu::Buffer>(sizeof(Parameters), (const gpu::Byte*) &parameters));
} }
/*
void ToneMapAndResample::init(RenderArgs* args) { void ToneMapAndResample::init() {
// shared_ptr to gpu::State // shared_ptr to gpu::State
gpu::StatePointer blitState = gpu::StatePointer(new gpu::State()); gpu::StatePointer blitState = gpu::StatePointer(new gpu::State());
@ -41,6 +40,7 @@ void ToneMapAndResample::init(RenderArgs* args) {
_pipeline = gpu::PipelinePointer(gpu::Pipeline::create(gpu::Shader::createProgram(toneMapping), blitState)); _pipeline = gpu::PipelinePointer(gpu::Pipeline::create(gpu::Shader::createProgram(toneMapping), blitState));
_mirrorPipeline = gpu::PipelinePointer(gpu::Pipeline::create(gpu::Shader::createProgram(toneMapping_mirrored), blitState)); _mirrorPipeline = gpu::PipelinePointer(gpu::Pipeline::create(gpu::Shader::createProgram(toneMapping_mirrored), blitState));
} }
*/
void ToneMapAndResample::setExposure(float exposure) { void ToneMapAndResample::setExposure(float exposure) {
auto& params = _parametersBuffer.get<Parameters>(); auto& params = _parametersBuffer.get<Parameters>();
@ -72,20 +72,26 @@ void ToneMapAndResample::run(const RenderContextPointer& renderContext, const In
auto lightingBuffer = input->getRenderBuffer(0); auto lightingBuffer = input->getRenderBuffer(0);
resampledFrameBuffer = args->_blitFramebuffer; resampledFrameBuffer = args->_blitFramebuffer;
/*
if (!lightingBuffer || !resampledFramebuffer) { if (!lightingBuffer || !resampledFrameBuffer) {
return; return;
} }*/
if (resampledFrameBuffer != sourceFramebuffer) { if (resampledFrameBuffer != sourceFramebuffer) {
if (!_pipeline) { if (!_pipeline) {
init(args); 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));
} }
const auto bufferSize = resampledFrameBuffer->getSize(); const auto bufferSize = resampledFrameBuffer->getSize();
const auto srcBufferSize = glm::ivec2(lightingBuffer->getDimensions()); auto srcBufferSize = glm::ivec2(lightingBuffer->getDimensions());
glm::ivec4 destViewport{ 0, 0, bufferSize.x, bufferSize.y }; glm::ivec4 destViewport{ 0, 0, bufferSize.x, bufferSize.y };

View file

@ -44,7 +44,7 @@ layout(location=0) out vec4 outFragColor;
void main(void) { void main(void) {
<@if HIFI_USE_MIRRORED@> <@if HIFI_USE_MIRRORED@>
vec4 fragColorRaw = texture(colorMap, vec2(1.0 - varTexCoord0.x, varTexCoord0.y); vec4 fragColorRaw = texture(colorMap, vec2(1.0 - varTexCoord0.x, varTexCoord0.y));
<@else@> <@else@>
vec4 fragColorRaw = texture(colorMap, varTexCoord0); vec4 fragColorRaw = texture(colorMap, varTexCoord0);
<@endif@> <@endif@>