Rendering Updates - July 2017

Out of curiosity, how did that even happen?

3 Likes

:heart_eyes:

I just went through all of my code and deleted like 5 spawn()'s

6 Likes

We need a bigger like/heart button for posts like these

7 Likes

Amazing work, Thank you! :heart:

2 Likes

So neon implementation in Roblox is somewhat peculiar - it’s not really unique but it’s sort of interesting. Since this is a material that glows by itself, and we don’t have HDR yet so we can’t just output a very bright color for neon parts and rely on bloom for making it glow, we have to render a texture with all neon objects in it.

Now, we could have done it as a separate pass - just render all neon objects again, there’s usually not that many - however, Roblox games tend to have lots of transparent parts – to have glow be diminished when viewed through transparent parts, we’d have to also render all transparent non-neon parts into that buffer, which is not ideal performance-wise.

So what we settled up with is storing the glow intensity in the alpha channel and rendering it out as we render anything else. This means rendering information for neon is basically free, although we do have to pay a cost to actually convert this information into the glow effect (basically compute bloom from glowing bits). Since alpha channel is generally used for transparency, we have to play some games with blending math to make sure that it all works out.

What happened with anything that was not transparent though is that outputting alpha that’s not 1 made it glow - it literally would do the same thing as a non-transparent part with Neon material. Fixing this required splitting the shaders between ones that render opaque geometry and ones that render transparent geometry.

Also this is why if you use neon in models, your model thumbnails have 100% transparency wherever neon pixels are. That one is much harder to fix so we aren’t fixing it yet.

edit oh and decomposition geometry for whatever reason was opaque but had alpha set to 100/255. I blame @Khanovich for that one :wink:

11 Likes

So should this issue be fixed by now? I haven’t had a chance to check for a week since I’ve been away.

1 Like

:heart:

1 Like

We have shipped extra metrics and some performance optimizations for that one, but based on the limited info from that post the bigger problem there is a driver issue. If you still have it please post updated microprofile dumps to that thread. The new system that addresses the problems in that thread completely is one of the three big things that didn’t quite ship.

1 Like

Oh actually we also fixed the performance bug where characters or other humanoid models would trigger a complete rebuild of rendering geometry, I forgot to note that in the list of changes; I’ll update it.

9 Likes

:raised_hands: The day has come.

2 Likes

This is great! Even more reason to use meshes.

1 Like

Might need another update on the new spawn texture.

9 Likes

I’ve passed your feedback to the right people, we’ll get these edges fixed.

7 Likes

Could it also be made white and the Decal’s color set to black? Making it colorable would be nice too.

6 Likes

Nice thank you guys!

1 Like

I love you seriously for this fix :hugs: i suffered over an year because of this issue which even made some of my games utterly unplayable

1 Like

:clap: :clap: :clap:

Insert row of ROBLOXians in standing ovation.

2 Likes

jep

1 Like

How do I see the top 10. I have to know.

1 Like

You guys are heroes.

2 Likes