From Neos Wiki
Jump to navigation Jump to search

Geenz's Bi-Weekly office hours for graphics.

Here are the notes from 2nd September 2021

These are rough notes typed by ProbablePrime. If there are errors please edit away!


Please do remember to check our Roadmaps as a lot of questions here are partially covered there. Do continue to ask them but the roadmaps are there for you to read:

MMC 2021

MMC will not be requesting that Neos or its team slow down the release of color management for the competition. If it releases during the competition and your worlds look odd or have problems do let the MMC Team know(Medra, ProbablePrime etc.) and we may give you extra time to correct it.


GPU instancing questions from Zyzyl

  • Which materials is GPU instancing enabled for?
  • What are the requirements for duplicates of the same mesh, with different materials, to be instanced together. Same material type e.g. PBS_Metallic? Other requirements?

Most materials should have this enabled. If you have the same material and same mesh it should just "work". There may be situations where it doesn't like having a TON(1000s) of the same mesh. In these cases it may have to break down the meshes into multiple instanced batches.

On the requirements, You can have certain properties be different between different and still have it instance. Things like Color, Texture may work.

  • How can we (should we?) properly use Material Property Blocks?

There's some magic going on for using these, for a given object with a block you can signal to that certain properties can be changed. Right now its scoped to specific properties and specific materials. We could generalize this further in the future.

LODGroup questions from Zyzyl

  • How expensive is the screen space size check for LODGroup components?
    • Not that expensive, you shouldn't worry about it.
  • When is it performed relative to the frustum culling check? Presumably after?
    • Yes it is after, those checks are always AFTER frustum culls.
  • Does it avoid a draw call if the MeshRenderer for the currently active LOD level is null?
    • Yes

Color Management

Shadow Panther and Earthmark asked basically the similar question about color management: Q: How's the Color Management upgrade going, actually? Any timeframe? Q: how goes operation gamma? What can we do to help with this? I'm not much of a visual person but I can try to route to people

  • Geenz assumes we're talking about Color Management/Gamma correction. its a little held up behind some serialization of properties such as legacy colors and content so its a little bit hung.
  • No timeline yet, we need some help from Froox. Geenz doesn't have a release time frame in mind just yet but stay tuned.
  • In terms of helping there will be some public testing soon. If you have a world that looks like it might break, reach out to Geenz and they'll add it to the list of worlds to check.

Modern: another q again: On the topic of overdriving colours, I usually overdrive them a little if i want a bit of a glowy effect, is that going to be broken with colour management?

  • We're trying to handle this in a way where things will look the same but its difficult to make everything look 100% the same as everything is going to be affected by color management. We're have to do a lot of tweaking to try and make things look as close as we can today.
  • So overdriving a color should end up with the same behavior eventually.

MattyK Q: How will Colour Management affect negative emission and similar 'bleed-through' effects? That's intersting during our testing in Negative Colors(-2, -3 etc) what w'ere seeing. They continue to work but the Glow seems to be off on them. If you have any Alpha on them it acts a little strange compared to current functionality.

So we're going to add more tweaks to make existing content work but it may look a little different. You should be able to continue creating content that uses that


Q: I'm hearing some things about colour management, about how specular are 'blown out' and intensity is generally a lot brighter than it is at the moment, how has this affected the rollout, has contrast been further adjusted? Secondary Q: I notice worlds looking generally 'sharper', which is good, but how does one achieve similar levels of 'warmness' and light saturation with the new colour management.

On Specular being Blown out:

  • Light Falloff is changing with Color Management we can't do anything about this.
  • When starting a project you start by picking a color space from the get go.
  • Seeing as this is at the late stage, there's a possibility that stuff looks different its unavoidable.
  • We can't make the "old falloff" an option as this would add too much time and complexity
  • We are trying to mitigate the visual impact for existing worlds but it won't look 1:1 but it should be close for the most part.

On Intensity being bright:

  • there has been a lot of work to try and mitigate this. The biggest offenders are anything that's overriding intensity or color values PAST 1. We're adding logix to mitigate some of this which is why color management is taking longer. So that we can try and make things look as close as possible.
  • Generally, expect to have to go make changes to your content when color management arrives but it shouldn't be large. We may add some additional tooling to help.

For Sharper:

  • Under CM, light fills out the room more. Lights used to have darker edges. Now it fdills the room more and this is due to lights now being more "correct" second thing is ambient lighting. In several cases Ambient lighting is darker and in some its brighter. this in due to the maths of Gamma Correction.
  • You should eb able to adjust ambient lighting on a skybox basis. You'll be able to tweak ambient lighting. You can tweak them to make things look closer to today's appearance.
  • For light falloff, mess with intensity and range. If we added more settings to light we'd have to write a new light system.
  • There are some follow up features such as light probes and a new lightning system down the road which will help make worlds look better and allow for more tooling. These are in early planning. See the roadmap.

Other Questions

EarthmarkQ: the neos main window renders a viewport of the game besides the headset view, is this render cheap? It feels like neos is rendering with three eyes but I'm likely misunderstanding that render. I'm curious what the pro with the window is, I've seen users have issues with it when trying to use the desktop view from inside vr neos, and if it's not cheap I'm curious what other costs that may be having over having a minimized only-render-on-expanded view kinda thing.

  • There was some back and forth to clarify this, Earthmark was talking about the on desktop monitor view of Neos that occurs when you're playing VR.
  • Geenz eventually said: we take one of the Eyes and we copy the view to there. Its not that performance impacting. It is similar to Steam VR's Desktop view its a texture copy.
  • Prior conversation from Froox:

