Teardown uses a normal rasterizer to render cube meshes that represent the bounds of objects. Then in the pixelshader of those cubemeshes it traces rays into a 3D texture to determine if a voxel is solid or not, and what material properties that voxel has (8bits per voxel). You can find more when you google for the blogpost called: Teardown frame Teardown
Whats nutty is Teardown is made in opengl 3.3, so it doesn't have any compute shaders! Teardown is a contender for the most innovative engine out there, its still mostly over my head
innovative in some ways sure, but the game itself is visually very low quality, no matter your settings the game will look quite bad and run even worse. its not going to get licensed for a new game anytime soon because of how badly it runs on even high end hardware
@@selectionnyou’ve never played it have you I’ve got a gtx 1050 bro, base game, no mods just the campaign my fps stays above 30 with a fucking gtx 105 The level of optimisation is insane and it looks beautiful still It’s got a sort of unintended style to the game which is timeless unlike realistic games which nowadays (gollum.) run shit and get outdated in 3 years time and it’s shaders/ambience only adds to it Get an hour of gameplay in before you talk ong 💀
You started so basic that I didn't think I'd learn anything and then around half way in you started dropping some modern tricks, honestly wasn't expecting signed distance fields being used for raytracing optimization that's pretty cool.
Its videos like this that i really love, you arent trying to explain every different algorithm and optimization method and such, you simply explain the concept behind how it is done and some basic ideas behind how it might be optomized. I dont nessicaraly need to know every detail as to how something like this is done, knowing the basics makes me confident that with enough time i could figure out how to set a system up like this for myself. Just enough detail to teach me what it is without so much that it trys to teach me how it is done. Major props, you have earned a subscription.
I needed such a channel, just explaining how the concept works and showing some ideas makes it so much better to understand than someone trying to teach me how it is done with every information that I will forget the next day. I hope you succeed growing on RUclips so I can watch more videos of yours
Using ray-tracing is for this is actually pretty clever, and up until recent advancements in GPU's, I would have never imagined possible. On a standard laptop monitor, that is still 2073600 ray-trace ops per frame, so still going to require decent hardware to keep up, but going forward as hardware continues to get beefier, that become a standard way of doing it. Until then I am just going to continue packing as much data as I can into integers with bit-shifting/masking and keep the payload as small as possible, as well as employ every technique I know to cull vertices that won't be visible.
what? voxel raycasting (aka 1-hit raytracing) has been around for ages, see Voxlap engine (early 2000s) and Ace of Spades game (2011). it's implemented on the cpu side though.
@kittyhawk3011 I was unable to find anything of the sort in the source code, though I just scanned it briefly, so am fully open to admit I am wrong. The OpenGL renderer (GLMapChunk.cpp) definitely isn't doing it, just the standard approach of uploading vertex data directly to the GPU with glBufferData after checking if the block is solid, etc, nor is it done later in the respective shaders. Just run-of-the-mill voxel rendering like how everyone does it.
Voxel and signed distance field ray marching are both deceptively fast, especially with the correct optimisations as mentioned in the video (plus more, don't think the video mentioned sparsity which involves not even storing empty regions of the grid in memory). The slow parts of the raytracing seen in AAA games in the last few years is the ray-triangle and ray-box intersection tests used to check if a ray has hit a triangle and an arbitrarily sized box respectively, as there's just a lot of computation that goes into both of those algorithms. Voxels don't use triangles and can take advantage of the fact that they're within an axis-aligned regular grid, and signed distance fields quite literally give you the distance to the nearest surface which lets you skip a *lot* of space with no extra effort during the march.
@@kittyhawk3011 yup nothing new nvidia just remade an old idea and claimed it was revolutionary, just like apple does even though they are years behind. Ray tracing is also in more games than people realize, minecraft for example has native ray tracing and VR support.
It uses a proprietary game engine developed by Dennis Gustafsson, which is awesome, they literally made their own engine to get the game to run so well using voxels.
Here I was going to complain that you're too young to remember NovaLogic and similar endeavours, but then I saw it was about raytracing, which makes it kind of interesting!
This video was really interesting and informative, I loved how high the quality was. Definitely subbing, looking forward to seeing what you make in the future!
I'm curious why voxel-based ray-marching doesn't just use Bresenham line drawing algorithm? It would seem that computing the bounding box of the ray at each step is more work than necessary. Bresenham is just a simple fixed-point accumulator and is very fast. If you wanted to be really smart, you could do AA based voxel raytracing with Xiaolin Wu's line algorithm and when a hit occurs, that becomes the weighted RGB of that pixel and any remaining "energy" in would continue. This could allow for transparency and other cool effects too.
really great video, you sound like a guy i would climb a mountain with for the first time of my life, and the weather goes cold and it becomes harder and harder to breathe, and when i ask you if we should go back you push me on to go even further, then at the top of the mountain you say "just to let you know; i didnt bring enough oxygen tanks for the trip back" in a very calm soothing voice, and when i am concerned about if we will be alive or not you simply reply with "50/50 😀".
As an old person, the first thing that comes to mind when I hear voxels is Outcast. In 1999 a game named Outcast was released and it was (arguably) the first major use of voxels in a game. And for a long time after. The game certainly looked different in 1999s than other games released that year. System Shock 2 and the original Unreal Tournament for example used polygons. I guess voxels still do a good job in a niche. But polygons are what most developers use and I guess there are good reasons for that. The quare meter price alone is 3 times as high for voxels than for polygons.
Glad someone else is mentioning this. Outcast was a technical marvel really - a lot of people saw the fuzzy edges of the voxels and weren't sold on the idea... but I loved the extra detail in the landscapes, and the visual depth. Where other titles might have flat grass texture on a perfectly flat bit of geometry, and try to hide it with some sprites, Outcast had a soft-looking, naturally uneven grassy surface. And then of course there were the cool snow footsteps and so on. And damn, the water! Three years before Morrowind came along with its fancy pixel shader water visuals, Outcast had glassy, rippling visuals that nobody else could compete with.
That bit with the tank at 1:34 reminds me of the Ken Silverman's voxel engine. The one that was used in the original Ace of Spades. There also was another old game that has smaller voxels called Voxatron and Neverdaunt 8Bit. I wonder what happened to those games.
I always liked Trove for the size of its blocks. I wondered how it could do what it does and be less of a data hog as Minecraft can be. Trove had light blocks, glow blocks, semi-transparent blocks etc etc and "shiny" blocks. It had a lot of visuals that I wished Minecraft had. Even with some of the mods that come out, they don't do it as well--and then the worry is if they'll continue updating that mod when a new release comes out. Even then, the size of the blocks stay the same. I think the block ratio is about 5 blocks on Trove is 3 blocks on Minecraft. For a long time, I'd prefer making my voxel art in Trove even though I really, really liked the idea of using Minecraft because of things like World Edit and use of shaders. I am a creative player, I have dabbled in survival but while I've beaten the dragon, surveyed the End, creative mode is where my heart is. Trove... it's more or less collecting resources to build your worlds and build your many classes (I was a Gunslinger and Candy Barbarian but dabbled in Ninja and Shadow Hunter-my first was Chloromancer.) I would build massive structures in people's worlds and get in-game currency for it. I did what I loved and got paid for it. It was great. I tried Creativerse and other voxel games but I still would wish that a really good game, Minecraft, could implement just a smidge of Trove. I love learning how these games orchestrate code into visible results. Fascinating, really.
You should really check out Blockscape. It has voxels the size of 25 centimeters, meaning 4x smaller than Minecraft's. But it also has stuff like slopes, slabs, etc. which means that you can really get detailed in your builds.
Hmmm, trove seems to limit how much terrain is generated, so that there's a much smaller demand. The draw distance is similar to Minecraft's limit on mobile phones. That's probably key in maintaining its performance. After all, the performance demands grow explonentially with draw distance. Dunno about specific tech though.
Really amazing video!! Thank you for the detailed explanations. I saw a technique on the internet that uses a perspective voxel grid to accelerate ray tracing, and it seems to work relatively quickly.
Anytime I hear someone speaking about the use of voxel's I'm blown away that Ken Silverman's name isn't mentioned (or well known amongst gamers for that matter). His early work with voxels was solid and even Carmack was impressed with his work.
Back in the nineties, before GPUs were common place, many games used voxel rendering somewhat similar to this, because yes, it is fast. It's crazy fast. The limiter is not this rendering technique. The things that prevent this technique form going smaller are physics, lighting, and MEMORY.
anytime I think of these voxel engine stuff, I'm always reminded of John Lin's voxel engine and how absolutely ridiculous it was, though they haven't shown anything about it in a long time, and seemingly shelved the micro-voxels so it'd no longer be nearly as detailed as it was
Just in case anyone is interested. I actually used the algorithm in this paper to implement a feature in Wren Kitchen's web based kitchen planner software. We used it to traverse a voxel grid that is generated for each kitchen to aid spatial queries.
About ten years ago there was a voxel tech with only a few videos showing how, using voxels and point clouds with no meshes, a model of an oasis fill of trees and statues could be zoomed in on, showing the rocks and eventually dirt and finally the textured details of the dirt particles. The images shown were all static, but the zooming was rendered in real-time with very organic looking shapes with promises of games being developed with the tech. I'm reminded of it because of how you described the optimisation of rendering only by screen pixels, which was one of their claims, and the early dev vids looked great. But I haven't seen any development of similar voxel rendering since then, you know, going away from cubes. (I was at an animation college at the time, so we would all joke about being the Rock Guy whose job it would be to just make one rock for a video game that no one would ever see the intricate detail of.) *EDIT: I looked it up. The company was Euclideon
Euclideon's "infinite detail" was overhyped marketing vaporware for games, but they eventually produced a nice photogrammetry renderer for geospatial data. They couldn't really support animation or even good realtime lighting, which makes it not ideal for games. There's a lot of good debunking from the time those videos were coming out about how their claims of superiority are nonsense, but at least they ended up useful for something.
Minecraft's voxels seeming big is merely a trick of perspective. If you make your player character 30 blocks tall, then the voxels are actually quite petite.
Обожнюю, коли алгоритми ютубу працюють як треба і рекомендують дійсно кльовий контент. Дуже цікаве та пізнавальне відео, з нетерпінням буду чекати більше.
Дякую за відео, дуже доступно пояснив доволі не прості реч! Може в наступному відео розкажеш що значать і як саме працюють різноманітні налаштування в іграх? По типу тисячі видів згладжування (SSAA, MSAA, CSAA та інші), анізотропна фільтрація, що таке G-sync та FreeSync і чим вони відрізняються і таке інше 🇺🇦
Thank you all for all the views, likes and comments! More videos are coming soon, especially after such a huge support from all of you! I really appreciate it! I would also want to address all the future comments regarding "there is actually a ray tracing in Minecraft bedrock". Thank you for pointing this out, I think at this point there are enough comments about this :) The phrasing in the video is indeed inaccurate, I agree. But I think it does not change the main idea of the video - rendering voxel worlds as meshes (triangles) VS rendering voxel worlds using direct ray tracing on voxel grid. Yes indeed you can add ray tracing to a game with mesh rendering, but in my opinion it does not change the core principle of how its graphics work and how objects are presented for the GPU, in contrast to a Teardown where graphics works in a completely different way.
this video is literally perfect, i am just starting working on a ray traced voxel game the main i am having is my gpu is like 4 years old and I have awful performance
voxel were also really small in some games, YEARS ago was it the first Baldur's gate, or something, don't remember, but they were no bigger than a couple of pixels
Indeed, my desire to re-implement it's rendering two years ago is what made me interested in voxels. I have a lot of technical things to share in video, but I did not want to dive in too specific stuff right away
There is actually an awesome shaderpack for minecraft that incorporates voxel based ray tracing and lighting! I feel like it fits the vibe of minecraft a lot better than other shaders
If you take from creators, please attribute them at the time instead of hiding them as random links in the description Here's the ones I noticed while watching the video (both of which are in the description) 2:10: ruclips.net/video/gsZiJeaMO48/видео.html an amazingly animated introduction to ray tracing implementation 2:30: ruclips.net/video/BNZtUB7yhX4/видео.html a great explanation of how cool geometries can be implemented using raymarching
This is a really good video! Though to be fair, the reason Minecraft runs poorly has nothing to do with the number of triangles on screen and everything to do with the game's lack of optimization. Mods like Sodium make the game run MUCH better.
Yeah. Bedrock Edition is pretty much the same in terms of features with the Java Edition, but it runs infinitely better than JE, since IIRC its codebase comes from Pocket Edition, which needed to be run on phones, which had pretty much no power compared to computers so that the whole code was written with much more optimization. Notch also probably did not think that his Cave Game would become such a huge game, so he probably tried to implement features as quickly as possible instead of optimizing them.
I just started the video but, in the thumbnail, it looked like Minecraft's HUGE voxels were improved to smaller voxels however while Minecraft looks like blocks, they are polygons in the shape of a cube not voxels. There are some ways to the inside of a few blocks, and they have no texture from the inside meaning you can see through them from the inside if Minecraft was voxel based it would have texture inside as voxels are 3 dimensional. (What I mean by 3 dimensional is that they aren't just flat textures with no depth) Edit: I just fixed a parenthesis
They are voxels. Voxels are and ONLY are a grid of volumes. Yes. That grid of volumes CAN be used directly by the render pipeline. But those voxels can also be converted to polygons and rasterized. Voxels are NOT a render method. Voxels are a form of data storage USED by render methods. And them being data storage, they can be used in other ways too. Like minecrafts voxels just simply holding world data.
I find the Minecraft example confusing. Isn't Minecraft just banal 3D graphics based on meshes? Apart from grasses, every object in Minecraft has height times length times width, right? Voxels, on the other hand, are pixels arranged in a 3-dimensional space. Teardown, Commanche (the old one) or Delta Force from Novalogic had them. In medicine, voxel space is also used, for example, to display MRI scans. Or am I seeing something wrong?
It's still voxels, just rendered with polygons instead of ray tracing. This lets blocks have textures and shapes other than cubes. "Voxels" only has to do with the way the geometry is stored.
0:36 there is ray tracing supported natively on minecraft bedrock edition on PC. Nvidea showcase: ruclips.net/video/AdTxrggo8e8/видео.html&ab_channel=NVIDIAGeForce
It is very fast, but for each pixel you need to perform a lot of these checks, as you need to ray march a ray through the entire world volume basically. So rasterization sometimes does make a lot of sense (when voxels are big) because it often draws each pixel just once
@@7BitsPerByte What if you used something like Bresenham's line algorithm to "march" the ray? It would probably be much faster to calculate the next voxel along the ray, and with small enough voxels the "missing" of voxels by a corner wouldn't really matter (it might even make the voxel nature of the scene less noticeable, by distorting the edges of voxels).
Would be very interesting to see someone optimize a minecraft-like game to run with this technology. We could see how far out the tender distance could get and what kind of performance benefit there is
The issue with that is the complexity of voxels that a Minecraft-like game can have. A raytracing-based approach like this probably only works well at all for a LOD renderer where every block is a flat color.
0:59, This is due to effectively having an opengl2 renderer which was never optimized for anything other than tiny maps with simple geometry, not what minecraft is today.
No, it doesn't have much to do with rendering at all. It's mostly due to a lot of poorly optimized other aspects of the game, like lighting, redstone, entities, etc
Nice video. Just one thing, Minecraft is not based on voxels, it uses a standard rasterization based engine. The blocks aren't represented by voxels either.
Voxels are just a grid of volumes. You CAN use the volumes and ray marching to render it without polygons. But that's not what voxels are. Its just a common way to render them. Voxels are most commonly used for data storage. Minecraft IS based on voxels. It just ONLY uses them for data storage. It doesn't use them as part of the render pipeline.
@@Wylie288 Minecraft stores individual block information in a 3D array. If you think that qualifies for calling it voxel based go ahead, but I disagree.
Not only minecraft cubes are not real voxels like others have said you dont need to represent voxels has cubes, thou everyone does because is with no doubt the best shape for it. But imo is good too know that being a cube is not a hard requirement.
Polygons may be the graphical primitive that is rendered but the game is still voxel-based. Voxels aren't graphical primitives; they're just a method for representing and manipulating 3D data in a discrete, grid-like structure. Which is precisely what Minecraft does.
If you've ever seen an x-ray glitch (or footage of someone hacking with x-ray) you've seen the voxel nature of Minecraft. The ultimate rendering is fully polygon-based, yes, but there is a pre-processing step to figure out which surfaces are potentially visible to the player and that is all voxel-based math that takes the place of normal polygon mesh optimizations like occlusion culling and level-of-detail.
A voxel is just a 3D pixel. It doesn't matter how you render them. Minecraft didn't invent the concept. It only invented the game built around big voxels as a core mechanic.
@@OMGcluelessthere is no lod or occlusion culling in Minecraft by default what your referring to is face culling which takes place during the mesh build stage
its crazy that voxel technology has gotten so far that you were able to create an entire real life dog out of them
Nice pfp
voxel boxel
boxy voxel idk
ruby da cherry
Its a doxel
I would like to know more about how teardown rasterizes its voxels! This is very interesting and well presented👍
I don't have time for a lot of details - But they don't use meshes for resterization, they use Raytracing to directly draw pixels in, so no meshes.
Teardown uses a normal rasterizer to render cube meshes that represent the bounds of objects. Then in the pixelshader of those cubemeshes it traces rays into a 3D texture to determine if a voxel is solid or not, and what material properties that voxel has (8bits per voxel).
You can find more when you google for the blogpost called: Teardown frame Teardown
@@kayvolbeda8669 Teardown absolutely does not use any kind of resterization
It does, but in a very interesting way. It uses rasterization for ray generation basically, and then runs ray tracing in each fragment shader.
Yeap very similar to if you were to use parallax occlusion mapping or some volumetric fog/cloud techniques.
Whats nutty is Teardown is made in opengl 3.3, so it doesn't have any compute shaders! Teardown is a contender for the most innovative engine out there, its still mostly over my head
innovative in some ways sure, but the game itself is visually very low quality, no matter your settings the game will look quite bad and run even worse. its not going to get licensed for a new game anytime soon because of how badly it runs on even high end hardware
@@selectionnbro what
@@selectionnyou’ve never played it have you
I’ve got a gtx 1050 bro, base game, no mods just the campaign my fps stays above 30 with a fucking gtx 105
The level of optimisation is insane and it looks beautiful still
It’s got a sort of unintended style to the game which is timeless unlike realistic games which nowadays (gollum.) run shit and get outdated in 3 years time and it’s shaders/ambience only adds to it
Get an hour of gameplay in before you talk ong 💀
@@selectionnYou are playing a very old version.
To be fair Fragmentation shaders are fast enough
You started so basic that I didn't think I'd learn anything and then around half way in you started dropping some modern tricks, honestly wasn't expecting signed distance fields being used for raytracing optimization that's pretty cool.
Its videos like this that i really love, you arent trying to explain every different algorithm and optimization method and such, you simply explain the concept behind how it is done and some basic ideas behind how it might be optomized. I dont nessicaraly need to know every detail as to how something like this is done, knowing the basics makes me confident that with enough time i could figure out how to set a system up like this for myself. Just enough detail to teach me what it is without so much that it trys to teach me how it is done. Major props, you have earned a subscription.
I needed such a channel, just explaining how the concept works and showing some ideas makes it so much better to understand than someone trying to teach me how it is done with every information that I will forget the next day. I hope you succeed growing on RUclips so I can watch more videos of yours
This man drops a banger and disappears
Using ray-tracing is for this is actually pretty clever, and up until recent advancements in GPU's, I would have never imagined possible. On a standard laptop monitor, that is still 2073600 ray-trace ops per frame, so still going to require decent hardware to keep up, but going forward as hardware continues to get beefier, that become a standard way of doing it.
Until then I am just going to continue packing as much data as I can into integers with bit-shifting/masking and keep the payload as small as possible, as well as employ every technique I know to cull vertices that won't be visible.
what? voxel raycasting (aka 1-hit raytracing) has been around for ages, see Voxlap engine (early 2000s) and Ace of Spades game (2011). it's implemented on the cpu side though.
@kittyhawk3011 I was unable to find anything of the sort in the source code, though I just scanned it briefly, so am fully open to admit I am wrong.
The OpenGL renderer (GLMapChunk.cpp) definitely isn't doing it, just the standard approach of uploading vertex data directly to the GPU with glBufferData after checking if the block is solid, etc, nor is it done later in the respective shaders. Just run-of-the-mill voxel rendering like how everyone does it.
Voxel and signed distance field ray marching are both deceptively fast, especially with the correct optimisations as mentioned in the video (plus more, don't think the video mentioned sparsity which involves not even storing empty regions of the grid in memory). The slow parts of the raytracing seen in AAA games in the last few years is the ray-triangle and ray-box intersection tests used to check if a ray has hit a triangle and an arbitrarily sized box respectively, as there's just a lot of computation that goes into both of those algorithms. Voxels don't use triangles and can take advantage of the fact that they're within an axis-aligned regular grid, and signed distance fields quite literally give you the distance to the nearest surface which lets you skip a *lot* of space with no extra effort during the march.
@@kittyhawk3011 what about delta force? it was published back in 1998... it ran on voxel engine.
@@kittyhawk3011 yup nothing new nvidia just remade an old idea and claimed it was revolutionary, just like apple does even though they are years behind. Ray tracing is also in more games than people realize, minecraft for example has native ray tracing and VR support.
It uses a proprietary game engine developed by Dennis Gustafsson, which is awesome, they literally made their own engine to get the game to run so well using voxels.
Amazing video, if there were more on this subject in detail (voxels: SDFs, smoothing algorithms, physics, lighting, etc.) it'd be an amazing resource.
Octrees are a pretty old space partition trick. It's one of the primary space partition techniques used for collision detection.
Here I was going to complain that you're too young to remember NovaLogic and similar endeavours, but then I saw it was about raytracing, which makes it kind of interesting!
I commend everyone over the years for having the discipline to refrain from creating and naming an algorithm "FAst Ray Trace" FART
Вражений якістю Вашого відео - на дуже високому рівні! Був би радий дивитись Ваші відео =)
This video was really interesting and informative, I loved how high the quality was. Definitely subbing, looking forward to seeing what you make in the future!
Wow u got this much views and subs with just 1 video? Great video and good luck on rest of ur youtube journey. Subbed btw 👍
Surprised as well :) Thanks!
This was a very interesting video on a topic I know little about. I am excited to see more of your videos!
Not bad. This video really helped me understand how ray tracing works with voxels. Thanks!
I'm curious why voxel-based ray-marching doesn't just use Bresenham line drawing algorithm? It would seem that computing the bounding box of the ray at each step is more work than necessary. Bresenham is just a simple fixed-point accumulator and is very fast. If you wanted to be really smart, you could do AA based voxel raytracing with Xiaolin Wu's line algorithm and when a hit occurs, that becomes the weighted RGB of that pixel and any remaining "energy" in would continue. This could allow for transparency and other cool effects too.
I think what is more insane about this is this channel being only one video! this is criminally underrated!!
Coming soon ;) Thanks!
very nice video! very informative and the editing and animations are very nice.
really great video, you sound like a guy i would climb a mountain with for the first time of my life, and the weather goes cold and it becomes harder and harder to breathe, and when i ask you if we should go back you push me on to go even further, then at the top of the mountain you say "just to let you know; i didnt bring enough oxygen tanks for the trip back" in a very calm soothing voice, and when i am concerned about if we will be alive or not you simply reply with "50/50 😀".
Voxelstein 3D is much older and has much smaller voxels.
damn this is a really well edited and well explained video you are going places man!
I came for a cool technical video, but cute doggy too?
Best intro ever
I love how you linked your video sources in the description, most people don't do this nowadays.
Keep doing what you’re doing this was so educational
Now I have a video to send to people who ask "why can't I turn off raytracing in Teardown 😠😠😠"
This is a very good and informative Video, very well done!.
As an old person, the first thing that comes to mind when I hear voxels is Outcast. In 1999 a game named Outcast was released and it was (arguably) the first major use of voxels in a game. And for a long time after. The game certainly looked different in 1999s than other games released that year. System Shock 2 and the original Unreal Tournament for example used polygons. I guess voxels still do a good job in a niche. But polygons are what most developers use and I guess there are good reasons for that. The quare meter price alone is 3 times as high for voxels than for polygons.
Glad someone else is mentioning this. Outcast was a technical marvel really - a lot of people saw the fuzzy edges of the voxels and weren't sold on the idea... but I loved the extra detail in the landscapes, and the visual depth. Where other titles might have flat grass texture on a perfectly flat bit of geometry, and try to hide it with some sprites, Outcast had a soft-looking, naturally uneven grassy surface. And then of course there were the cool snow footsteps and so on.
And damn, the water! Three years before Morrowind came along with its fancy pixel shader water visuals, Outcast had glassy, rippling visuals that nobody else could compete with.
That bit with the tank at 1:34 reminds me of the Ken Silverman's voxel engine. The one that was used in the original Ace of Spades.
There also was another old game that has smaller voxels called Voxatron and Neverdaunt 8Bit. I wonder what happened to those games.
Finally, Been looking for info on how voxel rendering is done
Such a nerdy name for your dog :p. Love the video & can't wait for more
I always liked Trove for the size of its blocks. I wondered how it could do what it does and be less of a data hog as Minecraft can be. Trove had light blocks, glow blocks, semi-transparent blocks etc etc and "shiny" blocks. It had a lot of visuals that I wished Minecraft had. Even with some of the mods that come out, they don't do it as well--and then the worry is if they'll continue updating that mod when a new release comes out. Even then, the size of the blocks stay the same. I think the block ratio is about 5 blocks on Trove is 3 blocks on Minecraft. For a long time, I'd prefer making my voxel art in Trove even though I really, really liked the idea of using Minecraft because of things like World Edit and use of shaders. I am a creative player, I have dabbled in survival but while I've beaten the dragon, surveyed the End, creative mode is where my heart is. Trove... it's more or less collecting resources to build your worlds and build your many classes (I was a Gunslinger and Candy Barbarian but dabbled in Ninja and Shadow Hunter-my first was Chloromancer.)
I would build massive structures in people's worlds and get in-game currency for it. I did what I loved and got paid for it. It was great. I tried Creativerse and other voxel games but I still would wish that a really good game, Minecraft, could implement just a smidge of Trove.
I love learning how these games orchestrate code into visible results. Fascinating, really.
You should really check out Blockscape. It has voxels the size of 25 centimeters, meaning 4x smaller than Minecraft's. But it also has stuff like slopes, slabs, etc. which means that you can really get detailed in your builds.
Hmmm, trove seems to limit how much terrain is generated, so that there's a much smaller demand. The draw distance is similar to Minecraft's limit on mobile phones. That's probably key in maintaining its performance. After all, the performance demands grow explonentially with draw distance. Dunno about specific tech though.
@@RePorpoisedyeah, I turned up the render distance and graphics a bit, and my rtx 3070 started to struggle in a mostly empty club world
Cube 2 has variable voxel size
Nice video! I'd love to see more diving into some of the tangential topics you mentioned.
Hey, only one video on this channel? I want more! From this 5 minute video I understood about voxel data structs more than 5 hours before that
Really amazing video!! Thank you for the detailed explanations. I saw a technique on the internet that uses a perspective voxel grid to accelerate ray tracing, and it seems to work relatively quickly.
i hope "that's it for to day" means there will be more about this! i'd love to hear more about the optimizations
Btw, for things like procedural terrain generation, using something like marching cubes is probably better than generating crazy-high density voxels.
Agree, I will probably cover this at some point in future, marching cubes for procedurally generated worlds is the topic I was researching as well
"No man's sky" uses dual-contouring, kind of similar, it allows for sharp and soft edges.
@@SerBallister No Mans Sky also has levels of optimization not even a dozen games have seen since games stopped being actual hardware.
Wait, you only got 180 subscribers?
This video is really good!
Super high quality, informative and interesting!
Anytime I hear someone speaking about the use of voxel's I'm blown away that Ken Silverman's name isn't mentioned (or well known amongst gamers for that matter). His early work with voxels was solid and even Carmack was impressed with his work.
awesome video!! im excited to see what other videos you create!
Voxel engines are likely gonna become more prevalent in the next 10 years.
Back in the nineties, before GPUs were common place, many games used voxel rendering somewhat similar to this, because yes, it is fast. It's crazy fast. The limiter is not this rendering technique. The things that prevent this technique form going smaller are physics, lighting, and MEMORY.
Love the vibe of this video, reminds me of Sebastien Lague
anytime I think of these voxel engine stuff, I'm always reminded of John Lin's voxel engine and how absolutely ridiculous it was, though they haven't shown anything about it in a long time, and seemingly shelved the micro-voxels so it'd no longer be nearly as detailed as it was
Just in case anyone is interested.
I actually used the algorithm in this paper to implement a feature in Wren Kitchen's web based kitchen planner software.
We used it to traverse a voxel grid that is generated for each kitchen to aid spatial queries.
About ten years ago there was a voxel tech with only a few videos showing how, using voxels and point clouds with no meshes, a model of an oasis fill of trees and statues could be zoomed in on, showing the rocks and eventually dirt and finally the textured details of the dirt particles. The images shown were all static, but the zooming was rendered in real-time with very organic looking shapes with promises of games being developed with the tech.
I'm reminded of it because of how you described the optimisation of rendering only by screen pixels, which was one of their claims, and the early dev vids looked great. But I haven't seen any development of similar voxel rendering since then, you know, going away from cubes.
(I was at an animation college at the time, so we would all joke about being the Rock Guy whose job it would be to just make one rock for a video game that no one would ever see the intricate detail of.)
*EDIT: I looked it up. The company was Euclideon
Euclideon's "infinite detail" was overhyped marketing vaporware for games, but they eventually produced a nice photogrammetry renderer for geospatial data. They couldn't really support animation or even good realtime lighting, which makes it not ideal for games. There's a lot of good debunking from the time those videos were coming out about how their claims of superiority are nonsense, but at least they ended up useful for something.
Man i hate math, but it is amazing how far technology has come, thank you for making this complicated topic easy to understand for everyone
You should check how oceans are simulated, now that's some good math.
Minecraft's voxels seeming big is merely a trick of perspective. If you make your player character 30 blocks tall, then the voxels are actually quite petite.
i'm developing my own voxel game and this was very informative thanks. plz make more vids about game voxel stuff!
I'd love to have 10cm voxels but somehow connect the outer edges to create smoother diagonals
Обожнюю, коли алгоритми ютубу працюють як треба і рекомендують дійсно кльовий контент. Дуже цікаве та пізнавальне відео, з нетерпінням буду чекати більше.
Дякую ;)
The true reason is that Minecraft is mostly single-threaded.
Also really isn't picky with your GPU unless you use Shaders, or a mod that needs a GPU feature
at least there's some really crazy glitches you can perform using the very few instances where there's multiple threads
How has this channel less than 2k subscribers
Дякую за відео, дуже доступно пояснив доволі не прості реч! Може в наступному відео розкажеш що значать і як саме працюють різноманітні налаштування в іграх? По типу тисячі видів згладжування (SSAA, MSAA, CSAA та інші), анізотропна фільтрація, що таке G-sync та FreeSync і чим вони відрізняються і таке інше 🇺🇦
Voxel... my first game with them was Comanche from NovaLogic.
The video ended just when it was starting to get really interesting 😭
Fascinating explanation!
Thank you all for all the views, likes and comments! More videos are coming soon, especially after such a huge support from all of you! I really appreciate it!
I would also want to address all the future comments regarding "there is actually a ray tracing in Minecraft bedrock". Thank you for pointing this out, I think at this point there are enough comments about this :) The phrasing in the video is indeed inaccurate, I agree. But I think it does not change the main idea of the video - rendering voxel worlds as meshes (triangles) VS rendering voxel worlds using direct ray tracing on voxel grid. Yes indeed you can add ray tracing to a game with mesh rendering, but in my opinion it does not change the core principle of how its graphics work and how objects are presented for the GPU, in contrast to a Teardown where graphics works in a completely different way.
Great video :) Thanks for making it
Класне відео!
I hope you make more videos on voxel stuff.
this video is literally perfect, i am just starting working on a ray traced voxel game the main i am having is my gpu is like 4 years old and I have awful performance
voxel were also really small in some games, YEARS ago
was it the first Baldur's gate, or something, don't remember, but they were no bigger than a couple of pixels
This got way over my head really quickly. 😅
morale : Teardown is a great and hard to make voxel game.
Indeed, my desire to re-implement it's rendering two years ago is what made me interested in voxels. I have a lot of technical things to share in video, but I did not want to dive in too specific stuff right away
super informative !
Great video, gl wirh your youtube journey
Amazing work
I've heard accent.
Thanks for video.
Good luck.
There is actually an awesome shaderpack for minecraft that incorporates voxel based ray tracing and lighting!
I feel like it fits the vibe of minecraft a lot better than other shaders
Name?
@@koiledPythonRain rethinking voxels
@@thatfellarosto thank you
If you take from creators, please attribute them at the time instead of hiding them as random links in the description
Here's the ones I noticed while watching the video (both of which are in the description)
2:10: ruclips.net/video/gsZiJeaMO48/видео.html an amazingly animated introduction to ray tracing implementation
2:30: ruclips.net/video/BNZtUB7yhX4/видео.html a great explanation of how cool geometries can be implemented using raymarching
This is a really good video! Though to be fair, the reason Minecraft runs poorly has nothing to do with the number of triangles on screen and everything to do with the game's lack of optimization. Mods like Sodium make the game run MUCH better.
Yeah. Bedrock Edition is pretty much the same in terms of features with the Java Edition, but it runs infinitely better than JE, since IIRC its codebase comes from Pocket Edition, which needed to be run on phones, which had pretty much no power compared to computers so that the whole code was written with much more optimization. Notch also probably did not think that his Cave Game would become such a huge game, so he probably tried to implement features as quickly as possible instead of optimizing them.
@@GamersUniverseOE Yep! Java has had a lot of updates to help clean it up but it's still a mess. Though, Bedrock has its own host of issues as well.
Yeah, fortunately both client side and server side have ways to fix their issues, tho folia hasn't become popular enough yet
3:26 it's called ray casting, it's how the Wolfenstein 1 engine worked
Really goo video, but Minecraft does have official RTX support
cool video you should make another one
I just started the video but, in the thumbnail, it looked like Minecraft's HUGE voxels were improved to smaller voxels however while Minecraft looks like blocks, they are polygons in the shape of a cube not voxels. There are some ways to the inside of a few blocks, and they have no texture from the inside meaning you can see through them from the inside if Minecraft was voxel based it would have texture inside as voxels are 3 dimensional. (What I mean by 3 dimensional is that they aren't just flat textures with no depth)
Edit: I just fixed a parenthesis
They are voxels. Voxels are and ONLY are a grid of volumes.
Yes. That grid of volumes CAN be used directly by the render pipeline. But those voxels can also be converted to polygons and rasterized. Voxels are NOT a render method. Voxels are a form of data storage USED by render methods. And them being data storage, they can be used in other ways too. Like minecrafts voxels just simply holding world data.
Incredibly well made video
I find the Minecraft example confusing. Isn't Minecraft just banal 3D graphics based on meshes? Apart from grasses, every object in Minecraft has height times length times width, right? Voxels, on the other hand, are pixels arranged in a 3-dimensional space. Teardown, Commanche (the old one) or Delta Force from Novalogic had them. In medicine, voxel space is also used, for example, to display MRI scans. Or am I seeing something wrong?
It's still voxels, just rendered with polygons instead of ray tracing. This lets blocks have textures and shapes other than cubes. "Voxels" only has to do with the way the geometry is stored.
"There is no ray tracing in minecraft" ouch
Im convinced that minecraft needs a render engine overhaul
Kind of depressing that that hasnt happened yet, even with all the budget behind it
it doesn't really
@@vibaj16 considering how awful the game looks it sure runs poorly
@@vliedtke That's not due to the render engine. Minecraft is poorly optimized for entities, redstone, and other things. That's the main issue.
0:36 there is ray tracing supported natively on minecraft bedrock edition on PC.
Nvidea showcase: ruclips.net/video/AdTxrggo8e8/видео.html&ab_channel=NVIDIAGeForce
Minecraft does have an official raytracing version lol
I would think intersecting a line with a cube in a static grid would have a closed form solution and thus be insanely faster than arbitrary meshes.
It is very fast, but for each pixel you need to perform a lot of these checks, as you need to ray march a ray through the entire world volume basically. So rasterization sometimes does make a lot of sense (when voxels are big) because it often draws each pixel just once
@@7BitsPerByte What if you used something like Bresenham's line algorithm to "march" the ray? It would probably be much faster to calculate the next voxel along the ray, and with small enough voxels the "missing" of voxels by a corner wouldn't really matter (it might even make the voxel nature of the scene less noticeable, by distorting the edges of voxels).
Would be very interesting to see someone optimize a minecraft-like game to run with this technology. We could see how far out the tender distance could get and what kind of performance benefit there is
The issue with that is the complexity of voxels that a Minecraft-like game can have. A raytracing-based approach like this probably only works well at all for a LOD renderer where every block is a flat color.
The "ear" in "teardown" is pronounced like "air". "Tear" with the "ear" like "ear" is what you cry.
Minecraft blocks are not roughly one meter, they are exactly one meter.
Oh, did you measure?
@@7BitsPerByte Notch said so
@@7BitsPerByte and there's achievements and stats that use the term "kilometers", which corresponds to exactly 1000 blocks
So let's use this to speed up minecraft. No?
wouldn't speed up minecraft
Heheh doggo 😗😗
I'm sorry, you were saying something? I didn't catch that last part after doggo.
0:59, This is due to effectively having an opengl2 renderer which was never optimized for anything other than tiny maps with simple geometry, not what minecraft is today.
No, it doesn't have much to do with rendering at all. It's mostly due to a lot of poorly optimized other aspects of the game, like lighting, redstone, entities, etc
reminds me of wolfenstein a little
Indeed. It's like a 3D extension of the 2D raycasting algorithm used in old games such as Wolfenstein 3D.
Nice video. Just one thing, Minecraft is not based on voxels, it uses a standard rasterization based engine. The blocks aren't represented by voxels either.
Voxels are just a grid of volumes.
You CAN use the volumes and ray marching to render it without polygons. But that's not what voxels are. Its just a common way to render them. Voxels are most commonly used for data storage. Minecraft IS based on voxels. It just ONLY uses them for data storage. It doesn't use them as part of the render pipeline.
It's space partition is made of voxels, but the rendering isn't.
@@Wylie288 Minecraft stores individual block information in a 3D array. If you think that qualifies for calling it voxel based go ahead, but I disagree.
@@pathway4582 How would that not qualify as voxel based? How else would it store voxels?
@@pathway4582actually 1D array of 8 bit int
Not only minecraft cubes are not real voxels like others have said you dont need to represent voxels has cubes, thou everyone does because is with no doubt the best shape for it. But imo is good too know that being a cube is not a hard requirement.
if i were doing ray marching in a regular grid i'd just try to implement bresenham.
same
i just had one of the moments where you just think that is so cool, why didn't i thought of that
I think it's worth noting that Minecraft doesn't use voxels. The blocks are made from regular polygons like most game models are.
Polygons may be the graphical primitive that is rendered but the game is still voxel-based. Voxels aren't graphical primitives; they're just a method for representing and manipulating 3D data in a discrete, grid-like structure. Which is precisely what Minecraft does.
If you've ever seen an x-ray glitch (or footage of someone hacking with x-ray) you've seen the voxel nature of Minecraft. The ultimate rendering is fully polygon-based, yes, but there is a pre-processing step to figure out which surfaces are potentially visible to the player and that is all voxel-based math that takes the place of normal polygon mesh optimizations like occlusion culling and level-of-detail.
still voxels
A voxel is just a 3D pixel. It doesn't matter how you render them. Minecraft didn't invent the concept. It only invented the game built around big voxels as a core mechanic.
@@OMGcluelessthere is no lod or occlusion culling in Minecraft by default what your referring to is face culling which takes place during the mesh build stage
Voxels are oooold (Comanche-series). And Minecraft can just barely be said to use voxels at all.
10cm to the side voxel would be 1000 times smaller than 1m ones. Not 10 times.