Dynamic shadows artifacts

Yeah, receiver plane depth bias, (which is used when r.Shadow.FilterMethod is set to 1) generally looks much better overall, but it is also prone to two major flaws. First being over-biasing on convex edges and under-biasing on concave edges. This is due to the nature of how partial derivatives with respect to screen-space work.

It looks like that:

https://image.prntscr.com/image/bTcXheRiRNCzRqH1tQJqCg.png

Sad part is that to completely cure these artifacts, you would need to add almost the same amount of flat bias, that would otherwise be sufficient enough to cure acne everywhere alone.

The second flaw of this biasing is that faces, facing away from the light would have completely wrong biasing. Is not a problem, but occasionally you may observe lonely unshadowed faces in shadow areas. This one can be and is dealt with by using only positive biasing and clamping the bias, but it reduces effectiveness overall.

There is no ultimate fix in existence, sadly. Only trade-offs so far exist.

I don’t like temporally unstable jitter myself. It does not have to be like that, when using PCSS.

Sometimes I wonder, why more shadow filtering options are not included in the engine by default, like it was the case with UDK. For example, I always used to prefer random sample placement, rather than box filter, which is now default for ordinary shadows.

For percentage closer filtering to be usable I needed to make two fixes at ShadowPercentageCloserFiltering.usf. I did forget to mention this.

Old:



// Wheather to enable the sharpening filter after PCF for sharper edges than the shadow map resolution.
#define PCSS_ENABLE_POST_PCF_SHARPENING 1

// Blocker search samples
#define PCSS_SEARCH_BITS 4


New:



// Wheather to enable the sharpening filter after PCF for sharper edges than the shadow map resolution.
#define PCSS_ENABLE_POST_PCF_SHARPENING 0

// Blocker search samples
#define PCSS_SEARCH_BITS 5


These mostly fixes noise and instability.

I was calling this a corrugated effect. I thought it looked like a wet cardboard box. Setting this as a sequence helps, but costs a lot in performance. especially gpu, and fps.
Adding an Execute Console Command node in a blueprint within your game you can manually set the value of r.Shadow.CSM.MaxCascades, or you can enter the integer value of r.Shadow.CSM.MaxCascades in BaseScalability.ini Be Careful, and run stat gpu, and show fps before, and after. It’s intensive, I get much sharper shadows but my ms usually increse.
and then changing the*shadowquality to 4. *
0 – 3 for Low, Medium, High, and Epic
r.LightFunctionQuality=1
r.ShadowQuality=4
r.Shadow.CSM.MaxCascades=4
r.Shadow.MaxResolution=2048
r.Shadow.RadiusThreshold=0.03
r.Shadow.DistanceScale=1.0
r.Shadow.CSM.TransitionScale=0.8
r.DistanceFieldShadowing=1
r.DistanceFieldAO=1

That has very little to do with the acne/biasing issue.

Well, I asked about this in the 4.19 preview stream forum thread and didn’t get an answer (again) :\

Kinda shame since I’ve been asking for this question for ages (both in 4.18 preview thread and 4.17 preview thread), it’s like they favour the twitch chat questions or something. In every single stream there is someone asking for something ridiculous like “when is dynamic GI coming?”… Stop answering the dynamic GI questions please.

It really is impossible to get someone from Epic to acknowledge this question at least. I really wouldn’t care if they said “sorry, nothing for that in the future” as long as the said something.

You know what we should do? Not contribute to the engine anymore, and mention everywhere publicly that people should stay away from Unreal Engine 4, until they finally achknowledge and fix this issue. Being ignored for all this time is simply disrespectful.

Yeah right, that might be an option if there was an alternative to use instead.

There is always Lumberyard or Unity

We can’t just abandon months or years of development and switch engines just because a thread goes 14 pages long and developers refuse to even comment and say “we wont fix it”. We’re just asking for some basic improvements.

At this point, I think people are more interested in hearing something from Epic, anything, in regards to this issue rather than seeing a solution to the problem. Because they’re offended by the silence.

I’ve been trying to write up a reply for a bit now to suggest what could or should be done but there really isn’t much to say. At its core, it’s disheartening and saddening to see this go without a reply. I’m angry, worried and annoyed not by the bug but by the lack of a response in over a solid year. I could go rant about how Epic has abandoned the forum, plainly visible in the still broken software and lack of responses, or how the community has taken a sharp decline or all those things, but on the other hand I realize that they’re all just humans doing their dayjobs and I’m sure they aren’t avoiding this topic out of malice. I suppose it’s my own fault for getting invested in the community and setting myself up for disappointment, but at this point I consider the fact that our projects are tied to UE4 and will be tied to UE4 for a good while in the future a fault rather than a strength. I can no longer know if this engine, its community or anything resembling an infrastructure will exist a year or two down the line, and that’s very frightening.

