Look into the Slotmap datastructure to deal with a consistent_id/handle into an array that you can always pack to front where removals and inserts are O(1)
@truestbluu11 күн бұрын
this is awesome, though this does make me wish roblox had shader support...
@chudchadanstud13 күн бұрын
2:27 You're not using the dx, dy parameters
@solidnywonsz14 күн бұрын
what's the game in background?
@GabrielxC15 күн бұрын
Good work!
@Light-wz6tq15 күн бұрын
Nice stuff. Motivating me to get my project going.
@Light-wz6tq15 күн бұрын
I'm making a game engine too, let's go! 🎉 It's not a game but I'm more focused on making a good game engine.
@kinsukaweerasooriya293320 күн бұрын
Wow this is what using in Playcanvas game engine ❤
Loved the content in the video--as someone who is interested in using the depthBuffer for more effects, like the intersection shader you demoed, this video was/is a fantastic inspiration. My one issue with my watch was the code jumping around in the background. I think out of focus typing may work, if there was greater contrast between it and the writing in the foreground, but where it got really difficult, and unnecessary, was the page scrolling/jumping around. Happy other people liked the effect but it was a hard no for me--the graphics that you made were cool already!
@jks23426 күн бұрын
Good info, but one suggestion. Clearer dictation and some effort into improving audio quality. I had to rely on the captions.
@novelhawk27 күн бұрын
W vid
@xX_dash_Xx27 күн бұрын
What engine did you use? Would love to mess with shader code
@cient_dev27 күн бұрын
No engine, just built it myself with OpenGL for rendering
@stevemcwin28 күн бұрын
This is put together really well. I hope to see more tutorials from you!
@tay793128 күн бұрын
i want to get into game development but then i realise how complex coding languages look to me and i get super overwhelmed lol
@cient_dev28 күн бұрын
There are so many engines now that make it so accessible, you don't have to do what I'm doing here! Toby Fox claims to know very little about coding and he went ahead and made Undertale in GameMaker studio
@tay793127 күн бұрын
@@cient_dev oh i see, thank you!
@ryanlockhart532828 күн бұрын
Bro forgot he was using C++ which has multiple inheritance lmao
@colonthree28 күн бұрын
Since it is exponential/logarithmic comparisons for distance, can't you just use square it...? ;w;
@OkOkOkIMightKnowYou28 күн бұрын
Why not just pass an ortho proj matrix and use that to calculate depth? Would that work?
@pugglez479828 күн бұрын
I just got into OpenGL recently, so it's fascinating learning all the tricks about how things are rendered. Amazing idea, subscribed. Using the difference in depth coordinates before vs after rendering the bubble is clever
@owencmyk29 күн бұрын
This is a great video, and I was quite interested in how your approach differs from how I would've done it. I'd like to present an alternative because I think there are a couple flaws with your approach. Those flaws being: - If you placed a sphere centered on the shield, and made it almost the same size, your approach would make the shield light all around despite there being no intersections because of how it uses the depth buffer. - Viewing objects at 90 degree angles makes them not be outlined properly Here's what my approach would've been: - Render the scene like normal - Render a second scene where the shield is opaque blue (textured with noise if desired) and everything else is solid white, only drawing depth for the shield itself. This could be done more quickly when you realize you don't actually have to render anything other than the bubble, you can just render the bubble on a white background using the depth buffer as a mask - Blur the shield render - Blend the normal and shield render using the depth mask of both renders That way the white from the second render would sorta bleed out around the edges of the object, and the blur step, or colors of the render could be customized to make it stronger or less strong. Of course, I don't mean to suggest this method in bad faith. Your approach is probably still better due to the following flaws of my approach. - Being screenspace, it has the potential to look really weird and not exactly 3D in some cases - Blurring will cause corners to be abnormally bright in comparison to what you might expect - If you wanted to texture the bubble you'd have to render it again because the blur would get rid of any detail, unless you specifically wanted a blurry texture - Objects far in front would still have an outline, which is kinda a REALLY big problem and the main reason why I think your approach is much better. Possibly solvable by some fancy depth stuff but I can't think of a method of ignoring things close to the camera without causing there to potentially be holes in walls I just wanted to suggest another method as I think it could add valuable insight to anybody who wants to achieve this effect.
@phoenixstyle29 күн бұрын
Omg I love that you jhsd the music from the shapez ost! One of my favorite osts
@kicho11529 күн бұрын
🦍👍
@cient_dev29 күн бұрын
winton
@Dougie-29 күн бұрын
What's the benefits of storing the data in separate lists when all lists contains data for all entities instead of baking it all into one entity struct? Like the Move function. Why read physics and transform from their lists when they just be part of the entity itself?
@cient_dev29 күн бұрын
Doing this means every entity would need every component in the entity struct, even if they don't use said component, which would become a memory burden as more and more components get added. There are ways to instead have one massive list which contains every component, laid out in a specific order for the fastest possible traversal, but it's pretty complex and honestly I don't think I need that level of efficiency for a basic ECS. This is just my compromise between ease of use and speed.
@antoinebutterfly855529 күн бұрын
I understood nothing but watched the whole thing all the way through 😅
@ilovehumongoushonkersАй бұрын
is that shapez music
@cient_dev29 күн бұрын
Yessir
@SlicomfulАй бұрын
subscribing
@ShiledsАй бұрын
Very cool. I hope one day i can apply the information i got from this video.
@MrKaftpaketАй бұрын
This video is incredible, wow! Great explanation and great visualization! Thank you for sharing this with us, this has inspired me to try to implement something similar :D
@MrDcx23Ай бұрын
Subscribed! Thanks for the video!
@MattDog_222Ай бұрын
confused webdev + ovewatch player here - honestly watched the entire before seeing how few subs you had. This was very high production quality and one of my favorite parts was how you showed just random code writing from the project as the unfocused background while focused on a particular snippet. Similar to those goofy subway-surfers-background videos because everyone has a negative attention span.
@cient_devАй бұрын
Lmfao I love it, I added the coding in the background as a last minute decision because I was zoning out when reviewing the video. Tiktok destroyed my attention span
@abraham_aitelАй бұрын
I was literally looking for this type of videos. Great job ❤
@ahmedabuharthieh579Ай бұрын
Great video! You did well to recreate the effect and also explain it perfectly
@Gary_Yang_SkyАй бұрын
Wait, I understood that...
@TheTmLevАй бұрын
`virtual ~IComponentPool() = default;` is a bit better than `{}` due to how compilers might look at this line of code
@cient_devАй бұрын
Good catch, was using it to log deconstruction during debugging but I honestly didn't know there was a difference, thank you!
@HyperMario64Ай бұрын
Great video, very accessible. Pleased to see your thorough explanations going into NDC and clip space. In my opinion this is a great example to learn about many aspects of graphics programming at once. Screen-space effects are the backbone of all modern real-time renderers.
@manniheck2405Ай бұрын
this is awesome work!
@z3ron3Ай бұрын
I've been learning OpenGL for about a year now and this really helped me more than anything. Keep doing this mate.
@PyroWolf90Ай бұрын
this was really cool, definitely subscribing to watch more videos like this
@MechaKnightzАй бұрын
suchs good content, earned yourself a sub
@pikolopikolic5567Ай бұрын
this is a fantastic video, and you explained z linearization so well. I have been confused about that exact topic for years, and you just pulled me out of that confusion
@tvwatch9669Ай бұрын
Great video! Super informative and interesting. Also love the editting
@GouleurАй бұрын
Man you're hitting it out of the park! The production quality, the substance! Hope you post more like this.
Very good video! Really thought the visuals, diagrams, and editing helped succinctly give a good idea of what an ECS is for those unfamiliar. Just wanted to clarify one thing for others and the future. Data Oriented Design is not actually packing data close together, keeping objects in memory linearly is tight packing and linear memory iteration/access. Data Oriented Design is the concept/practice of keeping all data isolated in objects, without any logic, and having functions (usually global functions) operate directly on that data from other sections of code.
@cient_devАй бұрын
Thank you! :) I just did a quick search and the definition seems muddy, from what I understand Data oriented Design is designing for cache friendliness, while Data Oriented Programming is what you described. I could be wrong though