I coded a Minecraft Shader with Distant Horizons - Here's How
HTML-код
- Опубликовано: 27 июл 2024
- Support future videos! :)
buymeacoffee.com/samuelgerkin
Learn from the ground up how to code a Minecraft shader with GLSL! Or just come along for the ride to see what goes into reimagining Minecraft's visuals!
Theme Song “Sam with a Plan” by
Hunter Gerkin
huntergerkin.bandcamp.com
The finished shader! (in alpha) - Requires labPBR resource pack for reflections!
modrinth.com/shader/daybreak-...
3Blue1Brown Linear Alegebra Series: (for vector and matrix fluency):
• Essence of linear algebra
Space Conversion Cheat Sheet:
shaderlabs.org/wiki/Coordinat...
Optifine Doc (applies to Iris too):
github.com/sp614x/optifine/bl...
ShaderDoc (for Iris):
github.com/IrisShaders/Shader...
Shader Labs (a great resource for learning about Minecraft shaders with a discord community!)
shaderlabs.org/wiki/Main_Page
Mods:
www.irisshaders.dev/
modrinth.com/mod/indium/versions
modrinth.com/mod/sodium/versions
modrinth.com/mod/fabric-api/v...
modrinth.com/mod/distanthoriz...
Timestamps:
00:00 - start
00:19 - setup time!
01:17 - shader creation begins!
01:53 - adding first files
02:29 - first code! + vertex shader
03:12 - optifine doc
03:40 - vaPosition in + vertex shaders explained
05:19 - frag shaders explained
05:55 - frag shader code
06:52 - first visualization + spaces explained
08:01 - converting vertex pos space
09:00 - adding textures
11:23 - adding terrain stage for offset
12:21 - adding curved horizon
14:49 - creating include files
16:45 - adding transparency
18:11 - adding foliage color
21:00 - adding sky shader
22:53 - adding lights
29:51 - color spaces
30:41 - distant horizons!
36:00 - distant horizons fog
40:21 - What's next - Игры
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 :)
I had no clue I wanted to make my own shader until I watched this vid lol
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! :)
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've been trying to learn this since I was a little kid. It's funny how a random day RUclips recommends this video and it's exactly what I was looking for!
I hope it was helpful! :) Happy learning!
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 :)
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!
the flat out reference is crazy, i used to play that as a kid
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
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 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 :)
I don't even code but YOU'R VOICE AND THE WAY U EXPLAIN THINGS IS SO CALMING!!!!
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! :)
oh my god ive been looking for so long for how to make minecraft shaders!! i'm very excited for the follow up video
I love how friendly the explanation sounds, keep it up 😁
just when i was about to give up after messing with shader dev, i find this :o
thank you
Thanks so much for this video! This is something I never thought I could let alone want to learn!
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!
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
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!
Literally just Minecraft Bob Ross: calming voice and making beautiful landscapes out of thin air
this will change how accessible distant horizon shaders will be! 👍
I hope so! :)
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!
Didn't expect to watch shader coding today, but I did enjoy it lol
I'm so glad you did! :D
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!
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
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 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.
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!
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!
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! :)
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
Extremely informative and explained in a very understandable way. Great job on this video
Thanks so much! I'm glad it was informative!
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!
What a great video! Keep these up! Subbed.
this video is so wholesome for no reason at all
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 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.
You are doing great work here
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!
really well explained dude great video!!! enjoyed watching it eventho didnt programm along
I’m glad you enjoyed! :)
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 :)
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've always wondered how shaders worked and this was really interesting!
Great Video! :D
Thank you! Always superior videos!
Thanks so much! :D
This is an amazing explanation! Thank you!
Thank you!
I learned more about coding already in 4 minutes 3 seconds in than half the coding tutorials on youtube.
Thank you.
Absolutely Amazing ❤
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!
Extremely well done tutorial
idk why but your voice made my day so much better
This video appeared at just the right time for me. Amazing
I'm glad! Enjoy! :)
You are like the hipyo tech of minecraft. keep it up!
This will be very useful, thanks a lot!
I'm definitely trying this once I have time.
Thank you!!! I've been looking for a good resource for learning GLSL Shaders for Minecraft. Everything seems to be very unity-centric.
We need another video/playlist explaining ALL about coding a shader including explanation of everything of the code
my man needs to keep doing this kind of tutorials :)
Nice video, thanks to you I was able to implement shadows to my engine.
Nice!
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 legitimately really good
I’m so glad you enjoyed it!! :)
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! :)
grass is always greyer on the other side
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)
I like your explanations
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!
Great work!
Thank you! :)
This is an amazing video!
Thank you so much!
Though im probably never gonna use this its still interesting to watch and keep stuff in mind.
loved the tutorial
feels good learning how to code 👍
I’m glad you enjoyed it! Coding is amazing :)
Very interesting !
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!
Nasa called. They want all their super computers back.
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! :)
this is gold
I love how youre using modrinth
Modrinth is great :)
Im just gonna keep watching this at night until i remember to watch this in the morning
Night 3 bbyyyyyy
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 video is pure gold!
Thanks so much! :D
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 :)
I didn't know mr. boss was so skilled in creating shaders
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!
Wow, this is so well explained, my PC is now dying of good graphics~
You deserve way more subscribers then you currently have
this is probably the only video that's actually helpful
this video is absolutely remarkable
Thank you so much!
I don't play Minecraft anymore. Still watched the entire thing, this is super useful for gamedev as well!
It definitely is!
You should make modmaking tutorials, you're amazing at this
Hint of things to come…
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! :)
Well this was awesome
I watched the entire video, I didn't understand anything, I liked anyways. Graphics coding is just mysterious for me.
Is there going to be a part 2? learning about how to implement normal maps would be cool.
Working on it now! :)