Edit: Some people may think me melodramatic, but right now pretty much 100% of my income, my family’s existence hinges on UE4, so it very much interests me if there is something unwell with any part of it. Even disregarding that, the forum community here is one I thoroughly enjoyed being a part of and one I grew much invested in.

wait, no. just because we’ve waited months/years and haven’t even had a response, would make this issue any more acceptable if they would just come over and say "we wont fix it’.
the issue is real, it’s jarring, it screams low quality, and there isn’t even an acceptable workaround. so please guys, don’t let the lack of acknowledgement of the problem block you from the actual problem

I know it’s ugly but it’s not a show stopper for gamers. Fortnite use these ugly shadows and I have never heard any of the players(from +50millions) to complain about it.

Well just because its no show stopper doesn’t mean its not a big deal. I wouldn’t consider Fortnite or even Paragon or even any other MMO as a good example of having bad shadows or visual artifacts not stopping a game, in fact these are the type of games that anyone cares the least about the visuals in the first place. You can give them a 90’s model and they could care less I mean just look at player unknown it looks so average and at times way below average yet no one cares! All they care about is the multiplayer aspect of it.

What if you have a narrative based character and visual driven mood lit game (Like Epic advertises UE is the best choice for)? What’s anyone’s excuse when these artifacts start making your 150K + detailed hero character model which took 2 month to rig another month to model shade and texture, and yet another 6 months to animate and cost $$$$$$ turn up to have faceted polygons staring at your face through a 4K TV? From the body, clothing to the face that kills the expectations that you had of all the work you put in. Now consider the other whole set of problems in UE that you have to deal with: lighting, cascades, shadows, lack of realtime GI or equivalent, ancient and slow light baking engine, issues with the type of temporal AA implementation etc… and add this one on top to start breaking the camel’s back, I am not surprised why people can be upset about it including us.

It’s not that these problems exist it’s the lack of feedback on them and priority onto other areas (ehem VR) :slight_smile: , that gets people going. But again UE is not my company, but then gain they do get roughly 10% of a game’s cut. Maybe they do aught to pay some attention and prioritize these issues over others that can certainly wait perhaps?

For Epic and Fortnite players it might not be a big deal if shadows look like 2004 quality. But some other developers that develop high end realistic games it does matter and their audience will also get disappointed if such issue exists i.e imagine playing Crysis 3 with Psycho’s bare head looking as blocky as spheres do in UE4. It breaks the immersion.

Just thinking of working without Persona and without Animation Blueprints already make me wanna cry…
I study those other engines, compared to Unreal they “have no tools” :

they

are improving a lot, give them another year or so, things are going to get really really hot.

Personally I am more shocked by the lack of any communication because as I said, my existence hinges on UE4 and the handling of this issue really points at much bigger infrastructure issues that outweigh a single graphical bug.

It’s really not as big of a deal as people are making it out to be. Yeah, under some lighting conditions+bland pale material+certain viewing angles, you’ll get some horrible faceting, but it’s not the end of the world. I’m sure they will get around to fixing it some day, but I have a strong feeling that it’s going to involve making frame times ~15-30% slower to handle the filtering. So ask yourself this: is the cost worth the minor change in fidelity that consumers don’t seem to be complaining about?

Since Unreal is moving each day to be real-time rendering engine for movie production, it is expected at least the option to turn the filtering ON and OFF, at least while GPUs are not the dream of being 200% faster than they are today.

A shot in the dark without having a clue and completely unrelated, random numbers, taken off the wall yet again? :slight_smile:

Frankly, I don’t think that any communications are necessary here. The problem exists. The cause is known. Denying it is pointless. Not having a single doubt, that relevant personel is aware of that and reading the thread.

As for priority of dealing with things, this does not look like the most urgent one, but it kinda has been here for a while, along with requests to support baking physical surface ID from landscape material and texture arrays/3d textures. The issue surely deteriorates visual quality, but not even nearly to consider it a major flaw.

I’d like to say, that there are few other shadow - related things, that I would warmly welcome in stock UE4, such as having a choice between several shadow filtering methods, like it used to be in UDK. There are still users, who would prefer rotated disk filter over box one and the reason why it was left out in stock UE4 is somewhat unclear to me.