diff --git a/libraries/gpu/src/gpu/Color.slh b/libraries/gpu/src/gpu/Color.slh index d70e588f4d..384b8bd329 100644 --- a/libraries/gpu/src/gpu/Color.slh +++ b/libraries/gpu/src/gpu/Color.slh @@ -41,15 +41,19 @@ vec3 color_LinearToYCoCg(vec3 rgb) { ); } -vec3 color_YCoCgToLinear(vec3 ycocg) { +vec3 color_YCoCgToUnclampedLinear(vec3 ycocg) { // R = Y + Co - Cg // G = Y + Cg // B = Y - Co - Cg - return clamp(vec3( + return vec3( ycocg.x + ycocg.y - ycocg.z, ycocg.x + ycocg.z, ycocg.x - ycocg.y - ycocg.z - ), vec3(0.0), vec3(1.0)); + ); +} + +vec3 color_YCoCgToLinear(vec3 ycocg) { + return clamp(color_YCoCgToUnclampedLinear(ycocg), vec3(0.0), vec3(1.0)); } <@func declareColorWheel()@> diff --git a/libraries/render-utils/src/AntialiasingEffect.cpp b/libraries/render-utils/src/AntialiasingEffect.cpp index fab976b201..be1ba31b7d 100644 --- a/libraries/render-utils/src/AntialiasingEffect.cpp +++ b/libraries/render-utils/src/AntialiasingEffect.cpp @@ -333,7 +333,7 @@ void Antialiasing::run(const render::RenderContextPointer& renderContext, const for (int i = 0; i < 2; i++) { auto& antiAliasingBuffer = _antialiasingBuffers->edit(i); antiAliasingBuffer = gpu::FramebufferPointer(gpu::Framebuffer::create("antialiasing")); - auto format = gpu::Element::COLOR_SRGBA_32; // DependencyManager::get()->getLightingTexture()->getTexelFormat(); + auto format = sourceBuffer->getRenderBuffer(0)->getTexelFormat(); auto defaultSampler = gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_LINEAR); _antialiasingTextures[i] = gpu::Texture::createRenderBuffer(format, width, height, gpu::Texture::SINGLE_MIP, defaultSampler); antiAliasingBuffer->setRenderBuffer(0, _antialiasingTextures[i]); diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index 0059a5ab65..b7a0970a95 100644 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -190,6 +190,10 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren const auto toneAndPostRangeTimer = task.addJob("BeginToneAndPostRangeTimer", "PostToneOverlaysAntialiasing"); + // AA job to be revisited + const auto antialiasingInputs = Antialiasing::Inputs(deferredFrameTransform, lightingFramebuffer, linearDepthTarget, velocityBuffer).asVarying(); + task.addJob("Antialiasing", antialiasingInputs); + // Add bloom const auto bloomInputs = Bloom::Inputs(deferredFrameTransform, lightingFramebuffer).asVarying(); task.addJob("Bloom", bloomInputs); @@ -246,10 +250,6 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren task.addJob("DrawOverlayInFrontTransparentBounds", overlaysInFrontTransparent); } - // AA job to be revisited - const auto antialiasingInputs = Antialiasing::Inputs(deferredFrameTransform, primaryFramebuffer, linearDepthTarget, velocityBuffer).asVarying(); - task.addJob("Antialiasing", antialiasingInputs); - // Debugging stages { // Debugging Deferred buffer job diff --git a/libraries/render-utils/src/taa.slh b/libraries/render-utils/src/taa.slh index bca0356949..8637b278ce 100644 --- a/libraries/render-utils/src/taa.slh +++ b/libraries/render-utils/src/taa.slh @@ -94,7 +94,7 @@ vec4 taa_fetchColor(sampler2D map, vec2 uv) { vec3 taa_resolveColor(vec3 color) { #if USE_YCOCG - return color_YCoCgToLinear(color); + return max(vec3(0), color_YCoCgToUnclampedLinear(color)); #else return color; #endif