Let's (finally) fix the ShadowCatcher

I was mainly thinking of stashing the complex “Alpha” data in a render pass would be easier than changing the way Alpha channels work in blender at a core level.

Ah, yes, I misunderstood. While I agree with that, if there is a way to contain the colored alpha in a single file, as Troy has suggested, that would be actually preferred solution. But since no other renderer out there has been able to do that, I remain skeptical :slight_smile:

And even if it worked, I wonder how many other CG packages would it be compatible with…

Adding it as a layer in EXR would suit this perfectly, and the user would just need to know how to use it. Any decent compositing software (and user) should be able to deal with the output. There’s nothing special about multiplying and adding images, and that’s all this is on the compositing side.

1 Like

Associated alpha with three channels as per simple RGBAAA format in an EXR would suffice. Relatively easy to extend a standard alpha node to composite three channel alpha.

Never ever going to happen. See Blinn’s Law.

It’s actually happening already. One proof is Chaosgroup’s project “Lavina”, but even better proof is Eevee. Eevee is not really realtime renderer, but it’s not exactly offline renderer either. Eevee is interactive enough, but proper final quality frames out of it usually take a couple of seconds. It’s a type of renderer that bridges the gap between realtime 24+FPS renderers and offline ~1 hour/frame renderers. It uses mostly rasterization but it does seem to raytrace at some places. And raytracing can become even bigger part of it in future with RTX. Statement that both will converge to one at some point is not a matter of if, just a matter of when. Of course it will not match the quality of path tracers, but if the 95% of the quality is there at just a 5% of rendertime, that’s a great compromise to make. Even these days, in some specific cases, Eevee results are almost indistinguishable from Cycles, and as the Eevee, realtime raytracing, and advanced rasterization techniqeues evolve, the proportion of those cases will grow.

EDIT: Link to Lavina demo. Especially the interior showcase at 8:30. https://youtu.be/K7LWzTvfgU0?t=8m29s

Yes, there is some trickery, some expense of quality at the cost of faster results, but trust me, very few people care today, and even less of them will care in future :wink:

This will really happen, maybe not in next 5 year’s, but perhaps in 10. Regardless, it’s preposterous to even suggest otherwise.

Blinn’s law is not relevant anymore, and will be even less relevant as the time progresses. We’re approaching the point in time where lack of proper realtime interactivity (not necessarily realtime final quality image output) is way more of a hindrance in terms of final result quality than lack of renderer quality/bias.

With both realtime and offline engines finally having adopted PBR workflows, the only differences in realism between the two are closing very fast. What actually limits artist these days on the side of offline rendering is iteration time. Having to do an adjustment and then having to wait relatively long time to see it. Since this is absent in realtime or at least interactive-in-realtime solutions, artists working with such solutions can perform many more iterations during the same time frame, being able to add a lot more subtle details to the scene, increasing the realism or artistic qualities.

1 Like

See Manuka and deep compositing etc. etc.

It’s a sidetrack to this issue.

If all the problem is having an RGB channel, coudn´t we have a separate render pass for shadows were shadows from the catcher are stored, and leave the main pass as it is right now?

Apart from that, the reflection capture is capital, there is no way to composite reflections right now :stuck_out_tongue:

Cheers!

I still don’t understand how to get reflections on the sphere from shadow catcher using this pipeline. For example, this road marking.

Just wondering… has there been any progress regarding this issue?

Nope, and I doubt there will be any enhancement before 2.80, will see after the release, I hope this gets fixed too, since the actual shadow catcher is kind of working in a non-useful way, not being enough to work with it.

Cheers.

3 Likes

Thank you for the reply :frowning:

1 Like

I made this video to explain how to create your own shadow catcher in Blender using view/render layers and the compositor: https://www.youtube.com/watch?v=qgs5JGy2qIU&feature=youtu.be

It also does reflections etc.

The problem with that approach is that you have to multiply your render time by X number of render layers… that’s not good and it’s not a solution :stuck_out_tongue:

We need a fixed Shadow Catcher with proper light/reflection capture :slight_smile:

2 Likes

I agree that it still needs to be fixed and that tripling your render times isn’t great. It’s really just a work around so I don’t have to abandon Blender for this type of stuff (because Blender is great in pretty much every other regard). Also, since GPU acceleration scales really well it’s pretty easy to add extra power (I cut my render time by more than 3x by going from GTX 660 to 2x GTX 970, even though it was only a 220 euro investment).

1 Like

Yes, this is if your scene don’t need 26Gb of ram as our usual scenes :slight_smile:

When you have to do an animation with 25 minutes per frame in a TR-2990WX to need the render x3 is not a good idea hehehe
Also in the case the render time is deeply affected by pre-load times (4 to 7 minutes depending on the scene) adding those GPU’s don’t solve the problem either :slight_smile:

The performance itself is not that much of an issue. Main two issues are:

  1. Setup time. Your setup wastes ridiculous amount of artists’ time.
  2. Quality. You are doing so many things wrong with your setup. More than you can even imagine. It will fail in many scenarios, such as strong directional light source from HDRI with colored shadows, and so on.

Proper shadowcatcher is a lot more complicated than your primitive workaround. More on that in this thread: https://blenderartists.org/t/cycles-experiment-with-shadow-catcher/673391/83?u=rawalanche

That is probably because I’m actually a noob when it comes to this stuff. I’ve only been using Blender for a couple of months and I don’t have much vfx experience in general.

That being said, I’d love to see better solutions, I just haven’t found any that worked. I’ve been digging for a while now and this is simply the best I can come up with right now without leaving Blender/Cycles.
It may be broken and won’t work in a lot of situations but it’s better than not having shadows whatsoever (which I’ve actually considered, just shooting everything from above the feet and keeping all my objects away from walls and such).

I’ve had the same issue with OpenEXR btw where my results are half-way there and workable but something slightly fishy is going on and it doesn’t look 100% but I can get away with it. Getting away with it still beats having to abandon my project.

But with the actual shadow catcher you have shadows… it’s not good enough, it lacks a lot of things to be actually really suitable for production, but you have shadows with it (black shadows :stuck_out_tongue: but shadows)

My “solution” has shadows, AO and reflections. At least, that’s what it looked like to me. You just can’t see them in the demo video. I tried it out with a red cube and a stronger hdri and there was clearly a red reflection on the floor. As far as I know the stock one only has direct shadows.

Yes, so maybe it’d be a good idea to hold off derailing the thread for the time being. This thread is not about asking for workarounds. We all know there are some, but they all come with compromises. The thread is about actually fixing shadowcatcher, getting a fully working, proper solution usable in AAA movie production.

1 Like