• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

Digital Foundry: Project Cars Face-Off

Metfanant

Member
I'd really like to see this on a CRT or plasma..

I can tell you it (the ghosting) is not a particularly pleasant thing on my Samsung LED DLP...its still a great looking game, but I notice the ghosting more than I thought I would..

How does the Xbox continue to have better filtering?

Still not convinced that the texture filtering is not a byproduct of the TAA...as SMS has stated on this very forum, that the numbers are the same across both versions...

But, if it were the case, this would, I believe, be the first game where the Xbone actually has BETTER filtering..and not a situation where the PS4 version mistakenly just didn't have it turned on (as evidenced by the multiple games that have been patched)

Seeing double is worse than shimmering, that's a massive immersion killer. You can't really call it ghosting since the 'ghost' is exactly as well defined as the leading frame, it's the worst thing I've ever seen, I shelved the game because it's too unpleasant to play right now.

I disagree...shimmering drives me nuts...I'm no fan of the ghosting, but its an OK tradeoff..based on the aliasing I've seen from Xbone videos...I can see the thought process for adding the TAA solution...


That being said...I'm all for the adding of a slider to turn it off, and inversely add back the traditional motion blur to see which I prefer...ideally an actual slider instead of a toggle would be awesome...as I think a 50/50 compromise between the current TAA and the traditional MB on the Xbone version might be a nice balance...
 

hesido

Member
I disagree...shimmering drives me nuts...I'm no fan of the ghosting, but its an OK tradeoff..based on the aliasing I've seen from Xbone videos...I can see the thought process for adding the TAA solution...


That being said...I'm all for the adding of a slider to turn it off, and inversely add back the traditional motion blur to see which I prefer...ideally an actual slider instead of a toggle would be awesome...as I think a 50/50 compromise between the current TAA and the traditional MB on the Xbone version might be a nice balance...

I think there are other ways to fight shimmering than blending two frames, that's what they needed to do for the sake of all the platforms.
 

Mascot

Member
Actually I was going to do some poll on GAF but I may post it here as well:
https://www.shadertoy.com/view/4lSGDy

I modified an existing motion blur shader to display 60fps and 30fps motion of circles representing high contrast objects:

60fps no effect, 60fps simulated frame blending, 60fps motion blur, 30fps no effect, 30fps simulated frame blending, 30 fps motion blur.

On an LCD, the ghosting at 60fps, compared to the no effect zone is slightly worse, but when comparing with the motion blur, you see how much strobing it displays. At 30fps, the ghosting absolutely destroys the IQ.. However, motion blur does a superb job of eliminating that strobing, and the fact that they removed any meaningful motion blur on the PS4 to accomodate for ghosting results in strobing for everything, imbued in the image.

Thanks for this. Did you run a poll? As expected, 60fps w/MB (third from left) looks streets ahead of the others to me. LCD monitor.
 

MaLDo

Member
Actually I was going to do some poll on GAF but I may post it here as well:
https://www.shadertoy.com/view/4lSGDy

I modified an existing motion blur shader to display 60fps and 30fps motion of circles representing high contrast objects:

60fps no effect, 60fps simulated frame blending, 60fps motion blur, 30fps no effect, 30fps simulated frame blending, 30 fps motion blur.

On an LCD, the ghosting at 60fps, compared to the no effect zone is slightly worse, but when comparing with the motion blur, you see how much strobing it displays. At 30fps, the ghosting absolutely destroys the IQ.. However, motion blur does a superb job of eliminating that strobing, and the fact that they removed any meaningful motion blur on the PS4 to accomodate for ghosting results in strobing for everything, imbued in the image.

The downside of this test is, just using a circle is not representative of the complex shapes you get to see on a proper game scene. I did a textured camera panning version but the textures didn't have enough contrast in them so I went with these, I can only armchair graphics program so much.

I'd really like to see this on a CRT or plasma..


60 fps + motion blur >>>> 60 fps >>>>>>> 30 fps + motion blur >>> 60 fps + blending >> 30 fps >>>>>>>> 30 fps + blending
 

hesido

Member
Thanks for this. Did you run a poll? As expected, 60fps w/MB (third from left) looks streets ahead of the others to me. LCD monitor.

No, should I put it up in the gaming section or or off topic? Wish I could prepare a more complex scene tho, more representative of actual games. Maybe later when I learn more about them shaders.

60 fps + motion blur >>>> 60 fps >>>>>>> 30 fps + motion blur >>> 60 fps + blending >> 30 fps >>>>>>>> 30 fps + blending

Thats about how I feel as well, give or take a few ">" signs.. Since 30fps + blending looks absolutely ridiculous, any frame drops in a 60fps game would result in a very awful image.
 

system11

