Not bare bones enough, write it in machine code based off of your own instruction set, running on your own custom hardware that you mined the silicon for yourself
Nah that’d be too slow and error prone, he’s gotta write his own language and compiler, this way it’s much faster than writing machine code when he starts the project
ye, but he did not even mine his own silica for his computer, and now even use a proper programming language instead of going to the better way of writing his own os for the minecraft he wants to build later.
It's actually a fun (for nerds like me, at least) hobby, seeing how it's essentially creating viewable and interactable universes using only math and the power of computers. And the linear algebra and trigonometry involved can be learned without too big of a problem even by not very great or educated mathematicians like me (thank you 3blue1brown for teaching me more than my entire highschool did); and it's a mind-blowing experience itself, combining many "I will never, ever use this IRL" concepts into a practical, working whole.
I have to agree with @The Crazy Pineapple making engines is fun. I even make videos about it. But anything 3D graphics related is pretty interesting for me :)
C++ is such a weird beast since the standard is so big and complicated that you can really just pick a style and write code in it, whether it be "C with classes" or "C# but I pretend to be cool." Then you read code written by other people and suffer greatly
while this is a valid point lets pretend that it's for easy cross compatibility with all platforms because the old one didn't run on windows and used openGL (vulkan better fight me)
@@universallyepicnarwhal9102 I'm sure you could get it compiled on windows pretty easily. I was referring to cross-compatability between graphical api's...
Looks awesome! You're getting a bit of peter-panning (8:14, where the shadows aren't touching the objects). This could be from a constant bias that you may have added to fix shadow acne, but for the future it's much better to have an adaptive bias. Look up slope-scale depth bias if you have the time. Nice work mate, love the vids!
That’s actually due to depth map resolution :) I should have cranked it up to 8192x8192 for the shots in the video - but IIRC there is already slope-scale depth biasing in the lighting shader!
Jdh I really hope you end up doing a crash course lesson on game engine concepts and implementations some day. I noticed that you skim over many details for the sake of staying on topic, but I'm sure that many other people along with myself would also appreciate a video that gets into the nitty gritty. Amazing work in this video as usual, you've got me hooked on to your channel!
I need that video on the top 10 reasons you hate Rust. It would be hilarious and informative from someone who's done an insane amount of low level computing.
Professional Rust shill here, and I'm also curious why he dislikes the language. I do agree it was probably a good choice to avoid it here though, given the game-dev scene is still so-so in Rust.
@@zombie_pigdragon Rly ? Look at Tantan he's using rust (bevy) for some of his projects and it seems like it's working. I have never heard someone complain about rust being used in a game. Like the language a game is done in shouldn't really matter. The only thing that matters is if it's a good game or not.
@@sutsuj6437 Of course it's possible- I've been keeping an eye on it, though I left that out of my first comment. Right now, I'd even argue that if you're willing to put in work at a similar level to this video, everything is available, sans examples. But those examples are a key part- with finished products comes learning tools, and features and ergonomics. The Rust gamedev scene doesn't have that yet, and it'll be years before it can catch up to C++. I'm sure it's possible today (and in fact, I hope someone will) to recreate this video with wgpu and patience, but it'll still show more rough edges than C++ for a while longer.
when this engine is pretty finished, it'd be cool to see an in depth explanation of the math and how everything is organized and works together kinda like you did with the jdh-8
I think it may be somewhere in the blur / bloom / composite section - "screen-space ambient occlusion" at 8:36, there is a region of brighter shadow along the bottom edge of the objects. Maybe you've addressed this but it looks like a flaw as is. Likely you've improved on it already. I hate to nitpick as this work is far beyond my capability and I'm truly impressed.
Yeah it's a bit odd I also think it must give a special unique charming vibe to the game after some time though (think of all of Minecraft's quirks that we just got to enjoy haha)
@@dasKeks28 not a typo, n oway. Try to type "a" right now and consider how bad your finger would have to slip to type "an" instead. It's a very nuanced joke. He's calling himself stupid, and he gave us a hint of evidence for it (bad grammar)
Yes, I work at Mojang currently, no I dont have a brother :^) edit and because I was immature and basically ignored dcma as that wasnt really a thing when I was too young to understand stuff
I can watch people recreate minecraft from scratch for years. There's something so satisfying about listening to what goes into and also setting up your own algorithm for interpreting this invisible voxel data into a mesh generated representation I'd bet money you could make a game out of that alone. And if I knew more coding than just looping through arrays I'd make one
Great work, I enjoyed every frame of the timelapse of the coding process. Seems the shadow a bit off and the ambient ocullusion was wrong but meh the shadow was sick.
ive written a comment like this before on one of your previous videos (obviously previous) and i still stand to it: i love every single video you upload since i not only very much enjoy every computer science-ish content you upload but i also enjoy the way you make the videos and you yourself, still i would love to see the c minecraft version becoming bigger, maybe becoming a bigger community project the more it grows and attention it gets, with some real gameplay and multiplayer, i just love the idea of a super fast running c-made minecraft clone made entierly by you and your community, please dont let this die hahaha
Great to see you come to the C++ side of the force. We fear and love C++. But seriously, with concepts, modules and coroutines in C++20, it's a whole other language now. It's modern-modern C++.
The features in C++20 can be pretty amazing, but it's a shame that they're still crudely bolted on top of the "old" C++ which was crudely bolted on top of C. The features might be "modern" (whatever that means), but C++ is not modern and never will be unless the entire world suddenly starts writing C++20 overnight and all known and maintained code magically transforms as well. Tons of professional C++ developers still write C++ like it's 1998. And tons of actively maintained code is still written in that style as well. And onboarding devs to this new style is not easy either, as it's hard to deny that with all those cool features there has also been an explosion in complexity in an already complex language.
@@robinmattheussen2395 I agree 100%. That's why I started avoiding working with C++. It's my favorite language if I'm working alone or with a team where everyone thinks like me. But I've been in teams where one guy wants to write C, another guy wants to slap virtual everywhere and a third guy is randomly mashing the keyboard but somehow it compiles and no one can refactor it now.
bro im so glad to see u back. i saw ur first vod on my recommended and then moved on to watch every single video on ur channel more than once. glad to hear ur gonna post more and is very excited
Okay what the hell is up with people hating on c#? Yes it is MS developed but the whole thing is open source (compiler, runtime, libraries etc.) It is cross platform and with ahead of time compilation it has really good speed. So why the hate? I'm genuinely curious.
I wouldn't say I hate it (I used to do a lot of projects with Unity) but for my specific use case it just does the job worse than other languages. If you want a garbage collected language take Go, if you want an easy to use take Python, if you want speed C++ or Rust, etc
Eh, I don't even hate it - I've used it at a few jobs full time even. My primary gripe is actually the same as C++: the language feels really bloated. Especially comparing with something like Java, it feels like (imo) there's a lot more you need to keep in your head while you're using it.
@@achille0072 "know" is a really strong word for any language 😄 I'm familiar with a lot of different ones (like touched on/messed around with/done projects in more than I would care to list or could probably remember) but most comfortable in Java and C
In my Opinion the best language is Swift: -Really new and powerful -No external 3rd party stuff needed -fastest language in the world -easy to learn Only downside its only for Apple
Yes! I remember being amazed when you first uploaded the original, IIRC I watched it about a week after it came out. And now you've built an OS, a computer, and now you have re-done it, even better! Great job!
One thing in lighting and graphics which you omitted was that lighting is calculated backwards. You have a light, then you cast a ray to that light and follow it till it finally reaching the light.
@@SimonBuchanNz Do they though? I thought the typical raytracing method is to trace a ray from each pixel of the camera (presumably from the near plane) because otherwise the vast majority of the light rays never hit the camera and are wasted effort.
@@clonkex it's a bit messier than that, since you need to take lots of samples per pixel per bounce, and lots of bounces per sample to get a convincing image, so the naive, brute force approach lots of offline renderers use isn't feasible. Different RT GI implementations have different specifics for working around this, but they all generally amount to persisting the amount of light in the world at each point and then iterating on bouncing it around, which has the effect of flowing the light from the source around the scene before it reaches the camera. That said, the actual form of the persisted world lighting is very heavily camera influenced (to the point of being screen space for Q2RTX), so yeah, not a nice clean answer. RT shadows might be pretty much tracing in reverse, but I don't know if I quite count a single bounce as having any direction?
Nice work! As a C++ developer by trade, what I like about Rust is pretty similar to what brought you to C++ from C; Not having to fumble around with compiler macros, much nicer type definitions, straightforward value formatting etc. It also removes a lot of boilerplate code, provides sensible defaults, and its exception handling is much less fiddly.
I‘ve scrolled a bit through the comments and haven‘t seen a single reference to the clearly superior language. So here it goes: *Rust.* Let the carnage begin
Just tweak the AO a bit please, you could even render it at half the resolution but you absolutelly need to make it smoother and way less visible, it's meant to be a subtle effect.
notch: Lets make minecraft in lwjgl jdh: imagine not doing this on your own custom built computer with a custom built graphics card with your own custom operating system using your own programming language with your own graphics library... what a newby
It's odd, i have an internal war with myself on which lang i like more Odin or C#, cause on one hand i hate everything about the way C# handles memory, and it's OOP nature. It's extremely nice to type, and really costumizeable.. Also loving it in Unity since they compile away to machine code... And it's able to do manual memory management there as well.. That said, I'm also a really big fan of Odin, cause of it's data oriented nature, and simplicity, something amazing about the only loop being a for, and their consistentcy is godly, like one concept in one place means the same in another context and it's wild! Their approach to memory allocation is also quite awesome!
"Flame wars will boost engagement anyway." Truly, a man of inimitable wisdom. (I too have a soft spot for C++, despite being a huge Rust shill. It makes me wanna tear my hair out sometimes, but I did a lot of robotics stuff with it in high school.)
Elephant in the room - what's the bright line next to each cube before the shadow starts? You mention ambient occlusion, too, so I would have assumed "extra dark" in those spots. Is that a bug or an engine limitation? @8:05 ish. It's clearly visible everywhere shadows are shown.
I suppose he just came up with a quick solution by blurring all of the edges of the shadows to a lighter color, hence a bright line at the start of the shadow right next to the cube.
It is an artifact/bug from the shadows. To fix it JDH just needs to render everything front and back without any backface culling when creating the shadows maps. There is a full explanation in the comments of the learnopengl article mentioned in the video.
My biggest issue is just language bloat tbh - if you're going to work in that sort of world of managed code, Java is at least a lot easier to keep in your head than C# I think. The language just feels like a bit more of a mess imo
@@tommy4808 I do actually like Java a lot, it's probably the language I'm the most familiar with out of any - and 99.99999% of the time the garbage collector is fine - but for this project it comes down to portability (meaning not Java ☹), performance, and ease of adoption (meaning not C#) for me
I know this video is more of a technical exercise, but you generally wouldn't use soft shadows for sunlight. This is because the sun is far enough away that it effectively acts as a single point casting rays, making shadows have very hard outlines. Soft shadows are instead used when lighting indoor scenes where the volume of the light source causes objects to be lit from multiple angles by the same light, creating points which are only lit by a portion of the light. Larger lights like fluorescent bar lights make the softest shadows (by design), while smaller bulbs are somewhere in between.
Very nice video! I really appreciate you sharing something non-trivial you've made with bgfx. Not very common on the UA-cams. It makes me chuckle (in a good way) to see those Rust-like numeric typedefs and Result in there. After moving to C++17, I sorely missed designated initializers, but liked that I could use some C++-specific features (e.g. templates, namespaces) and ignore the rest.
Dude you should just make an entire series and finish the major parts of the game before all the content and stuff just to style on Mojang, that’ll be hilarious. Amazing progress tho, looks so much better than the real game already
I'm taking a C++ class this semester, so I'm excited to watch this video. I'll write off watching this video as studying during the weekend. And even if I couldn't, I'd probably watch this anyways. ;D
FWIW, it is possible to do namespaces in C. It's not a built-in language feature, but with C99 and the inline keyword, it's possible to do link-time mangling and compile-time demangling through the use of definition macros and import macros. In practice, it's actually not that bad. You get the same benefits of C++ style namespaces, namely, no compile-time or link-time name clashes of publicly defined functions, types, and globals.
Coming from your previous videos I was expecting something like „Recreating Minecraft in assembly without os in 24 hours“ but I like C++ so I liked this one too 👍
you should have programmed it in [Insert Obscure Language], its SOOooo much better at [insert random feature that no one asked for] and it even does [insert something that is pushed into your face by everyone who uses this random programming language but is useless to most people]
Grab Atlas VPN for just $1.39/mo before the deal expires! atlasv.pn/jdh
🤔 Okay
🐏
hello
DON'T FOLLOW WHAT VPNS SAY TO YOU!
make a good game
Not bare bones enough, write it in machine code based off of your own instruction set, running on your own custom hardware that you mined the silicon for yourself
Nah that’d be too slow and error prone, he’s gotta write his own language and compiler, this way it’s much faster than writing machine code when he starts the project
@@jrgerba thats why its a joke.
give me a few months
omg!
He’s gotta build the monitor this all displays on
normal people: Why buy the cow when the milk is free
JDH: Let's make a cow
then, on a fling, he will decide to spark electricity through some carbon based matter to create organic soup which eventually evolves to a cow
Sus
@@not_herobrine3752 good soup
ye, but he did not even mine his own silica for his computer, and now even use a proper programming language instead of going to the better way of writing his own os for the minecraft he wants to build later.
even if it is little dump, I still like it
The actual insanity of these videos is ridiculous, just making 3D engines from scratch because he wants to. Amazingly impressive!
It's actually a fun (for nerds like me, at least) hobby, seeing how it's essentially creating viewable and interactable universes using only math and the power of computers. And the linear algebra and trigonometry involved can be learned without too big of a problem even by not very great or educated mathematicians like me (thank you 3blue1brown for teaching me more than my entire highschool did); and it's a mind-blowing experience itself, combining many "I will never, ever use this IRL" concepts into a practical, working whole.
@@DeuxisWasTaken I tried using a 2d engine to do 3d and gave up after suffering math
I have to agree with @The Crazy Pineapple making engines is fun. I even make videos about it. But anything 3D graphics related is pretty interesting for me :)
This is extremely far from scratch considering how much bgfx does for him... :)
You should check ThinMatrix’s Equilinox series… be amazed 😊
1:20 I love that since C++ is a kinda middle-level language both low-level and high-level programmers can find common ground in complaining about it
lol yeah
c++ is the best
C++ is such a weird beast since the standard is so big and complicated that you can really just pick a style and write code in it, whether it be "C with classes" or "C# but I pretend to be cool." Then you read code written by other people and suffer greatly
@@Catonator I feel like "C# but I pretend to be cool" is someone I know. I'm not sure who, but I must know someone that does this
@@Catonator Apologize for the stupid question, but what makes C# not cool? Is it just it being easier, or what?
jdh: *complains about people using engines and shortcuts*
also jdh: *uses a rendering library*
It's for combatabity
while this is a valid point lets pretend that it's for easy cross compatibility with all platforms because the old one didn't run on windows and used openGL (vulkan better fight me)
@@universallyepicnarwhal9102 I'm sure you could get it compiled on windows pretty easily. I was referring to cross-compatability between graphical api's...
jdh in a parallel universe: writing my own rendering library in assembly
Cut him some slack , even 2 years ago he used a rendering library
The only appropriate option would have been to code in HolyC, make it 16 color, and include elephants.
i agree. he could also implement a drivable truck so he can hit the glowing... well you know.
..... What on Earth is HolyC????
@@nikkiofthevalley A language designed for an OS from god, implemented by someone with schizophrenia.
@@abbanf hey, the dude wrote a compiler, don't do him like that
@@ИльяВитцев so what? Writing a compiler is definitely not an impossible task, people do that all the time in unis
Looks awesome! You're getting a bit of peter-panning (8:14, where the shadows aren't touching the objects). This could be from a constant bias that you may have added to fix shadow acne, but for the future it's much better to have an adaptive bias. Look up slope-scale depth bias if you have the time. Nice work mate, love the vids!
That’s actually due to depth map resolution :) I should have cranked it up to 8192x8192 for the shots in the video - but IIRC there is already slope-scale depth biasing in the lighting shader!
I like your funny words magic man
@@__8120 AHHAHAHAHA
@@jdh probably you can just grow the shadowed part a pixel or two (I mean adding to the border)
Looks like you're casting from back faces, not front faces?
Otherwise, yeah, you need shadow cascades for an open world. Which sucks.
Jdh I really hope you end up doing a crash course lesson on game engine concepts and implementations some day. I noticed that you skim over many details for the sake of staying on topic, but I'm sure that many other people along with myself would also appreciate a video that gets into the nitty gritty. Amazing work in this video as usual, you've got me hooked on to your channel!
I agree so much! He should definitely find the time to explain what he likes of libraries and how he has written this code!
Me too !!
jdh doesn't seem to be the type of person that knows how to teach what he knows. That's a skill separate from the knowledge you have.
I need that video on the top 10 reasons you hate Rust. It would be hilarious and informative from someone who's done an insane amount of low level computing.
Professional Rust shill here, and I'm also curious why he dislikes the language. I do agree it was probably a good choice to avoid it here though, given the game-dev scene is still so-so in Rust.
@@zombie_pigdragon Rly ? Look at Tantan he's using rust (bevy) for some of his projects and it seems like it's working. I have never heard someone complain about rust being used in a game. Like the language a game is done in shouldn't really matter. The only thing that matters is if it's a good game or not.
@@sutsuj6437 Of course it's possible- I've been keeping an eye on it, though I left that out of my first comment. Right now, I'd even argue that if you're willing to put in work at a similar level to this video, everything is available, sans examples. But those examples are a key part- with finished products comes learning tools, and features and ergonomics. The Rust gamedev scene doesn't have that yet, and it'll be years before it can catch up to C++. I'm sure it's possible today (and in fact, I hope someone will) to recreate this video with wgpu and patience, but it'll still show more rough edges than C++ for a while longer.
@@zombie_pigdragon As someone who tried rust for games... Yeah sadly it's not that great for games. Still use it for literally everything else though.
@Zombie_Pigdragon would rust have better performance if it had those things?
when this engine is pretty finished, it'd be cool to see an in depth explanation of the math and how everything is organized and works together kinda like you did with the jdh-8
Great idea please do this
@OrangeDied Roblox pfp?
@@longiusaescius2537 yes
@@OrangeDied nice, Napoleonic wars are very aesthetic
I am continuously amazed how much effort you put into every video you make.
The results are really impressive!
I think it may be somewhere in the blur / bloom / composite section - "screen-space ambient occlusion" at 8:36, there is a region of brighter shadow along the bottom edge of the objects. Maybe you've addressed this but it looks like a flaw as is. Likely you've improved on it already. I hate to nitpick as this work is far beyond my capability and I'm truly impressed.
A new jdh video is the best thing to wake up to after sleeping past all my alarms
The shadows being lighter near the edge of the block casting it is bothering meeeee
Regardless of that minor nitpick, amazing work as usual
Yeah it's a bit odd
I also think it must give a special unique charming vibe to the game after some time though (think of all of Minecraft's quirks that we just got to enjoy haha)
jdh: "java is stupid and to easy"
me an java programmer:"yes"
lol " *an* java programmer"
Almost missed the joke
@@ilmalocchio i didn't get it :(
@@semihkaplan Yeah I guess the "an" was just a typo and there is no further joke here.
@@dasKeks28 yeah i guess
@@dasKeks28 not a typo, n oway. Try to type "a" right now and consider how bad your finger would have to slip to type "an" instead.
It's a very nuanced joke. He's calling himself stupid, and he gave us a hint of evidence for it (bad grammar)
PFFFFFTTT Make Minecraft from scratch, anyone can do that but do it twice, now that's impressive.
As a minecraft dev this is actually great, insane fast progress :D
You worked on minecraft?
hey wait a minute why is there a video with over s million views on your channel
Oscar Åkesson? didn't your brother also do something?
U worked on minecraft, mr minecraft dev?
Yes, I work at Mojang currently, no I dont have a brother :^) edit and because I was immature and basically ignored dcma as that wasnt really a thing when I was too young to understand stuff
I can watch people recreate minecraft from scratch for years. There's something so satisfying about listening to what goes into and also setting up your own algorithm for interpreting this invisible voxel data into a mesh generated representation
I'd bet money you could make a game out of that alone. And if I knew more coding than just looping through arrays I'd make one
Great work, I enjoyed every frame of the timelapse of the coding process. Seems the shadow a bit off and the ambient ocullusion was wrong but meh the shadow was sick.
ive written a comment like this before on one of your previous videos (obviously previous) and i still stand to it: i love every single video you upload since i not only very much enjoy every computer science-ish content you upload but i also enjoy the way you make the videos and you yourself, still i would love to see the c minecraft version becoming bigger, maybe becoming a bigger community project the more it grows and attention it gets, with some real gameplay and multiplayer, i just love the idea of a super fast running c-made minecraft clone made entierly by you and your community, please dont let this die hahaha
Great to see you come to the C++ side of the force. We fear and love C++. But seriously, with concepts, modules and coroutines in C++20, it's a whole other language now. It's modern-modern C++.
The features in C++20 can be pretty amazing, but it's a shame that they're still crudely bolted on top of the "old" C++ which was crudely bolted on top of C. The features might be "modern" (whatever that means), but C++ is not modern and never will be unless the entire world suddenly starts writing C++20 overnight and all known and maintained code magically transforms as well. Tons of professional C++ developers still write C++ like it's 1998. And tons of actively maintained code is still written in that style as well. And onboarding devs to this new style is not easy either, as it's hard to deny that with all those cool features there has also been an explosion in complexity in an already complex language.
@@robinmattheussen2395 I agree 100%. That's why I started avoiding working with C++. It's my favorite language if I'm working alone or with a team where everyone thinks like me. But I've been in teams where one guy wants to write C, another guy wants to slap virtual everywhere and a third guy is randomly mashing the keyboard but somehow it compiles and no one can refactor it now.
2:01 Jokes on you, you picked my favorite language.
Can't wait to see you make Minecraft using C# in 2024.
Happy 2024
0:40 - "Languages with classes..." - Ever heard of Java? The language Minecraft is written in?
Surprised to see this on my homepage when it was uploaded a few minutes ago lol
Yeah i got the notification instantly
Crazy how much better this one looks than the last one, well done!
Congrats on getting a sponsor! Looking forward to how you make this!
The altered C programming textbook (by -Denis Richie- Bjarne Stroustrop) freaking killed me! LMAO!!! 🤣🤣🤣
It would be really cool if you start your own programming tutorials for languages like c and c++ considering how skilled you are.
bro im so glad to see u back. i saw ur first vod on my recommended and then moved on to watch every single video on ur channel more than once. glad to hear ur gonna post more and is very excited
petition for hdj to make a
honestly I was a bit distracted and I kinda forgot it wasn't minecraft when you were building the house, job very well done
Okay what the hell is up with people hating on c#?
Yes it is MS developed but the whole thing is open source (compiler, runtime, libraries etc.)
It is cross platform and with ahead of time compilation it has really good speed.
So why the hate? I'm genuinely curious.
I wouldn't say I hate it (I used to do a lot of projects with Unity) but for my specific use case it just does the job worse than other languages.
If you want a garbage collected language take Go, if you want an easy to use take Python, if you want speed C++ or Rust, etc
Eh, I don't even hate it - I've used it at a few jobs full time even. My primary gripe is actually the same as C++: the language feels really bloated. Especially comparing with something like Java, it feels like (imo) there's a lot more you need to keep in your head while you're using it.
@@jdh Java, C, C++, C#... How many languages do you know, if I may ask?
@@achille0072 "know" is a really strong word for any language 😄 I'm familiar with a lot of different ones (like touched on/messed around with/done projects in more than I would care to list or could probably remember) but most comfortable in Java and C
Its basically just Java, but less original
Challenge: making Minecraft from scratch but multi-threaded and in bash.
You are easily, and by far my favourite coding youtuber.
Your Minecraft videos were some of my favourite videos on UA-cam. Thanks for making more!!!
Programmers when they have free time :
3:40 One of the great dangers of C++: You feel safe.
The Cherno should do a code review!
In my Opinion the best language is Swift:
-Really new and powerful
-No external 3rd party stuff needed
-fastest language in the world
-easy to learn
Only downside its only for Apple
C++ is one of the fastest programming languages out there so it’s rad
Yes! I remember being amazed when you first uploaded the original, IIRC I watched it about a week after it came out. And now you've built an OS, a computer, and now you have re-done it, even better! Great job!
Clearly should have done it in NodeJS
One thing in lighting and graphics which you omitted was that lighting is calculated backwards.
You have a light, then you cast a ray to that light and follow it till it finally reaching the light.
That's not really what is happening here, shadow mapping is wildly different from any sort of ray tracing.
Also, not even true with most real time ray tracing. Those calculate each "bounce" forward from the light.
@@SimonBuchanNz Do they though? I thought the typical raytracing method is to trace a ray from each pixel of the camera (presumably from the near plane) because otherwise the vast majority of the light rays never hit the camera and are wasted effort.
@@clonkex it's a bit messier than that, since you need to take lots of samples per pixel per bounce, and lots of bounces per sample to get a convincing image, so the naive, brute force approach lots of offline renderers use isn't feasible. Different RT GI implementations have different specifics for working around this, but they all generally amount to persisting the amount of light in the world at each point and then iterating on bouncing it around, which has the effect of flowing the light from the source around the scene before it reaches the camera.
That said, the actual form of the persisted world lighting is very heavily camera influenced (to the point of being screen space for Q2RTX), so yeah, not a nice clean answer.
RT shadows might be pretty much tracing in reverse, but I don't know if I quite count a single bounce as having any direction?
Nice work! As a C++ developer by trade, what I like about Rust is pretty similar to what brought you to C++ from C; Not having to fumble around with compiler macros, much nicer type definitions, straightforward value formatting etc. It also removes a lot of boilerplate code, provides sensible defaults, and its exception handling is much less fiddly.
I‘ve scrolled a bit through the comments and haven‘t seen a single reference to the clearly superior language.
So here it goes:
*Rust.*
Let the carnage begin
Just tweak the AO a bit please, you could even render it at half the resolution but you absolutelly need to make it smoother and way less visible, it's meant to be a subtle effect.
3:02 Congratulations you just made the first version of Minecraft!
Idea: you should try to implement redstone into it
that would be sick
notch: Lets make minecraft in lwjgl
jdh: imagine not doing this on your own custom built computer with a custom built graphics card with your own custom operating system using your own programming language with your own graphics library... what a newby
Lol so true
It's odd, i have an internal war with myself on which lang i like more Odin or C#, cause on one hand i hate everything about the way C# handles memory, and it's OOP nature. It's extremely nice to type, and really costumizeable.. Also loving it in Unity since they compile away to machine code... And it's able to do manual memory management there as well.. That said, I'm also a really big fan of Odin, cause of it's data oriented nature, and simplicity, something amazing about the only loop being a for, and their consistentcy is godly, like one concept in one place means the same in another context and it's wild! Their approach to memory allocation is also quite awesome!
C# has unsafe blocks. You don't have to let the CLR do everything if you don't want to.
@@BrunodeSouzaLino correct, but not as open as using Unity Burst for C# :3 - tho new core 6 comes close!
Wow you just blow me away. Genius. My first programming language was C under Unix, best environment dev setup I have used.
modern C++ is sick
Nah that’s not enough, you got physically flip the bits and make Minecraft
Can't wait for jdh to build a unreal competitor running off a computer that he programmed and built himself
There are RISC-V and FPGAs for that to help
"Flame wars will boost engagement anyway."
Truly, a man of inimitable wisdom.
(I too have a soft spot for C++, despite being a huge Rust shill. It makes me wanna tear my hair out sometimes, but I did a lot of robotics stuff with it in high school.)
Elephant in the room - what's the bright line next to each cube before the shadow starts? You mention ambient occlusion, too, so I would have assumed "extra dark" in those spots. Is that a bug or an engine limitation? @8:05 ish. It's clearly visible everywhere shadows are shown.
I suppose he just came up with a quick solution by blurring all of the edges of the shadows to a lighter color, hence a bright line at the start of the shadow right next to the cube.
It is an artifact/bug from the shadows. To fix it JDH just needs to render everything front and back without any backface culling when creating the shadows maps. There is a full explanation in the comments of the learnopengl article mentioned in the video.
Yeah, this bug kinda negates all the work he put into implementing ambient occlusion.
Wow, this reminds me of old minecraft. (I didn’t exactly play around the time, but I’ve been doing some reviewing)
Me trying to render a simple cube in opengl: 😭😭😭😭 what am I doing in life??
Same but with a triangle instead. Literally the first thing you do in opengl tutorials.
Try Vulkan mate. 1000× more debuggable.
@@shambhav9534 I believe the boilerplate though will be intimidating for beginners. That's why it's always recommended to start with opengl.
@@syedahkam7164 I don't think beginners who can't code a thousand line boilerplate should even start doing graphics.
@@shambhav9534 Thats reasonable
that deferred shading i feel really made this clone look a Lot like minecraft, more so than any other clones ive seen
this is actually the best mineclone i've ever seen
i do wish there were more interesting blocks like stairs though
I don't know what your talking about but your voice is relaxing. Pls don't stop making videos
I can make the blocks show up but getting them textured, and rendering with lighting and collisions is hard as hell for me. Good job, jdh.
jdh in 2 years: Ok so maybe OOP isn't so bad so now I'll make Minecraft again but in C#
i am very happy to see you back to the Chanel i really like your videos keep up the good work
You are starting to scare me with your abilities, jdh.
omg this is what I needed right now. Thanks man. You're a GENIUS!
I really wanna see someone recreate Minecraft with 100% accuracy. Something that could fool someone into thinking its not a remake.
What's your problem with C#? Similar syntax to java, speed is pretty much on par, but it seems like it has nicer features, and more flexibility.
He said he didn’t like Java, and c# has a garbage collector which ig he doesnt like
My biggest issue is just language bloat tbh - if you're going to work in that sort of world of managed code, Java is at least a lot easier to keep in your head than C# I think. The language just feels like a bit more of a mess imo
@@tommy4808 I do actually like Java a lot, it's probably the language I'm the most familiar with out of any - and 99.99999% of the time the garbage collector is fine - but for this project it comes down to portability (meaning not Java ☹), performance, and ease of adoption (meaning not C#) for me
@@jdh What do you mean by bloat? Do you have some examples?
@@jdh epic
I know this video is more of a technical exercise, but you generally wouldn't use soft shadows for sunlight. This is because the sun is far enough away that it effectively acts as a single point casting rays, making shadows have very hard outlines. Soft shadows are instead used when lighting indoor scenes where the volume of the light source causes objects to be lit from multiple angles by the same light, creating points which are only lit by a portion of the light. Larger lights like fluorescent bar lights make the softest shadows (by design), while smaller bulbs are somewhere in between.
Nah, Cpp is my favorite language
same it's both low-level and high-level on the same time, depending on how you want to use it
Very nice video! I really appreciate you sharing something non-trivial you've made with bgfx. Not very common on the UA-cams. It makes me chuckle (in a good way) to see those Rust-like numeric typedefs and Result in there.
After moving to C++17, I sorely missed designated initializers, but liked that I could use some C++-specific features (e.g. templates, namespaces) and ignore the rest.
I can't believe he don't use Morse code. I'm unsubscribe
Dude you should just make an entire series and finish the major parts of the game before all the content and stuff just to style on Mojang, that’ll be hilarious. Amazing progress tho, looks so much better than the real game already
As a Rust fanboy, I appreciate the friendly Rust hate. 👍
🦀🔫👨💻
How do you find a Rust dev? Pretty easy, they’ll tell you.
Great work! All of your projects and videos just hit the right spot!
Hi
HI
Hello first comment!
Jdh: Makes minecraft twice in C and C++
Me: Struggling to make a tetris board render in C#
What a calm video to watch... thank you very much for producing this content.
Thanks, it is so much more interesting to hear about the engine mechanics than whatever gameplay.
If only Minecraft was this well optimized on either version...
I am programming my own voxel engine in Rust. There is an insane Vulkan powered engine in Rust called Bevy.
I'm taking a C++ class this semester, so I'm excited to watch this video. I'll write off watching this video as studying during the weekend. And even if I couldn't, I'd probably watch this anyways. ;D
VIDEO IDEA: Joining a game jam
"C++ isn't memory safe"
jdh: "But you see... much like classes, garbage collectors, and other stuff you don't need, you don't NEED memory safety."
i'm struggling with simply starting to study and this guy it's just casually coding a 3d renderer. I better start working lmao
FWIW, it is possible to do namespaces in C. It's not a built-in language feature, but with C99 and the inline keyword, it's possible to do link-time mangling and compile-time demangling through the use of definition macros and import macros. In practice, it's actually not that bad. You get the same benefits of C++ style namespaces, namely, no compile-time or link-time name clashes of publicly defined functions, types, and globals.
Woooooow nice I'm so glad you started doing engine-programming-related content again! Keep up the good work!
I love how he jusr KNOWS everyone's gonna be on his case about rust xD
Other end, make it in scratch junior
"[... same BASIC technique..] There is NOTHING basic about this. You are the epitome of humble.
This in my opinion is the minecraft clone which looks the most like minecraft, AND HE MADE THE ENGINE ALSO DUDE WTF, Im just amazed.
I am waiting for more! Thank you, that was a cool video)
As a superfan, you recommending lotr made me subscribe instantly
It would be great if you could break inventory blocks, create health and hunger bars, and create creatures as well.
Just to know when you have a sponsor we expect no additional ads, no matter what.
Coming from your previous videos I was expecting something like „Recreating Minecraft in assembly without os in 24 hours“ but I like C++ so I liked this one too 👍
you should have programmed it in [Insert Obscure Language], its SOOooo much better at [insert random feature that no one asked for] and it even does [insert something that is pushed into your face by everyone who uses this random programming language but is useless to most people]
please keep this series going! its so interesting for some reason.