EarthmarkQ: What can we know about canvases to help them be efficient? If a canvas isn't changing but contains a lot of elements is that expensive?

  • We try not to re-generate stuff unless we need to. There is a little bit of expense when generating mesh/texture assets. We won't go through and re-generate stuff unless something is changing.
  • Basically, once you have something on the canvas try not to change it too much.

RazorfibsQ: I understand that you are constantly adding more exciting features and trying to work around performance as things add up, What is your opinion on adding ai super sampling to the game? Such as Nvidia's DLSS?

  • Geenz is not opposed to it, but DLSS is off the table.
  • Geenz is more interested in AMD's approach which will work even on Intel GPUS. Geenz is more interested in tech that will work across many GPUs.
  • It is not a high priority right now as larger features are being looked at.
  • Geenz wants to look at FSR in the future as we become less and less CPU bound.

Earthmark: Q: last I heard procedural textures are generated on the CPU, are there any plans to migrate them to the gpu if that was true?

  • Yes you're right, they are generated on the CPU.
  • As far as GPU generation. Not at this time. Tricky to coordinate. We could add it a little later as an optimization for more procedural heavy worlds.
  • There are concerns about round trips back to the CPu though.
  • In summary: Yes its on the CPU, MAYBE we'll add GPU support later. Especially when we head towards custom shaders/shader graph stuff(SEE THE ROADMAP)

Modern My question is: Will the pbs materials be merged into one in the future? I always have issues when trying to make something and i would love to combine the features of certain pbs materials (like rimmetallic and slicemetallic, as well as being able to move emission maps on all of the pbs materials seperately then the whole texture) instead of using a material multiplexer, i always run into roadblocks with this

  • Simply put YES, its on the roadmap.
  • It might happen shortly after Color Management gets out of the door.
  • Any and all properties on the PBS materials will be available on any other PBS material.
  • Some properties, features won't be merged like Triplaner.
  • We'll be trying our best to merge these into as smaller of a set as possible so there is standarization.

SeventhVoid: Q: Graphics settings within the dash?

  • Eventually, Frooxius wants a new settings menu before we add many more settings.
  • We're waiting on the UI redesign for the dash.

Modern: another Q: Also i've noticed Neos uses your gpu, like... a lot. It does look amazing but i'm wondering if there's any unnecessary rendering going on.

  • Due to how neos is dynamic by nature, lots of it is rendered in a way not best for vr.
  • We use Deferred rendering as a pipeline
  • Lights are cheap provided no shadows
  • But this does require lots of memory bandwidth on the GPU when you're GPU bound.
  • It really depends on the world and its current optimization. For example we don't do a lot of occlusion culling or occlusion zones etc. We don't do anything other than Frustrum culling.
  • There are fixes and features that will rectify a lot of this for example moving away from deferred to something called "Forward+" that will not eat up your GPU resources as much.
  • Tons of sutff going into that unfortunately.

Enverex: Q: While it's not going to be good for performance, it would be nice to have for photos or some rare scenarios; would it be possible to have local toggles for things like realtime global illumination (e.g. GI + indirect lighting)

  • I don't think we'll be adding local toggles for this as it comes down to the intent of the world creator. Not everything is going to be made with GI in mind.
  • For examples, When we have light probes which enable pseudo GI. its still on the content creator to go place them within the world.
  • So No for now, maybe its something we may add on the light probe component to have them be real-time to set them locally etc. that's best to offer

jiink Q: Emissive details are used pretty frequently in neos worlds but they always end up looking like dotted lines (hit/miss every other fragment) or super shimmery in VR with head micro movements and tilting. I know anything like this can be defeated with enough super sampling, but what kinda anti-aliasing does Neos do?

  • Neos does none right now. No anti-aliasing it is disabled.
  • Largely because of performance, it would not be amazing right now.
  • We also have to go for an image based solution due to deferred rendering.
  • With FSR from AMD it might help us a little bit.
  • Things seem clearer/crisper under color management hwich puts us a step in the right direction her.e
  • Stay tuned as Geenz wants to fix this later, it is not going to be MSAA. Not 100% sure yet.

SeventhVoid: Q: lets say you get a custom shader how would you import that or make it optimised?

  • For Custom shaders, we'll be focusing on In-world Authoring.
  • Some ideas have been tossed around about importing blender shader imports but more research needed to see if we could support that.
  • Starting out it will bne 100% in neos and think of it like Logix nodes but for shaders. No importing.

ModernQ: I did a VR stream recently and i noticed on the stream i had screen space reflections? i think, Would that be possible to be implemented in VR? (A setting?)

  • Tricky, one part making sure it looks right and another part making it performant.
  • We're starting to not be CPU bound with performance, so we have to start focusing on GPU optimization in the near term now.
  • Unfourtunately, this won't be added into VR/Neos YET. We ahve to take into account lenses which makses SSR look weird sometimes. We'll see.

EnverexQ: Doesn't it(Neos) to FXAA by default? (or CTAA if you set the command for it explicitly)(though FXAA is pretty useless)

  • We disabled CTAA by default in Neos.