Member
60 fps + motion blur >>>> 60 fps >>>>>>> 30 fps + motion blur >>> 60 fps + blending >> 30 fps >>>>>>>> 30 fps + blending

Sure about that?

You get a natural amount of slight blur on a LCD from any movement including 60fps. When given the option blur is the first thing I turn off.

I think I actually hate modern trends in image quality.
 

hesido

Member
Sure about that?

You get a natural amount of slight blur on a LCD from any movement including 60fps. When given the option blur is the first thing I turn off.

I think I actually hate modern trends in image quality.

An adequate amount of motion blur makes the motion look natural, because there's finite amount of samples that can be displayed as opposed to the "unlimited" number of positions an object covers during a movement. I see a lot of strobing at 60fps without motion blur for high contrast movement.
 

THRILLH0

Banned
Has the bug that ties engine performance to in game race timing been discussed? ie increasing the number of cars in a race slows the engine to the point that lap times are affected.
 

system11

Member
Has the bug that ties engine performance to in game race timing been discussed? ie increasing the number of cars in a race slows the engine to the point that lap times are affected.

Totally different style of game but i remember doing time attacks in Phantasy Star we used to point the camera at the floor in some areas because the timer was realtime even though the engine would choke.

Not really a way around it. If you're competing in leaderboards, turn all the graphics down to zero or as close as you can. If they linked the time to the frame update you'd get a hilarious situation where someone could potentially win a race with a slower time since players would all de-sync over the course of a race.
 

SMSRenderTeam

Neo Member
I started a poll on its own thread:
http://www.neogaf.com/forum/showthread.php?t=1048566&highlight=

I made the circles get big and smaller and added ways so people can modify the settings to match their 120+hz monitors.

In terms of the Project Cars implementation the shader-toy example isn't representative:

- The number of motion samples is too high - 24 vs 9 in the pCars motion-blur shader.
- The motion velocity in the blurred render is constant so basically wrong:

>> float sampleOffset = EXPOSURE * 2. / frametime / float(MOTIONSAMPLES);

as we'd previously stated in detail (and was incorporated into the DF article) - the velocify/offset is reduced in combination with any blending, so the code which is ghosting only:

>>else if (mod(view, 3.) == 1.) {
>> vec4 ghstCol = (mainCol + scene(uv, time - (1. / frametime))) * .5;
>> fragColor = ghstCol; //ghosted render
>> }

isn't right. you need to use the alpha blending as the output stage to the motion blur velocity stepping e.g.

>> else if (mod(view, 3.) == 1.) {
>> vec4 blurCol = vec4(0,0,0,0);
>> float sampleOffset = EXPOSURE * MotiontVelocityScalar * 2. / frametime / float(MOTIONSAMPLES);
>> for(int i = 0; i < MOTIONSAMPLES; i++)
>> {
>> blurCol += scene(uv, time - float(i) * sampleOffset);
>> }
> blurCol /= float(MOTIONSAMPLES);
>> vec4 ghstCol = (blurCol + scene(uv, time - (1. / frametime))) * .5;
>> fragColor = ghstCol; //ghosted render
>> }

- Lastly red a choice of colour for blur isn't representative of the human visual system, which is sensitive to luminance (brightness) or green as a primary colour, due to evolutionary adaption for survival (think sensitivity to green against other colours being useful in stopping predators/chamoflage killng our ancenstors on our very green planet... :) )

But overall a good-start - quite happy to help you with this shader-toy with what's coming shortly, if you want to visualise with us where we are heading.
 

HTupolev

Member
- The motion velocity in the blurred render is constant so basically wrong:

>> float sampleOffset = EXPOSURE * 2. / frametime / float(MOTIONSAMPLES);
Unless I'm reading things wrong, I'm not seeing that. sampleOffset is constant, but that's because it's describing a time interval, not the spatial movement of an object.
 

SMSRenderTeam

Neo Member
Unless I'm reading things wrong, I'm not seeing that. sampleOffset is constant, but that's because it's describing a time interval, not the spatial movement of an object.

>> float sampleOffset = EXPOSURE * MotiontVelocityScalar * 2. / frametime / float(MOTIONSAMPLES);
>> for(int i = 0; i < MOTIONSAMPLES; i++)
>> {
>> blurCol += scene(uv, time - float(i) * sampleOffset);
>> }

so incorporating a motion velocity scale (on the sample offset which is stepped for each sample in the loop) reduces the length/radius of the effect against the centre uv, resulting in less motion-blur, to balance against the blending method.
 

HTupolev

Member
so incorporating a motion velocity scale (on the sample offset which is stepped for each sample in the loop) reduces the length/radius of the effect against the centre uv, resulting in less motion-blur, to balance against the blending method.
Why are we "balancing against the blending method"? What does adjusting the scale (which is already managed through the exposure value) have to do with velocities being constant?
 

