CORRECTION: Distant Horizon's lightmapCoords should in fact be gl_TextureMatrix[1] * gl_MultiTexCoord1.xy, not gl_TextureMatrix[2] * gl_MultiTexCoord2.xy. Thanks to Bálint for pointing this out!
There isn't enough people showing how shaders are made. Every designer makes their own theme. But for years now I have not been able to just find the perfect shader that looks good and performs well. I want to understand what it takes to have good visuals and good performance. You did an amazing job with this part 1. I really hope you end up going over all the features as well as ray tracing eventually. Not enough people do this sort of content. It is so nice to have a helping hand show you how its done so the user can just focus on the creative aspect. You've gained a sub! My goal with your help, is to make a shader that works well with VR and Distant Horizons.
Thank you so so much for the super thanks!! I am so glad this video helped you learn! Next part will add reflections, shadows etc, then I plan to go into ray traced shadows from light sources, then full ray tracing! All the best on your shader, VR + Distant Horizons sounds fantastic! Looking forward to seeing it! :)
man it's crazy how well you explain things, i've followed many tutorials for similar things where i could barely comprehend anything, and with this one it feels like i have years of experience, love it!
i remember when i was trying to get into making shaders all the way back in 1.7.10, there was pretty much zero tutorials and you could only really do it if you already had general experience with advanced graphics programming. something like this amazing video would have been so nice to have for 13 year old me
Amazing! Now, instead of being unable to run other people's shaders, I can build my own shader that I'm unable to run! Fun video, though. I always wondered how it worked.
As someone who has gone through a lot of the headache of learning graphics programming (in general) on my own... Im envious I did not have a resource that's this clear and succinct as this video, among other things, amazing! Was able to learn some little things here and there, so thank you. Minecraft Shaders is definitely added on the list of rainy day projects thanks to this.
This is not just a minecraft tutorial. They literally could have shown this video as part of the graphics module in my computer science degree and it would have been wildly instructive. The least I can do is like and subscribe. Thank you for this wonderful resource.
Even tho i don't wanna make a shader, or even tho im not related to coding, i watched your video and had fun, you explaining very well, i look forward to your other videos! (I also love how you freezed the frame for the people with epilepsy or motion sickness. Big Respect.)
I've been trying to learn this since I was a little kid. It's funny how a random day TH-cam recommends this video and it's exactly what I was looking for!
What a well put together video! I wish more people made videos that combine the knowledge they are trying to teach, visualization of what you are teaching (both code and the impact it has on how MC looks), as well as audio (crystal clear, not rambling, well thought out, gives insight into what you can look up to learn more). Here's hoping you enjoyed making this and would enjoy making other high quality content like it.
@@samuelgerkin I had a feeling it was hard to make so I'm glad you saw that in the last sentence, you definitely shouldn't feel like you have to polish your videos like you did this one, but it was appreciated :)
I am a begginner with shader programming and your video really got me into minecraft shaders, thanks to you I am now developping my own shader and it's SO interesting, I've already made some pretty cool stuff, and I can't wait for other parts of the serie because I have absolutely NO clue how I could implement shadows and some other stuff lol
This was a wonderful video, i easily understood everything and didn't even realise it was an hour long, definitely subscribed please make more such videos
oh cool, I was thinking about learning computer graphics but didn't really think about applying what I learn in minecraft. will visit this idea later after reading a book or two
@@samuelgerkin His vids are goated, but my impostor syndrome kicks into overdrive watching them so I can't say I'm very relaxed lol Looking forward to your next videos!
A new definitive shader tutorial! Thank you for putting in the effort to show what you actually do, I clicked on this thinking it was just a devlog at first.
@@samuelgerkin I was able to recreate a few of the 1.8 super secret setting shaders. I also learned that you can just ctrl f and find the old shaders frag and vert files, although they are openGL version 120.
i thought this was gonna be a "i did some mining off camera" type thing but you actually explained it all! I love it! edit: btw do you have the vanilla looking shader with DH support? i'd like to try messing around with that when i get the time, but i dont really want to spend the time copying what you did if you have it.
I've released it now, here it is! modrinth.com/shader/daybreak-shader/versions Just unzip to look at the code! It may be a little messy, haven't fine-tuned it just yet
17:15 avoid if statements in GPU code. GPU cores are grouped into so-called warps. cores in the same warp must execute the same instruction, always, except for cores that are disabled by a mask. If two cores in the same warp branch differently, one core has to wait for the other core to finish executing its branch before it can continue execution. This is called predicated execution, and it is one of the biggest performance killers in shader code. For reference, I implemented bounding box checking on the GPU once for a ray tracer, and it performed WORSE, because cores that exited early had to wait for the other cores to finish anyway, and all cores had to do additional computations.
You're not wrong in general, however I don't think it's really applicable here. That kind of if-statement is the standard way to implement an alpha test and it's going to converge extremely well (just don't use a super noisy texture), meaning that more often than not all threads in a warp will take the same branch. The execution will only diverge in regions where locally there are some fragments that pass the alpha test and some that don't.
Definitely, just keeping it simple since the performance concerns aren't major here and it's easier to learn the logic using if statements when you're starting out. I'll mention that in a future video though!
To everyone who have followed the tutorial and is waiting for the second part: experiment with the code as much as possible(after making a backup of course), it'll make you understand it way better.
Thank you, This helped so much, actually i thought this was one of those videos where they make one and don't show how to do it. so when i saw the video i was like i should make my own shader and found nothing, this was until gave up and just watched the video, to my surprise it was a tutorial. Yet again thank you for helping a lot of people starting on making shaders. cant wait for the next video.
Its crazy how understood nothing, was never interested in making shaders, probably never will, never even thought of programming, yet watched this entire video from begining to end, actually enjoyed it, understood nothing, yet understood everything at the same time because he explains stuff very well, and his calm voice tone just attracts your attension for some reason.. i really cant wait for the next part of this, and im really interested into seeing jow the shader turns out now lol
i like videos like this, when you make mistakes you show them and you laugh them off, very cool video that i didnt understand because i dont plan on doing this. im gonna subscribe!! :)
My horrible linear algebra professor has made me terrified of anything related to computer graphics. This video partially helped me overcome those fears :)
This is amazing! I always wanted to get into programming my own shader for a long time, but most existing tutorials are really lacking compared to this one I hope at some point you'll also do a little bit about clouds and possibly multiple cloud layers. I love shaders with extensive and realistic clouds, so that would be interesting to learn about
I have almost no clue what you're talking about, but I still somehow understand what's going on. Great tutorial, and I'm sure this is going to help many others in the future!
My guy you explained this so well and so thoroughly that I'm entirely certain even people with no coding experience would understand exactly what you were talking about the entire time
I probably will never create a shader myself, but this video is super interesting and gives me uni course vibes. The difference to a uni course, is that this teacher can actually explain quite well
I will! I'll add ambient occlusion too! I forgot to mention that Minecraft's default ambient occlusion is included in vaColor, so it got added when we added the foliage color! You can turn off the default AO by telling optifine/iris with "const float ambientOcclusionLevel = 0.0f;" in any fragment shader
Bro casually explaining shader development like even young people would understand. I'm definitely following the series to learn how all this magic works
This really has been the best Minecraft shader tutorial/programming session I have seen yet! I am looking forward to seeing the more complex shader effects :)
Man i've been looking for an intro like that for a whiiiiile. I've been meaning to try writing a shader and apply a few tricks of my own for quite a bit but couldn't find (and didn't search much) a good introduction to MC shaders.
this is the best shader tutorial i've ever found. i've been wanting to get into shaders for probably over a year. at least since i started modding. but nothing has ever made sense to me and this is the first thing i've seen that has made anything make actual sense. so thank you and i hope that you continue with more videos in this series because i would love to learn more about this. only annoying thing though with graphics and rendering stuff is that i was home schooled and don't really know how to do a lot of the crazy math, as well as my computer having such an ass graphics card that i can't even run DH. but i will definitely work towards improving my knowledge and pc setup, lol.
@@Eglijohn That’s fantastic! I’m glad I could help! A big reason I made this is I had difficulty finding a tutorial when starting out, glad I could provide that and encourage you to make something :)
@@samuelgerkin The only problem is, that i have another big project (Minecraft bot), so i need to test it when i finished with this project, so i dont come durcheinander.
Hi, Budder here, one of the mods from ShaderLabs, glad to see more developers making and sharing resources for learning shader development! It's a mystery to many and the more we document it the better for the community 😀
Tysm, I have been wanting to try out shader coding for a while, and I think this video will help me. I'm gonna use emacs though becasue I think it would be fun to learn both shader code and emacs side by side :)
Oh man, I just had an Computer Graphics lessons at University, and this video explains it all better (we pretty much had very same topics as we've been learning OpenGL) This makes up for an proper Educational material
CORRECTION: Distant Horizon's lightmapCoords should in fact be gl_TextureMatrix[1] * gl_MultiTexCoord1.xy, not gl_TextureMatrix[2] * gl_MultiTexCoord2.xy. Thanks to Bálint for pointing this out!
There isn't enough people showing how shaders are made. Every designer makes their own theme. But for years now I have not been able to just find the perfect shader that looks good and performs well. I want to understand what it takes to have good visuals and good performance. You did an amazing job with this part 1. I really hope you end up going over all the features as well as ray tracing eventually. Not enough people do this sort of content. It is so nice to have a helping hand show you how its done so the user can just focus on the creative aspect. You've gained a sub!
My goal with your help, is to make a shader that works well with VR and Distant Horizons.
Thank you so so much for the super thanks!! I am so glad this video helped you learn! Next part will add reflections, shadows etc, then I plan to go into ray traced shadows from light sources, then full ray tracing! All the best on your shader, VR + Distant Horizons sounds fantastic! Looking forward to seeing it! :)
That end goal is something I've wanted to see for a while now. Best of luck!
@@OrangeC7 Thank you! :)
Not just shaders, a lot of other things actually. We need more people like this.
man it's crazy how well you explain things, i've followed many tutorials for similar things where i could barely comprehend anything, and with this one it feels like i have years of experience, love it!
I’m glad it helped! 😀
true
i remember when i was trying to get into making shaders all the way back in 1.7.10, there was pretty much zero tutorials and you could only really do it if you already had general experience with advanced graphics programming. something like this amazing video would have been so nice to have for 13 year old me
I'm glad I could make it available now! If only I had made it 13 years ago!
I agree same for me
Amazing! Now, instead of being unable to run other people's shaders, I can build my own shader that I'm unable to run! Fun video, though. I always wondered how it worked.
Now you know! The cool part about building your own shader is you can optimize it's features and performance to work on most any hardware!
Thanks!
Thank you!! :D
As someone who has gone through a lot of the headache of learning graphics programming (in general) on my own... Im envious I did not have a resource that's this clear and succinct as this video, among other things, amazing! Was able to learn some little things here and there, so thank you.
Minecraft Shaders is definitely added on the list of rainy day projects thanks to this.
Thanks so much! I had to go through a lot of headache too learning, so I'm so glad I could provide a good resource! Enjoy that rainy day project :)
This is not just a minecraft tutorial. They literally could have shown this video as part of the graphics module in my computer science degree and it would have been wildly instructive. The least I can do is like and subscribe. Thank you for this wonderful resource.
Thank you so much! I’m glad I could make it!
Even tho i don't wanna make a shader, or even tho im not related to coding, i watched your video and had fun, you explaining very well, i look forward to your other videos!
(I also love how you freezed the frame for the people with epilepsy or motion sickness. Big Respect.)
Thank you so much! I'm glad it was fun! :)
I've been trying to learn this since I was a little kid. It's funny how a random day TH-cam recommends this video and it's exactly what I was looking for!
I hope it was helpful! :) Happy learning!
What a well put together video! I wish more people made videos that combine the knowledge they are trying to teach, visualization of what you are teaching (both code and the impact it has on how MC looks), as well as audio (crystal clear, not rambling, well thought out, gives insight into what you can look up to learn more). Here's hoping you enjoyed making this and would enjoy making other high quality content like it.
Thank you so much!! :D I enjoyed it a lot though the editing was pretty intensive haha; more coming soon!
@@samuelgerkin I had a feeling it was hard to make so I'm glad you saw that in the last sentence, you definitely shouldn't feel like you have to polish your videos like you did this one, but it was appreciated :)
I had no clue I wanted to make my own shader until I watched this vid lol
I am a begginner with shader programming and your video really got me into minecraft shaders, thanks to you I am now developping my own shader and it's SO interesting, I've already made some pretty cool stuff, and I can't wait for other parts of the serie because I have absolutely NO clue how I could implement shadows and some other stuff lol
That’s fantastic! Glad I could help you great cool things! Next part will be all about lighting so that will add a lot of tools to your toolbox :)
I don't even code but YOU'R VOICE AND THE WAY U EXPLAIN THINGS IS SO CALMING!!!!
This was a wonderful video, i easily understood everything and didn't even realise it was an hour long, definitely subscribed please make more such videos
Woah
@@NinetyEight418 thats like 50 cents btw
I will, thank you so much for the super thanks! :D
@bedantaEva I didn't check lol
@@Twong3lol It's a lot to give for some. What matters is that they gave
I have never felt happier watching a TH-cam video
Have been looking for this for along time, keep these tutorials up and thanks!
Wow! That’s all I can say…
Amazing detail, amazing storytelling, amazing explanations and amazing results!
10/10 for sure!
Wow, thanks so much! I'm glad you enjoyed!
this will change how accessible distant horizon shaders will be! 👍
I hope so! :)
oh cool, I was thinking about learning computer graphics but didn't really think about applying what I learn in minecraft. will visit this idea later after reading a book or two
It’s a great way to learn! It’s how I did!
the flat out reference is crazy, i used to play that as a kid
This has to be the coziest programming tutorial!
I think Sebastian Lague has me beat for sure haha, but thanks so much!
@@samuelgerkin His vids are goated, but my impostor syndrome kicks into overdrive watching them so I can't say I'm very relaxed lol
Looking forward to your next videos!
This is a gem. actually exactly what I was looking for thanks for sharing your knowledge! :)
Thanks so much! So glad you enjoyed and could learn something! :)
A new definitive shader tutorial! Thank you for putting in the effort to show what you actually do, I clicked on this thinking it was just a devlog at first.
Thanks so much! I know there was hardly any content on this when I was learning it the first time so I hope this helps!
just when i was about to give up after messing with shader dev, i find this :o
thank you
Didn't expect to watch shader coding today, but I did enjoy it lol
I'm so glad you did! :D
This is probably the best programming tutorial I’ve seen just in general. Not slow or fast, straight to the point. Very informative. 👍
Wow, thanks so much!
@@samuelgerkin I was able to recreate a few of the 1.8 super secret setting shaders. I also learned that you can just ctrl f and find the old shaders frag and vert files, although they are openGL version 120.
@@thegooberator fantastic! Where are you pressing CTRL F?
@@samuelgerkin file explorer after extracting the 1.8.7.jar
Welcome back! Was just looking for your next upload
Thank you! :) Go for it, you can do it! It’s so much fun! Hope this video helps!
I just love this video. It explains everything so well and it's straight to the point.
Thanks so much! Glad you enjoyed!
This is legitimately really good
I’m so glad you enjoyed it!! :)
i thought this was gonna be a "i did some mining off camera" type thing but you actually explained it all! I love it!
edit: btw do you have the vanilla looking shader with DH support? i'd like to try messing around with that when i get the time, but i dont really want to spend the time copying what you did if you have it.
I've released it now, here it is! modrinth.com/shader/daybreak-shader/versions Just unzip to look at the code! It may be a little messy, haven't fine-tuned it just yet
17:15 avoid if statements in GPU code. GPU cores are grouped into so-called warps. cores in the same warp must execute the same instruction, always, except for cores that are disabled by a mask. If two cores in the same warp branch differently, one core has to wait for the other core to finish executing its branch before it can continue execution.
This is called predicated execution, and it is one of the biggest performance killers in shader code.
For reference, I implemented bounding box checking on the GPU once for a ray tracer, and it performed WORSE, because cores that exited early had to wait for the other cores to finish anyway, and all cores had to do additional computations.
You're not wrong in general, however I don't think it's really applicable here. That kind of if-statement is the standard way to implement an alpha test and it's going to converge extremely well (just don't use a super noisy texture), meaning that more often than not all threads in a warp will take the same branch. The execution will only diverge in regions where locally there are some fragments that pass the alpha test and some that don't.
Besides that in general divergent execution only gets really bad if at least one of the code branches is fairly long/expensive.
Definitely, just keeping it simple since the performance concerns aren't major here and it's easier to learn the logic using if statements when you're starting out. I'll mention that in a future video though!
I learned more about coding already in 4 minutes 3 seconds in than half the coding tutorials on youtube.
Thank you.
I thought this was going to be a super high level show and tell but it's actually a fantastic primer on 3d graphics. Pleasantly surprised me.
Glad you enjoyed! I love 3d graphics :)
Literally just Minecraft Bob Ross: calming voice and making beautiful landscapes out of thin air
high praise! Thank you!
To everyone who have followed the tutorial and is waiting for the second part: experiment with the code as much as possible(after making a backup of course), it'll make you understand it way better.
Definitely, experimentation is a great way to learn!
Thank you, This helped so much, actually i thought this was one of those videos where they make one and don't show how to do it. so when i saw the video i was like i should make my own shader and found nothing, this was until gave up and just watched the video, to my surprise it was a tutorial. Yet again thank you for helping a lot of people starting on making shaders. cant wait for the next video.
Haha I guess I could have made it a little more clear. I'm so glad I could help though!
Nasa called. They want all their super computers back.
this video is so wholesome for no reason at all
This was a perfect video. It fully enabled me to indulge in this new time sink lol
Thank you so much! Have fun coding! :)
This video helps me sleep. So soothing.
Even though i barely understand anything of what you've said, i really appreciate your hard work and dedication
Thank you! If you set your mind to it you can figure it out!
This is by far the easiest to follow and best to understand tutorial explaining shaders with the example of Minecraft, wow. Incredible work!
Thanks so much! :)
Its crazy how understood nothing, was never interested in making shaders, probably never will, never even thought of programming, yet watched this entire video from begining to end, actually enjoyed it, understood nothing, yet understood everything at the same time because he explains stuff very well, and his calm voice tone just attracts your attension for some reason.. i really cant wait for the next part of this, and im really interested into seeing jow the shader turns out now lol
I’m glad you enjoyed! :) it will be fun to see where the shader ends up!
oh my god ive been looking for so long for how to make minecraft shaders!! i'm very excited for the follow up video
This video appeared at just the right time for me. Amazing
I'm glad! Enjoy! :)
This is perfect timing! I was just about to give up on learning shaders, thank you so much! I’m surprised there isn’t any other tutorials out there
I’m so glad I could help you learn!
i like videos like this, when you make mistakes you show them and you laugh them off, very cool video that i didnt understand because i dont plan on doing this. im gonna subscribe!! :)
So glad you enjoyed! Thanks so much!
This is such a good tutorial, actually makes jump onto my PC and try it for myself!
Go for it! It’s a lot of fun!
My horrible linear algebra professor has made me terrified of anything related to computer graphics. This video partially helped me overcome those fears :)
I'm glad I could help you learn! :)
I myself have been recently fascinated by coding and this all looks so complex and makes me wanna learn code more!
Go for it! :)
This is amazing!
I always wanted to get into programming my own shader for a long time, but most existing tutorials are really lacking compared to this one
I hope at some point you'll also do a little bit about clouds and possibly multiple cloud layers. I love shaders with extensive and realistic clouds, so that would be interesting to learn about
Thanks so much, glad it was helpful! I have not done work with clouds before but I might get into it in the future!
Wow, this is so well explained, my PC is now dying of good graphics~
I have almost no clue what you're talking about, but I still somehow understand what's going on. Great tutorial, and I'm sure this is going to help many others in the future!
Finally someone did it, unreal, thank you.
I love how friendly the explanation sounds, keep it up 😁
I don't play Minecraft anymore. Still watched the entire thing, this is super useful for gamedev as well!
It definitely is!
My guy you explained this so well and so thoroughly that I'm entirely certain even people with no coding experience would understand exactly what you were talking about the entire time
I watched the entire video, I didn't understand anything, I liked anyways. Graphics coding is just mysterious for me.
I probably will never create a shader myself, but this video is super interesting and gives me uni course vibes. The difference to a uni course, is that this teacher can actually explain quite well
I’m glad you enjoyed :)
Extremely informative and explained in a very understandable way. Great job on this video
Thanks so much! I'm glad it was informative!
I'm definitely trying this once I have time.
You deserve way more subscribers then you currently have
Thanks so much! :)
Extremely well done tutorial
i've always wondered how shaders worked and this was really interesting!
I love how youre using modrinth
Modrinth is great :)
make sure to cover block outlines in part 2. also I would actually like to see how vanilla's ambient occlusion could be replicated.
I will! I'll add ambient occlusion too! I forgot to mention that Minecraft's default ambient occlusion is included in vaColor, so it got added when we added the foliage color! You can turn off the default AO by telling optifine/iris with "const float ambientOcclusionLevel = 0.0f;" in any fragment shader
@@samuelgerkin ah I see, thanks!
you have a great knack for making complex topics fun! ♂️
No idea what most of this was but I enjoyed it
Thank you! Always superior videos!
Thanks so much! :D
this video is absolutely remarkable
Thank you so much!
Great work!
Thank you! :)
This is an amazing explanation! Thank you!
Thank you!
I actually loved the Earth's curvature. I would enable it just enough so you don't see things popping in after loading (including distance horizons)
Thanks so much for this video! This is something I never thought I could let alone want to learn!
I didn't know mr. boss was so skilled in creating shaders
Bro casually explaining shader development like even young people would understand.
I'm definitely following the series to learn how all this magic works
Thank you! I’m glad you found it helpful! It’s a beautiful system to learn!
This video is pure gold!
Thanks so much! :D
You are doing great work here
This really has been the best Minecraft shader tutorial/programming session I have seen yet! I am looking forward to seeing the more complex shader effects :)
my man needs to keep doing this kind of tutorials :)
idk why but your voice made my day so much better
Absolutely Amazing ❤
Man i've been looking for an intro like that for a whiiiiile. I've been meaning to try writing a shader and apply a few tricks of my own for quite a bit but couldn't find (and didn't search much) a good introduction to MC shaders.
really well explained dude great video!!! enjoyed watching it eventho didnt programm along
I’m glad you enjoyed! :)
this is the best shader tutorial i've ever found. i've been wanting to get into shaders for probably over a year. at least since i started modding. but nothing has ever made sense to me and this is the first thing i've seen that has made anything make actual sense. so thank you and i hope that you continue with more videos in this series because i would love to learn more about this.
only annoying thing though with graphics and rendering stuff is that i was home schooled and don't really know how to do a lot of the crazy math, as well as my computer having such an ass graphics card that i can't even run DH. but i will definitely work towards improving my knowledge and pc setup, lol.
This is an amazing video!
Thank you so much!
this is probably the only video that's actually helpful
We need another video/playlist explaining ALL about coding a shader including explanation of everything of the code
thanks for that awesome touturial!
I’m glad you found it helpful! :)
@@samuelgerkin a month ago, i wantet do develop a own shader, bot had no good touturial, and now i can try it! srry for bad english, im german :D
@@Eglijohn That’s fantastic! I’m glad I could help! A big reason I made this is I had difficulty finding a tutorial when starting out, glad I could provide that and encourage you to make something :)
@@samuelgerkin The only problem is, that i have another big project (Minecraft bot), so i need to test it when i finished with this project, so i dont come durcheinander.
@@Eglijohn Sounds cool too, good luck on both projects!
Thank you!!! I've been looking for a good resource for learning GLSL Shaders for Minecraft. Everything seems to be very unity-centric.
Glad I could help!
You should make modmaking tutorials, you're amazing at this
Hint of things to come…
loved the tutorial
feels good learning how to code 👍
I’m glad you enjoyed it! Coding is amazing :)
What a great video! Keep these up! Subbed.
Hi, Budder here, one of the mods from ShaderLabs, glad to see more developers making and sharing resources for learning shader development! It's a mystery to many and the more we document it the better for the community 😀
Absolutely! Glad I could help provide more resources for learning!
Nice video, thanks to you I was able to implement shadows to my engine.
Nice!
Tysm, I have been wanting to try out shader coding for a while, and I think this video will help me. I'm gonna use emacs though becasue I think it would be fun to learn both shader code and emacs side by side :)
Sounds fun! Enjoy! :)
You are like the hipyo tech of minecraft. keep it up!
i've found that its better to keep the foliage color as a vec4, as certain mods (such as litematica) use vertex colors with transparency
Good point!
Oh man, I just had an Computer Graphics lessons at University, and this video explains it all better (we pretty much had very same topics as we've been learning OpenGL)
This makes up for an proper Educational material
I'm so glad I could help! :)