September 26th, 2023 Livestream Q&A: Does it help FPS by hiding belts?

September 26th, 2023 Livestream

Q&A: Does it help FPS by hiding belts?

00:00 Intro
00:34 Occlusion Culling
03:14 Issues if Satisfactory did Frustrum Culling on coalesced objects
05:16 Q&A: Just do both culling techniques and call it a day?
06:11 Community FYI: I love how concisely you can explain these problems for non-programmers
09:20 Using Shadows as another example of discussing trade-offs
12:03 Discussing ray-tracing
14:26 Lumen

https://youtu.be/25dPdZQ9ZIE

This question has 2 related videos
Suggested Wiki Reference Code <ref name="yt-25dPdZQ9ZIE">[https://youtu.be/25dPdZQ9ZIE YouTube - September 26th, 2023 Livestream - Q&A: Does it help FPS by hiding belts?]</ref>

Topics

Transcript

does it help FPS by heading belts there's no yes and no answer that question because, you can't generalize a really theoretically yes but also no because of the way calling works and like yeah there's there's no easy answer that question because like it's good up to a certain extent but then I mean I guess I need to wake up I guess to some degree like it's it's the better option to try and hide stuff as much as possible but since not everything is like called by based on see here's the thing okay when you have a game and you have like a wall and you have like stuff behind that wall that wall is usually just like when when the GPU is doing the calling checks, it's doing, bounding checks essentially so like if something's blocking something else then he'll be like okay there's something there's no like there's something obvious getting this thing so I don't need to render the thing behind it the problem with our game is that we don't have like when you're building a wall you're not you're building a wall out of many pieces and when it's doing the calling checks this is generalizing it a lot but essentially when it's doing the calling checks it's missing a lot of cases because the walls aren't obviously getting everything fully so like even if you encapsulate a factory Within Walls like when you're doing the Collision checks it's doing the Collision checks on the wall separately so like if you have a conveyor pull like that and your the camera is behind the other side then that will get obfuscated probably in certain angles, this is complete this is overly generalizing it though because this actually doesn't work that way it's a bit more complex than that but that is like I've done tests with this where if you build walls around stuff and then you freeze the frame and you check it because I think we can do this here I mean

[Music]

freeze rendering right oh actually I wonder if I can move around still thank you well that might not work on this build actually yeah coming out recognized too bad, maybe I can demonstrate in the video or something because you can actually see you can actually check like what is obvious get or not, in editor but can't do it in this version unfortunately and we can obviously extend it so that like when you're building stuff it'll create like one bounding box instead of many, but that is a system that is very prone to issues and we've, elected not to do that because of the issues that would arise we're actually working on something very similar to that right now where, all the Foundation pieces in the game when you place them down they will instead of it being like because right now there are actually like game objects for all of these Foundation pieces right and they're taking up certain space and working on system right now that instantiates all these building pieces and creates like one big instantiated, object but the problem with that then is then, you know if you're doing frustrial culling and you know if I'm doing freshman calling right now and I'm looking here it will render the entire thing, as to how it is right now where if I'm doing frustrum calling and I'm looking at like this Edge piece here it won't render any of the other Foundation pieces that are like connected to this, so like there are benefits and issues with like going either route so like if if we're going the right way we're instantiating stuff and creating like bigger objects then we also need to be smart and like how those are called so that we don't end up in a situation where you know you you will it will always render the entire thing no matter where you look, foreign so, it's it's super I wish it was an easy way to solve these problems but unfortunately as with life there are a lot of edge cases and there's no like perfect solution to everything just do just do both and call a day but when when do we do which one you know like when do we pick which whichever because it depends not just like how you build but also we're looking currently like it's there's no good General solution because sometimes you want to do one of them and sometimes you want to do the other so like how do you determine which one you use that's that's the that's the hard-earned question right there you do the correct one the correct time easy you should come work for us hello from crypto oh I'm sorry to hear that I'm not encrypted though so we're good all right Aloha consists, concisely you can explain this concept for known programmers I like I understand the problem but I could never explain it the way it is I feel like my explanations are always ass, to be honest I think there's always a problem when when you're trying to describe things because like here's the problem with the way I describe things like maybe that was a good explanation or something for that particular thing but the way I always feel like whenever I'm describing very technical issues because I'm also downplaying these like I'm way oversimplifying some things like some things are very hard to explain when you're simplifying them because when you're simplifying them you can actually confuse people more so than just saying it's difficult and just try and learn how it works rather than like try and like simplify it, because I feel like a lot of one problem with certain Tech and like when it comes to programming and then game development is that people have one idea roughly how it works based on like some simplified solution explanation but then it actually actually when they apply it in certain different situations it doesn't actually work that way and it's confusing, so, it's It's tricky to find the balance there but, I'm glad I'm glad that explanation was good at least maybe, what am I doing I'm just running around like a crazy monkey right now, right I wanted to make another floor laser bridge in the Gap yeah so that's that's I think that's very important because if if everybody knew how games were made like if I write a new like what goes into making stuff work then I don't think people would complain about certain things that like oh I missed it, like I think people would have a better oh I could just done that so don't oh my God why did I just do that, you know people would be able to troubleshoot and like understand why things are done in this in the matter that they are a lot of times I think when you look at some certain games they're like oh this this studio could do this thing and then somebody else makes another game and like they don't they have to do like a completely different rendering solution or something just based on like what type of game they're making and then people are like but what if game a could do this but you can't do this like that makes you bad like this you're always making, decisions when you're making games like as to what you can and can't do, and certain Solutions don't work with other Solutions, it's like so like it's very hard to like apply one use case to a lot of, situations yeah it's all about the trade-offs exactly and when you don't understand that there are trade-offs or what the Traders are with different techniques you know then, then it's difficult, like one example that comes to mind is designed like how we render shadows in games is it it's a very complicated subject, and it's it's like the solution that most games use is actually quite like it's it's quite bad honestly, but it's the most widely adopted one because it's the most like it's the most, what's the term like it's the most, it works in most use use cases like the majority of times it does the job versatile that's what I was looking for and, it's like if you ever make a game where you need like way higher rest Shadows or you know, if you want to do like something like with the Shadows are magic and do some you know stuff then you can't use that solution because you need to make your own and if you make your own maybe it's like super performance heavy or something like that right so, and then like shadows will look good for that game or something but whoops I think I yeah good thing that we're playing an update so we can do this push the button again our be gone oh dude that was so annoying update seven holy oh look at us look look at us push, approach are you referring to Cass yeah cascading Shadow Maps it's like, if you think about it like the more lights you haven't seen the heart like if you ever implemented cascading Shadow Maps you know it's a weird like Implement like it's a weird solution, and it's like you have to have a shadow map for every object or every scene or light I mean, and, yeah it's it's weird I remember how or first when I was I want to learn how to do it yeah it just Ray traced everything and yeah hey if we ever Ray traced the way we thought we were going to Ray Trace back in the day like because because Ray tracing the way it works now is not like exactly how we thought it was going to work because like it's based on approximations and like that more so than it's not an actual like it's the ray tracing technique but it's not like actually the algorithm then, it's your right choice is so cheap but like honestly that's the sort of, I think for the longest time, rendering Engineers have always anticipated that like Ray trains is gonna be like the thing maybe someday it might also be that we're we think that's going to be the case and we end up coming up with something completely different because that's the interesting thing I think with computer science and like, specifically rendering computer rendering computer graphics and like the research that goes into that field is that a lot of the techniques that have been invented to solve like quite complex problems are like they're quite, foreign they're not super Advanced like the way 3D Graphics work in general isn't like it's it's it's complex but it's like I can understand most of it and I've implemented my own like low level rendering using the apis and everything and like when when we had sort of the foundation for that API or like the way we do 3D Graphics it was quite crude and then as time goes on we figured like oh this is I can do that and then I can do that and you just add things on top of each other so like once you have the knowledge base you can do really complex stuff like the way people can create it's it's also partly because of Hardware API but like a lot of the stuff that we can do nowadays were things that technically technically were possible back in the day but we just didn't know how to do it luminous and solution for multilia Shadows, no, I mean could be no not Shadows well no because you need you need yeah now aluminum is more like regards to like shading because here's the thing guys shading and and like Shadow like shadowing is applied on shading but shading and like Shadows are completely like separate in how they're sort of calculated sort of you're applying the Shadows after the fact I wish I could show this there's a because like the most common rendering technique is called deferred shading and that's where you do everything in like passes and lighting is actually the last thing you do at the end and you just apply it on top of everything so first you just calculate like what the colors of everything should be depending on like where the light sources are coming from and then, and then you apply the shadows and the lighting on top of that that's why it's called deferred shading because the lighting is deferred to the last pass