Shader Graph Technical Overview with @BenCloward
By Unity
Summary
## Key takeaways - **Hidden Shader Graph Samples**: Sample packages like Node Reference, Feature Examples, and Production Ready Shaders are lurking in the Package Manager's Shader Graph samples tab, providing encyclopedia-style node explanations, technique demos, and production assets. [29:18], [43:58] - **UV Distortion Tutorial**: Modify UV coordinates by adding time-animated noise textures at different speeds and directions to create non-repetitive distortion effects like rippling water. [15:00], [29:18] - **Node Colors Explained**: Red nodes indicate input data from outside like textures or time; switch to Heat Map mode where brighter colors show GPU-expensive nodes like Voronoi. [25:27], [26:51] - **Lit Shader in Graph**: Switch from code-based URP Lit to equivalent Shader Graph version via edit button to customize without losing settings or learning code. [01:15:03], [01:17:12] - **Production Water Shaders**: Shaders for pools, lakes, and streams with velocity-based flow faster in middle/slower at edges, plus decals for caustics, wetness, and streaming. [56:45], [01:04:40]
Topics Covered
- Full Video
Full Transcript
Unity community and welcome back to another official Unity live stream here on both twitch.tv/unity and of course the
twitch.tv/unity and of course the official Unity YouTube page. My name is Jackson. I am one of your community
Jackson. I am one of your community managers and it is my job to bring you the latest and greatest in live stream content on these channels. Thank you so very much for being here. It is our job
to bring you content that will connect, inspire, educate, and entertain just a little bit. So, it's great to have you
little bit. So, it's great to have you all here hanging out. We have a fantastic show planned for you all.
We're going to be diving into Shader Graph. We're going to give you a little
Graph. We're going to give you a little bit of an overview and then we're going to show you a couple of sample packages that are hiding, lurking in the shadows within your own editor that you're most
likely completely unaware of. But we're
going to give you a crash course that's either going to kickstart your learning or help sharpen your skills. We have a special guest, Ben Clower, joining us as well. So, we've got a lot to look
well. So, we've got a lot to look forward to. Everyone in the chat, if you
forward to. Everyone in the chat, if you are watching live, whether you're on Twitch or YouTube, be aware that this is a conversation. This is a community
a conversation. This is a community space and we want to engage with you. If
you have questions during the stream, feel free to fire away. If you have any comments that you want to add about how cool Ben is, that's great, too. Please
let us know. Uh, engage as much as you would like. However, if you just want to
would like. However, if you just want to sit back, relax, listen, watch, learn, that is also fantastic. What I'd love to hear from you all right now is, do you
have any experience in Shader Graph? Is
this brand new for you? Are you hoping to get a little bit uh of secret knowledge to just develop what you already have? Let me know your
already have? Let me know your experience levels in the chat. Of
course, wanting to say hey to a handful of people here. We've got Ragnil, FaZe, Hamster Fez Demi Wizard Nepag of course, Ma'am, Mr. Awesome, the Bull,
and more on the YouTube side over on Twitch wanting to say hey to Andrew the day. Golden Character Design, uh, and
day. Golden Character Design, uh, and more. Golden Character Design is at GCD
more. Golden Character Design is at GCD in Las Vegas. Uh, tell me what GCD stands for because I feel like my brain is trying to complete it and I'm close,
but I'm not there. However, if you are watching this as a VOD on YouTube after the fact, please let us know uh what your favorite part is. Drop a comment
down below and take a look down at the navigation bar as you will be able to jump ahead to whatever part uh best applies to you and what you want to
learn. So, I'm grateful to have you all
learn. So, I'm grateful to have you all here. Uh we're jumping into Shader
here. Uh we're jumping into Shader Graph. It's going to be fun. We don't
Graph. It's going to be fun. We don't
have any major housekeeping aside from letting you know that we are live every Tuesday and Thursday for the next three months. We might have a couple of
months. We might have a couple of hiccups in that schedule. We'll do our best to let you know ahead of time, but that is the plan. Um, come and learn. On
Thursdays, we're going to be bringing you very technical content. On Tuesdays,
we are going to be looking for indie developer content. So, if you joined us
developer content. So, if you joined us earlier in the week, we sat down with Emily Pitcher, creator of Lily's World XD to talk about creating games that people actually want to play, taking
your grand vision and honing it in and making it so that uh people really do want to play it and learning from failures. She shared a lot of her story
failures. She shared a lot of her story um and shared about her journey so that you all could learn from her. Uh it was a very very fun conversation. Uh it was uh very enjoyable and we've got this
stream obviously here learning about shader graph. Next Tuesday we'll be
shader graph. Next Tuesday we'll be sitting down with the team from Fasmopobia. Ben Lavender representing
Fasmopobia. Ben Lavender representing Kinetic Games will be coming in to talk about how they build fear literally in Fasmopobia. Uh it's going to be a very
Fasmopobia. Uh it's going to be a very fun one. I just chatted with Ben
fun one. I just chatted with Ben yesterday. Look into it. We got double
yesterday. Look into it. We got double Ben's here uh the next week. And
speaking of Ben Fez asking Ben Cloud when now let's turn our attentions to our guests. Please give them a warm
our guests. Please give them a warm unity welcome. Welcome to the show Ben
unity welcome. Welcome to the show Ben Cloud. How are you? Thank you very much.
Cloud. How are you? Thank you very much.
Doing great. Let me tell you what uh you and I and everybody watching. Yes. We're
really lucky. And the reason is for the next couple hours we get to talk about shaders.
Ben, I like the energy already. We were
talking about it just before the show started as well that this might be a face reveal for you. So that's very exciting. Internet be excited about
exciting. Internet be excited about that. Anyone who might not know, Ben uh
that. Anyone who might not know, Ben uh works at Unity. He's a staff tech artist, but also has their own YouTube channel where they post tutorial type content, short form tutorial content uh
about shaders and shader graph and not just Unity stuff, but also Unreal, teaching you how to do similar things across both platforms, both engines. Uh
if you want to go and check out Ben's channel, please do. Uh Ben is actually just a few shy of 70,000 subscribers over there and it is highly technical
content. So please go and show some love
content. So please go and show some love and support for Ben. Ben, did I get everything right or did I mess anything up in there? No, that's perfect. Thank
you. Okay, good, good, good. Yeah,
again, Ben has been generous enough to join us sharing the time, the knowledge, and the experience that he has. So, uh
please do go show him a little love and support. But Ben, before we really dive
support. But Ben, before we really dive into Shader Graph, I want to help people get to know you a little bit. So, what
do you do at Unity? How long have you been here? And maybe like what's one of
been here? And maybe like what's one of your favorite games? Yeah, sure. So, uh,
I joined Unity just shy of four years ago. Um, before working at Unity, I was
ago. Um, before working at Unity, I was at Boware, uh, for about 14 years and I worked on games like Anthem and Star Wars the Old Republic, the MMO. Uh, at
Unity, I work on the shader graph team.
So, I'm going to be showing you the tool today that I help to develop uh for shader graph. I add new features and I
shader graph. I add new features and I create sample content uh like the sample packs that we're going to be taking a look at today. That is very cool. Ben,
favorite video game or maybe somewhere somewhere towards the top. What do you think? So, I'm not going to pick a
think? So, I'm not going to pick a favorite because there's so many, but I can tell you a couple that I've been playing recently. Please. I just
playing recently. Please. I just
recently finished Indiana Jones in the Great Circle. Um loved it. makes you
Great Circle. Um loved it. makes you
feel like you're the man with the hat and the whip the whole way. Uh, for
Christmas, I bought my son's a game called Fast Food Simulator, naturally.
And there's nothing that brings a family together like cooking hamburgers and selling French fries. That one's
multiplayer, right? That one is like run the fast food shop with friends, right?
Every level up you go, it just gets more hectic and there are more things to to put into the mix and the orders get more complicated. Um, I'm also playing a very
complicated. Um, I'm also playing a very heavily modded version of Skyrim called Novice. Okay. Really loving that. And
Novice. Okay. Really loving that. And
then also the old standby. Like to jump in and play Minecraft with my kids as well. Very cool. I like a number of
well. Very cool. I like a number of things that you just said. I mean, I love that there's a passion for games. I
love hearing stories of people playing games with their family, with their kids. It's something that I always
kids. It's something that I always wanted with my family when I was a kid and just never but so like hearing people do it right makes me just so happy to hear. Also, uh, your heavily modded Skyrim. It's like the second or
modded Skyrim. It's like the second or third time it's come up this month that someone else has been like, "Yeah, I spent a lot of my time modding and that's how I got into modding Skyrim."
And that's how I got into it. And uh we have uh another community manager running the show today from the producer chair, Trey, who I know not Skyrim, but
Fallout heavily modded. We had them on as a contestant last uh for the last game show that we did. Over 9 thou 9,000
hours in modded Fallout. So um we're in good company. It's it's cool to see that
good company. It's it's cool to see that the the straight line between modding games and being like, I want to be in game development itself. So, I think that is awesome. I do want to bring in a couple of questions from the chat or
comments from the chat before we really get deep. Um, Hyper I think on the
get deep. Um, Hyper I think on the YouTube said on the YouTube side says, uh, "Hey Ben, can you make a Marvel rivals style shader in URP in your next video?" And this actually was put in
video?" And this actually was put in ahead of time. Uh Ben, obviously you don't need to take channel advice from us here, but uh I did see it and I was like, "Oh, that could be interesting."
Um either way, take it or leave it.
Yeah. So on my channel right now, I'm focused on custom lighting models. And
so this is probably referring to that.
And um you can do a lot when you customize the lighting model just in terms of like defining the uh the style of your game. like um most game engines
have sort of a built-in realistic looking lighting model, but then a lot of games are much more stylized, you know, cartoony. Uh Marvel Rivals is a
know, cartoony. Uh Marvel Rivals is a great example of that. So, um yeah, I mean, uh I'll be I'll be considering lots of different options for where to go next in that vein. Um but it's a
really exciting topic for me. That's
very cool. Again, go and check out Ben's YouTube channel. A ton of in-depth
YouTube channel. A ton of in-depth tutorial stuff there. Uh it is kind of what created this stream is we knew Ben's channel was uh exceptional tutorial content. We said what if we
tutorial content. We said what if we just kind of expand on that a little bit, make it a little bit broader and bring in the community and do it as a little bit of a community experience. So
we're going to do like an introduction, a bit of an overview, a quick tutorial, showing off some samples. There's a lot here. I do want to say uh Jiad Ruani
here. I do want to say uh Jiad Ruani says, "Ben's tutorial on YouTube are more valuable than gold. Thanks for all the free learning materials." Uh Sin on the Twitch side says, "Hello. Uh I'm
late. So cool to see Ben on here. Love
that guy. Fantastic content on YouTube."
So there's a lot of people that are already familiar with your work, which is fantastic. If anyone else is not,
is fantastic. If anyone else is not, please go and check out Ben's channel and go learn something. Drop a comment there. And then I'll say this too. If
there. And then I'll say this too. If
there's anything that you learn there that you think is just fantastic and you want to see it like expanded upon a little bit, let us know. And maybe we'll bring Ben back and be like, "Ben, people really love this. Let's talk a little
bit more. So, um there's uh there's a
bit more. So, um there's uh there's a lot of opportunity there. Go check out that content and we'll see what we can do with it. Ben, are you ready to dive in here? Oh, yeah. Sweet. Absolutely.
in here? Oh, yeah. Sweet. Absolutely.
And we will give you uh the keys to the to the castle and so to speak, kind of.
I still have a copy so don't worry about it too much. Um we've we can we can kind of dive in. I know you wanted to do a bit of an introduction to start. Yeah.
So, we're going to be talking about shader graph today. Um, shader graph is Unity's nodebased shader editor and it enables artists and designers with no
coding experience to design the appearance and style of a project. Uh,
create really cool looking materials and post-process effects. U, so let's take a
post-process effects. U, so let's take a look at this scene that I've got here.
Um, I recently created this uh using shader graph heavily. So pretty much all of the materials that we're looking at here uh were created in shader graph. So
I'm using shader graph for things like um adding really tight detail to these rocks over here. Uh adding the moss that's growing on the rocks. Um creating
this particle system and these this waterfall. Um this was created 100% in
waterfall. Um this was created 100% in shader graph. And then also uh this
shader graph. And then also uh this animated water surface that you see down here with the foam. Um, and then also u under the water I have decals that are
creating the animated costic patterns.
And I know that you know uh you're not getting great frame rate um on the stream maybe but uh this is all running uh at a really nice smooth frame rate um
thanks to the efficiency of shader graph. Yeah, I think it's important to
graph. Yeah, I think it's important to note that like yes, there's multiple sets of compression as you're sharing with the stream and the stream is sharing out to everybody. Yeah, YouTube
and Twitch do their own like it's there's things. So, it already does look
there's things. So, it already does look quite stunning, but what I would love for everyone to do is just close your eyes, picture this 10% more beautiful, and then you'll be close. You'll be
close.
All right, so let's take a little let's take a closer look at what's going on here. Um, what I have here is just a a
here. Um, what I have here is just a a regular sphere and it's got a material applied to it. And this is a material that I created in shader graph. So I
have the shader graph file here. And um
creating a new shader graph is uh really simple. You can just rightclick in your
simple. You can just rightclick in your project window and choose create shader graph and then choose the type of shader graph that you'd like. Um in this case I
made a lit shader graph and this is what it looks like. Uh, so we'll just just maximize this here. So I've got three nodes here in
here. So I've got three nodes here in the middle that have this little red strip. And these nodes are sampling the
strip. And these nodes are sampling the textures. So this node at the top is
textures. So this node at the top is sampling a cobblestones uh color texture. This one in the middle is set
texture. This one in the middle is set to be a normal map and it's sampling the cobblestones normal. And then this one
cobblestones normal. And then this one is at at the bottom is is doing the uh the masks. We have a mask that is uh the
the masks. We have a mask that is uh the metallic or the metalness of the material. One that defines the
material. One that defines the smoothness and one that defines the ambient occlusion. Um over here we have
ambient occlusion. Um over here we have a little preview of what that material will look like. Uh and then shader graph also has a couple of other windows that I can open up. This is called the
blackboard over here. And I can create parameters that will then be exposed to the material level. Uh and then our other window over here is called the
graph inspector. And here I can change
graph inspector. And here I can change settings for the whole graph or just settings for the specific nodes. So
yeah, go ahead, Jackson. I just had a a question and it's clarifying for myself and and hopefully for someone else that might be watching, but I've heard this term ambient occlusion a lot. I I pay attention to a lot of like visual
effects breakdowns for movies and games and those types of things. Can you just how would you define ambient occlusion?
So ambient occlusion is the way that an object shadows itself from the light that's coming in from the environment.
So the light coming in from the environment is called ambient light. And
if the object is bumpy, those bumps are going to olude some of that light coming in from the environment. So, for
example, if we're looking at this sphere here in between the cobblestones down here in the cracks, um those areas are
not going to be as visible to the sky.
And so, they will be darker because they're not receiving as much ambient light. So, ambient occlusion is a
light. So, ambient occlusion is a texture that defines where on the surface it's darker because of that occlusion. Exceptional. Thank you. That
occlusion. Exceptional. Thank you. That
was literally I've heard the term about a million times and I'm like, "Yeah, I have a general understanding, but that was like the most clear, succinct, direct explanation I've ever heard."
It's fantastic. Thank you. All right.
You're welcome. Well, let's go ahead and build ourselves just a really simple shader together so that we can see kind
of how shader graph works. So, what I've got here is just a simple grid texture uh with letters of the alphabet in in case I forget them. And what I'm going
to do here is what we what our final goal for this particular shader is is just to add some distortion to this texture. And along the way, we're going
texture. And along the way, we're going to learn about modifying UV coordinates.
So, what I've got here is a UV node, and this brings in the UV coordinates of the object. In this case, we just have a
object. In this case, we just have a really simple uh quad. Um, you know, a minute ago, I showed you that sphere. We
could also map this material to the sphere. But basically, what UV
sphere. But basically, what UV coordinates are is they're a way of translating 3D space into 2D. And if you think about like unpeeling an orange and
laying it out flat, that's basically what UV coordinates are. So, I'm passing my UV coordinates into my texture sampler, and that determines uh what my
final shader is going to look like. So,
let's do a little bit of modification.
We're going to change the UVs just a little bit. So, I'm going to drag a wire
little bit. So, I'm going to drag a wire out here, and we're going to use an add node. So I have my UV coordinates and
node. So I have my UV coordinates and now you can see them in this preview here. Our UV coordinates go from 0 to
here. Our UV coordinates go from 0 to one on the UIS which is horizontal and they go from 0 to one on the Vaxis which is vertical. And I'm just going to modify
vertical. And I'm just going to modify them by adding some very small values here. So if I add 0.2 to my UV
here. So if I add 0.2 to my UV coordinates and then wire that in. Now
you can see that my grid has shifted over by 20%. And I can change this value. I can
20%. And I can change this value. I can
make it like 3 4.5. And you can see that each time I
3 4.5. And you can see that each time I change that, it's moving my UV coordinates over slightly. So I'm just taking that UV value and adding uh a value to it. And it's moving
horizontally because I've only added it to the first to the U and not to the V.
Um, so if I wanted to change it vertically, I could add a value here like 0 2. Now we can see it's scrolling vertically instead of
horizontally. So that's how to move UV
horizontally. So that's how to move UV coordinates around. We can move UVs with
coordinates around. We can move UVs with the add node. If I want to animate the UV
node. If I want to animate the UV coordinates, I can add a new node called time.
And time will bring in a value that is just continuously incrementing. As long
as I have the editor open or I'm running the game, time is a value that just goes up and up and up and up. And so if I take time and plug that into my ad node,
now my UVs are scrolling because there's a value being added to them that is continuously going up. That is
hypnotizing in I'm just stuck staring at it. All right. Uh, so um I can control.
it. All right. Uh, so um I can control.
So the reason that it's scrolling diagonally is because I'm adding the same time value to both the U and the V.
So it's moving the same horizontally and vertically. Um, and I can control how
vertically. Um, and I can control how fast the time is moving if I multiply the time by another value. So here's my
time node. I'm going to multiply that by
time node. I'm going to multiply that by a vector 2.
And then I'm going to plug this into my ad. So with my
ad. So with my time, and right now I'm multiplying it by zero here. And so you see it stopped
here. And so you see it stopped scrolling because multiplying anything by zero is going to result in zero, which means it's not going to scroll at all. But if I want to control how fast
all. But if I want to control how fast it's going, I can add a value here. So
now the U coordinate is scrolling at a slower rate because I've multiplied time by 0.1. So I've slowed it down. Um, and
by 0.1. So I've slowed it down. Um, and
I can control this. If I wanted to go really fast, I can multiply it by five, you know, um, 0.4. So we can control the
speed here by multiplying time um, by a value. Um, and I can make it go
value. Um, and I can make it go different speeds in the U coordinate and the v coordinate sort of like this. So
now it's going at speed 04 horizontally but then at 0 2 vertically. Pretty cool. I like it.
vertically. Pretty cool. I like it.
Okay. So there was a moment there where it was like it went from hypnotizing to like nauseating as it was just flying through. But I like that we're back to
through. But I like that we're back to the hypnotizing. That makes me happy.
the hypnotizing. That makes me happy.
All right. All right. So um this is great. But up until now, we've been
great. But up until now, we've been manipulating our UV coordinates kind of uniformly, like as a block altogether.
And what we want to do now instead is change our UV coordinates a different amount per pixel. And the way that we're going to
pixel. And the way that we're going to do that is with another texture. So, I'm
going to come down here and add another sample texture 2D node.
And I'll just go out and pick a texture that I have. Let's see. I think it's called noise. Yeah, soft noise. So, this
called noise. Yeah, soft noise. So, this
texture is just kind of a bunch of like random noise. And each of the channels,
random noise. And each of the channels, the red, the green, and the blue channel have a different noise pattern.
And so what I can do is instead of scrolling this texture over here, I can take these nodes and use them to scroll my noise
pattern. So here are my UV coordinates.
pattern. So here are my UV coordinates.
I'm adding the animated time and I'm going to I'm going to move these UVs over. And now I'm scrolling the noise
over. And now I'm scrolling the noise where before I was scrolling that grid.
Okay. And what I can do now is I'm going to take these two nodes here, the UV coordinates and the add node, and just copy and paste
them. And we're going to plug these
them. And we're going to plug these coordinates into I'm going to be adding to my UVs this noise. So instead of adding a uniform
noise. So instead of adding a uniform amount, I'm adding whatever the value of the noise is. So I'll plug my noise
texture in here. Whoa.
Oh, psychedelic. Yeah. And so now you can see that the the UV coordinates are offset, but they're offset by a lot. Um,
that's a little too much. We talked
about, you know, adding some distortion to this, and that's like we turned it up to 11. And I wasn't ready for how
to 11. And I wasn't ready for how psychedelic this stream was going to be, Ben. You didn't tell me.
Ben. You didn't tell me.
Okay, so we need to tone this down a little bit. We want to distort our grid
little bit. We want to distort our grid texture, but we don't want to distort it quite that much. So, what I'm going to do is add another multiply. And the value coming out of
multiply. And the value coming out of this texture, we're just going to multiply it by something small like 0.04, just to tone this down like a
lot. And so now, if I take this result
lot. And so now, if I take this result and plug it in, [Music] I missed a zero here. There we go.
Okay. So, now we're just distorting it a little bit. And the reason it's
little bit. And the reason it's distorting is because for every pixel I'm adding just a slightly different amount of offset that I'm
applying. Yeah. So, that's pretty neat.
applying. Yeah. So, that's pretty neat.
No, this is great. I can already I can already see it. And we saw people from the beginning as soon as you started, they were immediately like, "So, this is how we make water." And it was like, "Okay." Like the more that we've done
"Okay." Like the more that we've done it, even like when it was fast moving, it's like, "Okay." in my brain. Oh,
that's river versus this is pond. You
know what I mean? Like, yeah, okay, I'm seeing it all come together, Ben. I'm
having a good time. I don't know if that part was clear. Nice. The problem with this is it's just a little bit too simplistic. Uh like it it can be pretty
simplistic. Uh like it it can be pretty cool, but if you stare at this long enough and especially let me just change this. I'll set it to 0.4. Now, this
this. I'll set it to 0.4. Now, this
texture is just scrolling in one direction. And if we sit and watch this,
direction. And if we sit and watch this, we can see a repeating pattern, which is not great. A repeating
pattern is not something that you want to have in your game, right? And so what we're going to do to break that up is I'm going to take this whole chunk of nodes
here and just copy them and paste them.
So now I've got two scrolling textures.
Let's say we're going to scroll this one by 0.3 and 0.12. Something like that. And then this
0.12. Something like that. And then this one we're going to scroll by 0.15. I'm just thinking of random
0.15. I'm just thinking of random numbers here. I was going to ask if
numbers here. I was going to ask if there's like nothing special about these values. Uh let's do like
values. Uh let's do like 0.23. Okay. So now we've got this
0.23. Okay. So now we've got this texture that's kind of scrolling in that direction and this other texture that's scrolling in that direction, right? And
we could even So, they're kind of going in relatively the same direction. But if
I add a negative over here, we can make this one scroll like the opposite way.
Wow. And then I can take the results of these two and add them together. And so now we've got like this
together. And so now we've got like this really complicated interference pattern going on with the two textures scrolling in different directions at different rates.
And with that, we can plug the result of that into our multiply here now. And now
we've broken up that repeating pattern. And if we take a look at our
pattern. And if we take a look at our preview window again, now we've got a distortion that is not repetitive because those two
things are going at different rates and different times. And so if you watch
different times. And so if you watch this for a while, you can't really see the repetitiveness of it. I don't know why, but this is just so it's so fun in my brain. I just I can't even put a
my brain. I just I can't even put a finger on it. Um I do want to bring in a question, Ben. Uh from Jiad Ruani said,
question, Ben. Uh from Jiad Ruani said, "Those nodes are red. Is that an indicator that they are performance intent intensive?" Ah, that's a great
intent intensive?" Ah, that's a great question. So right now, yeah. So we have
question. So right now, yeah. So we have this drop down up here called color mode. And the color mode determines uh
mode. And the color mode determines uh that what color this little stripe is on the nodes. So right now our color mode
the nodes. So right now our color mode is set to category. And if we if we look at so I'll hit the space bar here and bring up this list of
categories. Um so we have artistic
categories. Um so we have artistic channel input. The red nodes red color
channel input. The red nodes red color uh corresponds with the input type. So
that means we're bringing in data from outside the shader. So like the UV coordinates for example, we're bringing in from the mesh. Time we're bringing in
from the game engine. Uh sample texture 2D is bringing in textures from outside.
Um so red in this case indicates the category that we're of the node. Okay,
cool. And then blue is indicating math.
So we're doing an add, we're doing a multiply. Um, and the reason that we add
multiply. Um, and the reason that we add those colors is so that if you're zoomed way out here, you have a whole bunch of nodes. You can just see like at a glance
nodes. You can just see like at a glance what what nodes are coming in from outside the shader, what nodes are doing math, that sort of thing. Uh, we also
have but uh to your point u the person that asked the question, we have another category in here called heat map.
And this category does what you thought it was doing. Oh, okay. Cool. Yeah. So
the colors now indicate how expensive the nodes are relative to one another.
So the brighter a node is, the more calculations the GPU is doing to to for that particular node to to create a
result. So for example, if I bring in
result. So for example, if I bring in the Voronoi node, you know, this one's this really bright yellow color indicating, wow, this one's going to be pretty expensive. But then over here,
pretty expensive. But then over here, you know, we have some nodes like our UVs, our time, our vector 2. Those are
black indicating they're not requiring any calculations at all. Okay, great
question. Yeah, and like also three or four people in chat on both Twitch and YouTube are like, "Oh, that is a good question." Like crushed it. And that's
question." Like crushed it. And that's
why I like these kind of like the live stream atmosphere, right? It's like if you do want like really specific, straight to the point tutorials, go check out Ben's channel. However, if you want to come and kind of have this
moment where you can ask questions and learn together and hang out with fellow people that are working on sim similar projects or looking for similar information, this is a live stream community spaces. It always makes me so
community spaces. It always makes me so happy to have these kind of moments.
Sorry, I digress. Go ahead. All right.
So, as you might imagine, shader graph is a very deep tool and I'd really love to be able to show all of it on our stream today, but it would take a lot longer than the just the couple hours we
have. So instead, what I'm going to do
have. So instead, what I'm going to do is show some resources that you can use to learn shader graph
yourself. So uh I once heard it said
yourself. So uh I once heard it said that if you want to keep something secret from the Unity community, all you have to do is put it into the asset
manager or the package manager. Sorry
about that. Package manager. Yeah. Yeah.
Yeah. Um, and so unfortunately our sample content is hidden in that super secret spot called the package manager.
Um, and if you don't tell anybody and you're really secret about it, I will show you where to find that. Now, so if we come up here to the Unity editor, and I apologize, the text on these menus is going to be really small. Uh, but
hopefully you can find it anyway. If you
come up to the window menu and you come down here, there's this item in the window menu called package manager. So, we're going to open up
manager. So, we're going to open up package manager and there's this whole list of packages that you have in your project. And if you select the shader
project. And if you select the shader graph package, um, by default, you're going to have the description tab selected and it tells you kind of what shader graph is. But if you switch over
to the samples tab here, you're going to see this list of sample
packages. And what I'm going to show you
packages. And what I'm going to show you today is the the last three uh packages here on the list, the node reference sample, the feature example sample, and
the production ready shader sample. One
of the things, one of the feedback items that I receive from the community is, hey, you know, shader graph as a tool works really well, but as a creator, if
I create a new shader and I come into it, this is what I see like it's just completely blank. And how do I get
completely blank. And how do I get started with that? If I want to learn shader graph, this is kind of intimidating. My canvas is completely
intimidating. My canvas is completely empty. I need somewhere to start. And so
empty. I need somewhere to start. And so
what we've provided with these samples is a way to help people get started learning. Uh so let's first talk about
learning. Uh so let's first talk about uh the node reference sample. Um by the way, if you want to add these samples to your project, all you have to do is hit these import buttons over here on the
right. I've already imported these three
right. I've already imported these three packages. And so right now they say
packages. And so right now they say import, but on your in your project they're going to say import. And you
just hit that and it will bring all the sample content in for your into your project to explore. And so for the node reference
explore. And so for the node reference sample, the node reference sample is kind of like an encyclopedia entry for each of the nodes in the graph. Um, so
again, if I hit the space bar here, it's going to bring up the menu and I can if I if I already know the name of a node, I can search for it. like we we already
searched for the ad node, uh the time node, that sort of thing. But if I don't know the node's name and I want to find it, I can hunt for it for by category.
So, I'm going to expand the math category here. Let's say I want math
category here. Let's say I want math basic. Here's a bunch of nodes in here.
basic. Here's a bunch of nodes in here.
But all I get is the name of the node.
And what I'd really like to see is a description of that node, maybe some examples that I could kind of see visually to know what is this node
doing. And so the node reference sample
doing. And so the node reference sample is exactly that. So let's take a look at a couple of examples. So here's the content that came in for the node reference sample when I imported it.
It's under assets, samples, shader graph, and then your version number. And
then here's the node reference sample content. And if you take a look closely,
content. And if you take a look closely, these folders here match the categories that are in our menus. So it's really easy to find uh the node that you're
looking for. So let's take a look at
looking for. So let's take a look at some examples of these. In the shader that we built just a minute ago, we used a node called sample texture 2D, and it
was red, meaning that it's an input. So,
we come into our input folder and here are all the the nodes and so we can just find the one that's called sample texture 2D and open
it up. And so, it's a shader
it up. And so, it's a shader graph, but it's not meant to be a shader. Like I said before, it's kind of
shader. Like I said before, it's kind of like an encyclopedia entry. Okay? So,
instead of just providing uh um just a text description, it actually has a bunch of visual examples. So here at the top we have the node itself and then
some descriptions of the inputs to the node and then a description for what the node does in general. And if we zoom out here you can
general. And if we zoom out here you can see that um you know just like I said before we have a color map a normal map and a mask
map texture. And we're kind of showing
map texture. And we're kind of showing hey this node can sample all these different kinds of textures. Um if you want to use this node to unpack a normal
map, this is example of how to do that. Um if you want to store other data
that. Um if you want to store other data in together with your normal map, this is an example of how to do that. And so
basically just kind of generally um for every node almost every node that's available in the library we have a graph like this that explains what the node
does and shows a whole bunch of examples of how to use it. Uh so let's take a look at a couple
it. Uh so let's take a look at a couple of other examples of this. Uh here's our time node. This one's really flashy
time node. This one's really flashy because time animates all over the place.
So, we've got our time node and a description of what the time node is bringing in. And then we've got a whole
bringing in. And then we've got a whole bunch of examples of what you can do with it. We already took a look at
with it. We already took a look at scrolling. Um, using time together with
scrolling. Um, using time together with fraction makes a looping pattern. Um, using time
pattern. Um, using time uh we can create we can use the sinet time output of the time node to create a wave. So you can see that here this is
wave. So you can see that here this is getting brighter and then dimmer and then brighter again and then dimmer. So it's just like this
dimmer. So it's just like this constantly rolling wave.
Um here's uh an example of how to make a bouncing pattern. So we pass time into
bouncing pattern. So we pass time into the sign node and then we add absolute.
And so this one's going to get dark and then it's going to bounce back up and get dark and bounce back up.
Uh, here's something more interesting. You were talking about uh
interesting. You were talking about uh something that's mesmerizing on this. Oh
my god. Is it ever zoom into that and you can get all the mesmerization you want. Ben has just collectively
want. Ben has just collectively hypnotized everyone watching this video and now has access to our bank accounts or something something nuts like that.
Yeah. All right. So, this is just this is just a lot of fun. It's it's a whole bunch of examples. Here's an example of how to create ripples
uh using the time node. And
um one of the one of the really neat purposes of this node reference sample set is that it's just good for inspiration. You can pick any random
inspiration. You can pick any random node in the library and open it up. And
here's a whole bunch of examples of how you can use that and ideas for what you could put into the next shader you're going to build.
So just a whole bunch of cool things you can do uh with the time node. All right. So we talked about the
node. All right. So we talked about the add node already. Here we are using the add node for scrolling UVs. Uh and here
we are using it to change the range of a set of values. Um so we take our UV coordinates and the U coordinate makes a
gradient and then we add 0.5 to it. So
instead of going from 0 to 1, now it's going from 0.5 to 1.5. Pretty simple stuff. Um, but it's a
1.5. Pretty simple stuff. Um, but it's a good way to learn how these things work. Here we have another node that's
work. Here we have another node that's called DDX, and it's allowing you to do derivative math in the shader.
So, here's an example of how to use the DDX and DDY node together to bring out the facets of an object. Um, so if you
feed DDX and DDY um the position of the object, it's going to give you the facets of that object like this and you can create the the face normals of the
object.
Um, and then here is an example of using the DDX and DDY to manually create the derivatives that select which MIP map to to to sample. I know I'm getting a
little bit more advanced here, just kind of skipping over the middle part and jumping right to like your PhD. I do
like seeing like, you know, here's if you have all of the knowledge and experience and go through the steps, if you do the work, here's like what you can accomplish at the end. And also I
like the sound of mip maps. So
all right. Uh so one more example. Um
another mathematical operation is called a dotproduct. So we have add and
a dotproduct. So we have add and subtract and multiply and divide. But
then there's another one called dotproduct. And you might wonder like
dotproduct. And you might wonder like what the heck does a dotproduct node do?
And so there's a description of what a dot product is and what it does. In this
case, this under the and a lot of a lot of the graphs here have this section here where it says under the hood. And
what this is showing is if you were to break into the dotproduct node and look inside it, this is the math that it's doing under the hood. Okay. Um so we
just take the vector that's coming in, split it up, um and multiply. So we have two vectors coming in actually. we split
them and then multiply the the x and the x or in this case it's using r and r. Uh
by the way this rgb stands for red, green and blue. You can also interchangeably use x y and z for these values as well. So we're just multiplying the first component by the first component, the second component by
the second component, third component by the third component and then adding the results together. And that's what a dot
results together. And that's what a dot product does um in a very technical way uh or way of describing it. But then we come over
describing it. But then we come over here and we can say well what can you do with that? Well if you do a dotproduct
with that? Well if you do a dotproduct between this value here and a a texture you can turn that texture from color to black and
white. So that's one really cool use of
white. So that's one really cool use of a dot product node. Uh, another cool use is you can use it to select which channel of a texture you want to use.
So, here's a channel. Here's a texture with a bunch of channels. And I've done the dotproduct between that texture and this vector 4 here. And I put a node. I
put a one in the first channel, which means I'm selecting the red channel here. But if I were to change this and
here. But if I were to change this and set it to one here, now I'm selecting the green channel. So I can use a dot product node to allow the user to choose
which channel of that texture they want to use. Uh and then here this is a really
use. Uh and then here this is a really cool example. This is how you do diffuse
cool example. This is how you do diffuse lighting. Uh I have the normal of the
lighting. Uh I have the normal of the surface which the normal of the surface is basically just what direction is my surface facing. And then I have my main light
facing. And then I have my main light direction, which is like what direction is my main light pointing in? And if I do a dotproduct between those two
vectors, wherever they're parallel with each other, the surface is going to be bright because the surface is facing the light source. But if they're
light source. But if they're perpendicular to each other, it's going to be dark because the surface is facing away from the light. And the dotproduct is what tells me that relationship
between those two vectors.
All right. And all of this information is available in the node reference sample. So if you open this menu and you
sample. So if you open this menu and you see a node in here that you don't know what it does, um let's go into uh interpolation. Maybe you don't know what
interpolation. Maybe you don't know what the inverse lurp node does. Classic
lurps. Yeah, you can come down here and say, well uh I'll come to my math category. I'll scroll down and find
category. I'll scroll down and find inverse lurp and then I'll just open that up. And you'll have a graph just
that up. And you'll have a graph just like this with a description, a bunch of examples. And the idea here is we're
examples. And the idea here is we're trying to help people um you know figure out how to use the tool. Um and then
also hopefully provide some inspiration for um for your next shader and and how you can use these nodes in in interesting ways. No, I think this is
interesting ways. No, I think this is great and and you've to just to to add on to it like this is a resource that like we're so glad people are here, but if as Ben kind of started to describe these things, you started to get a
little bit overwhelmed. We have a number of people discussing like the advanced math that's actually happening here and fully understanding those concepts. You
can go and explore these at your own time in your own pace. I did want to bring in it wasn't exactly a question, but people are kind of asking like the difficulty with some of the shaders, the complexity of the math behind the scenes
even with shader graph. if people don't understand the theory, it could be hard to learn. Someone else followed up
to learn. Someone else followed up saying, I wonder if Ben has any recommendations for basically advanced math topics that would be advantageous to understand to kind of come back and
and apply to shaders. Any Yeah, I think the best answer to that, and this is how I learned, you just learn by doing.
Um, I think it's best to just jump in and think of something simple that you want to try to accomplish and do your best to to to figure that
out and if it's not working, you know, you can you can post something in the forum and say, "Hey, I'm trying to achieve this and this is what I have so far and I don't know how to go to the
next step." Um, you know, I answer
next step." Um, you know, I answer people's questions in the forums every day. Um, and so I think it's best to
day. Um, and so I think it's best to just jump in and try things and you can use a reference material like this, um, to look up the basics to see what
individual nodes do and how they work together. Um, but if you have an
together. Um, but if you have an objective in mind that you want to achieve and you just start wiring nodes together, like if you were writing code,
you know, it and you and you wrote the code wrong, it wouldn't compile and you wouldn't know what to do to fix it. And
that's hard. But shader graph is meant to be user friendly. So you can wire pretty much any node with any other node and it's not going to slap your wrist and say you're wrong. It's just going to
give you results that you didn't expect, right? And so you want to just keep
right? And so you want to just keep trying and um kind of moving forward. Um
also you know there are a lot of videos available. Um and that kind of brings me
available. Um and that kind of brings me to the next example that I wanted to show which is the feature example sample. So let me show you that while
sample. So let me show you that while you load that up and I do want to let everybody else know as well that continue to ask these questions if we find an opportunity to kind of like oh as we're wrapping up or hey while we're
talking about it I can bring in those questions. However, I am kind of
questions. However, I am kind of earmarking a number of these for some some Q&A to kind of end the stream. So,
if you do have questions about Shader Graph, about Ben in general, or Ben's YouTube channel, which you should definitely go and check out. Uh, feel
free to ask those questions and we'll we'll do our best to find an opportunity to answer them all. Jackson, you're
plugging that so hard. We got to, you know, we're here to support each other.
That's what we do. We want to be good partners. Yeah, I appreciate it. So um
partners. Yeah, I appreciate it. So um
let let's talk about the feature example sample which is this next one that I that I wanted to cover. Um there are a lot of really popular shader techniques that you might have heard of that you
want to try in shader graph. Um, soam,
for example, um, the Spider-Man game is really popular right now. And if you, uh, climb up the side of a building as Spider-Man and look in the windows, um,
those, uh, windows are using a, uh, a feature that's called interior cube mapping. And there's really actually
mapping. And there's really actually nothing inside the building, but they're able to fake the appearance of an interior using interior cube mapping.
And that's something that you can do in shader graph. So you might have heard of
shader graph. So you might have heard of techniques like that and just kind of be like that's what I want to do, but I have no idea where to start. And this
kind of gets back to the question you asked a minute ago. How do I figure that out? And the feature example sample is a
out? And the feature example sample is a sample that I put together by just brainstorming like all of the coolest features that I could think of. I had a
ton of fun with this, by the way. And I
just made all of those things and put them into this sample. So, if there's something you're curious about, I want to do parallax occlusion mapping or I want to make the water animate like you
saw at the beginning of the stream uh on the surface of that lake. How can I do that? Well, if you import this set of
that? Well, if you import this set of samples into your project, um you can you can take a look at all of those. So,
let's open up the scene.
So, I'm just going to come in here to samples shader graph the version feature example sample and then scenes. Uh, and
we'll open up the URP version. And so what this is is it's
version. And so what this is is it's just a giant collection of dozens of things that you might want to do in shader graph.
This is very cool. You've shown me this before, but so we're going to explore it briefly. But Ben, did you also create
briefly. But Ben, did you also create this? Yes. All the samples that I'm
this? Yes. All the samples that I'm showing you today, uh, this is coming from me. I had some help from a bunch of
from me. I had some help from a bunch of other people, but I'm one of the main contributors to this content. Very, very
cool. Okay. So, um, if you select this first item here in your hierarchy panel, that's going to bring up this description of the project uh, over here in the inspector, and you can use this
to navigate the project. So, there's a description of the samples. Uh, and then here there's a drop down and you can see all of the different samples that are available. And if I pick one, it'll jump
available. And if I pick one, it'll jump me right to it. So, I'm going to pick interior cube mapping and it's going to jump the camera right to that selection.
And here I can see like a very simple cube and it has uh windows that I can look into and see their interiors. So,
if I Let me just uh maximize this so that we can get a good view of everything. It's going to take a minute
everything. It's going to take a minute to save first. Okay. So, if I zoom in a little bit and then rotate this cube, you can see if I'm looking in this
window here, it looks like there's an interior inside this. I'm going to call it a building, but it's actually just a cube. You know, it's a simple example.
cube. You know, it's a simple example.
Um, but it looks like there's a room in there. Mhm. And there's really not. If I
there. Mhm. And there's really not. If I
switch to wireframe view and then zoom out, you can see that this is just a straight up cube. And so we're using the
shader to fake the the to fake the appearance of interiors.
And the nice thing about the way that this sample is set up is um here I have a description of the sample itself, but if I want to look at how the shader works, I can just click right here and
boom, here's my interior cube mapping shader. And it's just that easy. Like
shader. And it's just that easy. Like
you can you can take the nodes here, copy and paste them into your own shader, and you've got the effect. And
you can pull this apart. You know,
there's a really kind of there's a kind of complicated subgraph going on here that creates the UV coordinates. But the
nice thing is like I've done this for you. Like you don't have to reinvent the
you. Like you don't have to reinvent the wheel and figure it out. Like you can just come in here and here's your shader and you know uh use it uh for whatever you'd
like. Uh so let's take a look at another
like. Uh so let's take a look at another example. Um we're going to look at the
example. Um we're going to look at the parallax occlusion mapping example. So,
I'm going to pick that one from the menu. Um, by the way, you can navigate
menu. Um, by the way, you can navigate this yourself. Like, you can move
this yourself. Like, you can move wherever you want in here. I'm just
using this drop down because it's convenient. Um, but what I've got here
convenient. Um, but what I've got here is another cube. All there is here is a cube. Like, there's no actual surface on
cube. Like, there's no actual surface on this thing. Um, but if I select this
this thing. Um, but if I select this material, I have a drop down here that allows me to switch between the different modes. So, if I pick
different modes. So, if I pick normal, oh, it's going to take a minute to compile there. But what you can see here
compile there. But what you can see here is normal mapping is pretty cool. Um,
but if you look at it kind of at a a glancing angle, uh, it looks uh, just a bit flat. Mhm. But then if I drop this
bit flat. Mhm. But then if I drop this down, I can pick parallax mapping. And
parallax mapping adds a little bit more depth to the surface. So, as I'm moving around, you can see the cobblestones look like they're kind of pushing out of the
surface. But if I look at it at a really
surface. But if I look at it at a really um, you know, sharp angle like this, it kind of falls apart. And so, we have a third option which is called parallax
occlusion mapping, which is really realistic looking. I mean, this is like
realistic looking. I mean, this is like super convincing that they're actual cobblestone shapes on this
surface. Um, but there aren't. It's all
surface. Um, but there aren't. It's all
fake and it's it's happening using ray marching in the shader, which is a really really neat uh a neat technique.
And again, if I want to know how to do that in shader graph, I can just click open the example shader. And here's the shader all set up doing normal mapping,
parallax mapping, and parallax occlusion mapping. Um, so really neat way of like,
mapping. Um, so really neat way of like, oh, I want to do this thing. How do I do that? Find it in here. Open it up.
that? Find it in here. Open it up.
That's how you do it. So cool. This is
so cool. And we're seeing we're seeing similar sentiment in the chat as well.
People being like, "Oh, this this exists. This is this is so powerful and
exists. This is this is so powerful and no one no one's aware." So, I'm so glad that we're able to kind of dig into it then. Yeah. And it's really easy. You
then. Yeah. And it's really easy. You
can bring it into your project right now. Just open that package manager
now. Just open that package manager where everything is hidden and nobody knows about it and it's in there. You can grab it and pull it right into your project.
Mhm. Okay. Third example. Um, in the scene that I showed at the beginning of the stream, we had that cool wavy water.
Um, and if you want to see how to make those waves, I can choose the Gersonner wave example.
And here I have a plane that is animated. I'm using the vertex shader to
animated. I'm using the vertex shader to offset the vertices here. So they're
moving in a wave pattern. If I select this object and go to my wireframe view, it's a little bit more obvious what's happening here. I just have a couple of
happening here. I just have a couple of waves that are um moving across the surface and adding together uh to create this really neat like rippling water
effect. Uh, and again, if I want to see
effect. Uh, and again, if I want to see how to do that, I can just open the example shader. And I have a couple of
example shader. And I have a couple of subgraphs here that are called Gersonner waves. So each of these individual nodes
waves. So each of these individual nodes here is creating one wave. And then I'm just adding the three of them together with these nodes so that they crisscross each other. Kind of like that distortion
each other. Kind of like that distortion was doing that I showed a little bit earlier. Um, but in this case, instead
earlier. Um, but in this case, instead of offsetting the UV coordinates, they're actually offsetting the vertices, the positions of the vertices. So, if we take a look at our
vertices. So, if we take a look at our scene here, um, we have, you know, dozens of these, um, examples, a couple of different ways
of doing reflections. Back here, we have a tripplaner projection example.
Um, we have a flip book example for for how to create explosions and other animated texture effects. Um, here's a flow mapping example that allows you to
make make a surface look like it's flowing in a bunch of different directions. Uh, what else? We have some
directions. Uh, what else? We have some procedural shapes and patterns here. Um,
here's how to do a couple of different kinds of detail mapping. Um, yeah. So,
this is just a like a really rich set of all kinds of different features that you might want to do uh in shader graph.
Here's some examples of how to create a particle system in shader graph. I
especially love this one. Most people
might be familiar with VFX graph or uh sirukin I think it's called um the the built-in particle system in Unity, but you can actually create your own particle system right in shader graph if
you want to. Um, so here are some examples of how to do that. Oh, and then lastly down here, um,
that. Oh, and then lastly down here, um, this is kind of what the person a little bit earlier was, uh, referring to when they talked about, um, the the Marvel
rivals style, the visual style. Yeah.
These are some examples of how to create custom lighting models in Shader Graph.
Um, so this one, it might look like the built-in physically based shader, but this is actually built in shader graph itself. Um, here's one that is
itself. Um, here's one that is simplified. There are a couple of
simplified. There are a couple of reasons you might want to change the lighting model. One of them is because
lighting model. One of them is because you want to make it cheaper. You want to figure out how to, you know, if you, if you're making your game for XR or a low-end mobile device, you want it to
run faster. If you make your own
run faster. If you make your own lighting model in Shader Graph, you can remove features so that it runs a lot faster. And the other reason you might
faster. And the other reason you might want to do that is so that you can stylize it. And this is an example of
stylize it. And this is an example of where I've taken the shading on the surface and chopped it into uh we'll call it posterization or quantization.
So instead of it being a nice smooth gradient, it's this uh it it starts looking like cartoon paint, right? Um so
here's an example of how you can customize the lighting using shader graph. That's so rad. And so a lot of
graph. That's so rad. And so a lot of your content is going through I'm correct me if I'm wrong because it's it's it was a quick skim of your channel, but is going through specific styling. Yes. Of of these custom
styling. Yes. Of of these custom shaders. Correct. Yes. Yes. So just last
shaders. Correct. Yes. Yes. So just last week I published a video on how to create a film noir look. Uh cool. Just
this morning I published one that makes your scene black and white, but wherever you place point lights, uh inside the radius of the point light, it colorizes the world. Cool. Uh, so these are some
the world. Cool. Uh, so these are some really unique and interesting things that you can do when you're using shader graph to uh control how the lighting works in your project. I wonder if we
could do series embedded. Now I'm just spitballing ideas. This doesn't have to
spitballing ideas. This doesn't have to go anywhere, but where we pick a game or a scene and we're like, "Hey, what can we recreate that on a stream? Can we
recreate that as a shader?" I think that would be really fun. Yeah. Yeah, that
would be. Okay. So, uh that is the uh the node reference sample, the feature example sample, and the third
sample that I want to show you is the production ready shader sample. And the
way that we're going to do this, so uh the the process that I went through when I was creating this production ready shaders sample is and this is the scene that I showed you a little bit
earlier. Um we had a a hack week last
earlier. Um we had a a hack week last year and I spent that hack week. This is
something cool that we do at Unity, by the way. We we take a week and we're
the way. We we take a week and we're like think of a project that's super cool that you've always wanted to do and just spend a week and do it. And I
absolutely love that about Unity, by the way. But I spent my week building this
way. But I spent my week building this environment and I brought together like all the information that I understand about building environments from previous games that I've worked on. Um,
so I created rocks and water and terrain and trees and um, some of these assets I brought in from other sources just because I didn't want to spend a lot of time in the week building assets. I
wanted to assemble them to make an environment. Um, but I put all the cool
environment. Um, but I put all the cool shader examples into this thing and then I was like, "Wow, I'd really like to share this with people and I thought,
well, I can release uh a package of sample content with the shaders that I used to build this environment that are just ready for people to use. Uh, and so
that's exactly what I've done and that's what is in the production ready shaders sample. So, we'll open that scene now.
sample. So, we'll open that scene now.
So, I'm just going to come to samples shader graph production ready shaders scenes and we'll open this one
up. And I'm just going to maximize this
up. And I'm just going to maximize this here so we can see what's going on. And
again, this is similar to the feature example sample where I have kind of a museum style layout of all the different shaders that are available here. And I
if I just kind of zoom back here, you can see that I took all the shaders that were available or that I'd made for that uh waterfall scene and I kind of dissected them and laid them all out so
that you can see what we have. Um so
here I have a bunch of decals uh or decals, whichever you What do you say? I
say decal. Me too. Every time I hear decel I'm like come on. Yeah, that's a that's a United States pronunciation.
Yeah. Another big one because we're Canadian. Um is uh mobile mo mobile like
Canadian. Um is uh mobile mo mobile like uh mobile and mobile. We say mobile.
Mobile is another one. Yeah. Right. And
then any any like iteration of that hostile, hostile. Anyhow, I did a lot of
hostile, hostile. Anyhow, I did a lot of traveling in my 20s. I spent a lot of time in America and I've just noticed these small nuances. Whatever. Ignore
me. I'm here. Okay. So, on this particular platform, what I've got is decals. And um so this is a decal that
decals. And um so this is a decal that projects a material. So I've got my cobblestones material and I can project it on uh you know if I turn on let's
see. Yeah. So you can see I've got this
see. Yeah. So you can see I've got this box here and whatever intersects the box uh that's where this material will be projected. Um I have another one here
projected. Um I have another one here that is for water costics. So, I can project these water
costics. So, I can project these water costics on anything. And this is how I did the costics that were under the stream. I used a decal like this. Uh,
stream. I used a decal like this. Uh,
here's one back here that makes surfaces look wet. And so, I could just place
look wet. And so, I could just place this decal anywhere I want and it makes things look wet. And then here's one that's similar, but it has like water streaming through it. So, if we switch
back to our scene over here, you can see over here like behind the waterfall, this is that decal that I'm using where the water is like streaming
down the rocks. So, cool. And then over here, I've got the material decal. So,
I'm able to take the mud from the ground here and throw it up there on that rock because I'm using a decal that has mud mapped to it. And then obviously here
are the water costic decals.
So, I basically taken all of the pieces that I put together to make that environment and I've laid them out here so that you can see we've got, you know, water streaming decals, water wetness
decals, water costics decals, and then materials that you can use to apply um material like terrain materials for example up onto other objects. Um, so we
have decals and then here is the um the section where we're using where I'm I'm I've created terrain uh detail materials. Um, so I have some clover
materials. Um, so I have some clover uh some ferns and there there are two kind of really important features for these
kinds of objects. You want them to blow in the wind and that's happening in the shader. So, I'm animating the movement
shader. So, I'm animating the movement of the wind in the vertex shader. And
then you also want these kinds of objects to look like they're translucent, like shining, light is shining through the backs of them. And
so, those are two things that the shader is doing. And if you want to see how,
is doing. And if you want to see how, you can open up that shader and take a look at how that's done. Uh, I have some sort of like broadleaf undergrowth
objects over here. And then over here, I have my grass.
It's so captivating. I'm just like even the wind in the ferns. We had people sewn on Twitch calling it out and I'm just staring. I'm just I'm I'm drawn in.
just staring. I'm just I'm I'm drawn in.
This is beautiful. Oh, thank you. Really
glad you like it.
Mhm. Okay. So, that's terrain details and these are the kinds of things that you can paint onto the surface. So
Unity's terrain system allows you to pick the meshes and then, you know, you can brush onto the surface where you want these objects to apply. So if you want to see what those look like in
context, I can bring up my scene over here and then just come over here. And
so here you can see the grass and then the sun in the scene is over there. And
you can see that as I look through the grass toward the sun, the light's shining through it, uh, and kind of lighting up the grass from the backside.
Um, that's the translucency effect that I've applied in shader graph. I feel like I'm learning so much,
graph. I feel like I'm learning so much, Ben. I'm sitting here just like, I need
Ben. I'm sitting here just like, I need to learn this tool. So maybe in addition to getting you to create specific shaders, maybe we do a series where I just sit here and and you coach me through everything and I want to learn.
Now genuinely like it's so fun to be able to be a part of these tutorials um and these types of live streams because I end up finding them so inspiring and I hope that our audience does as well because literally leaving this I'm like
I want to learn this tool. This is so impressive. This is so cool. Yeah, I I
impressive. This is so cool. Yeah, I I have fun with this stuff every day and like my biggest hope is that I can just share some of that joy that I have doing this kind of work with everyone. Um, you
know, honestly, if this is something that you're interested in, download these samples and take a look because, you know, I' I'd love for you to have some of that same feeling of creation
that I get when I'm making this kind of stuff. Um, so here is a rock shader that
stuff. Um, so here is a rock shader that I put together. Um it does simple base textures but then it also blends in um some larger normal maps and macro
detail. Um it blends in micro detail and
detail. Um it blends in micro detail and then it also blends in color projection and moss projection. Um so if we come back here and take a look at this moss,
you can see that the rock has moss on top, but then if I rotate the rock like whichever direction is up, that's where the moss is going to be projected. Um,
and you you don't have it doesn't have to be moss. You can put sand on it or you can put snow on it or, you know, you can make it wet. U, you can do all kinds of things using this rock shader. And
then over here, uh, if I zoom in kind of close, you can see that this one has raindrops on it and it's got little rain ripples dripping down the sides and that sort of
thing. Yeah. So, that's my rock shader.
thing. Yeah. So, that's my rock shader.
And then here I have some examples of the water that I had to create for that scene. Um, so for the little pool that
scene. Um, so for the little pool that shows up underneath the waterfall. Um,
this is one where I've taken that example of the waves in the feature example sample and kind of moved it further. I've added the waves, but then
further. I've added the waves, but then I've also added reflections and refractions and foam and all the rest to this so that you can use it for a little animated pool.
Um, here's an example of a shader that you could use for a lake. And then here's one that is for a
lake. And then here's one that is for a stream. And the thing that's interesting
stream. And the thing that's interesting about this, let me see if I can find a good example where this is a little more clear. The water is moving, but it moves
clear. The water is moving, but it moves faster in the middle and slower on the edges. And so this is what I used for
edges. And so this is what I used for the stream in the example.
If we come over here to our stream, I don't know, there's a lot going on in here, so it may not be super visible, but the stream moves kind of quick in the middle, and then the
further toward the edges of the stream you get, like the slower the flow is moving. Uh, and then I also have this
moving. Uh, and then I also have this object, which uh allows me to create these little transitions. So, the stream is coming along and then it dips down and keeps going. So, I've got a plane at
the higher elevation and another plane at the lower elevation. And then this object here, which allows me to bridge between those two. Uh, and that one
Whoops. There is my desktop.
Whoops. There is my desktop.
I'm a big Lord of the Rings fan, by the way. Good, good, good, good, good. I
way. Good, good, good, good, good. I
know. I feel like that's going to earn you some some credit here as the inverse. I think it's great. My computer
inverse. I think it's great. My computer
name is Thandil for those of you that I think mine's Starscream. Actually, my
work laptop's name is Starscream, which is a Transformers reference. It's fine.
So, there's that waterfall object. And
if I switch into scale mode, depending on how how far apart the objects are, I can just scale it vertically. And then
it changes the the lower elevation. So,
I can raise and lower it to match where the water is uh in the base or in the in the next tier down.
Okay. So, that's uh a couple of examples of water. And then over here,
of water. And then over here, uh I've got weather effects. And this is not something that I didn't show off in the um in the scene that I've been showing you, but I really like weather
effects as well. So, um I decided to include these in the sample. So here you can see my typical cobblestones material, but in this case it's got a
puddle and the puddle has rain ripples and then it's got uh drips and drops happening here. Uh and if we look at the
happening here. Uh and if we look at the sides, I don't know how obvious this is going to be. Yeah, that's really subtle, but there are some little drips that are
dripping down the sides as well. Whoa.
The attention to detail on this, Ben, is just incredible. I do have a question
just incredible. I do have a question from me person. You said you put this together in a hack week. This was all done in one week or you did the scene and then you circled back to create this in a week because that's just so I had
some elements of the scene already and then I put I did most of the assembly of the scene in a week and then afterward I decided I wanted to share it with people. So I turned it into this
people. So I turned it into this examples and you know laying out all this like the little plintths and descriptions of everything that took maybe a month or two you know that's a
little bit more work to get everything organized and documented and all that kind of stuff but um the the scene itself I assembled most of it in in
about a week which is I mean it really goes to show you like Unity's really amazing. Um, and then so so here are all
amazing. Um, and then so so here are all the assets, right? I've got them laid out and there's kind of like a description of the various features, but then I've also got something going on
back here in the back. And this what this is is a step-by-step tutorial of how to take all of those assets and then, you know, just a little at a time
bring them in and arrange them so that they build a nice scene at the end. And
so if we follow these steps, I'm just going to switch back to our nice little camera view here. Um because I can I can pick the various steps. So the first
step here is to sculpt the terrain. So
you're going to use Unity's shade uh terrain tool to raise and lower and smooth out the terrain uh to make this uh look the way that you want. And in
this case, I just made a little indentation that represents the stream.
Um, so that's step one. And then we'll move along. In step two, you paint the
move along. In step two, you paint the surface materials on the terrain. So,
um, the forest has this mossy ground.
Uh, and then a little bit closer to the river, it has this like rocky area and then there's mud along the bank and then right in the river itself, uh, I've got
these like nice, uh, kind of cobblestones, cobble cobblestones material. And then let's move to the
material. And then let's move to the next step. The next step, I just added
next step. The next step, I just added in a plane and applied my river shader to it. Um, and you can see like now it's
to it. Um, and you can see like now it's starting to to feel like uh it's coming to life because it's got this nice animated water added. And then so in my
next step, uh, I'm going to put in the waterfall meshes. So here's the the
waterfall meshes. So here's the the water plane here. And I can just kind of like move
here. And I can just kind of like move that up and down to get it positioned to where it needs to be. And then here in the middle uh I have my little waterfall mesh.
Right. Right. Right. Which looks like that. And it connects like the upper
that. And it connects like the upper plane with the the lower plane. And then
plane. And then uh my next step is going to be to add rocks. Um so I'll just take my rocks
rocks. Um so I'll just take my rocks rock assets here. Some of them are scaled smaller. Some of them are larger.
scaled smaller. Some of them are larger.
and just kind of scatter them all throughout the um throughout the stream. And then I'm gonna add water
stream. And then I'm gonna add water decals. So you can see right here, this
decals. So you can see right here, this is where the um the costics pattern starts. So before
that, I haven't had any water decals.
Then you can also see I've made the banks of the stream look wet uh with that wetness decal. And it kind of helps to make the water feel like it
belongs in the environment instead of just that it's kind of sitting there. So
if we we'd look at it over here, you know, now that you've seen the wet version, if we look at this, it's like, oh well, that that doesn't really fit in the environment. Does that make sense?
the environment. Does that make sense?
Yeah. Yeah, absolutely. So we add those decals in there to add a little bit more realism. Uh and then I've added some
realism. Uh and then I've added some reflection volumes um so that we can get the uh the water actually reflecting the environment. So, if we look here, you
environment. So, if we look here, you can see that it's reflecting this uh this hillside up here. And that's done with uh Unity's reflection
volumes. Uh and then I'm going to add um
volumes. Uh and then I'm going to add um detail meshes. So, I'm adding in my
detail meshes. So, I'm adding in my little um kind of broadleaf undergrowth plants, my ferns, and then my grass and
my clover uh to just kind of help fill things out and make it feel like a more natural environment.
Um, so those are all the steps in my process. And you know, coming over to
process. And you know, coming over to the end here, I have a nice little nice little pool with the rocks and the
terrain materials and the detail meshes, you know, all kind of coming together to uh, you know, make a nice little the the
result of of all these steps. And all of the assets to make this sort of thing are available in this sample pack. So,
you know, it comes with what you need, including the shaders and the meshes and the textures, but also uh a quick little tutorial here to kind of show you step by step how to put all these things
together to make something beautiful.
This is awesome. And I'm seeing people in real time while we're doing the stream going in and installing the package or or importing the package and going through it themselves. Some people
actively helping each other, kind of tech support, getting it, finding it. um
some of the shaders aren't loading, those types of things. It's so cool to see. Uh it's great. This is an
see. Uh it's great. This is an incredible resource. I love the way it's
incredible resource. I love the way it's laid out for just every step of the way.
Self-discovery, reverse engineering, seeing something at the end and figuring out how to make it and then starting at the beginning and going step by step through it all. I feel like in terms of
a learning resource, this is incredible.
And as you said, com the bestkept secret, the fact that it is actively available. You don't even have to leave
available. You don't even have to leave the editor to make this happen. To to
get all of these learning resources is just absolutely incredible. So
everybody, I highly encourage you and I know you already are all curious about it and and inquiring and looking into it yourselves, but go and check this this learning resource out. It's absolutely
uh it's it's unhinged just how thorough this is. Thank you so much, Jackson. I I
this is. Thank you so much, Jackson. I I
really like to to learn on my own and having an asset resource like this that I can, you know, do on my own time. It's
like, oh, it's a college course on shaders, but like I don't have to go to class. I just like fire up my Unity
class. I just like fire up my Unity editor and there it is.
Um I do have one more thing that I that's part of this sample um that I didn't show yet and that is let me just fly over here
and this is something that I hope will be useful to people.
So I mentioned a little bit earlier that when people open up shader graph it's just like a blank blank canvas. They don't know like exactly what to do. And a lot of our
users have said, "Oh, let's see. Yeah,
here's our blank canvas just as an illustration." A lot of our users have
illustration." A lot of our users have said, "Well, so I'm already using the lit shader that's built into Unity." Um,
that's probably like our number one most common shader that people use. And the
lit shader is written in code. So, uh,
now I'm just going to fly back over here. I just want to show you this
here. I just want to show you this example. So, what I'm going to do here
example. So, what I'm going to do here really quick is come over here and apply this material here. I created with the lit
material here. I created with the lit shader. So, I'm going to apply it to
shader. So, I'm going to apply it to this sphere. And this is the interface
this sphere. And this is the interface that people are so used to looking at.
And it has all the different maps that you can apply. But let's say that you wanted to add a feature to the lit shader like the rain for example. I want
to take the lit shader as it is now and just add that rain effect to it. How do
I do that? Well, um, if you come up here and so here's my universal render pipeline lit showing that's what the shader is being used. If I hit this edit
button here, it's going to show me this.
Like if you have Visual Studio installed, it'll do this. It just
brought up shader code and like if you don't know how to read this, you're you're up a creek. like there's no way to to do what you want to do, right? And
so what I've done is I created a version of this lit shader that's that's in shader graph. So it's ex exact the same
shader graph. So it's ex exact the same shader. I can drop this down. I can come
shader. I can drop this down. I can come to universal render pipeline. If I have this packet and if I have this u um production ready shaders sample
installed, I'll have this um URP lit here in the menu, right? And I can switch to that and it'll recompile it.
But there's no difference at all. And
all the settings that I had set over here stayed the same. Or in other words, when I switched shaders, all my settings from the lit shader are now part of this
shader graph shader. So I was able to switch from the
shader. So I was able to switch from the the code version of the shader to the shader graph version of the shader without losing any information in my project.
And now what I can do is hit that edit button. And this is the shader graph
button. And this is the shader graph version of that shader. Whoa. And so if I want to start at this point and add things to it now, you know, I don't know how to
write any code, right? But well,
personally, I do, but as a as an example, hypothetical. Yeah. Um, now I
example, hypothetical. Yeah. Um, now I can take this and I can say, well, I want this shader to run faster. like I'm
I've been using the lit shader, but it's not fast enough for me. I want to remove from some features from this so that I can get my game to run faster or I want
the lit shader to have uh you know the the interior cube mapping that we looked at before. Now I can take this shader
at before. Now I can take this shader that's otherwise been like a black box to me and I have it in shader graph and I can do whatever I want with it. Uh,
and to me that is just like super cool.
It's it's a feature that our users have been asking for for a while and I just want to make everybody aware that it's there now. Um, so if your project is
there now. Um, so if your project is using the lit shader on all of your surfaces, but you want to, you know, your art director comes in and says like, I want to add this or that or the
other, now it's now you can do it.
Incredible. And I I love not just the knowledge and the information and the the quote unquote secrets that you're sharing, Ben, but also like the level of passion and engagement that you carry yourself with that like you keep coming
back and being like I think it's really cool and I do too and I keep seeing people that are just literally like nice, good stuff, cool like the feedback like every kind of step of the way. It's
great to kind of have everyone on the same page, but I I I'm just beside myself. It's so fun. Um was there
myself. It's so fun. Um was there anything else that you wanted to show?
Otherwise, I have a handful of questions that I pulled through. Fantastic. No,
that that brings us to the end of the content I had planned. So, I'm ready to to take some questions. Perfect. Um, I
do want to point out that this VOD in its entirety will be available on the YouTube page as soon as we're finished.
Literally, the same event, if you joined late, the whole video will exist there.
If you want to go back at your own pace, we highly encourage you to do so. I will
also have chaptered out the video um within the next day or two as well. So,
please go and check out all of those all of that information. Uh, I have been collecting Q&A. I'll try to get as to as
collecting Q&A. I'll try to get as to as many as we can. Um, but let's uh let's dive in as best we can. Before
questions, uh, Santiago Rosa on the YouTube side said this earlier in the stream. Ben, you're the best. I've done
stream. Ben, you're the best. I've done
all your tutorials on Unreal Engine and now started Unity for a new job I got.
Thank you so much for all the info that you've shared. So, you help someone get
you've shared. So, you help someone get a job and I just wanted you to be aware of that. That is Santiago, glad to hear
of that. That is Santiago, glad to hear it. Pretty cool to hear. Again, I heard
it. Pretty cool to hear. Again, I heard this from the moment that I was hired that the strength of Unity is its community. So, seeing I mean, yes, Ben,
community. So, seeing I mean, yes, Ben, you work for Unity, but putting out all of that information, you were firmly within the community as well. So, I
wonder if we had versus mode, which is again unity versus community, which side you would represent or if you're you're both. Um, questions for another time.
both. Um, questions for another time.
Uh, there was a couple of good ones here. Uh, Mule Meow from the YouTube
here. Uh, Mule Meow from the YouTube chat asking, "Do you have a favorite node or one that you think is most useful or maybe underrated?" You know, all of them have
underrated?" You know, all of them have very specific things that they're used for.
Um, I think that the DDX and DDY nodes, even though I don't use them a lot, when I need them, they're like super useful
for um because they allow you to do something um kind of outside the ordinary, which is normally when you're creating a pixel shader, you don't know
what's happening. So, the shader that
what's happening. So, the shader that you create is is determining what pixel what color each of the pixels is. And
when you when you run the shader, the pixel that you're currently on doesn't know anything about the pixels next to it. So you can't do blur or um other
it. So you can't do blur or um other other effects where you need to like get information from the surrounding pixels.
Right. Right. Um but DDX and DDY allows you to kind of hack the graphics hardware and it will tell you what the value is from the pixel to the to the
right of the of the pixel you're currently working on. and above it. ddx
does the one to the side and ddy does the one above or below. And so you're able to do things like find the slope of the surface. Um, and that's that's
the surface. Um, and that's that's really useful when you need it. Like I
said, it's not something that you use a lot, but it's really interesting to me that you can actually do that in the shader.
There's been a number of questions that I I think I can just kind of summarize.
A lot of people inquiring about um URP versus HDRP and other people inquiring about, hey, is there access to similar tools for mobile ready shaders? Any of
those types of things? Uh is this really specific? Are there other opportunities
specific? Are there other opportunities for people to learn depending on what uh they're using? Yeah. So, all the content
they're using? Yeah. So, all the content that I've showed is available for um for both URP and HTTP. I've been showing it
in URP today um but you can So, let me see here.
Um, do you want to share my screen again? Yeah, we can definitely pull that
again? Yeah, we can definitely pull that up. Um, if we look in the scenes folder
up. Um, if we look in the scenes folder here.
Hold on one sec.
Trey, can you get Thank you. There we
go. Okay, so here is the feature example sample. Uh, here's the scenes folder.
sample. Uh, here's the scenes folder.
There's a built-in render pipeline scene, an HDRP specific scene, and a URP specific scene. Oh, great. So, these
specific scene. Oh, great. So, these
shaders will work in all the pipelines.
Um, but there's a specific scene for each pipeline so that you can take a look at them uh like in their own pipeline context. And if we come down
pipeline context. And if we come down here again to productionready shaders scenes, there's the HDRP scene and the URP scene. Um, so the the content packs
URP scene. Um, so the the content packs are made to be like as widely compatible as they can be. Um, ju just to to talk about the different render pipelines and
and we we don't need the the view anymore. Trey, so um, thanks Trey. It's
anymore. Trey, so um, thanks Trey. It's
really important if you want to make your graphics like as high-end uh and as visually stunning as you want as you want to be able to do it, especially if
you're targeting like high-end PC hardware or uh the latest generation of consoles to to have an engine that supports you in that. And that's what
the goal of HRP is. We're we're trying to um provide, you know, the very like the most realistic graphics we can possibly do and in some cases even more
realistic than um the current generation of consoles can do. Um there are some settings in HDRP that are just crazy expensive, but they provide you with some really amazing visuals. And then
it's also a second goal. Um, you know, there's there's another group of people that want to be able to publish their game on as broad a platform as possible.
They want to be able to run their game on low-end mobile, you know, all the way up to PlayStation 5 and have it be flexible enough to cover that entire
base. That's the purpose of URP. We've
base. That's the purpose of URP. We've
we've created a render pipeline that targets basically everything.
and it does lack some of those like super high-end features, but that is in the in pursuit of flexibility. Mhm. Um,
and like I was talking I I talked a little earlier about um custom lighting models and URP is flexible enough to allow you to control exactly the way the
lighting is behaving. So you can create the, you know, crazy film noir look or the, you know, the tune shading or, you know, to stylize your game. And HDRP
because it's focusing the much more high-end graphics, its lighting model is very integrated. And so it's not
very integrated. And so it's not designed to to be editable because if you edit it like by um by nature, you're it's no longer realistic. if you're
changing it, um, then it's not, you know, shooting after the the most realistic graphic. So, we have these two
realistic graphic. So, we have these two different pipelines because we know that we have people with different goals and we want everybody to be able to achieve what they want. No, I like that. Thank
you for the the additional context as well. I think that's great. Continuing
well. I think that's great. Continuing
down our question list because I know we're getting a little bit tight on time and Ben, if if you have a a heart out for the end of the stream, please let us know and we can make sure to wrap up.
But if you're okay to spend a little extra time, yeah, I know there's been a lot of great questions here. Sean
asking, uh, are these samples updated?
Have they been updated recently? Are
they updated frequently? I've looked at this before, but it's been a while and I don't remember these all being here.
Yeah, so the production ready shaders sample um was first available in Unity 6, so it's the newest one. Um, the other two were available uh in the versions
just prior to that and they've all been added within the last year and a half or so. So, they're fairly they're fairly
so. So, they're fairly they're fairly new content to to the Unity editor.
Awesome. Good context. Uh, what was another good one here? Uh, hi Ben. In
Unity, when do you choose shader graph over HLSL for shaders? What makes one more intuitive than the other? And do
you ever combine them? How do you decide?
Yeah, that's a good question. Um, when
I'm writing shaders in code, I find that I'm kind of kind of more focused on, you know, do I have a closed bracket for my
open bracket? Do I have uh, you know, a
open bracket? Do I have uh, you know, a semicolon at the end of my line? Like,
there's a lot of nuts and bolts coding kind of stuff that I'm more focused on.
And that puts me sort of in my analytical brain which I don't necessarily like for doing creative work. And the thing that I find about
work. And the thing that I find about working in a tool like shader graph is that because I'm not having to think about the syntax of the code, I can
focus more on the visual effect that I'm trying to achieve. At the end of the day, all of this is math and it's using math to make art. Um, but the more that
you can get the uh the technical parts of it out of the way and allow the user to focus on the creative parts of it, the better the more beautiful things you
could create because they're thinking in terms of um, you know, the the results in the content rather than uh, you know, oh, I I typed float 2, but I meant float
three. I hope that makes sense. And so I
three. I hope that makes sense. And so I like using shader graph because it allows me to stay in my creative brain and um think about the parts that are coming together to create the results
that I want instead of like focus on the focusing on like making sure I have enough spaces in my tab and you know things like that. Yeah. Awesome. Another
one from YouTube. Jared says, "These shaders are really impressive. Is this
level of quality something that's realistic for a solo solo/indydev to learn uh and achieve or is this more of a in the realm of a technical artist career path? Is this something that a
career path? Is this something that a solo dev could pick up, learn and and execute on? Yeah, that that's a very
execute on? Yeah, that that's a very interesting questions and and it kind of hits on some like philosophical type stuff. Um it really depends on where you
stuff. Um it really depends on where you want to put the emphasis for your product.
Um, if you're a solo developer, um, you can really go down a a rabbit hole with graphics and you can spend all
your time making something that looks beautiful, but it may not be fun. And so, if you're just a solo
fun. And so, if you're just a solo developer, you may want to figure out a way of spending less time on your graphics. And I I'm kind of surprised
graphics. And I I'm kind of surprised I'm finding myself saying this, but it's absolutely true. A lot of the most
absolutely true. A lot of the most popular games by solo developers are games where they've found a way to stylize the graphics in such a way that
they don't require as much time and the developer is able I'm thinking of like Stardew Valley for example. The
developer is able to spend the time, you know, thinking about the relationships between the characters and I want to make the gardening aspect of the game fun and I'm going to make the graphics
just pixels.
Um, so if you're by yourself developing a game, you may want to find a way to minimize the amount of time you spend on the graphics so that you can spend more time making the game fun because at the
end of the day, that's that's the most important thing. On the other hand, if
important thing. On the other hand, if you want to make your game beautiful, um, we're providing samples like these
to give you a leg up to to make it so that you're not reinventing the wheel.
uh you know, all the effects that I showed today, you don't have to figure out yourself. You could just import the
out yourself. You could just import the samples that we're providing and there they are. They're done. Like you you
they are. They're done. Like you you just figure out how to stitch them all together. And so hopefully, you know,
together. And so hopefully, you know, what I'm what I'm showing and what I'm giving will help to, you know, like I said, you can spend a lot of time on
graphics, but I'm really hoping that some of these uh assets will will reduce that time. Incredible. Yeah, certainly.
that time. Incredible. Yeah, certainly.
Uh, looking at again this question list being considered out of time. Golden
character design on Twitch earlier in the stream said, "You mentioned that this is great for people without programming skills. If I'm new to
programming skills. If I'm new to shaders and shader graphs, but I am a program, sorry, am a programmer, not a program. I hope not. Anyways, no, no one
program. I hope not. Anyways, no, no one can be sure. I am am a programmer. Is
this tool and approach the best way for me to learn or should I consider the more coding focused approach?
Um in that case I would say like whichever you're more comfortable with.
Um a lot for a lot of people um you know typing out code is a little bit intimidating. Um you know if you see a
intimidating. Um you know if you see a page full of code it's just like oh no I can't handle looking at that. And in
that case, shader graph is a way a great way to get around that because you can you can get the same results and let the computer write the code for you under the hood and all you have to do is think
about what you're trying to achieve with the nodes. Um on the other hand, if
the nodes. Um on the other hand, if you're if you're um you know totally comfortable with code, that route is is absolutely uh appropriate as well. Both
methods are achieving the same things.
You know, calculating lighting, you're passing the light vector and the surface normal into a dotproduct. Uh, and then saturating the result. You can write that in code just as easy as you can
create it with nodes in the graph. And
really, it's just depends on what you feel more comfortable with. Thank you.
Thank you. Thank you. And great
questions, gang. I again been collecting them throughout the stream. Asked some
when they were applicable. Uh we won't have time to get to all of these, but I I'm very grateful that you guys are asking, that you're engaged, that you're curious, and if you have follow-ups, please go and check out Ben's YouTube channel. Uh lots of more opportunities
channel. Uh lots of more opportunities there to interact with the additional learning resources, the content. Um and
also Ben has his own comment section, so if you feel excitable, you can ask him there. Though Ben, you did mention
there. Though Ben, you did mention earlier that you do often pay attention to our discussions page and try and hop in and provide a little support when you're able. So everyone go and check
you're able. So everyone go and check out those as well. Um, I do want to bring in a question from the legend the bull on YouTube. Any tips for how to come up with ideas for fun new shaders?
Just link random things together and see what happens or are there good places to start?
Yeah. Um, some of my inspiration, like I get inspiration by playing games and a lot of times, you know, people around me that are watching me play will get really frustrating frustrated just like
uh playing Indiana Jones in the Great Servical, for example, I'll just like go up to a wall and stare at it. try to
figure out like what are they doing here? And you know my my son will be
here? And you know my my son will be pounding on the pounding on the desk saying dad like what are you doing?
Um yeah I I get inspired just by looking at what other people are doing. Also
just like going out and touching some grass. Um, no, no. Honestly,
grass. Um, no, no. Honestly,
like examining things really closely in the real world is some of the best inspiration. And a lot of times it's a
inspiration. And a lot of times it's a little bit discouraging because if you if you look at reality, it's like infinitely complex and you have to if you find something like the blades of
grass for example, you know, I spent a ton of time staring at grass and looking at like when the sun shines through it this way, what does it do? How does it look from the other side? you know, how
what does a translucency look like? You
come up with something like that. You
see it in nature and you're like, well, I want to make that in a shader and you kind of break it down. You just say like, well, it has these four characteristics and it has thousands of
other things that are that are impossible for me to achieve right now, but I'm specifically going to try to do these four things. And then you open up Shader Graph and try to figure out how
to do those things just like a little at a time. It's great. Um, I love I love
a time. It's great. Um, I love I love getting inspiration from, you know, I'll go on a camp out and just like spend 30 minutes staring at the water
and trying to analyze like what are the ripples doing when they hit a rock, you know, where is the foam forming? Um,
that that's one of my greatest sources of inspiration, honestly. Yeah. I feel
like you're not the first person that I've heard describe that creating things like this changes the way you perceive
reality. Like I pay attention to like I
reality. Like I pay attention to like I mentioned a lot of VFX artists in well not a lot but a handful of VFX artists in in you know uh film and television and those types of things and breaking
it down and just hearing them kind of explain something that you see or encounter and interact with every single day but literally breaking it down on how they would create it. It just feels
like it's a whole different perspective of experience in the world which is weird to think about but so cool. I feel
like we've broken my brain in 17 different ways today with all of the the different adventures we've been on. I
want to bring in our last question from the YouTube chat. Felipe Gamma says, "Hey Ben, any idea why anime shaders are so tough to get right? They always look
kind of metallic. Nothing like real anime. Even when studios go 3D, you can
anime. Even when studios go 3D, you can still tell. It's got this metallicy
still tell. It's got this metallicy look. Any thoughts?"
look. Any thoughts?"
Yeah, that's all about translating 3D to 2D.
Um, real anime is handdrawn. It's
two-dimensional and, you know, they they draw it on paper and then the paper's traced onto cells or scanned into the computer. In the old days, it was like
computer. In the old days, it was like cells that were painted on the back and that sort of thing, but um but they're all 2D and so you're able to do things
like maintain a consistent outline width regardless of how big the character is on the screen because you're actually drawing that outline. Um it's a
challenge when you have a 3D world and you're trying to imitate what that 2D drawing looks like because it's not a drawing. It's it's a 3D scene and so you
drawing. It's it's a 3D scene and so you run into all kinds of problems like well my character moves away from the camera and the outline gets thinner but I want the outlines to maintain their their
line width. So I have to figure out some
line width. So I have to figure out some way of compensating for the size of the character on the screen versus the width of the outline. The computer tends to do
things in a very perfect and pristine way. Whereas when you're drawing
way. Whereas when you're drawing something, you're introducing a human element of imperfection which in its own way makes it beautiful. And that's
really hard. It takes a lot of extra effort to make something not perfect in the computer. And so, you
the computer. And so, you know, I I could go on talking about this for another 20 minutes, but there there are like all kinds of things that you have
to do that aren't natural for a computer to do. Mhm. to make it feel like it's
to do. Mhm. to make it feel like it's more humanmade. Um it's it's a
more humanmade. Um it's it's a significant challenge. Um but both of
significant challenge. Um but both of for both of those reasons because you're translating from 3D to 2D and then also because you're trying to make the
computer not look perfect.
Yeah, great insight. And people already hearing you say, "Oh, you can talk about this for 20. Let's go for another hour."
So, I think there is absolutely uh an appetite and a connection here with our community and people are very interested and eager to continue to learn from you,
Ben. So, we will absolutely look into
Ben. So, we will absolutely look into having you uh for return as a guest if that's something that you would enjoy. I
would be thrilled and it seems like our community would as well. I know there's a lot more curiosities, questions, comments, concerns. Uh maybe not that
comments, concerns. Uh maybe not that last one, but if you guys have any uh time that you want to dive a little bit deeper into these things and learn a little bit more, please go and check out
Ben's YouTube channel. If you have topics that you would like Ben to cover in potential future streams, please let us know that as well. Uh leave a comment down on this video after the fact and
maybe we can find an opportunity to facilitate that in the future. Uh Ben, I want to thank you so very much for coming to the stream and and sharing all of this knowledge. Absolutely incredible
to see. Uh, I'm so so grateful. Um, and
genuinely I mean it when I say this was inspiring and I saw it from a num number of other people as well. But the way that you present the information isn't just knowledge. There's passion in there
just knowledge. There's passion in there and you make me feel like I can totally do this. So, uh, thank you again so very
do this. So, uh, thank you again so very much, Ben. Oh, you're welcome. It's been
much, Ben. Oh, you're welcome. It's been
a great pleasure to to be on and help out. Of course. Of course. We're going
out. Of course. Of course. We're going
to say goodbye to the chat. Stay there,
though, Ben. We'll come back and and connect as soon as we wrap up the stream here. Thank you again.
here. Thank you again.
And with that, Unity community, uh just you and I. Let's hang out. I want to let you know, of course, about all of the Discord and discussions opportunities.
Head on in there, check out other people's projects, find opportunities for collaborations, connect with the Unity community, and stay up to date on what we have going on, when, and where.
We are live on these YouTube and Twitch channels twice a week, Thursdays and now Tuesdays as well. We are looking to bring you the latest and greatest in content. It is my job, my responsibility
content. It is my job, my responsibility to do that. So, you being here means the world to me. Thank you so much for supporting the work that we're doing. We
are hoping to continue to bring together indie devs from all over the world and give you all a space to learn, grow, develop, feel inspired, and just hang out and connect. So, every Tuesday and
Thursday for the next three months, look for some content. And of course, the last Friday of each month, we're doing a video game related game show. We've
already done it twice. It's been very fun. The next one will be bigger and
fun. The next one will be bigger and better, and we'll continue down that trend. We have our next stream coming up
trend. We have our next stream coming up next Tuesday. That is at uh 12:00 p.m.
next Tuesday. That is at uh 12:00 p.m.
Eastern, 900 a.m. Pacific. That's 5:00
p.m. GMT. On May 13th, we will be joined by Ben Lavender from Kinetic Games, the team that has created Fasmophobia, and
he will be talking to us about how fasmophobia builds fear. This was a presentation at GDC uh that we have taken adapted and we are very excited to
come and hang out and show you all of this. If you guys have been around a
this. If you guys have been around a long time, Ben joined us with CJ uh at Unite in Barcelona last year. It was
very fun to sit down with that team.
They're very knowledgeable, charismatic, energetic, passionate group as well. So,
please come and check out that stream.
Uh lots to learn, lots to learn about literal fear mechanics in their games.
And I think that brings us to the end of the show, everybody. Again, thank you so very much for hanging out here. Tuesdays
and Thursdays. Uh my favorite days of the week, being able to come in and hang out with each and every one of you. Uh
we of course have more bends uh on the horizon. Lots more content, lots more
horizon. Lots more content, lots more streams. Uh please again, keep giving us keep giving us your feedback. If you
want to see specific topics, use the YouTube uh comments after the stream. Uh
until I see you all again, everybody, my name is Jackson. Have a great rest of your
Loading video analysis...