TLDW logo

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...

Loading video analysis...