gpuopen-effects / fidelityfx-cacao Goto Github PK
View Code? Open in Web Editor NEWCombined Adaptive Compute Ambient Occlusion (CACAO)
Home Page: https://gpuopen.com/fidelityfx-cacao/
License: MIT License
Combined Adaptive Compute Ambient Occlusion (CACAO)
Home Page: https://gpuopen.com/fidelityfx-cacao/
License: MIT License
First of all, thank you for your hard work and for making this open-source! It is genuinely appreciated by those of us looking to learn from examples, and looking to benefit off your hard work in our engines. :)
I am a contributor to Godot which is an open-source game engine. We have been evaluating new methods for SSAO for a few months now. We were planning on using ASSAO when we found out about CACAO. However, once trying CACAO v1.1 we noticed the quality did not match the promotional images at all. However, we noticed CACAO v1.0 looks great!
V1.1 substantially reduces the quality of CACAO compared to v1.0.
V1.1 restricts itself to only using the downsampled version edit I now see the note in ffx_cacao.h
FidelityFX-CACAO/ffx-cacao/inc/ffx_cacao.h
Lines 25 to 29 in ac4b575
V1.1 is blurred much more heavily than the downsampled version in V1.0
In V1.1 "adaptive quality" doesn't actually impact the image quality, even when set to "highest quality"
I have included screenshots below to illustrate the issue.
Could these issues be addressed in a subsequent point release or a bug fixing commit? I ask because I am unfamiliar with your development approach/priorities. For us working on Godot, we would love to see these issues addressed and then we could port CACAO directly into Godot. But if not, we totally understand. Thanks anyway!
In the sample and in the CACAO code there exist some incorrect resource barriers and issues creating d3d12 validation errors. These are a known issue and will be fixed in the next push to CACAO.
This claim is made:
(CACAO) is a highly optimized adaptive sampling ambient occlusion implementation.
But there's no data available how much better it does vs Intel's ASSAO or Nvidia's HBAO+ or VXAO.
Will such data be made available on a later date?
In the preivous version there was native resolution AO, why has it been removed?
Hello,
I found some disparities in quality levels in the code. Could you comment on It whether I am missing something, or It is indeed a bug?
In fx_cacao.cpp on line 1974 the importance map is generated only if the level is Highest (4) which seems correct.
if (context->settings.qualityLevel == FFX_CACAO_QUALITY_HIGHEST) {
// generate importance map code
}
BUT, in fx_cacaco.hlsl for level HIGH (3) you call GenerateSSAOShadowsInternal with qualityLevel = 3 and adaptiveBase = false which results in:
static const uint g_numTaps[5] = { 3, 5, 12, 0, 0 };
// ... later
const int numberOfTaps = (adaptiveBase) ? (SSAO_ADAPTIVE_TAP_BASE_COUNT) : (g_numTaps[qualityLevel]);
^ number of taps being 0! which I believe should be 12 as in https://software.intel.com/content/www/us/en/develop/articles/adaptive-screen-space-ambient-occlusion.html.
and
if ((qualityLevel != 3) || adaptiveBase)
{
}
else // if ( qualityLevel == 3 ) adaptive approach
{
// ...
float importance = g_ImportanceMap.SampleLevel(g_LinearClampSampler, fullResUV, 0.0).x;
// ...
}
^ you sample from a map that is not generated. Because level 3 (High) is not the adaptive one. That is 4. I believe the if should be qualityLevel !=4.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.