- Видео 66
- Просмотров 178 876
Gabe Rundlett
США
Добавлен 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
Desktop Shadertoy Update 0.4
Shadertoy is an amazing platform that allows people to share their beautiful shader art creations seamlessly with anyone interested. However, for people like me, it's a bummer that it's a web app because there are many tools that we graphics programmers have in our tool-belt to debug and profile our graphical applications such as NSight and Renderdoc. This is why I created desktop-shadertoy, which allows you to open existing Shadertoy apps, but on the desktop!
In this video, I show off the new UI and features I added in this latest update.
Try it out yourself:
github.com/GabeRundlett/desktop-shadertoy
Chapters:
0:00 Introduction
0:24 Recap of features in 0.3
0:45 New features in 0.4
1:39 Playing ...
In this video, I show off the new UI and features I added in this latest update.
Try it out yourself:
github.com/GabeRundlett/desktop-shadertoy
Chapters:
0:00 Introduction
0:24 Recap of features in 0.3
0:45 New features in 0.4
1:39 Playing ...
Просмотров: 1 778
Видео
Fire and Torches (more particles) | Voxel Dev Showcase
Просмотров 8 тыс.6 месяцев назад
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 iterat...
Particle Shadows | Voxel Dev Showcase
Просмотров 4,2 тыс.6 месяцев назад
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,9 тыс.6 месяцев назад
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,5 тыс.6 месяцев назад
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,4 тыс.6 месяцев назад
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
Просмотров 5 тыс.6 месяцев назад
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,9 тыс.7 месяцев назад
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,5 тыс.7 месяцев назад
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,5 тыс.7 месяцев назад
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,2 тыс.7 месяцев назад
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
Просмотров 9507 месяцев назад
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: ruclips.net/video/U-NVkR9ty48/видео.html. The Public Codebase: github.com/GabeRundlett/gvox_engine If you want to chat with other community members and me, join my Discord! discord.g...
FSR 2.2 Testing | Voxel Dev Showcase
Просмотров 1,2 тыс.7 месяцев назад
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
Просмотров 4397 месяцев назад
Auto Exposure Testing | Voxel Dev Showcase
Global Illumination Per-Voxel Normals | Voxel Dev Bugs
Просмотров 6357 месяцев назад
Global Illumination Per-Voxel Normals | Voxel Dev Bugs
Voxel particles interacting with per-voxel normals | Voxel Dev Showcase
Просмотров 6737 месяцев назад
Voxel particles interacting with per-voxel normals | Voxel Dev Showcase
LODing depth pre-pass | Voxel Dev Showcase
Просмотров 4827 месяцев назад
LODing depth pre-pass | Voxel Dev Showcase
Massive Brush Inputs | Voxel Dev Showcase
Просмотров 2647 месяцев назад
Massive Brush Inputs | Voxel Dev Showcase
Brushes with chunk wrapping | Voxel Dev Showcase
Просмотров 2867 месяцев назад
Brushes with chunk wrapping | Voxel Dev Showcase
Brushing in the Far-lands | Voxel Dev Showcase
Просмотров 3627 месяцев назад
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
Просмотров 5227 месяцев назад
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
Просмотров 2907 месяцев назад
Green Slime (Particles testing) | Voxel Dev Showcase
Voxel Particles! (see description) | Voxel Dev Showcase
Просмотров 2987 месяцев назад
Voxel Particles! (see description) | Voxel Dev Showcase
I got temporal re-projection working | Voxel Dev Showcase
Просмотров 8057 месяцев назад
I got temporal re-projection working | Voxel Dev Showcase
I'm developing a voxel game in bevy with custom shaders and this is just so true lmao The problem with using rays is how stuff just makes no sense when it breaks, I was using individual bits to hold data AND an flattened octree at the same time and the end result just made no sense, it seemed as if it was working but some bitwise operation shifted stuff, like for compression empty space was one bit and if it was one I had to math where the fuck in the array the next layer was I ended up rewriting it from zero and it was easier than debugging it lmao
@@ryu_lidu always start by visualizing the bounding box and just sample the data structure. Once you verify the first step in the raymarch should have all good data, then step once in the algo and visualize the data you want to see for the second step
Wow, Beautiful. The most pretty bug of all time.
comparing this to Douglas its interesting.
Ahhh, sweet voxel bugs.
Hi there, Is the code on your public github page the all encompassing one? Is are you using a private engine or anything else? Thanks
@@oneandonlyarajivp no private engine. The code linked in the description is the latest code that includes all the changes that are present in the future videos. The code at this specific video is buried in the commit history... Maybe easily available in a separate branch but I don't remember
This is amazing. What machine do you use for your dev? Desktop or laptop? Thanks
@@oneandonlyarajivp desktop
@@GabeRundlett you've got a really good graphics card. Do you need that high spec for the work you're doing? Am trying to figure out what to buy. Thanks
@@oneandonlyarajivp I do think you need a powerful GPU for the kind of thing I'm going for. I wouldn't say that's advice for what to buy tho
This project is amazing.
This is truly terrain.
Hey Gabe, i was wondering, how did you achieve the voxel terrain look? Did you do it using sparse voxel octrees? Im new to this and i've been spending my time researching voxels and how they work. I hope you can answer me :)
@@OhHaiC the terrain is procedurally generated in a voxel grid. The way that that's stored in memory is not relevant to how it looks, just that it's a grid. I then render this grid similarly to an octree via an acceleration structure. The code is fully open source.
@@GabeRundlett I see, thank you! I'll look into that!
@@OhHaiC I will note that the data structure used, like octrees, is sparse. Meaning that it does it's best to remove regions of empty space from memory. On top of this, it also losslessly compresses the per-voxel attributes in a way that preserves fast random access reads. These things are very important because the voxel grid (if stored as a flat array) would consume tens, hundreds or even thousands of gigabytes of memory.
The start of this video, by far, is my favorite.
Your videos are wonderful! I just wish you would post more often. But no pressure! It's the ones of us who hold on the longest that change the world, am I right?
@@CastleRene thanks so much. It means a lot. I only ever post when I really feel passionate that what I made is interesting and worth sharing... So that's why it's so rare 😔
@GabeRundlett Aw, thank you! I feel honored to be responded to. You're doing a good thing, and there are people out there who know it. The more you do, the more you will find them. Stay hopeful, and keep on walking the good walk. 👍
@GabeRundlett And don't worry about the frequency of your post! Find your rhythm, and stick with it. I myself have been making a game, and finally got the ray direction correct. I can't seem to get the DDA to work, but I know it will come with time. Be proud of yourself, and anytime you're feeling down, you can look at your work. You're helping people, so keep going! :)
@@CastleRene My videos got me hired at Tuxedo Labs (the guys who made Teardown). I quit my job and spent the last couple months moving to Sweden. I just started working 2 days ago. I need to make a video about this to let everyone know what's going on in my life 😅. No more videos about my voxel engine, since I'm not allowed to keep working on an open source voxel engine 😔
@GabeRundlett You know what? That's pretty cool! I'm happy for you, and I'm sure the rest of your viewers will be too. If you ever need anything, call on your fanbase, and I'm sure they will be happy to help out! Thank you for all your contributions to the public! Can't wait for teardown 2! ;)
Thank you for making this! Often having problems with slow internet speed/webgl crashes using the official site. Being able to work offline is always preferable!
added a bunch of ideas/feedback in the github tracker, might look into some of them myself at some point...
This is really cool!
@@JadeCoffi thanks jade!
Just mindblowing what you are able to achieve.
This is pure art. ❤
This must look so cool in vr
hey man.. you're the coolest ever.. i was thinking about learning vulcun so i could get in touch with you and figure out some cool projects to do with your engine.. until i did a bit more research on your project and.. woah.. it's open source.. i just wanted to say you're a fantastic man.. and i'll certainly be looking into this so that i can contribute to your projects in my own way.. 🫶
@@thebozbloxbla2020 thank you 😊 if you're interested in the code specifically for this video, check out the compute-rt branch. After this video, I started experimenting with hardware ray tracing (in master and its own branch), and then even rasterization (in a separate repo called voxel-raster... because I didn't know where I was going with it. I essentially rewrote the core of the engine in voxel-raster and I am probably going to merge that code into gvox engine master soon)
I just quit my job since I was hired by Tuxedo Labs (Teardown) tho... So I am contractually disallowed to work on this voxel engine tech publicly after I start in August. Trying to get as much out there as possible before I'm silenced 😆
Do you plan on adding in things like a way to upload audio files?
@@GavinMockett I absolutely could add audio support eventually. I just recently did the first audio programming I've ever done
@@GabeRundlett That would be amazing, I was trying to port my audio visualizer shader over to pure opengl. I started with some smaller shaders and then moved to the decent visualizers but got completely locked up on the audio part. Least to say I am super happy I found this project.
Seeing this for the first time its amazing what you've achieved as its something I've also wanted to do. Personal life stuff, man you clearly need a break buddy. go outside, and talk to your friends and family. jump into a few games of D&D(Personal Favorite). Work-life balance is very important, get out there and take a breath
Hey, will this engine be able to be used for the public even if available for purchase? Also will it have voxel based destruction?
The engine is already free and completely open source. The code is MIT licensed, so essentially anyone can use it for anything they like. I'm going to make a video about this soon, but I was just hired at Tuxedo Labs (the guys who make Teardown) and won't be able to work on this engine, since I'll be working on their new engine!
That's amazing 👏👏 I hope you don't take offense, but I think this would be even more beautiful and continuous if there was polygonation in the voxels as occurs with mods like nocubes.
what are milliseconds to render?
I think it was about 10 milliseconds at 1080p upscaled to 1440p on my 3070. I don't really remember - I can check again though.
@@GabeRundlett is there room for optimization? Oh and GI is actual raytracing or something else?
@@the-guy-beyond-the-socket in this video, both the primary rendering as well as the global illumination are rendered with ray tracing in compute shaders, implemented with a custom acceleration structure. There's definitely room for optimization. After this video, I ported the renderer to use hardware ray tracing shaders, which gave a minor lift in performance.
This is so awesome! Video or not, hopefully you keep progressing. I have subscribed for what may come in the future. I am looking for voxel engines for the game I have been developing.
man this is incredible, I hope you add some sound soon
Yep, that was definitely on the to-do list. However, this project is being put on hold for a while because I got hired at tuxedo labs (makers of Teardown) so my voxel efforts are going to go into making their next project a reality!
Really nice, but how can you update that many vertices at real time? What optimization techniques did you use?
It's because there aren't any vertices! The voxel data is raytraced in a compute shader. I recently have been experimenting with a GPU voxel mesher that can update in the same speed though!
@@GabeRundlett Oh I see, it's still impresive handling that many voxel updates! Thanks for the reply btw.
How nuch more demanding is a voxel engine over a polygon engine?
It's sort of like apples to oranges, usually the serve completely different purposes. Voxels are all about interactivity, so like modifying the scene however you like. This is an issue because it means no lighting can be baked. In this regard, a voxel engine is usually more demanding than a traditional game engine. Specifically for raytracing, voxels have some benefits though. You can make raytracing pretty darn fast
wow, you even made it open source!!!
Hi Gabe! Your tool works great on my 3090, but it silently does nothing on my Thinkpad T570's with Intel 620 graphics. The shadertoy website works fine on them. Is there some logging or advice? With procmon I see it enumerates Vulkan, finds the Intel vulkan DLL and then exits. No error, no logfile, so I can't see what's wrong. Both are Windows 10 22H2, same as my PC with the 3090.
Hi tooob! Thanks for the detailed info, that's not common 😅 I use some widely supported but still relatively new vulkan features, which may necessitate a driver update for you Intel iGPU. When is the last time you updated your graphics driver on your laptop?
@@GabeRundlett The T570's are using 31.0.101.2114, which I installed to see if it fixed the issue. Before that it was 2111. ... So now I just went and found this version and installed it : 31.0.101.2127 (Feb 2024).. It claims to provide Vulkan 1.3 among other things. Your 0.4.2 EXE still just won't start. No window, no error, nothing. Maybe I should open an issue on your Github? The problem is it really doesn't matter a whole lot to me - I just wanted to compare how fast it ran versus the website on the T570's.
@@Tooob You absolutely can open an issue on GitHub with all this info, though I personally don't have any way to reproduce the issue at this point in time, so it may be tricky to fix. Regarding speed of the desktop vs website, they should be pretty similar because they are running the same GPU code. It's almost definitely GPU-limited, and so the desktop app won't make much of a difference.
This looks awesome, will definitely use this as I keep having problems with shadertoy in my browser with shaders not loading correctly
Yeah it's really useful for debugging purposes because you can use renderdoc and step through the code!
Thank you for your service! 😀
What graphics api and version? Assuming the code isnt open source. also, true voxels or triangles?
You should have just checked the description, it is open source! Vulkan 1.3 is required. "True" voxels, though the particles are triangles or splats depending on distance. I don't really care about the distinction between "true vs true", I just do the thing that is the simplest/fastest to render. I raytrace the rest in compute shaders.
i see now, its gvox. I would love to port this library to homebrew via devkitpro.
@@michaelmueller5211 I specifically mean gvox engine... I did a bad job with naming, as I also have a library called gvox. I have no clue what homebrew is
@@GabeRundlett homebrew is home made games for jail broken Nintendo consoles and nintendo emulators such as dolphin. I'm currently working on a voxel game for the Wii but I need to optimize it. Glad I found you!
cool
damn this is really cool!
Looks great! Is the plan to eventually get it to work as a background for your monitor?
Haha, I get where you're coming from based on the name. I didn't think of that! That's not currently part of the plan. Like I said in the description (and the original video I made about it a few months ago) I created desktop-shadertoy in order to allow people to use existing tools for debugging shaders, such as renderdoc and nsight graphics.
You can already set Shadertoy shaders as your background on KDE using an extension
G.O.A.T.
That is a really helpful app. Great job but I didn't know that you suck at pong.
The man is insane
this man is my wife
You're doing god's work good sir
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! ruclips.net/video/6_LzhKvsTCk/видео.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.
There's no reason besides performance. In this video, the SDF range was only ever 256 voxels, so the whole SDF wasn't rebuilt, just the nearby chunks. The issue is that even though it is possible to accelerate via a discretized SDF, the computational cost of updating it is still an issue. That's GPU compute that could be used elsewhere, wasted.
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