Metfanant

Member
Why are we "balancing against the blending method"? What does adjusting the scale (which is already managed through the exposure value) have to do with velocities being constant?
I think it was mentioned...that if the traditional motion blur was set at say, Xbone levels...that when coupled with the frame blending (ghosting) it's way too much blur...

This was why it was also said, that of a slider is added (please!) That turning down (off?) The blending would inversely increase the traditional motion blur to make it inline with the Xbone/PC...
 

HTupolev

Member
I think it was mentioned...that if the traditional motion blur was set at say, Xbone levels...that when coupled with the frame blending (ghosting) it's way too much blur...
Looking back over it, I suppose the issue of PS4 PCars representativeness was all that was being stated; I was confused by SMSRenderTeam's wording (and seeing something way off to the side that wasn't there).
 

hesido

Member
In terms of the Project Cars implementation the shader-toy example isn't representative:
.....
- Lastly red a choice of colour for blur isn't representative of the human visual system, which is sensitive to luminance (brightness) or green as a primary colour, due to evolutionary adaption for survival (think sensitivity to green against other colours being useful in stopping predators/chamoflage killng our ancenstors on our very green planet... :) )

But overall a good-start - quite happy to help you with this shader-toy with what's coming shortly, if you want to visualise with us where we are heading.

Nice :)

Thanks SMSRenderTeam for your valuable feedback! The example wasn't meant to be direct comparison to project cars, but how motion is perceived when there's ghosting vs applying a proper motion blur. It also doesn't incorporate the anti alias aspect of the frame blending (it could if I nudged the uv values slightly every alternating frame) but the circles are already anti-aliased so I didn't think it was important and that's not what this test is about.

Also, since I don't know how much blur supression you did, I wouldn't be able to replicate that. For all intent and purposes, the PS4 motion blur is reduced to not being visible for the roadside objects anyway, so you might as well turn it completely off for anything but the road, but even then, it's reduced so much and because it's overlayed with the previous frame, you may completely turn it off as well and people wouldn't even notice.
I can't find a 1:1 comparison image, so here are two examples which show varying amount of motion.
On the following the lateral motion is slightly higher on the motionblurred side
g8B06Ye.png

But I've got another example where the object has moved more on PS4 than the motionblurred side:
MYEScFp.png


So, in practice on the PS4, motionblur velocity is reduced to the point that it only can meaningfully effect ultra, ultra fast moving things (like the road and that's when the camera gets low), that's why adding it to the comparison wouldn't do much. But I may add a "engage PCars mode" in the test that reduces the mblur samples to 9 (still looks OK in motion) and add a blur to the ghosted side (it would need to have a separate setting for motion blur: I'm guessing the motion blur should be reduced to 3-4% of "normal" motion blur seen on the non frame blended circles.. since you haven't mentioned how much I should supress the motion blur, 3-4% would be my generous guess.). I obviously can't stick the motion blur suppressor in the ordinary motion blur line because it would not allow us to compare..

thanks for the evolutionary explanation :) I can do a black white version and the strobing would be even more evident I'm guessing..
 

HTupolev

Member
It also doesn't incorporate the anti alias aspect of the frame blending (it could if I nudged the uv values slightly every alternating frame)
Would that be necessary? The whole reason that the PCars TAA implementation has come under fire is that it doesn't seem to be reprojecting, hence the ghosting.
 

hesido

Member
Would that be necessary? The whole reason that the PCars TAA implementation has come under fire is that it doesn't seem to be reprojecting, hence the ghosting.

No, it wouldn't be necessary, and in a constantly moving image the only contribution to the image is ghosting and not anti-aliasing, so yeah, I'm already doing the ghosting :)
 

Metfanant

Member
No, it wouldn't be necessary, and in a constantly moving image the only contribution to the image is ghosting and not anti-aliasing, so yeah, I'm already doing the ghosting :)

i find that particular point to be unlikely, only because of the images we've seen from the Xbone version...while actual aliasing may not be helped, i certainly think shimmering, is reduced on the PS4 version...there is def a cleaner image being produced on the PS4 outside of the double image...
 

hesido

Member
i find that particular point to be unlikely, only because of the images we've seen from the Xbone version...while actual aliasing may not be helped, i certainly think shimmering, is reduced on the PS4 version...there is def a cleaner image being produced on the PS4 outside of the double image...

You are correct, I forgot about that.. By blending, you are effectively removing the "temporal contrast" for shimmering pixels by blending them (nothing can change contrast in alternating frames, but only over time!) so this would eliminate shimmering, so yeah that's probably the only benefit outside of anti-aliasing for stationary objects, but shimmering can be avoided through other ways hopefully.
 
Top Bottom