- 65
- 161 724
Gabe Rundlett
United States
Приєднався 26 гру 2011
I am a software engineer who loves making cool things with code in my free-time!
Right now, I'm working on building a voxel-based engine (and eventually a game) completely from scratch in Vulkan.
All the code for the engine is currently open source on my GitHub
If you want to chat with me and other community members, you can join my Discord!
My most recent hardware is the following, though if there are differences, they are disclosed in each video's description
GPU: RTX 3070 (8GB VRAM)
CPU: AMD Ryzen 7 5800x (8 core/16 thread)
RAM: 16GB 2667 MHz DDR4
Right now, I'm working on building a voxel-based engine (and eventually a game) completely from scratch in Vulkan.
All the code for the engine is currently open source on my GitHub
If you want to chat with me and other community members, you can join my Discord!
My most recent hardware is the following, though if there are differences, they are disclosed in each video's description
GPU: RTX 3070 (8GB VRAM)
CPU: AMD Ryzen 7 5800x (8 core/16 thread)
RAM: 16GB 2667 MHz DDR4
Fire and Torches (more particles) | Voxel Dev Showcase
With the new particle rendering, I can add all kinds of effects that I like, such as this fire, which even has added smoke particles with a completely different material.
I am now copying the voxel data back to the CPU when there are chunk updates, so the CPU has a copy of the voxels. I'm doing this because the fully GPU-driven codebase is difficult to maintain, and it negatively impacts iteration times a lot. This has allowed me to put the player back on the CPU as well, though, which means I'm now able to do Player-voxel collision again!
With the voxel data on the CPU, I now want to experiment with new rendering acceleration structures and only upload the surface-voxels for rendering. This will reduce the strain on the GPU, and hopefully much faster rendering (especially global illumination rays!)
The Public Codebase:
github.com/GabeRundlett/gvox_engine
If you want to chat with other community members and me, join my Discord!
discord.gg/FPVNeej5sr
My website:
www.gaberundlett.com
GPU: RTX 3070 (8GB VRAM)
CPU: AMD Ryzen 7 5800x (8 core/16 thread)
RAM: 64GB 2667 MHz DDR4
I am now copying the voxel data back to the CPU when there are chunk updates, so the CPU has a copy of the voxels. I'm doing this because the fully GPU-driven codebase is difficult to maintain, and it negatively impacts iteration times a lot. This has allowed me to put the player back on the CPU as well, though, which means I'm now able to do Player-voxel collision again!
With the voxel data on the CPU, I now want to experiment with new rendering acceleration structures and only upload the surface-voxels for rendering. This will reduce the strain on the GPU, and hopefully much faster rendering (especially global illumination rays!)
The Public Codebase:
github.com/GabeRundlett/gvox_engine
If you want to chat with other community members and me, join my Discord!
discord.gg/FPVNeej5sr
My website:
www.gaberundlett.com
GPU: RTX 3070 (8GB VRAM)
CPU: AMD Ryzen 7 5800x (8 core/16 thread)
RAM: 64GB 2667 MHz DDR4
Переглядів: 5 740
Відео
Particle Shadows | Voxel Dev Showcase
Переглядів 3,7 тис.Місяць тому
The particles really needed shadows, so I added them via simple traditional shadow mapping! The Public Codebase: github.com/GabeRundlett/gvox_engine If you want to chat with other community members and me, join my Discord! discord.gg/FPVNeej5sr My website: www.gaberundlett.com GPU: RTX 3070 (8GB VRAM) CPU: AMD Ryzen 7 5800x (8 core/16 thread) RAM: 16GB 2667 MHz DDR4
Animated Voxel Flowers and Trees | Voxel Dev Showcase
Переглядів 3,5 тис.Місяць тому
As I said in the last video, I made the particle rendering much more efficient, allowing me to draw way more particles, but why stop at grass? Lets get some flowers and tree leaves in there too! Before you say anything, I definitely was heavily inspired by John Lin's art-style for this For this, I also had to add particle shadows, because they were also necessary to make the image cohesive! The...
More Dense Grass | Voxel Dev Showcase
Переглядів 1,3 тис.Місяць тому
Here, the grass is also animated via perlin-like noise The Public Codebase: github.com/GabeRundlett/gvox_engine If you want to chat with other community members and me, join my Discord! discord.gg/FPVNeej5sr My website: www.gaberundlett.com GPU: RTX 3070 (8GB VRAM) CPU: AMD Ryzen 7 5800x (8 core/16 thread) RAM: 16GB 2667 MHz DDR4
Animated Voxel Grass (first iteration) | Voxel Dev Showcase
Переглядів 1,3 тис.Місяць тому
Here's a little supplemental video showing where the grass was about 2 weeks ago The Public Codebase: github.com/GabeRundlett/gvox_engine If you want to chat with other community members and me, join my Discord! discord.gg/FPVNeej5sr My website: www.gaberundlett.com GPU: RTX 3070 (8GB VRAM) CPU: AMD Ryzen 7 5800x (8 core/16 thread) RAM: 16GB 2667 MHz DDR4
Animated Voxel Grass | Voxel Dev Showcase
Переглядів 4,7 тис.Місяць тому
I recently made the particle rendering much more efficient, which allowed me to create a new particle type that emulates grass! The Public Codebase: github.com/GabeRundlett/gvox_engine If you want to chat with other community members and me, join my Discord! discord.gg/FPVNeej5sr My website: www.gaberundlett.com GPU: RTX 3070 (8GB VRAM) CPU: AMD Ryzen 7 5800x (8 core/16 thread) RAM: 16GB 2667 M...
Importing Meshes to Voxels | Voxel Dev Showcase
Переглядів 3,5 тис.2 місяці тому
I implemented Mesh voxelization a while ago, but I just now decided to make a video to showcase it. This weekend I have been working on something really cool that I'm excited to show off, but I can't show it yet!!! Per-voxel normals were disabled for this video, as generating normals from binary meshes is not great. I also disabled getting their normals from the triangles/normal maps, as this s...
Massive Islands in Space | Voxel Dev Showcase
Переглядів 1,4 тис.2 місяці тому
In this video, I scaled up the voxels to be 64 meters per voxel. This means that my 2048^3 testing volume spans 131 kilometers, making it visible from space! I did this because I am working on the atmospheric haze, which can be seen over-top the terrain The bottom half of the voxel volume is actually underneath the planet's surface, and therefore the sky fog kinda breaks 😅 The Public Codebase: ...
Dithered Per-Voxel Normals | Voxel Dev Showcase
Переглядів 1,3 тис.2 місяці тому
The Public Codebase: github.com/GabeRundlett/gvox_engine If you want to chat with other community members and me, join my Discord! discord.gg/FPVNeej5sr My website: www.gaberundlett.com GPU: RTX 3070 (8GB VRAM) CPU: AMD Ryzen 7 5800x (8 core/16 thread) RAM: 16GB 2667 MHz DDR4
Day and Night Cycle with Stars | Voxel Dev Showcase
Переглядів 1,1 тис.2 місяці тому
The sky in this video is from a friend of mine's Bachelor's thesis. His implementation can be found here: github.com/MatejSakmary/atmosphere-bac The Public Codebase: github.com/GabeRundlett/gvox_engine If you want to chat with other community members and me, join my Discord! discord.gg/FPVNeej5sr My website: www.gaberundlett.com GPU: RTX 3070 (8GB VRAM) CPU: AMD Ryzen 7 5800x (8 core/16 thread)...
Experimenting with a new raytracing method | Voxel Dev Bugs
Переглядів 8282 місяці тому
This video was previously unlisted, but I made it public because I want to be able to show more content without the necessary effort that comes with making videos with commentary. I talked about this in this video: ua-cam.com/video/U-NVkR9ty48/v-deo.html. The Public Codebase: github.com/GabeRundlett/gvox_engine If you want to chat with other community members and me, join my Discord! discord.gg...
FSR 2.2 Testing | Voxel Dev Showcase
Переглядів 1 тис.2 місяці тому
Shadows are denoised before upscaling, making the necessary jitter for the upscale no longer present in them. This means that at times it can appear the shadows are not upscaled at all. This video was previously unlisted, but I made it public because I want to be able to show more content without the necessary effort that comes with making videos with commentary. I talked about this in this vid...
Auto Exposure Testing | Voxel Dev Showcase
Переглядів 3872 місяці тому
Auto Exposure Testing | Voxel Dev Showcase
Global Illumination Per-Voxel Normals | Voxel Dev Bugs
Переглядів 5322 місяці тому
Global Illumination Per-Voxel Normals | Voxel Dev Bugs
Voxel particles interacting with per-voxel normals | Voxel Dev Showcase
Переглядів 5632 місяці тому
Voxel particles interacting with per-voxel normals | Voxel Dev Showcase
LODing depth pre-pass | Voxel Dev Showcase
Переглядів 4042 місяці тому
LODing depth pre-pass | Voxel Dev Showcase
Massive Brush Inputs | Voxel Dev Showcase
Переглядів 2422 місяці тому
Massive Brush Inputs | Voxel Dev Showcase
Brushes with chunk wrapping | Voxel Dev Showcase
Переглядів 2522 місяці тому
Ever since adding chunk wrapping (illusion of infinite world), voxel interaction (brushes) has been broken. I finally got around to fixing brushes. This video was previously unlisted, but I made it public because I want to be able to show more content without the necessary effort that comes with making videos with commentary. I talked about this in this video: ua-cam.com/video/U-NVkR9ty48/v-deo...
Brushing in the Far-lands | Voxel Dev Showcase
Переглядів 3172 місяці тому
Ever since adding chunk wrapping (illusion of an infinite world), voxel interaction (brushes) has been broken. I finally got around to fixing brushes. You'll notice that with the recent FSR2 addition, there are some pretty bad disocclusion artifacts when modifying the terrain. This'll have to be fixed This video was previously unlisted, but I made it public because I want to be able to show mor...
Per-voxel Normals modifiable | Voxel Dev Showcase
Переглядів 4302 місяці тому
Now per-voxel normals are recomputed when the voxels are modified. This is done in a chunk-edit post-processing pass which also removes any normals that are underground, as those would be useless. This video was previously unlisted, but I made it public because I want to be able to show more content without the necessary effort that comes with making videos with commentary. I talked about this ...
Green Slime (Particles testing) | Voxel Dev Showcase
Переглядів 2532 місяці тому
Green Slime (Particles testing) | Voxel Dev Showcase
Voxel Particles! (see description) | Voxel Dev Showcase
Переглядів 2542 місяці тому
Voxel Particles! (see description) | Voxel Dev Showcase
I got temporal re-projection working | Voxel Dev Showcase
Переглядів 7272 місяці тому
I got temporal re-projection working | Voxel Dev Showcase
Constant Brush Distance | Voxel Dev Showcase
Переглядів 8152 місяці тому
Constant Brush Distance | Voxel Dev Showcase
The vibe is really, really comfy!
is this something you are planning to open source? I would love to make a game in this style.
Check the description, it has always been open source 😉😊
@@GabeRundlett awesome! is there a timeframe you are targeting for 1.0?
@@boot-strapper I'm sorry, but no. I actually just got hired by Tuxedo Labs (Teardown). My future voxel efforts will be focused there instead.
@@GabeRundlett bummer! But I totally get it
this is witness, he will become dollar billioner if he develops realism game on voxels
Amazing work! Could you give me ideas how does pathfinding will be implemented in this environment?
Nice work! I'd love to hear more about how you got global illumination working.
Like I said in the video, I actually ported a Rust/HLSL codebase to C++/GLSL to use it in my engine
tbh 8 bit doesn't look bad
is the skybox and atmosphere rendering features in the codebase too? would love to see how you implemented it! Beautiful
Yes it is. It's based on SebH's sky: github.com/sebh/UnrealEngineSkyAtmosphere
@@GabeRundlett thank so very much this is very useful 🔥
Do you explain the shader malloc at a high level anywhere?
No, not really
Your engine is gorgeous! you can work with this guy and put some water simulation into your world... could be amazing! ua-cam.com/video/6_LzhKvsTCk/v-deo.html
Been tossing this idea around lately, and is there any reason SDF must be exact? If you allow it to fall slightly under real closest values sometimes, then updating with voxel changes only requires you to flood fill outward from created blocks until hitting a threshold where you find smaller values than you are setting, and there should be some approximate quick fills for creating large holes, if you allow for some inexact values, particularly where you can guess more edits will be incoming nearby (allow some propogation in the inexact SDF over time to correct the errors maybe?) I don't think you should ever need to recreate the whole map's SDF for local edits.
Your engine has given you the gift of portals to reward you for all your hard work creating it, saving you the work of actually implementing them! :D
Could these smoothed normals work with reflections also?
They absolutely can and are
@@GabeRundlettWouldn’t the reflection rays intersect the voxels they are being reflected off of? Are you adding an offset along the ray to prevent self intersection or is the ray ignoring the voxel it just reflected from? I’m working on my own voxel engine using ray casting and would like to implement something similar. Unless this renderer uses meshes than never mind.
@@jonahgordon2642 Yes, I start the ray about 1.5 voxels away from the voxel center
Hi Gabe
👋
How does it look like if the voxels are smaller?
Life is long! No need to rush to the finish line with things. Just enjoy your journey with this project!
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
Are the grass voxels a part of the brickmap?
They are not
@@GabeRundlett Gotcha, makes sense
"I don't really have a life , all I do is code" - Subscribed because of this. love your work
Looking amazing! If you havent already considered it, for the trees I would like to recommend using L-systems (or a parameter or probability based generalisation of them) to generate them procedurally. They can look really good and have good customizability for different tree types. Alternatively graph-grammar based systems for all sorts of procedural generation. Also a quick question: does the voxel implementation use octrees or sparse directed acyclic graphs? With the sheer amount of voxels its definitely not the naive implementation.
I don't know anything about tree gen, and I've never heard of L systems. I'll have to look into it! Do you have any good resources? Not using an octree, nor SVDAG. The voxels are stored as a 1-level brickmap with lossless palette compression for each node. Perf is not amazing, and since last weekend I've been completely overhauling the rendering to be hardware RT!
@@GabeRundlett looking forward to seeing the progress! As for resources, if you are completely new I recommend 3 steps: first is watching some UA-cam videos on L-systems. I think SimonDev has done a decent video on it. Second would be reading the Wikipedia article on it, it demonstrates the idea and different applications and extensions nicely. Third are some research papers on the topic: these are also quite nice even for non-math fans since the math involved in L-systems is pretty minimal. Here are a couple I think are nice (all easily and freely available): "Simulate forest trees by integrating L-system and 3D CAD files", "Real-time 3D Plant Structure Modeling by L-System with Actual Measurement Parameters", "Procedural Forest Generation with L-System Instancing", "Integration of fuzzy system into Genetic L-System Programming based plant modeling environment with Mathematica". The reason I like this system so much is the versatility: you can generate anything from apple trees to ferns to weeping willows to baobab trees to palm trees with it given the right rules (also their root systems if you want to). Also, the way they are constructed allows you to easily access different growth stages for a given tree. That means a fun thing you can do is: 1. Define the rules for 1 tree species. 2. Generate, say, 64 different tree variants of that species (and automatically their growth stages). 3. Generate a basic "height" map (perlin noise or smth similar) for your terrain, place the generated tree variants with density and growth stage according to that "height" map. Now you have forests with dense cores of mature trees and gradually thinning borders of younger and smaller trees. Also, foliage like bushes and ferns can naturally be generated with the same technique, allowing you to also fill those in as well to make the environment feel more real. If you want the best results, I recommend making the system both parametric and stochastic. Parametric gives you way more freedom in the plant design and stochastic makes them even more organic. Luckily both extensions are easily compatible.
@@GabeRundlett Also, I know this is pretty late, but another gem is "Procedural Tree Modeling with Guiding Vectors". Doesn't need nearly as much fiddling with parameters to get realistic tree shapes and has better global control of the tree shape.
your voxel engine is super impressive looking! I daw some trees and flowers in your other videos, imagine if trees would start off tiny and actually grow and branch depending on the light they’re getting..? a grow update could happen only once a minute per tree that way you should be able to have many gradually growing trees.? another thing, I was scrolling though this video (to watch it again) and I noticed that youtube blurred the image and in its blurry state it looked ver realistic? idk why but it gave me an idea: • render the scene to an image at 1/4 size then resize the image and somewhat sharpen it..(or even ai upscale it??) I wonder what that would do to the look..
I really want to do this tree idea!
Oh pretty cool! Relaxing music in the background would fit so well in the video, like Minecraft music or something similar. 😊
woah is this related to John Lin's project ? It feels so similar I love it
it's just inspired, not at all related! I want to make the greatest voxel engine and his was really pretty!!!
Noob question but, what are those particles? Is it an array of positions and another array of velocities? How are they saved and so on? I am not expecting ultra secret code page just wanting to know generally how do you render so many and move them without it gets stuck?
Sorry, missed this one. The particles are stored as a contiguous array of structs, containing all the necessary properties such as position, velocity, etc. They are never saved at the moment, only kept in memory so long as the app is running. The code is completely open source, and should be linked in the description! Relevant files are in the folder src/voxels/particles/ as of right now.
@@GabeRundlett Thanks so much for the response!!! And also thanks for sharing the source code on of such a useful and important voxel project!! Understood...
Maybe yoi can vary how wiggly the grass is depending of placement.
Gorgeous.
You look like Eomer from LOTR !
PC nuke bomb
question: have you made it so different things have different hardness? so you have tools in game for removing stuff. like a shovel or an axe? or are those not implemented yet?
not implemented at all
You seem like a decent guy. Also reasonably entertaining. Subbed.
I try my best. Thanks Kapoink!
Do you plan on adding a code editor to this?
Great Question - I don't think I could make a better editor than a normal desktop text editor. I want to add a menu to select certain files as the shaders, as well as a GUI for selecting textures
when i have the money ill come find you and you will be my personal tutor. this isn’t optional.
lmfao
So impressive
i hate voxel,it would be great if you don't make voxel engine.
Happy April Fools!
@@GabeRundlett no,i didn't say lies.Remember,today is the day lucifer came to hell,not fool day.
oh okay, cool! here's some nice calming waves for you to relax to: ua-cam.com/video/V-_O7nl0Ii0/v-deo.htmlsi=i1kryEmC9EbS5Z89&t=13
7:20 he just like me fr 😭😭😭
Can you make the wind more realistic so that the leaves and grass isn't moving all the time (super weird) This wind has no direction, no intensity, and it's constant.
So in these videos, the "wind" is just a few sine waves combined, so it's super simple. In the codebase, I have since changed it to be perlin noise, so the movement is a bit less robotic, but I'm not sure how to make the wind more realistic. That being said, it would be trivial to add, since the system is designed to make it easy to change!
I think a diffuse/scattered blue light from the whole sky mixed with the more direct yellow sunlight would help soften the harshness of the sun as you transition from sunlit to shaded to caves. Awesome stuff!
The issue is that there aren't soft shadows in this "per-voxel normals" mode. However, there already is diffuse ambient lighting, as there is global illumination in my voxel engine. The sun is just so much brighter than the sky in real life, and that makes it difficult to display nicely on a non--HDR display. I tonemap with agx, but I know it still is so contrast-y
Me like :)
So I’m not the only one who struggles to balance the bare essentials of life: eating, sleeping, and programming lol
I never knew this was possible, but per-voxel normals seem to be the best way to light voxels. For most of my life I was never really a fan of voxel art styles because the harsh shading of each side of the voxels just looked very wrong. It was only when I’d heard of Voxel Doom and saw how good voxels look without shading that I came realize that awkward shading was ruining the shapes voxels are meant to imply like pixel art. Using normals to shade the voxels wholesale feels like the perfect balance between having dynamic lighting without having to ruining the illusion of the shapes that voxels are meant to imply.
This is impressive, well done!
it looks incredibly unique. I love it
It looks so good
Looks so good. I feel like it could look so good with brighter ambient lighting relative to the sun. It looks so crispy and and nice tho
Thanks! The ambient light is physically based, so the way to make it bounce more would be with a more reflective material (as in a brighter albedo, such as white) I want to show off the GI in a wintery scene because there the snow will bounce a lot of light!
Please take this in the spirit that it is intended and just an opinion. The particles are overdone and the grass/flower move too slowly.
I definitely agree with the particles part, not just the dandelion seeds but also the trees a bit. The wind for the grass/flowers in these videos was done with just a few simple sine waves - I just yesterday made it so that the wind is instead controlled by perlin-noise. I just eyeballed it, so you definitely could be right!
John 3:16 For God so loved the world, that he gave his only begotten Son, that whosoever believeth in him should not perish, but have everlasting life. Isaiah 53:6 All we like sheep have gone astray; we have turned every one to his own way; and the LORD hath laid on him the iniquity of us all. Romans 4:5 But to him that worketh not, but believeth on him that justifieth the ungodly, his faith is counted for righteousness. 1 Corinthians 15:3 For I delivered unto you first of all that which I also received, how that Christ died for our sins according to the scriptures; 1 Corinthians 15:4 And that he was buried, and that he rose again the third day according to the scriptures: Ephesians 1:12 That we should be to the praise of his glory, who first trusted in Christ. Ephesians 1:13 In whom ye also trusted, after that ye heard the word of truth, the gospel of your salvation: in whom also after that ye believed, ye were sealed with that holy Spirit of promise, Ephesians 1:14 Which is the earnest of our inheritance until the redemption of the purchased possession, unto the praise of his glory. Ephesians 4:30 And grieve not the holy Spirit of God, whereby ye are sealed unto the day of redemption. †
this is awesome
This is amazing. It looks like Minecraft it was developed nowadays.
The wind, the reflections, the bloom, the lighting, etc., are all looking pretty incredible, well done.
Thank you! No bloom yet, but I really want it! You might be just seeing it from the volumetric scattered atmosphere. But I did cheat a bit and put bloom in the thumbnail 😅
@@GabeRundlettIt still looks incredible, stay motivated.
DUDE I was "oh wow, that very cool, he actually did some atmosphere stuff and all" AND THEN YOU TAKE THE CAMERA TO SPACE The engine is going incredible, I like it a lot, cheers!
For how many billions is Microsoft gonna buy this one?
🙏