- Home /
Make Ambient Occlusion shader ignore some game objects
Hello.
I'm using the stock effect for Ambient Occlusion but I'm wondering if there's a way to have it ignore certain objects in the scene? I have a few widgets and other objects that I don't want that effect applied to.
The biggest issue is that it's being applied to materials that are light emissive. These should be glowing and not have this effect applied to them.
Is there a simple way to have the effect ignore some objects?
thanks David
Answer by FortisVenaliter · May 05, 2016 at 03:09 PM
The ambient occlusion effect is a post-processing effect, which means that it is applied to the final image that would otherwise be presented on-screen. Since it's just color data (and normal and depth in deferred rendering), there's not a lot of ways to distinguish the different objects at that point.
The only way I know of that you could do this, and it won't be particularly easy, would be to render your scene twice. Once with non-emissive objects and ambient occlusion, and one with emissive objects and no ambient occlusion, then stitch the two images together with some sort of mask. You'd still need to depth-render the entire scene in the emissive version though, to ensure emissive objects aren't always in front.
Thanks. Beyond the stock shaders strange visual artifiacts, it was also killing my frame rate. So I just purcahsed one from the asset store and it's improved a lot of the visuals.
Now glowing objects glow properly and my frame rate never drops below 60 with vsync enabled.
Your answer

Follow this Question
Related Questions
Ambient occlusion in custom shader 1 Answer
How to force the compilation of a shader in Unity? 5 Answers
Unity 5 Light problem 2 Answers
Have part of mesh change color 0 Answers
How to make .shader open in Mono Develop, but C# still open in Visual Studio 0 Answers