I think the problem with ray-tracers is that they don’t have mass appeal like other styles of devlogs do coz i don’t think normal people realise the complexities. Like what your doing/done is super fking impressive and compared to a lot of other you-tubers their games look like childs play. Anyway i think your content is mad af and super inspiring. Hoping for that blow up
hey bro, i'm writing a wrapper for your engine in zig for the funzies because i really like it, but your code is full of "defined undefined behaviour", like when you shift bits of a uint8_t as a uint32_t (which the zig compiler don't like) and i guess you should modify that for overall cleaner code etc.. but this thing brings a ton of errors which is quite annoying, if you'd like i could create a repo and give it to you, or not, i'll of course credit you. I'm also doing a zig wrapper for glad and glfw in the meantime. Anyway, your work is still amazing and I couldn't even imagine how many hours you have passed building this awesome looking voxel rendering engine. Very cool *loud dany thumbs up ngl*
@@lemonke8132 Thank you! And no, I haven't experimented with any other acceleration structures, right now I'm just using a shallow grid hierarchy because that was the easiest thing to implement. I'll likely do more exploring in future projects.
i think of a very last optimization : face/voxel/idk culling cuz you're actually computing *all* vertexes for all voxel of a chunk and it's very bad idea (i don't know if you did it but if you didn't : you're welcome)
Not at the moment, I'll probably make one once I have more subscribers. There are plenty of computer graphics servers already out there if you're looking for a community!
whats the maximum resolution your engine supports at a decent framerate? i absolutely love voxels but its so hard to optimize for very large and detailed scenes :)
I’m not sure what the “maximum” is but I can tell you this: All of the footage in the video is captured at 1080p and runs at around 200fps. At 4k, the framerate is very poor so I likely can’t render that natively.
I don’t do any denoising actually. I cast 1 or 2 rays per voxel per frame and store the calculated lighting in a buffer. Over multiple frames this averages out to make everything look realistic.
@@frozein Thank you for answering! I would guess that in the scenes without bright sky above (with only spot lights around the scene or inside building) it is getting much noisier, right?
@@frozeinuhm actually 🤓☝️, its C no C++ but yeah, rust is too safe anyway, who would like fighting with the borrow checker for 10 hours when you can just dereference a NULL pointer..
voxel 👍
voxel 👍
voxel 👍
voxel 👍
voxel 👍
voxel 👍
That red cube bouncing around, just having a good ol' time boppin in the bugs, is hilarious!
I think the problem with ray-tracers is that they don’t have mass appeal like other styles of devlogs do coz i don’t think normal people realise the complexities. Like what your doing/done is super fking impressive and compared to a lot of other you-tubers their games look like childs play. Anyway i think your content is mad af and super inspiring. Hoping for that blow up
Thank you so much! I definitely hope that raytracing becomes more mainstream, it holds a ton of potential for realtime computer graphics.
congrats on 666 subscribers!
jokes aside, great devlog video as always. voxel 👍
Thank you so much!
I really love this series, its interesting and it inspires me to learn more about computer graphics. I hope i can be as good as you one day!
fun fact: 3dvoxels and 2d versions such as tile based games like mario can be fit into a 1d list
@@danielw9371 ofc, because the memory layout in a computer is a big 1d array
Glad you're enjoying it! And good luck with computer graphics, it's a lot of fun!
@@frozeinyeah.. "fun" :) we still cannot debug in shaders 💀
hey bro, i'm writing a wrapper for your engine in zig for the funzies because i really like it, but your code is full of "defined undefined behaviour", like when you shift bits of a uint8_t as a uint32_t (which the zig compiler don't like) and i guess you should modify that for overall cleaner code etc.. but this thing brings a ton of errors which is quite annoying, if you'd like i could create a repo and give it to you, or not, i'll of course credit you. I'm also doing a zig wrapper for glad and glfw in the meantime.
Anyway, your work is still amazing and I couldn't even imagine how many hours you have passed building this awesome looking voxel rendering engine. Very cool *loud dany thumbs up ngl*
That's really cool! I guess I'm a C programmer at heart, embracing all sorts of UB haha. Good luck on your project, and thanks for the kind words!
Always excited to see ur videos on my recommended :D
Per-voxel-reflections look pretty cool. Makes me wanna switch to such reflections. ;-)
Glad you like them! I'm going for a very stylized look.
Hooked up already, loving all these devlogs
Awesome work, thanks for posting!
Oh also, have you experimented with sparse DAGs?
@@lemonke8132 Thank you! And no, I haven't experimented with any other acceleration structures, right now I'm just using a shallow grid hierarchy because that was the easiest thing to implement. I'll likely do more exploring in future projects.
Neat stuff, love the raytraced refraction thing, the blocky appearance has some appeal.
voxel be lookin kinda cool
For the next background music, I'd recommend instrumental only, as it's exhausting to listen to two voices at the same time
Sorry about that! I was hoping it would be quiet enough to be unnoticeable. I'll keep that in mind next time.
Nice keep us updated
Of course!
woot new video :D
very nice!
Would you ever consider giving the game engine PBR support?
Support something like MaterialX?
Probably not, I already have many options for the materials in my engine and I don't want to overcomplicate things. I'm happy with the style as-is.
did you use any papers / guides / or whatever to help you with that project and it's optimizations ?
This paper had quite a few insights about memory usage that were helpful: studenttheses.uu.nl/handle/20.500.12932/20460
i think of a very last optimization : face/voxel/idk culling cuz you're actually computing *all* vertexes for all voxel of a chunk and it's very bad idea (i don't know if you did it but if you didn't : you're welcome)
I am not using rasterization, so no vertices are being computed at all. The voxels are raytraced.
make a discord :D, I love looking at raytracing projects
Thanks! I'll make a discord once I gain some more subscribers, my community isn't really big enough atm.
I am currently working on a raytracing engine in Python. You can expect how it's going...
Also, how do you do the ray-voxel intersections?
I use a DDA algorithm. This site explains it well (albeit in 2D): lodev.org/cgtutor/raycasting.html
666 subscribers pog
not anymore
do you have a discord server?
Not at the moment, I'll probably make one once I have more subscribers. There are plenty of computer graphics servers already out there if you're looking for a community!
whats the maximum resolution your engine supports at a decent framerate? i absolutely love voxels but its so hard to optimize for very large and detailed scenes :)
I’m not sure what the “maximum” is but I can tell you this: All of the footage in the video is captured at 1080p and runs at around 200fps. At 4k, the framerate is very poor so I likely can’t render that natively.
What technique do you use for denoising? It looks really good
I don’t do any denoising actually. I cast 1 or 2 rays per voxel per frame and store the calculated lighting in a buffer. Over multiple frames this averages out to make everything look realistic.
@@frozein Thank you for answering! I would guess that in the scenes without bright sky above (with only spot lights around the scene or inside building) it is getting much noisier, right?
Now use vulkan
Planning on learning it sometime soon! Although I will not be porting this project to it.
I thought it might be written in rust code
C++ and OpenGL
@@frozeinuhm actually 🤓☝️, its C no C++ but yeah, rust is too safe anyway, who would like fighting with the borrow checker for 10 hours when you can just dereference a NULL pointer..