-
-
Notifications
You must be signed in to change notification settings - Fork 36.1k
Description
Description
HBAO pass is not a "real" HBAO, but N8AO
The HBAOPass and HABOShader implement an algorithm presented here: N8AO
This algorithm is a kind of mixture of SSAO and HBAO, but not the original HBAO algorithm.
Actually, this is not a bug or judges the quality of the algorithm, it is just a naming issue.
Solution
Since there are various ambient occlusion algorithms around, it would be nice to have a pass where the AO algorithm can be simply selected, this pass could completely replace the HBAO pass.
All the AO algorithms operate on the same source data and produce a result in the same format. The algorithms differ only in some details of the internal formulas and the sampling of the hemisphere. It should be possible to activate the different algorithms simply with preprocessor definitions in the shader.
The use of the names AOPass and AOShader would also not indicate a particular algorithm like the name HBAOPass.
Alternatives
Rename HBAO to N8AO or something else.
Additional context
Since I implemented the HBAO pass, I feel responsible for this. The problem arose from a lack of knowledge. I was familiar with the math behind various AO implementations, but I paid less attention to the names than to the algorithms themselves. I found my mistake by reading some AO papers in the last few days and I feel guilty. To compensate for this, I would like to provide a solution.