Gabe you're a frickin madman! I'm not as smart or ambitious as you, so I would never have been able to do this myself. The fact that you're sharing this with everyone is amazing. I just got my first SWE job - that means disposable income 😏please make a patreon so I can support your endeavors!
Thank you! Congrats on getting your job, that's super exciting. I would love to make a Patreon, I just struggle to find reasonable incentives to provide - considering everything I make, I like to share 😅. I appreciate the kind words man, so thanks again
Incredible! The brushes with constant-distance placement make for some very smooth-looking sculptures. Just like many other commenters, I would love to see the in-depth technical video. But I encourage you to prioritize engine development first - you've been making such great progress lately :)
I want to make it, I just struggle with finding the time. Thank you for the kind words Douglas, always a pleasure to see you here. I said this in another comment but I think I'm just going to need to put my head down and work hard on that video!
Very awe inspiring to see so many voxel projects being worked on all across the community, remembering back when the automontage stuff was the peak of what we thought was possible. Incredible work! I'm very excited to see what you end up doing with this amazing engine!
Man thats amazing! I'd really like to see a technical video talking about this allocator, I can't imagine how its used and implemented. It really blows my mind
5:00 Please do this! I wouldn't have a Problem if it is not absolutely perfect! But what I am really interested in is, how you actually lay out these data structures in linear memory, since it doesn't really lie in the nature of most data structures! And this is really important for caching!
I guess it would be relatively easy to generate just the chunks the player sees dropping the total ammount of chunks dramatically in exchange of figuring out which chunks to generate
This is somewhat true. I currently elect chunks for updating seemingly at random - there's a shader run for every chunk, which atomically fetches the first N chunks that need updating, adding them to a list to be updated later in the current frame, so there's no sorting of chunks. However, loading only the chunks which are visible would be super easy, since I just would not elect any chunks outside the view frustum to be edited.
@@GabeRundlett I say this because your chunks seemed very small, meaning that if you didn't calculate the inner chunks until the player can actually see them you could extend the visual range even further
Very cool stuff. I always have a special place in my heart for voxel engines. Are you limiting the memory use in any way? If i tried to load too much, would there be a crash or just empty void somewhere?
There's not really a limit to the size. The memory allocator theoretically supports 275GB of active VRAM! If you look closely at the "EST. VRAM" metric when loading the larger world, you'll notice it increases. This number is calculated by the size of the actual buffers and images that are on the GPU, and so the number changes because I actually recreate, copy and delete the old buffer to use a new, larger buffer!
For the future, though, I think I want to let the user define some heuristic with a setting like render distance that determines a cut-off for when further/LOD(soon TM) chunks get unloaded in order to maintain the memory target
@@GabeRundlett Depending on what kind of applications you intend this for, a priority system might be a good addition to that, as well. Think static-ish world with big landmarks that can be seen from everywhere and must not be unloaded. Although if you let the user define an arbitrarily complex heuristic, that would be up to the user.
What about making some sort of LOD's? This would allow a very high draw distance, imagine seeing mountains on the horizon. I've never seen such a thing in a voxel game, but i think it makes sense - if it's more uniform, it takes less memory.
I prefer to tailor my development towards high powered hardware, but I can confirm it does *run* on my AMD laptop's iGPU. It highly depends on the resolution, though. I currently get about 35fps on my laptop iGPU at 1080p. It jumps to 80-90fps at 720p
The data compression happens entirely on the GPU actually, and it's done in parallel. It happens live as the voxels are being edited and takes nearly nothing. I posted on twitter about this actually, when I finally got the compression working, but on my 3070 I can compress 18 billion voxels per second!
I like the idea of a more indepth video. But I also know that those videos take quite a while. So if they make you loose motivation and discipline while making them then I prefer it if you just continue with working on the voxel engine or at least reduce the editing part to a minimum.
I am already mid-way through creating that in-depth video, with a bunch of cool animations and a much higher production value than normal. I've been sharing my progress about it on my Discord!
perhaps, instead of going for a 3B1B style with animations and diagrams just do a "normal" video thats a bit more scripted with a few static diagrams for visual aid. ala power point presentation but with a touch more polish. alternatively, you might be able to get into contact with 3B1B and see if they'd be able/willing to colab, or at very least have some pointers for you. this sort of thing is technically not their typical content but in an ideal senario they could do a video on the mathematics of compression and you could do a counterpart video on how its done on GPU vs CPU. the most important thing to remember though is not to set your aim too high. remember that K.I.S.S acronym. Keep It Simple Stupid. start with a script. record the script. create some visual aids to represent some of the "complicated" concepts. fade to them in editor as needed. dont over complicate things with fancy animated diagrams or anything. just cobble something together as an initial experiment and see how it goes. remember 3B1B have been doing their videos and animations for years. you're not going to catch up over night. ;)
Thank you so much for the detailed response, I really appreciate it, and I totally agree. I totally should try to get in contact with 3b1b, I think that would be so cool if he could give me some pointers. I have written a rough outline of the video, with what topics I want to cover, but yeah I'm way too ambitious with what I want from it and get too perfectionist. I literally have to force myself to keep these videos as simple as they are, since otherwise I start focusing on all the minute details and never finish 😔.
very nice ! i totally agree that a big video explaining how your compression works would be amazing, i’d love to see something like this !
Gabe you're a frickin madman! I'm not as smart or ambitious as you, so I would never have been able to do this myself. The fact that you're sharing this with everyone is amazing. I just got my first SWE job - that means disposable income 😏please make a patreon so I can support your endeavors!
Thank you! Congrats on getting your job, that's super exciting. I would love to make a Patreon, I just struggle to find reasonable incentives to provide - considering everything I make, I like to share 😅. I appreciate the kind words man, so thanks again
@@GabeRundlett I wanna support the free content for everyone! I know where you're coming from though.
Incredible! The brushes with constant-distance placement make for some very smooth-looking sculptures.
Just like many other commenters, I would love to see the in-depth technical video. But I encourage you to prioritize engine development first - you've been making such great progress lately :)
I want to make it, I just struggle with finding the time. Thank you for the kind words Douglas, always a pleasure to see you here. I said this in another comment but I think I'm just going to need to put my head down and work hard on that video!
Awesome! I love how quick the painting is.
It's fun to watch you play around in the end😊
Very awe inspiring to see so many voxel projects being worked on all across the community, remembering back when the automontage stuff was the peak of what we thought was possible. Incredible work! I'm very excited to see what you end up doing with this amazing engine!
This looks really great! I never expected such a huge chunk of world to take in such a small amount of ram. Looking forward to that video!
Thank you!! I want it to be good, so I have been taking my time on it
Man thats amazing! I'd really like to see a technical video talking about this allocator, I can't imagine how its used and implemented. It really blows my mind
totally! I want to make it but I get super perfectionist about it. I'm just going to put my head down and make it good!
@@GabeRundlett That sounds great! That will make a lot of value for the community
I love these voxels weekend updates. Keep it up! It's always exciting to see how the engine evolves and what the actual game (?) will look like.
Thanks for following along, I really appreciate it!
That's amazing how you manage memory with your allocator. IMO you're on the right path. Keep it up! 👏
Bro that song you had in the intro took me right back to 2010 lol. I haven't heard that in ages!
And I think of terraria.
very cool! can't wait to see how far you can push this engine.
nice music
It looks incredible! :D seeing the world size go upto 2048*2048*2048 is insane! :D Also I love your new profile picture! :D
Amazing work! I love following this project! Keep it up!
5:00 Please do this! I wouldn't have a Problem if it is not absolutely perfect! But what I am really interested in is, how you actually lay out these data structures in linear memory, since it doesn't really lie in the nature of most data structures! And this is really important for caching!
for sure!!!
This is so cool!
Thank you Elliot! I am excited to make a video going more in-depth with how this works
Awesome achievement! Is there a plan to use LoDs to expand the world even more?
Yes, that's the plan!
@@GabeRundlett I am really excited and looking forward to it :)
U are so very smart. LIKE WHHATTT. I cant even make a mesh out of voxels!
Thank you for following along and the kind words. I always love hearing your music when you post it in Discord 🥰
@@GabeRundlett 😄
I guess it would be relatively easy to generate just the chunks the player sees dropping the total ammount of chunks dramatically in exchange of figuring out which chunks to generate
This is somewhat true. I currently elect chunks for updating seemingly at random - there's a shader run for every chunk, which atomically fetches the first N chunks that need updating, adding them to a list to be updated later in the current frame, so there's no sorting of chunks. However, loading only the chunks which are visible would be super easy, since I just would not elect any chunks outside the view frustum to be edited.
@@GabeRundlett I say this because your chunks seemed very small, meaning that if you didn't calculate the inner chunks until the player can actually see them you could extend the visual range even further
Did you made the explanation video "3blue1brown like" of how you made the compression algorythm on gpu ?
I didn't... I did a lot of work for it but never finished it
Very cool stuff. I always have a special place in my heart for voxel engines. Are you limiting the memory use in any way? If i tried to load too much, would there be a crash or just empty void somewhere?
There's not really a limit to the size. The memory allocator theoretically supports 275GB of active VRAM! If you look closely at the "EST. VRAM" metric when loading the larger world, you'll notice it increases. This number is calculated by the size of the actual buffers and images that are on the GPU, and so the number changes because I actually recreate, copy and delete the old buffer to use a new, larger buffer!
For the future, though, I think I want to let the user define some heuristic with a setting like render distance that determines a cut-off for when further/LOD(soon TM) chunks get unloaded in order to maintain the memory target
@@GabeRundlett Depending on what kind of applications you intend this for, a priority system might be a good addition to that, as well. Think static-ish world with big landmarks that can be seen from everywhere and must not be unloaded. Although if you let the user define an arbitrarily complex heuristic, that would be up to the user.
Do you have a computer just for programming and discord?
in a sense, that's all I do 😆. But yeah this is my main PC, and I have other stuff like blender, steam, video editing software etc.
wow
What about making some sort of LOD's? This would allow a very high draw distance, imagine seeing mountains on the horizon. I've never seen such a thing in a voxel game, but i think it makes sense - if it's more uniform, it takes less memory.
yes, that's the plan. I want to feel super immersed in the world
Do you explain the shader malloc at a high level anywhere?
No, not really
Watching the ending, I feel like this game would work really well in VR. Do you have any plans to add VR support in the future?
I haven't ever looked into what VR development is like, though I do have a VR headset and I love Half Life: Alyx. I might look into it!
Will it run on integrated graohics?
I prefer to tailor my development towards high powered hardware, but I can confirm it does *run* on my AMD laptop's iGPU. It highly depends on the resolution, though. I currently get about 35fps on my laptop iGPU at 1080p. It jumps to 80-90fps at 720p
About what amount of CPU juice is traded for this compression?
The data compression happens entirely on the GPU actually, and it's done in parallel. It happens live as the voxels are being edited and takes nearly nothing. I posted on twitter about this actually, when I finally got the compression working, but on my 3070 I can compress 18 billion voxels per second!
I like the idea of a more indepth video. But I also know that those videos take quite a while. So if they make you loose motivation and discipline while making them then I prefer it if you just continue with working on the voxel engine or at least reduce the editing part to a minimum.
I am already mid-way through creating that in-depth video, with a bunch of cool animations and a much higher production value than normal. I've been sharing my progress about it on my Discord!
@@GabeRundlett It's good to hear that you don't loose motivation doing that video. :D
perhaps, instead of going for a 3B1B style with animations and diagrams just do a "normal" video thats a bit more scripted with a few static diagrams for visual aid. ala power point presentation but with a touch more polish. alternatively, you might be able to get into contact with 3B1B and see if they'd be able/willing to colab, or at very least have some pointers for you. this sort of thing is technically not their typical content but in an ideal senario they could do a video on the mathematics of compression and you could do a counterpart video on how its done on GPU vs CPU. the most important thing to remember though is not to set your aim too high. remember that K.I.S.S acronym. Keep It Simple Stupid. start with a script. record the script. create some visual aids to represent some of the "complicated" concepts. fade to them in editor as needed. dont over complicate things with fancy animated diagrams or anything. just cobble something together as an initial experiment and see how it goes. remember 3B1B have been doing their videos and animations for years. you're not going to catch up over night. ;)
Thank you so much for the detailed response, I really appreciate it, and I totally agree. I totally should try to get in contact with 3b1b, I think that would be so cool if he could give me some pointers. I have written a rough outline of the video, with what topics I want to cover, but yeah I'm way too ambitious with what I want from it and get too perfectionist. I literally have to force myself to keep these videos as simple as they are, since otherwise I start focusing on all the minute details and never finish 😔.
new update
yessir!
Im shocked by how big you brain is
Haha thanks for watching!
cool