Follow

    No Man's Sky

    Game » consists of 6 releases. Released Aug 09, 2016

    A procedurally generated space exploration game from Hello Games, the creators of Joe Danger.

    Lessons in rendering (NMS is muddy but not due to low res)

    Avatar image for shivoa
    Shivoa

    1602

    Forum Posts

    334

    Wiki Points

    0

    Followers

    Reviews: 1

    User Lists: 6

    Edited By Shivoa

    So there has been lots of talk about internal render resolutions and game output this console generation. Is this game a 900p one, does the XB1 get forced down to 720p and then upscales it? It's a good topic for people who care about technical quality (say, all us render engineers who write the often boring code to throw polygons at screens via GPUs) and an endless swamp of people intent on having "heated debates" about their favourite consoles and which is best.

    Anyway, No Man's Sky has come out and lots of people have mentioned that it looks muddy or low res, even on PC. Some people are speculating on it being rendered at a lower internal res and upscaled to explain what they are seeing. From everything I can see, this isn't correct but it's an amazing opportunity to dissect what is really going on and why it looks like that might be the case.

    No Caption Provided

    Straight off, how the game is running for me just in case this isn't true for you. SSAAx4 (rendering at 4x res and downsampling from inside the game) in the settings straight isn't working at all. No effect. I'm not the only one who has noted this so I'll call it either widespread or a feature that's not actually implemented yet. The other two options are FXAA or no AA. My experience is that FXAA, if it does anything when turned on, isn't the implementation you should have built into this game to make it actually fix aliasing issues. I also assert that anyone using SweetFX or drivers to inject SMAA/MLAA/FXAA into their game at the end of the render chain is also doing next to nothing for their game in the same way that doesn't work when you upscale a game and then apply it. (FXAA looks for the typical shapes [eg L shapes] of aliasing in high-contrast areas and selectively blurs them, but this only works when you've got those shapes as pixel-wide features to find.)

    The reason why and the reason why lots of people seem to think this game is rendering at a lower res than stated or is just "really muddy" (as the pros have called it): because there's a 1px Gaussian blur being applied to this game before output. I would explain this is part of a HDR/bloom solution; only it isn't, it eagerly blurs everything, not just highlights. It's a blur on everything that weights significantly from the non-central pixel in the neighbourhood; a strong blur compared to what you normally see in real-time graphics.

    And here's the major issue with that: it blurs the scene without any anti-aliasing being done first. This gives a bloom (light for highlights, dark for low features) to every bit of severe aliasing including the thin line geometry and shader aliasing going on. It does soften the aliasing, but this means FXAA can't find it and clean it up because it's no longer a hard line but a blurred one.

    "But Shiv, doesn't the blur fix everything wrong so what's the issue?"

    Glad you asked - this is where slicing up what we see in screen captures of NMS really pays off. We do complex anti-aliasing (when rendering, even though it's often pretty expensive and comes with technical limitations that tie our hands) and not a blur because a blur doesn't work right.

    No Caption Provided

    Above is an example I generated to show anti-aliasing. It's zoomed up somewhat to make the pixels clearer but that was a clean zoom so each pixel edge is preserved (unlike how you'd normally blow up an image that also blurs it - the same is true of the zoomed in bits of the top image below). Take an aliased line (1) and blur it (2) and you get a bloom around an aliased line. This is a very clear visual and you'll be spotting it in No Man's Sky all over the place. But if you run anti-aliasing on that first line (3) and then blur that (4) we can see how that line looks good under the simple Gaussian 1px blur.

    This is why you can't just use a blur: it leads to something that's still very much a stair-stepped but not with clean edges you can fix (it's a right pain to make line 2 into line 4 and AFAIK totally impossible to do that fast enough for real-time rendering; however making line 1 into something very much like line 3 is much cheaper/easier). If you want to run a blur for artistic reasons on your scene then anti-aliasing first will give the blurred line a really great and clean profile. The blur works with the anti-aliasing to give a result that's hard to deny. (Sorry, rendering is cool. Especially when such a simple example clearly shows a right way of doing things.)

    An aside on this blur and using DSR/VSR to fix it:

    A really weird thing I noted when finding this: the blur is always a 1px blur; same when running at 1080p and 4K. But there are twice as many pixels per inch of screen with a 4K render (outputting to the same display) and the scene being rendered is the same for both. The game-distance from any point to any other is the same but the pixel count to get there has doubled.

    Why does that matter? It means the higher the resolution you set NMS to, the smaller (in scene size) the blur radius used and so the less annoying (for me*) it is. This i not how you should do a blur if you want it for an artistic effect and means anyone playing at 720p is being coated in a much larger radius blur than high-res players. I find that really helps to recover the "sharpness" of the scene so rendering at 4K and downsampling to 1080p leads to a much nicer scene than using 1080p native, just because there is less blur to muddy the scene.

    * And I like soft rendering - if it was a good blur that improved the scene not drew glows around every bit of aliasing, I'd be all for it and the artistic justification behind wanting a blurry final scene for the visuals of this game). I'm one of the few people who thinks TXAA was actually an ok AA solution despite it being very soft. I will take soft and stable (my eyes really don't like visual instability) over sharp and flickering every time.

    [Crossposted from my main blog about games]

    Update: see my post below. The patch on 18/8 actually removed the blur pass from the game and fixed the anti-aliasing settings so they all actually work on PC. Leaving this up as it's still interesting to poke at how games render their scene, even if the current NMS build no longer has this issue.

    Avatar image for thatbendorf
    thatbendorf

    106

    Forum Posts

    0

    Wiki Points

    0

    Followers

    Reviews: 0

    User Lists: 0

    Good read, very informative! Now I can close out my day saying that I've learned something.

    Avatar image for devil240z
    Devil240Z

    5704

    Forum Posts

    247

    Wiki Points

    0

    Followers

    Reviews: 0

    User Lists: 2

    Aliasing has never and will never bother me. But neither does fov or screen tearing. I guess that makes me the perfect gamer.

    Avatar image for artisanbreads
    ArtisanBreads

    9107

    Forum Posts

    154

    Wiki Points

    0

    Followers

    Reviews: 2

    User Lists: 6

    Really interesting post. Not something I have had any knowledge about until recently and always good to know more.

    Avatar image for conmulligan
    conmulligan

    2273

    Forum Posts

    11722

    Wiki Points

    0

    Followers

    Reviews: 0

    User Lists: 11

    #4  Edited By conmulligan

    Good insight, Shivoa! It also looks like, in the current version of the game, some of the render targets are drawn at half resolution which results in a much softer final image; fortunately, this appears to have been fixed in the experimental patch that went live today. There's also a mod available that fixes this and also allows you to change the game's internal resolution scale; this might come in handy for people who can't or don't want to use DSR or VSR.

    Avatar image for shivoa
    Shivoa

    1602

    Forum Posts

    334

    Wiki Points

    0

    Followers

    Reviews: 1

    User Lists: 6

    #5  Edited By Shivoa
    @conmulligan said:

    Good insight, Shivoa! It also looks like, in the current version of the game, some of the render targets are drawn at half resolution which results in a much softer final image; fortunately, this appears to have been fixed in the experimental patch that went live today. There's also a mod available that fixes this and also allows you to change the game's internal resolution scale; this might come in handy for people who can't or don't want to use DSR or VSR.

    Yep. Just to be clear (as I wasn't above), using a lower size render target for something like a blur pass is absolutely expected stuff* and I'm not saying every single target is 1080p when you're set to 1080p in NMS but that there is clearly a first pass that deposits most of the scene going on at native res in NMS and we see that in all the geometry that is stair-step (at the native res: then some railing goes up 10 pixels in the picture above then it also has 10 flat bars that have a bloom around then from the blur but are easy to see) and then later has a blur applied over the top.

    No Caption Provided

    If fact, I've got the save from that location I screencapped above and had seen that mod on NMSMods no more than an hour ago. I returned after applying that fix (with the 1.0x scaling so just switching the buffers to full-res that are currently half-res) and went in (I also cleared by shader cache just in case that was required for the change to stick).

    I can't tell the difference. The characteristic blur around aliased elements is very much as it was before. The camera position is slightly different due to the breathe animation and that does change some thin elements covering the centre of any pixels or not but I'd say generally you'd take this as a sign the buffers are large enough in the shipping version for the data they need to contain in the chain. I just don't think the chain is all being triggered (FXAA missing?) or is in the wrong order (FXAA after blur).

    From what I gather from the notes about that mod, a small number of people are finding that there really is an issue with the main buffers being set to the wrong resolution for them and that this can fix their version. But my install, which it appears to totally fail to apply any of the claimed anti-aliasing modes, is rendering at full res (as seen by the 1-pixel steps in the blurred aliased detail in the railing etc).

    * In fact, the cheapest blur pass is to downsample and merge. If you think about it, it's not the greatest blur but it is mixing the pixels with neighbouring pixels when you downsample (cramming more pixels into a smaller buffer mixes the pixels next to each other) and then you can sample from that as the blur layer. It also means that when you do a proper blur pass (or two passes, one horizontal then one vertical is the classic way to teach that) that you have less calculations so it's cheaper. That was important when bloom & HDR was just being realised a decade ago (classic bloom implementation includes a blur pass). One of the points or consequences of a blur is to reduce high-frequency information and so you need less pixels to store the result. It's not inherently an issue that stuff like the blur render target is half-res.

    Avatar image for ajamafalous
    ajamafalous

    13975

    Forum Posts

    905

    Wiki Points

    0

    Followers

    Reviews: 0

    User Lists: 9

    Cool writeup!

    Avatar image for macka1080
    Macka1080

    256

    Forum Posts

    0

    Wiki Points

    0

    Followers

    Reviews: 0

    User Lists: 1

    Brilliant explanation @shivoa! Thanks for laying out this phenomenon in such clear and illuminating terms.

    Avatar image for jeldh
    Jeldh

    521

    Forum Posts

    9

    Wiki Points

    0

    Followers

    Reviews: 1

    User Lists: 5

    Well written!

    Avatar image for britxmenyuan
    britxmenyuan

    80

    Forum Posts

    65

    Wiki Points

    0

    Followers

    Reviews: 0

    User Lists: 1

    Also, NMS is using Voxel graphics instead of traditional Pixel, that's the reason for the floating rocks when you're mining, because there's no simulation of physics.

    Avatar image for dussck
    Dussck

    1065

    Forum Posts

    0

    Wiki Points

    0

    Followers

    Reviews: 0

    User Lists: 4

    Also, NMS is using Voxel graphics instead of traditional Pixel, that's the reason for the floating rocks when you're mining, because there's no simulation of physics.

    Voxels are still pixels, but I think you mean polygons.

    I'm not sure if Voxels can't be touched by physics, I think they still can be, but it is probably bloody heavy to calculate. I think it would've been better if the resource rocks consisted out of blocks in different sizes that would collapse or let the game just remove the very small floating pieces.

    Avatar image for dussck
    Dussck

    1065

    Forum Posts

    0

    Wiki Points

    0

    Followers

    Reviews: 0

    User Lists: 4

    On another note. One of the 'flaws' of NMS is their rendering of space bodies behind a planet's atmosphere. Planets are visible in the sky, but as a whole and not just the 'lighter' parts of it. In compositing terms you could say they are merged 'over' the sky instead of 'screened'. It feels wrong when you see it.

    You can see it being done wrong here:

    No Caption Provided

    This is the right way: the lighter parts are visible and the darker parts are blended with the atmosphere color. Weirdly enough, this is an old screenshot of NMS and even in older footage they seem to have done it right. Just not in the retail version..

    No Caption Provided

    Avatar image for shivoa
    Shivoa

    1602

    Forum Posts

    334

    Wiki Points

    0

    Followers

    Reviews: 1

    User Lists: 6

    #12  Edited By Shivoa

    So this is exciting. The (18/8 PC) patch changed a lot of things in the game. Including fixing enough bugs to get the game to where you think they wanted it to launch. Still no temporal AA or any of the features they said were close for the 1.03 patch which launched the game - probably doing a pure stability/technical update to catch as many known issues as they could for this patch and leaving any near-complete features for the next patch.

    But SSAA works. It's super-sampling so literally just rendering the screen higher res and downsampling. The benefit over DSR/VSR is the devs can selectively pick which buffers they've scaled up if they really don't think every buffer needs to scale when the final output is going to be scaled back down. When you force a higher res in the drivers then the game doesn't know it'l be scaled down at the end so can't do anything clever. No idea if Hello Games have uses this to make SSAA cheaper than just setting 4x the res in your drivers [Update: ok, I just saw the smoke particles from some geysers on this planet and oh boy are they using a low res buffer for that particle/geometry intersection - SSAA is definitely cheaper than DSR by use of smaller buffers for things like semi-transparent particle effects] but at least the setting works. If I had to bet, they're either using a very soft downsample or they're also doing some (very light, nothing like before) blurring here because it looks softer than my shots using DSR (with a 30% sharpness downsample in the nVidia settings). It's ok, I prefer it slightly over the DSR I was using before. It means you need a 4K capable card to do 1080p and isn't perfect (see Doom for a great cheap anti-aliasing solution using OpenGL) but hopefully we see a temporal AA solution soon that makes every other option only for low-perf or those who don't see aliasing as flicker.

    FXAA also works. And it works for a simple reason: the really strong blur is gone. FXAA is naturally somewhat of a blurry pass and I think they're leaning into it (I mean, FXAA does a blur pass full-stop - that's how it works: do a pass to isolate aliasing shapes and then apply a blur where found, so it's a selective blur) and that puts this on the blurry end of FXAA implementations. But when AA is set to None then there is no trace of blur (that very strong 1px blur noted in my original post is totally gone).

    Personally, I think that the game looks better in every single mode. NoAA is the sharp aliased mess that I hate but some are fine with, and sharp means someone can inject a post-processing AA pass if they want (FXAA/MLAA/SMAA via SweetFX/driver setting) or if in 5 years we get an even better post-AA algorithm then this is what you'll feed it. The FXAA looks much better than the bloomy blur seen above, even if it's far from perfect and some of the aliasing (by nature of the highlights/how thin polygons overlay the centre of pixels) is only reduced to slightly less sharp stairstep/floating dashed lines in some cases. But the railings in the shot I used in my first post are a great example of just how bad that looked when using the original blur. Look down below at how the railings have that broken green-blue highlight that FXAA can't totally fix (because it doesn't look exactly like a single line but rather lots of small perfectly horizontal lines) but throwing more samples at it with SSAA give it a continuous line (because rather than testing the polygon for intersecting the middle of the pixel, it check each of the four quadrants of the pixel for a polygon and so can draw thinner polygons consistently). And SSAA works and is basically the same as you'd find by using DSR/VSR in your drivers previously. It's good when games include a setting and it actually works, even if most people could hack around it.

    Cropped and enlarged (less than above crops were): a) NoAA; b) FXAA; c) SSAA.

    I also note that, as predicted for people thinking the blur was actually low res rendering (despite clearly having 1-pixel stair-step from a full res original aliased render), people are already reporting this patch as upping the internal resolution to match native and posting screenshots as proof that show before as a shot with the blur applied and after without (often with NoAA). Obviously it is much sharper due to the lack of the blur pass but actually the game was rendered at full res before (as I detailed in my original post). This helps validate my guess that people mistake low res original render for the aggressive blur pass previously used.

    Avatar image for jonny_anonymous
    Jonny_Anonymous

    3694

    Forum Posts

    6

    Wiki Points

    0

    Followers

    Reviews: 0

    User Lists: 0

    Aliasing has never and will never bother me. But neither does fov or screen tearing. I guess that makes me the perfect gamer.

    Same also I am totally blind to frame drops. I never notice it and when I do it doesn't bother me.

    Avatar image for pyrodactyl
    pyrodactyl

    4222

    Forum Posts

    4

    Wiki Points

    0

    Followers

    Reviews: 0

    User Lists: 0

    @devil240z said:

    Aliasing has never and will never bother me. But neither does fov or screen tearing. I guess that makes me the perfect gamer.

    Same also I am totally blind to frame drops. I never notice it and when I do it doesn't bother me.

    I feel we're lucky since noticing that stuff leads to a worse experience sometimes but never a higher enjoyement of games. It's interesting to be informed about the tech of rendering. I'm just glad I never pay attention to it in game.

    Avatar image for jaycrockett
    jaycrockett

    873

    Forum Posts

    80

    Wiki Points

    0

    Followers

    Reviews: 13

    User Lists: 5

    Wow, such a good write up! I'll have to go back and see what my settings are now, I know I turned off AA at one point. Did the patch fix having to restart every time you change the graphics settings?

    Avatar image for cerberus3dog
    cerberus3dog

    1030

    Forum Posts

    0

    Wiki Points

    0

    Followers

    Reviews: 0

    User Lists: 0

    Bookmarked your blog for future updates. I like reading about game tech. Insightful read!

    Avatar image for cornbredx
    cornbredx

    7479

    Forum Posts

    2689

    Wiki Points

    0

    Followers

    Reviews: 0

    User Lists: 15

    This is very interesting to know.

    I had to stop playing No Man's Sky because it makes me nauseous when I play it and I feel somewhat dizzy as well after extended play. I've been wondering why this is happening as I've never had this problem with a video game in 30 some odd years of playing, and I've not really seen anyone else mention having issues with it. I wonder if it has something to do with what you're talking about here, as the blur is something I noticed, but couldn't quite put my finger on what it was.

    I don't know. I'm just trying to figure that out. It's not necessarily caused by this but I feel like it could be that. Or something else. I don't know.

    Thanks for writing this up. This was interesting to read.

    Avatar image for brandondryrock
    brandondryrock

    893

    Forum Posts

    43

    Wiki Points

    0

    Followers

    Reviews: 0

    User Lists: 0

    Awesome post. I love learning about the technical aspects of video games, because it is really fascinating. This was very informative, and I feel like I understand anti-aliasing better.

    Avatar image for shivoa
    Shivoa

    1602

    Forum Posts

    334

    Wiki Points

    0

    Followers

    Reviews: 1

    User Lists: 6

    Wow, such a good write up! I'll have to go back and see what my settings are now, I know I turned off AA at one point. Did the patch fix having to restart every time you change the graphics settings?

    Nope, still needs to reboot the game to change (which means I actually find it faster to edit the text file with the settings in, especially as my FoV is beyond the 100 cap so using the in-game settings resets it to 100 - at least I can quit the game faster via alt-f4 as it doesn't save the game when you exit via the menu so there's really no point if not applying settings in-game).

    I had to stop playing No Man's Sky because it makes me nauseous when I play it and I feel somewhat dizzy as well after extended play. I've been wondering why this is happening as I've never had this problem with a video game in 30 some odd years of playing, and I've not really seen anyone else mention having issues with it. I wonder if it has something to do with what you're talking about here, as the blur is something I noticed, but couldn't quite put my finger on what it was.

    If you're playing on PC (or very close to a big TV) then it could be the Field of View is set too narrow. This game uses an exceptionally narrow FoV and that induces motion sickness in a decent number of people (which sounds like what you're experiencing) when their viewing angle doesn't match the screen. Think of the screen as a window; when you're far away from the window then you see a narrow view to the outside, the closer you get to the window then the wider the view you see. So sitting 10ft from a TV is very different from sitting 2ft from a monitor (even if the monitor is somewhat smaller than the TV) and needs a different FoV. Even the max FoV (on PC) of 100 in NMS is pretty narrow. I'm using 130 and that's what my screenshots are taken using.

    The blur may not help (so it being patched out could be good) but the symptoms you're describing are textbook for issues with the FoV being too narrow. I've heard of people who were fine developing increased sensitivity to this with age so it could be something you'll start to notice in more games (especially first person) with narrow FoVs.

    Avatar image for cornbredx
    cornbredx

    7479

    Forum Posts

    2689

    Wiki Points

    0

    Followers

    Reviews: 0

    User Lists: 15

    #20  Edited By cornbredx

    @shivoa: Oh, ya, I play it on PC.

    Ya, I have been wondering if that was it too. I made the FOV 90 in the game before I stopped because 90 seemed exceptional (I mean usually 70 is fine, I just finished the game Kingpin from 1999 and I think the FOV in that was 70. But my memory is garbage so I could be wrong).

    I don't know. I'll try setting it higher. Maybe that would actually help. Since 90 didn't seem to help I didn't think setting it higher would make much difference, but maybe that is it after all.

    This edit will also create new pages on Giant Bomb for:

    Beware, you are proposing to add brand new pages to the wiki along with your edits. Make sure this is what you intended. This will likely increase the time it takes for your changes to go live.

    Comment and Save

    Until you earn 1000 points all your submissions need to be vetted by other Giant Bomb users. This process takes no more than a few hours and we'll send you an email once approved.