areas, questions that
were raised online, and look into some of the
things that were shown earlier a little bit further. Before I go there, just to
quickly give credit like I did in the initial video. So I've used Quixel
Megascans, and I've used a number of things from
the Marketplace including this very cool shader from
Nightshift Studios Tropical Jungle Pack from
PollyAset3D, the Meadow from NatureManufacture,
and the Fictional Aircraft Pack from ModelWorks. And of course, thanks
to Sebastian Hillaire and the whole Unreal
Engine Engineering team. Now let's get going. I'll quickly walk
through the slides that I've got just
to give you overview of what I want to talk about. I want to talk a
little bit about how I made the landscapes. It has nothing to
do with the sky, but just how did I
make the landscape. Quixel assets workflow, gradient
coloring, fading landscape overlay, far off terrain,
that kind of thing. And you'll see what all of this
means as I talk through it. Spherical Planet-- let's
take another look at that. The ground material
that I'm using. I did something special with the
sky material, essentially the clouds. There is a bounds
problem if you do this that I didn't highlight
in the initial video, so we'll talk about that. And the center of the world
doesn't actually move, which is an important
consideration for how I've done this. Sky and scale in general-- so just a general
discussion a little bit on scale, precision errors,
just looking at the whole thing. Foliage-- I'm using all
three types of foliage that we have in Unreal. I'm using something that I
call a double layer foliage approach. I also have a slope trick. I have distant color fading,
and I have ground sinking. So a couple of specific
things I do with foliage that I haven't seen
that many people do necessarily. I'm sure someone has done it,
but not super common, I feel, so I want to highlight that. Take a look at my Blueprints. There's not a huge amount
of Blueprint in there, but there were some
questions that were raised on the initial video. How is the Blueprint done? What am I doing in there? So I want to walk through
it a little bit slower than I did in the first video. The moon and the stars-- so reviewing the material
set up for both of them. The star set up is rather
special, has a few weaknesses, so I just want to highlight
that for transparency sake. And the moon
material is special. We'll take a look
at that as well. And then eventually,
take another look at the volumetric clouds
and a much slower look at my material set up. And there's a few
random things that came in just talking about
the real-time sky capture. I saw someone post on
the forum, I believe, can I do a basic day and night? Yes, I can do that. So I added that in. And there was a request
about performance. I'm not going to go very
deep into performance, but I've added it here just
for the sake of touching on it lightly, and I'll get back
to why I'll do that later on. Cool? >>Victor: Sounds great. >>Sjoerd: Good.
So I'm good. OK. I got to look that way. I have too many screens,
but that's my screen I'm going to be working on. You guys are over there. So let's go all the way
back, and let's start. Right. So in terms of how I
made the landscape, and you can see I also have
three editors open here by the way. I've got-- this is the
cloud version because it's a different version. This is the normal one I'm
working in most of the time, and this is one-- a test project
just for the sake of something I want to show with the foliage. So I'm going to be working
in the main one over here most of the time. The landscape is
this giant thing. In fact, it's
really, really big. It's the whole planet, right? The way I set this up is I
actually tried a new tool that I haven't tried
before, and I got into it, and I really enjoyed it. So what I started using is
something called World Creator, and here you can see
the original landscape that I started from. So this has been
altered in here. I have a rather complex
setup here to do this. But so this is what I came from. You can see it's
actually mirrored here. You can see all the way around. Here's the valley where the main
camera position is in-Engine, and the river is here. So all the elements are
here that you see in-Engine. I really quite enjoyed
working with this because it's first of all, the
camera control is regular WASD. It's very nice to work with. It's completely
real-time, and it was very fun to edit
and mess about with. So for example, you
can do edit shapes, and it's not going to look very
good when I do something now. But the fact that all of this
kind of stuff is in real-time was very nice. It's going to rebuild it,
and the rebuilding here is going to take
longer than it should because I have a very complex
setup again, as mentioned. You can basically take all
the layers away, make layers, and this whole experience
was really, really pleasant. You can create
filters through it, and you can preview that in
real-time, and so on and so on. So I started off over here,
including baking the textures. The textures is just a
bunch of gradient colors. It's recalculating them. You can see all of this
is just done with filters. got baked to a texture
and a height map, imported those into Unreal. So nothing too
special over there. I basically just
imported height maps. Sorry. Imported the splat maps for
the texturing on the landscape, and then I had the
main area itself, so everything minus the static
meshes, which is this. So I have this. And then the surrounding
terrain was done more or less in a similar way. So it's only actually
this that is a landscape to be clear, because I
saw that question being raised on YouTube a few times. This is the actual landscape. Everything else is a mesh. So the rest of world is a mesh. These surrounding worlds-- so
essentially these mountains-- are done the same way,
but it's a mesh baked from World Creator. So the mesh looks like this, and
this is kind of a cool preview because the scale
is kind of weird. It's basically a
single mountain more or less made in World Creator. It's a different
project to this one, but same workflow,
baked down as a mesh. It's fairly high
poly-ish It's 11,000. I mean, after Unreal Engine 5,
nothing is high poly anymore. So it's kind of
difficult to say that. Relatively speaking,
it's high poly. I pull down the axis here a
little bit to help with gaps, but that's it. And then I place that mesh
all around the central area. So you can see all of this,
it's just a copy paste of that mesh to make the nearby area kind of
blend in, and I also have a little bit of
the green valley stuff look a little
bit more detailed. So that's what you're seeing
around the environment. That works very well from a
regular camera perspective. If you're above here,
you get obviously some really rather
ugly intersections, but you don't see that
too much, especially once you're over here and
not a direct position. And then beyond that,
there is a second mesh, which is this big thing
over here, which is-- and this is going to be really
kind of difficult to preview at this kind of scale. You can see it goes outside
of the preview dome as well. It's the same thing. It's made in World
Creator, but it's more just like a noisy,
generic terrain basically. I'm trying to do wireframe. This is 83,000 triangles. Of course, this was a demo. There are some certain
performance considerations with meshes like this I
didn't have to take. . So in production, probably would
want to have a little bit less over the top. So that's baked there,
and then I did that again because the stuff over here
is actually a different mesh. Again, you can see
how big this chunk is. So it's basically
tiling meshes over here-- these pieces tile. And camera speeds a little bit
difficult to get under control sometimes because I deal
with such large numbers. And this is a bit
too soft again. Sorry. Now, let's do a 64 with WASD. Wide frame here-- you can
see what happens, right? And so you don't
really notice that, but that's what's
happening over there. And then you've got
these giant meshes surrounding that in turn. Those giant meshes are
spherizing themselves. So if you're at the
edge of the world, you can clearly
see what it does. It does that, which
is really weird. If you turn off that
effect, you can also see clearly what it would
have looked like if I wouldn't be spherizing the world. So it's actually
in the material. You can see I've got this-- that's the thing doing
it, the material function. So if I turn on the
switch parameter, which I have over there, or I turn it
on rather, which turns it off-- I confusingly named it-- then you get this giant thing. And so that's the world. That is the whole planet
without spherical effect. And these are all the same. They're just tiling. You can clearly see
the pattern here. In the middle, there is
a bit of a lower area because that's actually where
the key central playable area is located above
that central spot. So it's all fake, basically. And you can see there is
a landscape in the middle. That's it. And we're talking really
large slices here. This thing is 8,000 triangles. It's low poly-sh. It's 1,600,000 units across,
but it scales to scale 16. So it would be-- and then, I counted
earlier already. I have 11 of those. I've got 11 in a square. So it's 11 times this thing. And I think my
calculation's still here. I have a calculator somewhere. I came down to 281
million, I believe. So that's the planet. That's half the planet
because the planet actually ends at the equator. I didn't do the bottom. So yeah, it's 281
million for the world. You can see--
that might be visible. There's this tiny gray
spot there in the middle. That is my giant 8k resolution
landscape, that right there. Just slightly over the top,
but there is my landscape. And actually, if you
really want to see, there is an actual ant in there. So there is the ant, and
there is the whole world. >>Victor: There we go. Presentation done. >>Sjoerd: Yes. In fact, the coolest thing is if
you select it and then fly up, and then you press F, which
there's an interpolation to it, so it fits good, and
it's like there, ant. Actually, there. Anyways-- let me turn off the
spherical distortion disabler, and we're back to the
planet as we have it. There's a few other things
I've done as part of that. I've used a lot
of Quixel assets. So all the rocks
are Quixel assets. All of this is Quixel,
Quixel, Quixel, Quixel. The foliage itself is
often from a couple of different Marketplace packs,
and it's soon going to spawn, by the way. When you go way into
space, I've noticed it's trying to
rebuild the foliage, and it goes through
it step by step. As you can see, it's happening
here, so it'll soon come back. But all the rocks are all Quixel
and also the terrain textures are Quixel. One problem I had, though, was
in building the cliff here, it was, first of all,
really difficult to deal with the separate pieces
because you had gaps everywhere. I actually modified a few of
these assets to have more-- be a bit more bulgey. Like, what is it? Convex concave? I always mix the two up. But like a bit more
bulgy so it's easier to push the sides
into each other. That helped, but
then my next problem was that all the colors
were different, right? This rock is different
than that rock, had a different tint, so it all
looked very mixed and matched. So what I did is I built
a gradient coloring thing. And what that means is if you
look at the rock in itself-- here's the rock. I'm going to make it bigger. Actually let me do uniform size. And this is what happens. You can see it's
orange at the top. As it goes down, it
starts getting gray, and then eventually,
it will get green, which is not
visible on the rock, but it's going through a color
gradient multiplication here. And by doing that, I got all the
rocks to look pretty uniform. Not entirely, but more
than sufficient once you're in this view. It also kind of
aids a little bit with this weird green
style that's on top of it. It's also partially
post processed, but it's partially
from that as well. So the way that
looks in the material-- So this is the instance
as generated by Quixel. This is the master that's
generated by Quixel, except I copied one of them, and I
injected this thing in it. And this is the
gradient colorization. So we can see it's very simple. It takes a world position. It's offsetting that slightly,
but this is the actual texture that's being multiplied,
and that is the grading color you're seeing. And that works quite
well, and that's actually a trick that's
going to come back a few times in
everything I've done to multiply an
image on top of this to pull the colors together. And it gives a special
kind of style, I think. It makes it look different. And if there's any
questions, Victor, or anything you
want to add, feel free to step in because
otherwise, I'll just ramble on for the next hour. >>Victor: There was one question
that came in about how large the landscape or the total size
of the map, which you already covered. Someone was curious if there are any
hierarchical instant static meshes. I think they're referring to
the individual static mesh landscape pieces. >>Sjoerd: Individual, no. They're all regular
static meshes, actually. I haven't done anything
special with them. Except there's 11, so there's
100 in total, a bit more. It's not like a huge
impossible amount. That being said, and this is
a topic that comes back later, but I can talk about
it right now. One problem I had with the
spherical world doing this is that I'm offsetting
the vertices way down from where the mesh is because
this mesh should be there. That means that if you
put the camera there, the mesh would have disappeared
if you wouldn't have changed the bounds because the bounds
are still saying it's over here. So what I did,
and this is messy, so do not do this at
home kind of messy, but it works, obviously. The bound scale is
50, which is messy. >>Victor: Yes. >>Sjoerd: Yes, but
without doing that, I couldn't do this huge offset. The meshes would disappear
because it wouldn't understand. The bounds would be used
for collusion and culling. So that's one thing to consider. Going back to the
main area here, and you can see the
foliage is gone again. It'll come back. So that's one thing
I've done there. I did something similar
with the landscape itself. If you'll look at-- this is going to be
difficult to see. That's kind of the intention, but
without light, it's more visible. If you're up close, you can see
the terrain texturing, right? There's some more brownish
rocks there, grayish rocks, it's all there, the whole
landscape texturing. If you move away, it actually
fades over to the image as rendered by World Creator. So you can see at
a distance, I'm looking at the original image. Up close, you can see this
on the desert ground as well, I fade over to the
tiling sections. This prevents me from
seeing this huge amount of tiling in the distance,
which would be a problem. You can see the tiling
of the textures. That never looks good. So that's why on a
pretty close range, you can see here's
the normal textures, and it fades roughly around
here already to the distant one. It also ties to the
landscape more together with the style of
everything else because it literally looks
the same in distance, as you can see. I would've never been
able to accomplish that if I would have tried to
do this with tiling textures. And if you do this
with lighting, it's actually really difficult-- [DOG BARKING] --to-- and my dog is barking,
which you might hear-- it's really difficult to spot
that transition, you see? >>Victor: Yeah. I can barely tell over here. >>Sjoerd: Yeah. I mean,
you see the rocks popping out, but the texturing itself,
you can't really spot it. Now, you're seeing a bit
of the tiling over here, right, and then it's gone. So that's a really neat trick, and I'm doing this for
every landscape I've been making the last two
or three years, I think-- that fading out,
and it really helps. Good. I always forget my slides when I do this kind of thing. So we did all this, and
I have to take questions on these things later if needed. We've done a little bit
on the ground material for the spherical planet. The sky material, the
bounds, we've covered, but then, these
two-- sky material and the Fresnel effect, and
the center does not move. OK. Now what I mean with
the center does not move is that I've seen
some discussions on YouTube where people are thinking
it over, how was this done? Did I use world position
offset for everything to turn it into a sphere? I'm only doing that
for these big meshes. I have the wrong editor
open, but it doesn't matter. I'm only doing it for the
big meshes over there. I'm not doing that for
the center of the world. In fact, this is the
center of the world, this somewhere here is around
0 0 0, and it never moves. You don't want to have
to do a vertex offset on every piece of foliage
on the landscape itself, not to mention any gameplay
problems you might get. So I'm not touching any of this. When I'm in space, none
of this is deformed. It's everything else deforms
around this single spot in the middle of the world
here, as you can see. So the center of the planet
is essentially at the top, not in the middle. Because otherwise, this
would not be doable. I just wanted to
highlight that as well. Then also, let's go
back to space actually. These surrounding
clouds-- so the clouds you're looking at over
here are the same clouds that you see on the surface. There is some very
thin clouds over here. They're the same in space. But I have a few
problems there as well. I have a few challenges there. So first of all, the cloud
mesh itself is not a sphere. It is also a giant plane. You can see this is the thing
without material assigned, and it is absolutely massive. It is 1 million units, and
then, that wasn't enough. So I made a 1
million scale to 384. So it's 384 million
units, and it's using the same spherical trick. But the issue with that is
that at the edge of the planets when the clouds are visible
here, you get a really-- it's really flickering
like you see-- like all the pixels
basically compress at the curvature of
the planet, and it gets really crisp in
the wrong kind of way, if you know what I mean. It's very-- it's
not smooth at all. So what I want to
do is Fresnel effect where it basically fades out
near the edges of the planet. And that was kind of
special because you can't do a regular
Fresnel because you're using world position
offset to move all the vertices to a new position. All right. I'm doing this. If you were to use
a regular Fresnel-- because this is why
we're doing that-- this Fresnel with the regular
normals, the regular normals would not understand that
this has actually deformed it. So it wouldn't match that. So this took a little
bit of additional setup to essentially
recalculate the world normals to do the same thing. So we went through this
setup to accomplish that, and that was that. And you can see I'm
actually taking this, and I'm multiplying it. I'm not multiplying
in lerp, but same effect. I'm having it affect the opacity
where the Fresnel is visible. So all the
things I've done here-- and these are similar
tricks that I can do-- somewhere in here
is a pixel depth, I believe, over here. So I'm changing the scale of
the regular cloud texture. This is the regular cloud
texture that you're looking at. I'm changing the scale so
that when you go into space, you don't notice just
how much the clouds would have been tiling. When you're on the
surface of the planet, you need quite small clouds. When you go into
space, you would have noticed that those
small clouds are essentially just the same texture
tiling over and over again. So I'm scaling that
up as you fly up, which is a very basic little
setup with pixel depth, I divide it to make the
number basically control the scale of it-- This'll control the scale-- clamp it for safety,
and that went in here, and it switches between
that texture or stuff I have over here, but it could
have been the same texture with a different scale. >>Victor: It's very impressive. There was a question
that came in that was wondering how long did
it take you to finish this? >>Sjoerd: So I started
around I think-- when did I start-- first week of February
maybe, maybe late January. I can't remember,
somewhere there. It was meant for GDC. GDC didn't happen. And I think actually, I started
in the beginning of January. Anyway, I'm thinking
150 hours, 200 hours. I can't remember anymore. Quite a bit. It took quite a bit of trying
things out and just trying to get the style together. And some of the weirder setups
took quite a bit of time. So yeah. Cool? >>Victor: Yeah. >>Sjoerd: Yeah. So we've talked a little
bit about these things and the whole discussion of
scale and precision errors. So to be clear and transparent
on this one as well, I'm not using any
special kind of build. I mean, this is
an internal build. You can see here at the
top, it's depth rendering, but there is nothing in
here that inherently changes the way we handle scale. All the changes in this build
are related to rendering things like the Sky and
Atmosphere itself, a few additional
things in there, and for example here, I
have volumetric clouds, but that's it. So nothing has been
changed about the scale. So yes, I have an absolutely
massively large world. In fact, that planet
over there, the moon-- this is always really
difficult to do-- but if I try to manage
that in top down, you can see what happens here. I can't even find
the moon anymore, and whatever number I
have, it's around billions and billions and billions. The only reason that
really works as is is because I don't
have anything small. Once I'm in space, I'm really
far away from world center, but there's nothing near the
camera that is small enough to show any precision errors. So also the moon
as well, since it's billions of units larger, a
billion or whatever it is, I don't know if there's any
precision errors with it. It's not flickering. It's simply works as is. That doesn't mean you will be
able to do gameplay on this. It doesn't mean you
will be able to land a spaceship on the
moon, besides the fact that it's rather low poly,
and I mean, very low poly. You would get massive
precision errors indeed, if you would actually
try to do anything with this at this scale. No, it's not a special build,
and it's simply, at this scale, things are working. And there's a few small
things that don't work. Like, you can see here,
the Control L gizmo, it doesn't survive at this scale. At some point, what
I wanted to do-- and this was even more crazy-- I wanted to have this titled
From Ants to a Galaxy. So I tried to make
an entire galaxy. There is a point
where Unreal gave up. >>Victor: Yeah, there is
a question that came in. The user said I thought you
had a limit on world size. >>Sjoerd: Well, there is a
property called max world size or something, but I believe it's
just for gameplay purposes. In terms of actual limits,
that is a good question. I'm not sure if there is
a real limit built in, but the precision errors will
prevent you from essentially using any of that. Now, if you're doing
what I'm doing, which is meshes that are so
massively big and so far away, you don't notice some
of those problems. But eventually, as
you keep on going, yes, you will get more
and more problems. So like I said, I tried
building a galaxy. So I tried doing this
with the camera, which works reasonably well. It's not enough for that. More speed. This is speed 1000, and
that's still not enough. So I'm really pushing it, but
you know, you can do this. You get some zed fighting
here on the Sky and Atmosphere component itself at this
distance, but other than that, it's going to be really
small, but you can still see the planet and the
moon, and it's holding up. This worked. So I went to these kind
of distances and beyond, and then I tried to draw
and render a bunch of stars, like actual-- they were basically
just sprites-- but that started to flicker. I had problems in
Sequencer where the camera started
jumping back and forth and all those kind of things. So yeah, that's the real limit. It's simply starts preventing
you from doing that. But the fact I can be
here where I am right now is already insane
because right now, I am in-- and I can do this. You can see on the gizmo
here, I have placed a light. This is a light, and the
light is currently placed-- so sorry, wrong window-- the light is, placed
and this is my way of calculating where I
am, at these coordinates. Yeah. So it's amazing to see how
well it survived doing this, even though we're animating
gameplay or anything else. I'm at 4.1 billion right now. Anyway. >>Victor: Yeah. I didn't know you could
actually place an actor at such a large distance from 0. >>Sjoerd: You can. It's just you can't go near it. We'll look at it--
it's surprising you can do this with camera
too, like I'm doing. So that was really fun because I
always had the same impression. >>Victor: And to know-- we should probably mention
that the problem that would occur there is
little floating point errors if you try to sort of run
or fly or play a character all the way out there, right? >>Sjoerd: Yeah, yeah, yeah. I mean, I can go back
here, so anywhere over here, and see if I could
play something simple. I'm not sure this
is going to work. I'll just place anything here. Here is a cylinder. So first of all, is it
being difficult to do this. It's kind of disappearing
and kind of moving erratical. I mean, you can see. It's also my camera
speed is very high, but with something
where it moves in steps, it's not normal. So yeah, you would get
serious problems like that. But if you don't do it. It's just a camera,
again, like I did, it works around that problem. OK. Good. So yeah, the conclusion
to this is nothing special in this build. I'm just working
around the problems and avoiding touching
the weaknesses. That's really just what I did. But now let's go to
foliage, and this is getting more specific now. So the foliage that I have-- I'm using all three types. All three types means I
am using the landscape-- actually, sorry. Let's start there-- the regular
foliage tool and painting things with the foliage tool. So in particular, I
painted the area here. I'm sorry, let me move the sun. The whole point
of the feature is that you can move the
sun, so let me do that. All of this is painted by
hand, with the foliage tool, including some of the smaller
flowers and rocks and all that kind of stuff. So I'm using that one. I am using the
landscape grass layer. Opening up new material. Here's my landscape material. It got a little bit
messy by the way. That's all set up, and
not related to foliage, but while I have it open,
I have around 10 or 11 or so different layers in here. They're all using
shared source, which allows me to have up to
128 different textures in the landscape material. So essentially, that's what
I did, but other than that, there's nothing too
special in this whole setup other than having done
that trick that I mentioned in the beginning
where I overlaid the original texture
from World Creator on top of it using pixel depth. If I can remember where
I have that over here. Over there, just like
shown on the class. That's it. Anyway, there is a
grass layer over here. You can see I have
different types-- a landscape grass
type, and then, this has the meshes inside that I'm
displaying on the landscape. This is doing the
majority of the work. So around 90% of
the work has been done with the grass layers,
and could test this as well. On the desert, a
lot of the rocks that you can see
over here were placed with the procedural
foliage volume. Find that in back, and
I've hidden the volumes at the moment, but
there's procedural foliage volumes in here, and they
are responsible for-- sorry, too many windows-- the rocks and small dry plants,
shrubbery on the desert, as you can see over here. So I've tried all
three approaches. Now where this gets
more fun, I think-- one trick I do-- there's a few
different tricks I'm doing. So one of the tricks I'm
doing is that when I render-- I'm going to go to a spot
with a lot of red flowers anywhere in here, and
it's a bit undense, so again, when you move
the camera far enough away, it tends to unspawn them-- but so it looks like this. And you got all of
these red flowers, and I'm going to take the
red flowers because they're the most visible. The white flowers,
doesn't matter. But I'm also doing
this for the grass. I have ridiculously
long viewing distances. I have the type of viewing
distance you should not do. OK? Just to be clear on
that, don't do this. I did it for the
sake of the demo, but my viewing distance, this is
around 150,000 units for grass. Do not do that. It runs surprisingly well,
too, having done that, though. But in production, even if you
were to put a shorter upright, one problem that you
have is that if you make the grass or any type of
foliage disappear quite soon, it's going to be visible. You obviously see it disappear. That's a problem. You don't want to see
it disappear, right? But if you have to put it far
enough away that you don't see it disappear, you have
this huge performance sync of having to render
all that stuff. So what I typically do is I do
a double layer approach, which means that every foliage
thing that's in here is here twice with two
different distances. And for the grass and the
red flowers in particular, that would mean following. So in here, I believe we're
running here on green grass, and I think the one-- sorry. Green grass variation,
doesn't matter, and these are all the different
meshes I have in here. I've got the red
flowers over there. Red flower,
and I've got that one again. So I've added each and
every one of them twice, but this one has a start
cull distance and end one here of 160,000
units to 180,000 units. Again, do not use such
large numbers at home. I wouldn't do it, but
for the sake of the demo, I went overboard. But it has a density of
5, whereas the other one has a density of 45 but a cull
distance of 25,000 to 32,000. And that's what I mean with
a double layer approach. So I've got it twice, one really
dense one that culls very early and one undense one, a sparse
one, that culls very late. And by having done this,
it is no longer visible. You can see the red flowers,
and you can kind of spot it a little bit if you
really look at it, but you can't tell that the
red flowers are disappearing. I mean, if you were to
look at a magnifying glass, you would still see red flowers
somewhere over there as well. And it's even more visible
with the green grass. Yet when you're up close,
it's nice and dense, but the density actually stops
somewhere around here, I think. So that's one trick
I'm doing all the time. Another thing that I'm doing is
I'm blending a texture over it again at a distance,
and sometimes, I don't even do this
at a distance, I just do it all the time. If you look at the
landscape from above, the foliage fairly
nicely blends in with it. I mean, you can
see here and there that it's kind of
placed on top of it, but it does a fairly good job. And I've done it
wrong here, actually. So this is going
to be a test case. You can see what happens
when you look at a rock where the grass shouldn't be at. It goes gray in the distance
because it does the same thing. It fades to the texture
from World Creator at a distance, the whole
thing, all of the grass, which means that if you're
in the world over here, you get a couple
of nice effects. First of all, you get this
darkening near the camera. The darker color is actually the
original grass texture itself, which happens to be darker. So that's kind of nice, I
think, from a style perspective. Also works when you ship,
being there up close. In a distance, got a bit
lighter, and in the distance, you then start getting
color variation. You can see it here. It's a bit lighter
green over here. It's slightly a bit more yellow
green here, dark green there. It's a bit brown, in fact,
over here in the middle. But as you go up close,
you don't see that. You get these weird, gray brown
flowers and bits of grass. But from a distance, you get
this rich color variation where it's not just one
monotone tint of green, but you see the
complexity in there depending on the
soil conditions, the amount of water
it receives, sunlight, and all of that richness
is captured in that. And I sometimes even
do this up close. I haven't done this
for this project, but especially for trees. And I tried that here. It didn't really work that well. But in some cases-- let's say you want to
make an autumn forest. So the whole forest is
full of autumn trees, lots of different colors. What I've seen people
do is either manually assign different colors-- so here's the more orange tree,
and here's the more green tree, and they go through the
forest and do that by hand, or maybe there's a Blueprint
that does it for them, or maybe they use per
instance random or something in the material to color
each instance with a slightly different tint. But I don't think that works
because it's very fake. It's very harsh. It's very just, suddenly
the color changes. So by multiplying this
entire texture on top of it, it would do it on everything. It would even do
it on the trees. Again, not on this
project, but I could have done it on the trees. And you get these richness. Like one side of the tree
looks a little bit more green, and then the colors
start fading, and it ties everything together. It's really cool. Anyway, just to
show you what I've done in the material
itself, which is again, very straightforward. None of these things are
complicated, I think. There is a mesh. I'm just trying to
get to the material. Here's the Material Instance. Material Instance comes
from the Material. I'll move fullscreen on that. And this is a bit messy as
you can see, so ignore that. But it's got a
colorization overlay in there, which is
the function I made. We're going to take
a look at that one. And this has the same texture
in here from the landscape, and it essentially blends it on
top, again using pixel depth. So it's the same setup. I'm just repeating over
and over and over again. This and this, that's it. The rest is basically just
there for adjusting and changing our brightness,
contrast, desaturation, anything like that. It's just meant for control. And this is the offset to
make sure the texture actually aligns with the landscape. It's the same size,
the same position. So that's a trick that
I think works really well in blending it together. I was actually talking to a
developer earlier this week, and he showed me a kind
of similar approach where he used the
virtual texturing, and they blended the virtual
texturing of the landscape directly with the foliage. So a similar kind
of outcome, and that really helped him pulling
everything together. >>Victor: There was a question. Someone was wondering
if you've tried to use the runtime
virtual texturing and then the static mesh building
feature on this project. >>Sjoerd: No. It's actually on my list. I wanted to do that, but I
couldn't manage time wise, so I moved on from trying. But it's still on my list
to go back to that, yes. And it probably would
fit very well indeed. It might help overcome some
of the blending problems I have, and then--
so absolutely, yes. >>Victor: Someone was wondering
if the lighting is baked. >>Sjoerd: No, there is
absolutely no baked lighting. I think I even turned it off
in world settings, I assume. I think. I can't remember,
but I can check. No, I didn't turn it off, but
no, it's not baked at all. It's completely dynamic
because otherwise, you wouldn't be able to do this kind of-- you know? >>Victor: Yeah. There is a day/night
cycle, right? >>Sjoerd: Yeah. Well, I didn't script a day and
night cycle, but Control L is, and you would easily
be able to script exactly what I'm
doing now, just-- in fact, at the
very end, I'm going to quickly build a day and
night cycle from scratch as was requested, and that will
show us just how simple it is. It's really simple. So yeah, no baked lights. Choosing distant fields
and distant field shadows-- it has a skylight. It has a directional light,
and that's all that's in here. There's no other lightning. There's nothing else going on. If you're interested in
seeing the directional lights, these are the settings. Most of this is default.
Intensity's slightly higher. Haven't changed anything else
here other than atmosphere sunlight is true. Not much in here. >>Victor: Someone was
wondering if there are benefits to using the
double layer vegetation coloring approach versus dithering
vegetation instances with per instance
fade amount and dither temporal A material nodes
to fade instances out with a random distance. Did you get that? >>Sjoerd: Yeah, I get that. But it is difficult to
answer one, I think. I haven't tried that. I would say that doing that
might increase material complexity maybe, but I
can't say how much because I haven't done it. What would be the expense
of increasing the material complexity and the
performance pay off of that vs doing a double layer
approach where you're basically having more draw calls? Because the other instance
comes in on a draw call if I'm correct. I haven't checked
that, but I believe that would be happening. So how does that
balance to each other? I'm not sure. And how does it visually look
to do the dithering approach? I haven't tried
that, so I don't know how smooth that would look, and
if visually, it would compare, would look better, would
look worse, I'm not sure. But it's an interesting
approach, yes. And actually, while
we're talking about it, there's another
thing that I'm doing that's kind of similar to that. And that's what I
call ground sinking. So ground sinking
for me is a way of fading the foliage without
dithering and without having it just pop away. So instead, I'm going to
have the foliage sink away into the ground so you get a
smooth, gradual transition. And I'm going to do this
in this test project here. It's easy to show. This tiny bit of grass
on this white surface-- so it's super easy to see-- actually sinks into the ground
as the camera moves away. You can see right
there, it is sinking. And so by doing
it like that, you also get a transition that
doesn't involve dithering, has a super simple
material set up, because this is super [INAUDIBLE]
in material in that as well, but there's no
complexity behind this. It's just checking the
camera distance to the thing and then lowering world position
offset, and you push it down. So it's cheap to do,
and it doesn't fade, but it still has
the same outcome. So if you do this across
an entire landscape with actual real foliage,
instead of this test thing, with a longer distance than
I have over here, maybe even a double layer approach as
well, maybe even randomizing this per instance,
that is an interesting approach, I think. So you would have it
sink under the ground. It's now somewhere over
there, you can see, and then you would cull it. And then you don't notice
that it's popping away. >>Victor: Yeah, no-- no popping. >>Sjoerd: Yeah. >>Victor: That's really cool. >>Sjoerd: Yeah. That's actually-- I
think I've been doing it, I think, for about five,
six years or even longer. The material for that, and
this is just test material, so it's super, super
simple grass setup, but it's about this
thing over here, right? So I do world position
offset, and I take object position, camera position. I haven't tried this with
foliage at the moment. So let me see. Seeing how that survives
object position. I can't remember how
it behaves there, but essentially object,
camera distance. Multiply it down, subtract
a bit to select the death zone near the camera,
clamp it, and then, if so, you offset it down. So I do minus 50 here. If not, it stays there. It stays at where
it was, so 0 0 0. And this is another
trick I'm going to get back to in a second. So it's essentially just this. And now while we're at it, we
can talk about this other one. This is something I got
from my colleague, Aaron. I'm not sure if he invented
it, or if he took it over from someone in turn, but
in any case, he told me. So now I'm telling everyone
it's his thing for better or for worse. Has nothing do with the fading. But it's not a problem
you tend to have with foliage, which is when
you place foliage on a slope, you either do this, which
is really bad because it's floating, or you make maybe
smaller grass meshes so you reduce the floating,
floating mesh, because this is a
very big grass mesh. But you still have the same
problem at the of the day. Or, and this is what most people
do when they're new to Unreal, is when they paint
this on the surface, they didn't disable in foliage--
so there's a setting here somewhere that says
align to normal-- they don't disable that. And if they then
paint on the surface, it follows the
normal, as it implies. So you get grass that does this. But in the real world, you can't
have grass that grows sideways unless the grass straws
are being weighed down by something like ice or rain
or anything else that can affect which direction it goes into. So you can't really do that. So what you want to do is
grass that grows on a slope-- turn the camera-- that follows
the slope, but stays upright. And that's a really
interesting little trick. I never thought about
until Aaron told me. So what happened here is
that the mesh itself-- actually, I'm going to-- see, I'm going to
show this because it's kind of difficult to show. We can duplicate this one. The mesh itself,
without a material-- let me find some random material
I'm going to dump on this-- would look like a flat plane. OK. It looks like that. It's flat. So what we did is we
took the vertices, and we squeezed it flat. So now it's a flat layer. But there is vertex
color on that mesh. So if we look at the
vertex color over here, we know what the bottom
vertices wear because they have a different vertice color. I think they were
black in this case, and the top vertices were green. So even though everything has
been flattened to a flat layer thing, we still know
what used to be the top and what used to be the bottom. So since we then know that,
what we can do in the material is offset, and that's what
we do, over here, I believe. Offsets that's using
the vertex color. So we do a lerp and
it switches between them. The black vertices
don't do anything. They stay on 0 0 0. So they stay flat at the bottom. But the green
vertices, the top ones, the ones that used
to be in the top, we're offsetting them up by 50. So now the grass
is 50 units high. This also allows you to
set the height of the grass with a number, which
is really cool. And because this is
done in World Space, it means it will
always draw 50 units up no matter what the
rotation is of that mesh, and that is a really
cool part of this. So now you can see why-- go back here, and I
will rotate this mesh-- oh, no. I'm using that-- like this. See, it always grows up,
which is really cool. It's a very quite
simple trick, and it doesn't take much
complexity in the material, but it does this kind of stuff,
which is super cool to see. And again, if I were to
change the height in here, I would have higher grass. So you could even use it
to simulate grass growth in a world, right? Like, it gets gradually
higher and higher by stretching it, which is
a really fun little thing. >>Victor: Lawnmower
simulator next? >>Sjoerd: Yes, we
should all do that. It's going to be a 1
billion poly lawnmower. In fact, every bit of
grass should be chopped off in real-time-- you know, accurately
chopped off and deposited somewhere on that area. >>Victor: We'd like
to see it, Sjoerd. Make it happen. >>Sjoerd: Mm-hmm. Yeah, maybe tomorrow. Yeah. >>Victor: Yeah. We definitely had a few
more questions come in, but we have time for
Q&A at the end as well. >>Sjoerd: Sure, I'll continue
for a while more, OK? All good? Good. So those were all the
things I had over here, and again, some of these
tricks are things I haven't seen that much elsewhere. Taking a look at Blueprint
then, most of this is very straightforward,
I think, the Blueprint. I had a few challenges
in here specifically because I wanted to preview
this entirely in-Editor. It would be completely
different if you can do it in level Blueprint or
an active Blueprint, and you can do it per tick. But I had to do it in Editor
without ever running the game. That was a different dimension. So my biggest challenge
of all was the fact that, first of
all, in 4.25 as is, Control L on a
directional light will not run the construction script. Meanwhile, that has been fixed. So because that has
been fixed, I've been able to move most
of the functionality over to the directional light. So the directional light
in here is a Blueprint, and the Blueprint doesn't
do that much in itself. It's basically just
the directional light in a Blueprint. And the event grab's empty,
but the construction script is where I'm
updating everything. So this is the
construction script. It starts off over
here in a thing that you probably
shouldn't do, and I should have done differently,
but I couldn't be bothered to change it anymore. So what I do is on
the construction, the first thing I do
is I need to collect the moon, the skylights,
the sky atmosphere actor-- I need to collect
those three actors because I need those
references in place so I can modify them or use them. What I shouldn't have
done is I shouldn't have done get all
actors of class because every time this runs,
which runs at per tick when you do Control L, it would have
done a search for those three actors, which is not great. So what I should have done
is I should have simply made a variable like I
have, made it public, and in the properties
in the level itself, manually assigned this
moon and this level belongs to this variable. That would have
been more effective. Either way, once I got
the three variables, I will say loading is
complete just as safety check, and then I do a number of things
here just on a rolling basis. The first section over here,
that variable and this one is about to eclipse. I'm getting back to
an eclipse in a bit. But the solar eclipse support,
and this is essentially the calculation of how far
the sun is from the moon, therefore, knowing when
the eclipse will happen. So I'm using quaternions over
there, et cetera, et cetera. And that thanks to Mario,
who helped me with those. So skip to it in a bit there,
but more readable and more directly applicable perhaps. Here's all the stuff
that's over here. So first of all,
I take the moon, and I will set the
rotation of the moon. So when you move the sun,
the moon moves as well. For the sake of demonstration,
and for the sake of-- well, if you're moving
the sun, the time moves, and if the time moves,
the moon should move. So I connected them together. I'm also setting the
relative rotation of a scene component
within the moon because this is actually
the moon of the moon. There's a tiny moon next to it. That's a neat
scene component. And this looks maybe
slightly complicated here, but it's essentially just
taking the rotation of the sun-- so get actor rotation of self. It modifies a little bit
like it inverses it here. It multiplies it by two so
this will go faster here, and then eventually,
it'll make a rotator out of the modified
rotation of the sun, and that's simply what
it sets to the moon. That's it. Everything else that
I've got in here is more about manual control. So I can offset the
moon a little bit, and when I have a
cinematic going on, I can force the moon to be
in a certain position, stuff like that. But it's not essential. Then I do something
similar with the skylight. So I take the skylight,
and when it becomes night, it gets really, really dark. So I detect when
it's night based on essentially the
rotation of the sun because rotation of the
sun means night or day, and I blend in a more bluish
tint at night manually, and I also blend in a much
higher intensity at night because again, it
got so very dark. So I'm trying to compensate
for the darkness. And then the stuff
I have over here at the end, these four, that
is also from the eclipse. So I take the sunlight
itself, the light component of the directional light, and I
set the intensity from 12 to 2 during an eclipse. I change the mie scattering
on the Sky and Atmosphere, and I changed two material
parameters on the moon, and I'll show you
that in a bit as well. And all of that comes from
this one variable, which is the sun distance to moon. So essentially, how close
is the sun to the moon, and should be therefore start
triggering these effects. And that's the calculation
I have over here. That's essentially
the whole setup. There was one part I couldn't
do in the construction script. And again, a lot of
this is tied to me just trying to do everything at
the same time purely in-Editor and combining it. I've got height fog in here
for the sake of demonstration, but the height fog does
not support space view. So when I fly up, if I wouldn't
disable the height fog, you would see the
height fog just simply across the world
in a single line. So I had to get rid
of the height fog in a very gradual way. And my solution to that,
and it's a weird one, is I made a Blueprint widget-- and this would also be the work
around for some of this in 4.25 still, without Control L
running construction script-- and in the widget Blueprint,
on event construct, I also do get all actors. And on event tick,
I use the references of the directional light I found
and the exponential height fog. And I set the fog density, and I
fade it eventually down to zero when the camera starts
going up into the sky. So it just manually
fades out the fog. And again, it's just
for Editor Preview. That's it. >>Victor: It's a
nice trick, though. >>Sjoerd: Yes. Right? It's a bit weird because I
have to have this widget open. In fact, I have this widget
open on the other screen. Here's the widget. Sorry, wrong window again. Too many windows. This is widget. It's empty, but it has to be
here because when it's here, it's actually ticking. It's running this
logic continuously. >>Victor: We should probably say
that it's an Editor Utility Widget, right? >>Sjoerd: Yeah. It's an Editor Utility Widget,
so it is this thing over here. In fact, you want to
see the whole thing? I've got two of them,
two different approaches, but similar kind of thing. I can run the Editor Utility
Widget, which gives me the panel, but if I double click
it, I get this thing over here. So it's meant for
Editor scripting so you can create your own tool
panels within your [AUDIO OUT] and then use that for making
your own tools essentially. But in this case, I
abused it because it also allows ticking in
the Editor, and it's one of the few
things that allows for ticking directly in the
Editor within a Blueprint. So I'm basically abusing it. >>Victor: Well, those are
similar functionality to Blutilities as well, right? And now, we just
exposed it to give you the possibility to do user
interface customizations as well. >>Sjoerd: Yeah, absolutely. And then one other
hack I had is I couldn't access Get
Level Viewport Camera Info in any other class than a
Blutility and an Editor Utility Widget. It doesn't allow me to. So I had to manually
get it over here and write it to
a variable that's in the directional light. But again, none of
this stuff should have been required if it
wouldn't be for just the fact that I'm trying to do
this in-Editor Viewport. If you would have just
done this on Play, it would have just worked. OK. So this is just for me
working around those problems. That's it. >>Victor: For the
unacquainted, I'm sure that there might have
been some questions regarding what mie scattering is. Could you show that off? >>Sjoerd: Yeah. Let me show on this one. Rayleigh and mie scattering
are the two main properties in the Sky and Atmosphere
component that was shown in the original video. So essentially, it
controls the amount of water vapor, pollen, dust,
the stuff that's in the air, in the atmosphere that light
gets stuck on as it travels downwards. So essentially, what is
scattering the light around. The reason the sky
is blue on Earth is partially because, or
entirely because, the light has to pass through the atmosphere. There's gases in
there, and those gases interact differently with
different wavelengths, I mean. So we get a blue sky. So if you tweak those two-- I'm going to copy these numbers
so I can find back what I had-- you can see you start getting-- mie scattering, in
particular, is the amount of dust and pollen
and things typically more nearer the
surface of the planet. So if you increase
the number, there's more stuff floating in
the air, essentially. So more light will
be captured by that. If you keep increasing
it, you eventually simply have fog as you can see. If you decrease it
all the way down, you get a very clear,
very dry atmosphere. There's nothing there. There's no dust. It's basically completely
barren in a way. Rayleigh scattering is similar. I think it's more
upper atmosphere, but it's the gases in
the atmosphere itself. So if you bring it
all the way to zero, there is no atmosphere left. You simply have
space as you can see. If you bring this
down to 0 as well, it's completely just space. So you can use this tool also,
to make space if you wish, but-- if you bring it
all the way up, you start getting this
martian atmosphere maybe. And I mean, bring it
up a bit more as well, and you can do fun
stuff with this. >>Victor: It's really cool to
see all that in real-time. >>Sjoerd: Yeah, absolutely. And you can use this
for city environments because maybe in a city,
there's this haze or air pollution and all that, and so
all that stuff you can play it. And that's what I did
in the original video. So I'm showing all the
tricks and the hacks and the work-arounds now,
but in the original video, you had the nice walk-through
of how everything works in change color and
some different kind of effects going. Stuff like that and
I just kind of think. Copy that color. I don't know. Sort of green and
something like that. So yeah, that's mie scattering. So the height fog as mentioned,
that's covered by the widget. The moon and the eclipse
are special as well. I'll start off with the moon. So to begin with, the
moon is a giant mesh. Literally, that thing. There's a planet. This entire thing
is a Blueprint. Doesn't do much, but
it's a Blueprint. I placed a default scene route
just to have something at 0 0 0 because it's going to
revolve around 0 0 0. I had the plans over there. I have the main moon. I have a scene, and
I have a small moon attached to the scene that's
attached to the main moon. That's it. In terms of construction
script, there's nothing here except generating the
material instance, and event graph has
nothing in there. Now again, this is because
I'm doing it in-Editor. Normally, the event graph
would have per tick, and this is where
the logic would be for rotating the
position of the moon. I'm doing that instead
in, as you saw, the directional light itself. The directional light is
simply making this one rotate around the middle of the world. So it just goes round
and round and round. That's it. The interesting other
thing with the moon is that the lighting
on it is fake. So we get some really
cool lighting on it. You can see as we
go around the sun, it's a bit hazy
behind the atmosphere, but it's actually receiving
light from the sun depending on where it's located. If you do this at night,
you get this kind of stuff. You get that,
which is just cool. So a few effects, and
some angles work better. So in this version
of depth rendering, it's flickering a little bit. It didn't do that in
the other version, but you can get some really
nice effects going with this. So that not behaving entirely
as it should at the moment. But maybe more like that so
you get this half moon style effect over there. That's fake. None of it is real. So the-- sorry, too many
overlapping windows-- within the material, it's
actually set to unlit. So all of the light
has been done manually because at that massive scale,
I couldn't get the lighting to behave properly, and I
rather did it entirely manual. In fact, the whole effect
comes from just this. This is fake sunlight. Everything else
you're looking at here is just extra effects,
extra darkening, contrast, special stuff, things like that. But this is the effect itself. If you preview this, you
clearly see what it does. See? It simply colors one side
bright, the other side dark. It does that by doing
vertex world normal. I do a dot product with
the vertex normals, and I take the sky atmosphere
light direction, which is the vector of
the sun, and I use that to essentially generate
that as a dot product. If I input this temp
vector instead-- so I can manually do this-- you can see what happens. See? If I change the number over
here, and I make this five, the sun would be
moving, and that's what happens automatically
because this updates as you use Control L, and that's
the light on the moon. Completely fake. Since it's completely
fake, it means I can make an eclipse because
I can modify this stuff, which I'm doing over here, based on
the position of the eclipse, which is what Blueprint
is calculating. And based on that, I'm doing
a couple of different things. Again, there's not a
dot product over here, but I'm basically just-- I'm taking light
away, or I'm trying to make this kind
of corona effect at the edges or something
like that with the setup that I have. Also at night, I change
a few settings on that. When you go into space,
I change the brightness. I did something here. I can't remember what I did,
but when you go into space, it makes it slightly different. So for example, at night,
it makes a bit more bluish. It changes the contrast. It changes desaturation,
and that's the moon. >>Victor: That's
typically a trick done, in terms of for the
unlit light direction, in combination with
like tune shaders, and if you have
essentially, associated or a two shader scene,
you use the same trick to fake the
directional sun, right? >>Sjoerd: Yeah. You can absolutely do that. And now, because of the
Sky and Atmosphere system, that means you always have
that vector in any material. So that's great. You no longer have to
put two Blueprints, which is what you used to do. >>Victor: Yeah. It's right in the
Shader, less things to expose and set as a
dynamic material parameter. Someone was curious
what hardware are you running this on? >>Sjoerd: I can't remember. What am I running? It's a 2080 TI, that I know. What is it, DX-- Let's see. >>Victor: And if you
haven't noticed, Sjoerd is actually running
three versions of this project. >>Sjoerd: Were running
World Creator. We're running Discord, and
Discord takes currently around 30% of my GPU and 10%
of my CPU to do the streaming-- three Editors, and
World Creator indeed. I got a RTX, obviously, 2080 TI. I've got 65, 64 gig ram, and
this is Intel Core I7, 68 50k. So it's six cores, I think. Six cores, [INAUDIBLE],
3.6 gigahertz. It has been a while
since I built a machine. I'm out of the hardware
stuff, but yeah. It's about two years
old, the computer. Cool. I'm getting towards
the end, I think. Yeah. Just want to look at the
moon, stars, and clouds. And that's it. Cool? So the stars--
the stars are special, and they're kind of weird. Normally, the way you are
probably supposed to do stars, and the original way of doing
this in Unreal Engine 3 and Unreal Engine 4 is you would just
place a giant mesh around the world,
which is your sky dome, and that would have
stars on there. Maybe, it would have clouds or
other stuff on there as well, but at some point, they
fade away, and what remains is the background. Background being the bottom
part of that material, and it has stars. For me, that was
difficult because I wanted to go into space. So I can't have a
sky dome if I want to be able to go into
space because then I would have left the sky. I mean, I would have
left behind the sky dome, unless I made a sky
dome that is 16 billion billion billion units
large, and considering the scale I'm already at,
I didn't want to do that. So the stars as you see it
are also completely fake. If you switch to unlit mode,
they're no longer there. They're running on a post
process volume on a blendable, and again, it's a weird setup. It's really weird, but it works. And in the blendable,
I've got four cube maps, and I could've done
this with one cube map, but while I was
building this cube map, it got easier to
just add four of them together so I didn't have
to go back in and modify the original cube map. So it was just me being lazy. Probably should've
been one cube map. But I have a few cube maps
in here, which are basically just stars in a cube map. Four of them. A couple of different
settings on there. And again, it takes the sky
and atmosphere light direction in the post process blendable
to change the direction like the rotation
of the cube map. So when you now move
the sun, it actually moves all the stars, which
is rather weird because it makes the world the
center of the universe, but that's details. OK? All right. And this is modified color
and things like that. I do some manually color
correction here as well depending on where
the camera is at. If the camera is up in space,
so if it's high enough up, I change the contrast and
saturation on the screen. So I'm doing manual
color correction through the post
process of blendable. When you go into space, it
gets more contrasted and harsh. And I think that's pretty much
all this is doing over here. I had to do one
thing over here where during daytime, if the camera's
on the surface of the planet, and it is day, I will
fade out the stars using Sky Atmosphere
View Luminance. And I will essentially
simply use that bit of power and multiply, clamp it,
and that goes into a lerp. And that's what disables
the stars during day. >>Victor: Could you show us how to
find the entire API for the Sky and Atmosphere inside
the Material Graph if someone is curious
which nodes are available? >>Sjoerd: Oh, the variable nodes. So everything-- it's about
6 or so of them, everything called sky atmosphere. So what is this? Six in these-- about six,
and there's only two of them, and in the original video, you
will see the two common ones. I think from what
I remember now, it's light disc luminance
and view luminance. I can't remember entirely. They are the standard ones. If you combine
those two, you have the sky as it was rendered
by Sky and Atmosphere. But the other ones give some
additional control like light direction as mentioned. And I blend the stars
only using scene depth only on the pixels that are
the absolute furthest away. And that's why the
stars only show up on everything that's not
covered by geometry essentially. And that's the setup,
and that gives me stars. >>Victor: Tada. >>Sjoerd: Yep. So the weakness of the system--
there are a few of them. I tried to do a cinematic
where it fades out. Couldn't do that because
the fading didn't respect-- the stars would just
render on top of the fading because it's a post
process effect. So the stars would
just keep on rendering. That was a problem, obviously. There might be some other
issues there as well because it is a bit
of a weird effect. I'm sure I overlooked
something with the setup. If you were to do
this in a game, maybe other kind of post
process effects, something else. I'm not sure, but
it works for this. And it's working
really well, I think. But the biggest problem
I hit was indeed the Sequencer fading. That didn't work. And we looked at
the moon material. And then I'm going
to take another look at the actual clouds. So the clouds are just
super cool to work with. They're a slightly
different Engine Build because this is heavy
work in progress. But this is just
so cool to look at. And I mean not just-- it's actually full volumetric
clouds that you can fly to, but it's casting a shadow on
landscape, which is crazy. This stuff is just
crazy, and it has god rays that come
from the clouds automatically, which
is crazy as well. And you can see there's
some rendering artifacts here and there. This is work in progress. It's clipping over
there, then on the angle, but it is really, really
cool to see this right here. >>Victor: It's black magic. >>Sjoerd: It is really,
really fun and pretty straightforward to make. So what is happening here
is there's an actor called volumetric clouds. It doesn't have an icon yet. It'll come later. So all of this is
scheduled for 4.26. And in the volumetric
clouds, in that actor, everything is done
basically to the material. The only three properties
you have over here, which we can play with-- so this is obviously at what
height the clouds are starting. And some of it works
better than other things, but for example,
this is height 10. You get a bit more
higher altitude clouds. And layer height,
you can try that. Some of it looks a bit weird. OK. That's a bit weird. It's essentially
how the performance starts to drop if you have
very, very thick clouds. These are very tall clouds. I was running layer
height, too, I think. So they're pretty flat clouds. But it's the material that's
really doing the work. And if you look at the material,
this is a thing I built. It's in the Instance, and
here's the material under it. The material in itself-- so the core material
node over here-- is just this. There's nothing going on there. It's just a color, which is currently set to black. And extinction-- the only
thing special I'm doing with extinction is that
I'm taking the-- and this is a very interesting
note by the way-- cloud symbol attributes. It gives you a bit of
additional information. This normalized
altitude in layers. So essentially, the bottom
of the cloud is 0. The top of the cloud is 1. So now I know where
the cloud starts and where the cloud ends. And I use that to
modify the extinction based on if it's the
bottom of the cloud or the top of the cloud. You can use the
same, for example, for making the bottom
of the cloud darker, make it look more gloomy,
make it look more rainy, using this thing. So anyway, it's the
only thing I did there. But the real work comes
from this thing over here, which is the volumetric
advance node, and all of these are just numbers I can tweak. But conservative density,
that's what's doing the work. That's all of this. And the core of
that, in turn, comes from this thing from
Ryan Brucks, which is a volumetric texture. In fact, I've done it twice
just for the sake of variation, but these two are the same. In fact, this is the same, just
different settings, I believe, here or there. The volumetric texture-- this
is the noise texture that essentially makes up the
variation within the 3D shape that the cloud is. If you wouldn't have
a volumetric texture, you would just get-- I mean, you would just get a
flat, solid layer of clouds across the entire planet,
and what you would then do is you would-- sorry, wrong click--
you could subtract away from that, which is what
I've done over here. I've taken a lot of
normal 2D noise texture when it does an
auto-save at some point. This is a normal noise
texture, and I've projected on the top world position. So I'm just planar
projecting the whole texture on top of the clouds. And if you would do that
without the volumetric texture, you'd basically just get a weird
extrudance layer above you, in a sense, where there's
holes left and right wherever this cloud texture
is black and weird extruded clouds upwards
wherever it's white. With the volumetric
texture in there, it becomes more voluminous. There is variation in
that extruded surface up. And the walls of
the clouds, they're not just straight up anymore. The walls are now
bulging in and out, and that's the real
core of how this works. That thing in combination
with a texture that removes some of the
clouds and doesn't just make it a solid layer. Everything else around it is
kind of just fluff and extras. This is about making
the clouds pan. This is, again,
making the clouds move when you move the sun. So again, Sky Atmosphere
light directional. I do a few steps with that,
but it's just about positioning the clouds. This is about trying to
get variation in there. What I try to do is identify
the bottom of the clouds or the top or the
middle, and then, change the amount
of detail present. So I try to get some kind
of richness in the clouds. So it's not just
uniform details or soft, but there's soft areas,
and there's detailed areas, and that's what I'm
doing over there. And this is basically doing
the same thing, cloud detail control at different altitudes. Just tries to get
variation in there. And this purplish
pink box is kind of doing the same as
this one in the sense that it's another texture,
same texture even, that got projected and planar
mapped on top of it, but it subtracts away
from it on a larger scale. So essentially,
this is small scale, this is large scale, but
kind of the same idea. It all comes together
over here, goes in there, and that's
essentially, the material. And same actually, I've
done it a third time. Here is another texture,
again, doing basically the same thing, planer
mapped in the world. I'm changing the
contrast and brightness, and I multiply, subtract,
I do something with that, and that's my clouds. So it looks a little
bit complicated, but once you have authored
this material once, you're pretty much set to go. And again, the real
core of the material could be brought
down to almost this. You would have something. Wouldn't be perfect, but
you would have something. So in practice, that means, for
example, I could do following. I can take a different
material instance I made with the same
material and apply it, and I get these kind of effects. And this is why we want
to do it like this. We want to have a
material in there so you can author whatever clouds
you want to make for whatever style you want to make
and not just lock it down on realistic settings. So you should be able
to do as you see fit. So now you've got this
really weird blob. Yes. And so this is really just
an instance at this point. So this new material instance
from the material, these are the settings. So as I modify this-- for example, I
changed the mip level. That's why it looks so soft. If I bring that back to zero,
you get a bit more richness in there again. So this now becomes the
settings of the clouds. Coming in a little fast, for
example, we'll do this. And that's essentially
how the system works. >>Victor: Easy peasy, right? >>Sjoerd: Well, once
you've made it, yes. It's just numbers. You do have to make
it, of course, first, and that does take a bit. >>Victor: Yeah, it was a joke. >>Sjoerd: Yeah, I know. I know. So yeah. I'll set it back
to the original. I think this was possibly
missing from the first video. So when it comes to the
real-time sky capture, and what that means,
by the way, is in a newer version
of the Engine, so fast forward to after 4.25,
so you don't have access to this just yet. Let me switch back to this one. We added a property in the
skylight, which long awaited, says real-time capture, meaning
it captures itself continuously all the time. You used to have to
do this to Blueprints. Capture was something--
recapture skylight or something it was called, and it was
really intense for performance. A lot of people were doing that. I've done it myself as
well with my last game, but it really was
bad for performance. So we've now
finally solved that. It's called a real-time capture,
and it does what it implies. It's very fast. In fact, these were the
numbers that were missing, I think, from the original one. We're doing-- a 128 cube
map on a Playstation 4 takes 1.4 milliseconds. And the way that it works
and the reason it's so fast is because it doesn't
capture the entire world. It only captures a very
small number of actors. That's why it updates so fast. It will capture the Sky and
Atmosphere actor itself, any volumetric
clouds, and I think it captures any mesh
that has been set, any mesh that carries a
material where the material has been set to its sky material. That's what's captured. Everything else is ignored,
if I can remember correctly. In my case, that does
introduce a small challenge, and this is something
we're working on still. When it gets night, it doesn't
have much to capture anymore. So it's still something
we're working on. And then someone had a question
online on basic day and night, so I figured I can just
do a basic day or night. So your level-- let's
not save any of this. I'll have a floor in here. Sorry, I keep mixing
my windows up. Floor, and let's say 64, 64. I like power of two numbers-- Unreal Engine 1 legacy. Add in visual effects,
Sky and Atmosphere. Drag it in, directional light. There it is. Yes, it's an atmosphere
and sunlight. So now I have the direct-- the
Sky and Atmosphere system works, and essentially, we want to
have this in game when you play. You could make the
directional light a Blueprint, or keep it simple. I'll simply do a
level Blueprint. On Event Tick, you have
the directional light. I'm going to do
add actor rotation or something like that. Different ways of doing it. Add actor world rotation. Could use a timeline,
could use something else. I'm going to say
0.25 or something. I think that's something,
and that's basically it. On the very, very,
very basics, this is a real-time day
and night cycle in-game with the new system. So I play this. You should see-- I maybe have a-- oh, sorry. I make the same mistake earlier. It should be movable, obviously. So we'll do it again. You have a day and night cycle. And we go into a very long
night or for about 20 seconds, I think. Oh, there we are. Wasn't that long. So yeah. It's a very-- It's a very Swedish night. >>Victor: Yep, dark for every-- every part of the day
except two hours-- >>Sjoerd: The surface, yes. >>Victor: But we're
tweaking the numbers, yes. >>Sjoerd: That's it. >>Victor: And you can drive the-- I believe there's a function
in the component itself, right, to actually drive night
and day to also get the right latitude and
all the other details? >>Sjoerd: I believe that is in
a plugin, not by default. It's not in the
normal properties of a directional light, no. But there is a plugin. Now, I haven't done
this much, but trying to remember where it's located. But there is something, yes. We've done that. I just, I can't remember top
of my head where we've got it, but it's absolutely in there. It might be in the
Engine folder somewhere. >>Victor: I'm trying to
remember it as well. It was initially
implemented to light architectural visualization
scenes properly in case you were doing a
visualization specifically for a specific
place in the world. Sun Sky plugin-- Chat's helping out. >>Sjoerd: Sun Sky-- >>Victor: Sun Position. >>Sjoerd: Yeah. Sun Position, yeah. I might have to restart. Oh, I don't want to
restart, but yeah. I don't want to restart us. >>Victor: No. >>Sjoerd: You would
get it in the-- you would find a
Blueprint in here, essentially, with
that support in there. So yes, it should be
possible to combine these. Sky and Atmosphere-- I
mean, at the end of the day, that thing drives the
rotation of the sun, and the Sky and
Atmosphere reads that. So yes, I don't see why
that wouldn't be combinable. >>Victor: Super cool. Are you ready to tackle
some of the questions that we had coming in? >>Sjoerd: Go for it. >>Victor: All right. I think the first thing we
should discuss and maybe clarify is that this
project was not designed for gameplay purposes, right? >>Sjoerd: Mm-hmm. No, it wasn't. No. >>Victor: It's to
demonstrate and showcase some of the features
of the new plugin, and then, also some other
tips and tricks, of course, because there were a lot
of questions coming in related to can we play
around the planet, is it possible for us to play
on the moon, for example. Could you discuss a little
bit about the limitations around that, and why
that is the case? >>Sjoerd: OK. So first of all, the central
area here is 100% playable. I have no gameplay--
but actually, I do actually have gameplay. When the shaders
compile, I can show you I have the standard first person
template in here, I think. But the gameplay would
have to be restricted to near 0 0 0 for world position
reasons, flow position reasons. When you go further away, that
becomes your main problem. It's no longer precise,
and that prevents you from going to the moon. You can fly the
camera to the moon, but you wouldn't be
able to do anything on the surface of the moon. I doubt you would be
able to walk there. No, you would probably get-- I have no idea what would
happen, if it would even work. You fall through collision,
everything is flickering, I have no idea, but
it's way too far off. So no, you can't do that. For the same reason, the planet
is purely a visual effect. It's a sphere, but it's
not truly a sphere. The collision is still flat. It's not bending the collision. It doesn't actually have
collision in the first place. But let's assume I would
have made collision. Collision would have been
here as one giant, flat plane. Plus, again, you would get
world position errors anyway by doing that. So yeah, gameplay over here? Yes. Gameplay in the
sense that if you want to have transition to
space purely for a cinematic or something? Yes. Landing on the planets
on a different place? No. Going to the moon? No. Having a space station in here
where you can walk around? Nope. That's, I think, a conclusion. At least, I haven't
tried those, but I doubt you would be
able to pull that off. [AUDIO OUT] Possibly, yes. It would be a possibility. I mean there's probably other
hacks you can do as well. As you travel to the
moon, you no longer see the planet
behind you, right? And then somehow, do
something at that point to shift your position. So yeah, because the
stars will always be in the exact same position,
which is a benefit because it's a post process material, so
they can never be offset. They're in the
exact same position. You can probably do some
tricks, yeah, but as is, no. It's more visual effects. >>Victor: Someone was curious
if it's possible for you to-- can you bake the offset
into the mesh itself? They're referring to the meshes
that you used for the planet. >>Sjoerd: That's actually
a very good point, and I forgot to mention that. Yes, you obviously can do that. There is no reason
you wouldn't be able to do that
because when you're in the middle of
the world over here, it's very unlikely you're
ever going to go anywhere else anyway, right? So it's purely a visual
effect surrounding the planet. So yes, you could just
made a round mesh. The only challenge I
have with doing that, though, is that the planet
is actually really small. In fact, in the Sky and
Atmosphere settings over here, it's going to tell you
that the ground radius, so the radius of the planet
is 1,000 kilometers-- it's really small. And at a planet
that's this small, if the meshes are always
curved, when you're over here, you would actually see the
curvature of the planet, and it would look fake. It would look weird. So because to
fight back on that, I had to have the
surrounding geometry flat. So when you're in here with
a camera on the surface, it actually does look
like a very large planet. But when you go out,
it looks like a planet. If you would have made
a larger planet, yes, you could have just done the
whole thing and actually bake in the curvature because the
planet is so big that you don't-- just like in real
life, you don't notice that you're on a giant ball. But then the scale becomes
even more of a problem, so I didn't want to go there. >>Victor: There was no
streaming or world competition used in the project, right? >>Sjoerd: No, not in this case. No. >>Victor: Let's see here. Someone's curious what the
resolution of the height map is. >>Sjoerd: The terrain was 8K. >>Victor: Pretty straight
forward question and answer. Someone was curious about
the process used where you were doubling the red flowers. Why not use LODs with
different flower amount? >>Sjoerd: That doesn't
really fix it all. >>Victor: Perhaps clarifying
it then might be a-- >>Sjoerd: Yeah. I'm thinking what the
implication of doing that would be. I mean, if you would have
fewer flowers in there, it would mean that
your original flower mesh would be one mesh with
a lot of flowers in there. I mean, it would be one
like large patch of flowers, and then you could say,
yes, in the distance, it gets switched to a lot where
it's no longer one giant patch, but it's just a sparse bunch
of flowers in the single mesh, if you understand
what I'm saying. In that sense,
yes, it would start reducing in complexity
and distance, but that would bring a
number of other problems. You don't want to have very
large patches of foliage mesh in one single model because
you get problems on slopes, or it gets more
difficult to paint it. Like, if there would
be a building here, and you can enter
a building, you wouldn't want a grass
to be inside a building. If there's very large meshes,
that's more likely to happen. It's better with smaller meshes. And above all, it still
wouldn't solve the fact that you would see the flowers
disappear quite noticeably. Of course, then
you can say, well, maybe you shouldn't
have them disappear. You just have a
long range on them. I don't think
you're gaining much. I think you're making it
difficult for yourself in the long run. That would be my advice. So again, what I've done--
and the flowers is just easy to see, but it's actually more
important for the grass itself, the green stuff-- because it allows you to have
a very dense, up close area, and still have a long viewing
distance here where it appears the grass just
goes on endlessly. But the grass over here
is only 5% of the density as it is over there. It allows for that in
a nice and simple way without problems having
very large meshes per foliage instance,
I would say. >>Victor: It's pretty cool. Someone was curious if you could
turn on the shaded complexity view for the scene. >>Sjoerd: I have not done this
because it wasn't meant as a-- performance wasn't
the main thing. It does run well, but we'll see. It's got to compile because
I haven't done this yet. >>Victor: The anticipation. >>Sjoerd: I know. It's probably quite-- It's not going to
be terribly bad, but I expect something medium. >>Victor: Medium pass. >>Sjoerd: Still waiting. >>Victor: Still-- just
getting more excited. >>Sjoerd: Or gave up trying. >>Victor: Yes. It's like nope. >>Sjoerd: And as mentioned,
this is not a normal build, so it might be that it's even
broken in this particular build. I'm not sure. >>Victor: While we're waiting, we
can tackle some more questions. They were curious if this
project, in any way, shape, or form, will be
available for download? >>Sjoerd: I would like to. My main challenge
immediately is lack of time to clean up a few
things and prepare it. And secondly, I'm using
some of the things from the Marketplace. I can't distribute those. That means I would have to
remove all the foliage, which isn't the biggest
issue, I think. But the spherical shader is
very integral to what I've done, and I can't remove that, and
that is from the Marketplace, too. So that will take a
bit more discussion on how we're going
to handle that. At minimum, and I've
said this before, but I have a lot of things
going on at the same time-- what I would like to do is
take the absolute core-- so not the spherical planet,
not the foliage, none of that stuff, just simply
the sky set up, the stars, like the very
central part of it, and setting that up as a
project, and put it online. I would like to do that, yes. In the near future
when I get to it. >>Victor: Let's see. >>Sjoerd: This isn't
going to work, by the way, shaded complexity. >>Victor: Doesn't looks like it. It looks like it-- >>Sjoerd: It should
have been about done. Yeah. >>Victor: It's too optimized. There's absolutely no
complexity whatsoever. >>Sjoerd: Or it's so complex, it
can't do it, one of the two. >>Victor: Someone was
curious if ground sinking-- this is in regards
to the grass-- if the ground sinking
is cheaper than scaling the foliage vertically? So I believe they're
flattening it. >>Sjoerd: Maybe, yes, potentially. But that is a
difficult question. I mean, you're technically
moving fewer vertices I would argue, so maybe, yes. Possibly. Then again, you
might get a bit more popping like when
they get culled away, it's technically still on
screen, but yeah, possibly. >>Victor: While you were
showing off the Blueprints, someone was curious how you were
highlighting the nodes that you were selecting. Can you show that button? >>Sjoerd: No, I think
it was actually a bug. I didn't-- >>Victor: No, it's
actually a feature if you open out the Blueprint. >>Sjoerd: Was it because I-- >>Victor: Yeah, and then up
on the left side unrelated, there's a button. >>Sjoerd: I know. Sure. Yeah, no, I had
pressed it on, and it-- >>Victor: So height unrelated. >>Sjoerd: Indeed. >>Victor: Yes, and then
you can see the actual-- all the nodes that are relevant
to the logic you marked. Someone was curious,
and perhaps you can go into maybe not
in detail, but how is the 3D texture created? >>Sjoerd: So this one I'm using
is from Ryan, so I didn't make this one myself, and
I might be wrong, but from what I understand
from the process, there are certain
scripts or tools to generate as in, for example,
Maya, something like that, But I haven't done
this myself yet, but it's something in
that direction, I believe. But I've actually--
I think someone even might have done one in
Unreal where ways of at least doing part of the
work in Unreal. So, yeah. That's my answer, but I'm not
an expert in that one, either. >>Victor: Someone
was curious if it's possible to have multiple suns. >>Sjoerd: Yes and no-ish. In the-- hold on, lost
in my windows again-- I'm not in my
usually out because I have all the different
windows open and streaming things and et cetera, et cetera,
but in the directional light, there is a property that does
say atmosphere sunlight index. So yes, technically,
you can, I believe. And I believe if you were to
add a second directional light to it, it would give--
do I dare to try to say-- light. I have no idea what happens. I haven't tried this. I know it is supposed to
do that, just a second one, we'll do it. >>Victor: Let's do it live. >>Sjoerd: I don't know
what's going to happen. Good. So yes, and yes. You do get two
suns automatically. That's what I mean. OK. So that's really cool,
I think, and by the way, the source angle is affecting
the size of the sun. It's in the sky
and atmosphere one. OK. Not many people realize
that, so now you have two different suns. And I have a property. I don't think this
property is in 4.25 either, but there's an atmosphere
sun discolor skill that I can use to color
the sun slightly different. It's a bit flickery. Ignore that. So yeah, you can have two suns. The problem is more in the
direction of lights in general. You can't really have
too many-- can't really have more than one directional
light in reality in terms of shadows and things. So that becomes
more of the problem. If you disable shadows in
one of them, and actually that killed it. So that shows the
problem at hand here. Then yes, but two shadow
casting suns, I mean, it doesn't sound good. >>Victor: Yeah, it's expensive. >>Sjoerd: Yeah, I'm not
sure [AUDIO OUT] I haven't tried this recently,
and I'm not sure of that cost. However, you could. I mean, I'm thinking
for a moon, you should be able to have
a moon in there that is a second directional
light possibly and disable that during the day. When the sun sets, you
enable the other one, and now you have moon lights. Something like that
should be doable. And you can draw
the moon in here. If you don't want to use
a 3D mesh like I've done, you can presumably draw a
2D moon in the sky material as well, and then
move that around just as if it's a sun,
because this thing is rendered where the sun is located-- OK. I don't know. So some kind of combination
should probably be doable. >>Victor: There were a
couple of questions related to the volumetric
clouds, and I know you mentioned that
it's something that we're still working on. Have you had any chance to get
an idea of what the performance costs of them are like? >>Sjoerd: No, not a huge amount. I haven't done a proper
investigation in it. I did notice it
runs well for me. I mean, I haven't noticed
any immediate problems, and as I make the delay
or hide very intense, I'm not noticing any
immediate issues. I am using high-end settings,
and I'm running this with, at this point, two
Editors open and World Creator and Discord. So it doesn't seem that bad is,
of course, not a particularly detailed answer whatever
the true performance impact is, and again,
it's also early days. This is not yet released. I'm sure it'll improve further. It is definitely not unworkable. This is perfectly
doable it seems like. OK. But I haven't done
proper in-depth testing and comparison, and
it's too early for that. >>Victor: Someone was curious
if the volumetric clouds-- is it some kind of extra that's
added on top of the existing cloud system? I think they're referring
to the sky sphere here since we didn't really have
a specific system for clouds previously, or if this is
the cloud system itself. >>Sjoerd: I'm trying
to interpret that. I mean, the cloud system we had
before was indeed just a mesh, was part of the sky dome. Or once a translucent mesh
in front of the sky dome, but same kind of thing. And that's what I had
here in the other one. I have to open it up again
because it's crashed. You could combine
the two, I guess. Right now, there's some
issues that would happen. Again, it's a work in progress. But right now, there's
some translucency sorting between the 2D flat
clouds, the mesh itself, and the volumetric clouds, but
it's still a work in progress. I'm not sure if that
answers the question. >>Victor: So I think he
gave us some more details. He's talking about the
current volume system. Let's see if I can get that. >>Sjoerd: The volumetric
clouds itself, the whatever. Yeah, volumetric fog, sorry. I assume, right? >>Victor: Not entirely sure. I'm trying to interpret the
question and the details now. >>Sjoerd: Yeah. No, if we're talking
about volumetric fog, no, that is not
currently supported. It is using the same
kind of system, though, so I mean the material
approach is roughly similar. There is more
complexity in these, some additional nodes available,
but it is still a material. It's using extinction
scale and similar settings. For right now, no, you cannot
combine it, and in fact, I did actually try to do
that, and that didn't work. But again, by the
time we get to 426, perhaps, and I don't
want to comment on what you can or can't
expect in terms of that, but it's still a work
in progress, again. >>Victor: I'm going to try
to get Ryan Brooks back on the stream when we
actually release it so that he can go through it in depth. Going through the last
couple of questions here. Someone's asking if we're
getting cloud samples with the UE 4.26 release. No news about that yet. We will have to wait and see. There were in general
questions regarding will the Sky and Atmosphere
system sort of support a spherical world,
and as far as I know, there are no plans
as of now to support that due to sort of the
gameplay ramifications that exist around creating
a game that could use such a feature, right? >>Sjoerd: Yeah. It's, again, purely
a visual thing. It is not a spherical
world feature in the Engine or
anything like that. It's a visual effect. >>Victor: Yeah. So you can do a cool cinematic
of flying down into the game, very similar to what
you've been showing here. How-- >>Sjoerd: I might be-- I might be lagging when I-- it's loading the level, so. >>Victor: It still
sounds all right. Chad wanted me to tell you
that you're breathtaking, and that the project
is absolutely amazing. There was a lot of ohs and ahs. >>Sjoerd: Good. >>Victor: Approval. >>Sjoerd: Thank you. >>Victor: That's some
feedback for you. I'm saying that as
I'm trying to go through the rest
of the questions. >>Sjoerd: I hope I haven't been
rambling on in random words an description in things. I don't know. >>Victor: No, I think it's
all been very clear. Clearly, if you haven't
tackled a project like this in the past, it
might seem overwhelming, right? I mean, you're going through
all kinds of material tricks as well as using brand
new features in Engine, and actually figuring
out how to combine them and to create
something like this, so I totally understand
if folks think that it seems overwhelming
and very difficult to do. But you can also maybe point
out how long of an experience you have with Unreal Engine and
game development in general. >>Sjoerd: Yeah. Only 21 years, so
just a bit of time. >>Victor: Yeah, but practice. Practice and experience
and keep iterating will get you there one day. >>Sjoerd: Yeah. Oh, definitely. Sorry, it's compiling
lots of stuff. I think it's going to
slow down the stream, so I'm going to kill that. But I mean, people say it's
a 10,000 hour rule or so. I think I'm at 30,000
hours or whatever it should be at this point. So it takes time. I think when I started in the
industry, I made at least 20 to 30 levels. Well, of course, they
were different times, but I made 20, 30 very different
things until I got to a point where I felt more
comfortable doing it. So it takes time, a lot. >>Victor: Can we see
the landscape details panel for the core landscape? >>Sjoerd: Landscape details
panel for the core? I mean, just the properties
of the landscape? >>Victor: I believe so, yes. >>Sjoerd: OK. Just out of node, the
other Editor crashed. It's compiling lots
of stuff that I don't want to do on the stream. It's going to slow
down the computer. So I am here in the other
version of depth rendering. This one is slightly broken. You can see this foliage
going in wrong place. So ignore that. The rest is the same. Yes, the Details Panel. >>Victor: Take a screenshot. >>Sjoerd: Yeah. I think I changed the collision
in here somewhere, presumably. Yeah, I set the
collision mip level to one, which saved
some memory, I believe. And I changed the static
lighting lots, too, but I'm not in baking the
light so that was kind of-- I shouldn't have done that. The LODing is a
bit more aggressive, and that's essentially it. I can see over here
what it's running at. It is actually running at
4,000, not 8K, it seems. >>Victor: Someone's
curious asking is there a way to downscale
the textures in Editor in case you run into a
video memory barrier? >>Sjoerd: Yes. Since-- when did we do it? I think Unreal Engine 1 even
started doing that. With the current
system, every texture has mip maps generated for it. Automatically
provided resolution is a power of two, which all
of these Quixel textures are. So if you take this
random texture over here, it will have MIPS,
and it will have-- its hidden in one
of these settings-- maximum texture size. If it's 0-- if you make this
4, for example, you can see-- at least, it should. And again, all of
these builds I'm using are non-normal builds, OK? So it will have crashed. But the mip level in there, you
can basically just set it to 1, and it will only
load the next mip level, which is one-fourth of
the size of the original one. And that's the same
that a game does, and if you're in any game,
and you set the texture detail to medium or something,
it does the same thing. It just takes the next
mip, and it doesn't load the highest resolution. And if you set the
entire game and projects to only use mip number
1 for everything, and you package the
project, the Engine won't even include
your original ones. So it doesn't even
take up disk space. It's just completely
stripped out. That's how we, for example,
allow for the Engine to build to mobile platform. You can say on PCF
8K textures where it's going to
deploy to mobile, we want to force all
textures to be on mip 2, and that's should
then be, what is it? 2k, I think. So maybe mip 3, so
it's 1K maximum, and so that's how it's handled. >>Victor: And that reduces
the build size, correct? And also allows
you to sort of have the 8K pictures in
the project and always have them accessible, be
able to work with them, but not package it out
for something like mobile where that would make
your game rather large. >>Sjoerd: Yeah, it
makes it scalable so you can have PC all
the way to low-end mobile. If you run the whole transition,
it should be possible. Yes. >>Victor: We did have
a couple folks, I think they joined
late that was curious, where are the ants? >>Sjoerd: Oh, well, I mean, both
of my Editors at this point have crashed, so I can't
show the ending morph. >>Victor: We can-- [INTERPOSING VOICES] If you go back to the VOD,
there were a couple questions about that. All of the lectures that
we do on the Unreal Engine, we upload them to our
YouTube channel afterwards. And so in about give or take a
couple of hours once the video is done processing,
you'll be able to watch the VOD in eternity, as long
as YouTube exists, I guess. >>Sjoerd: There's a spot at the
bottom of the valley where there's an ant on a rock. >>Victor: It's right there. >>Sjoerd: Unveiling
from the Quixel team, with its wings doing this with
a very simple vertex animation I did, and that's it. >>Victor: With that, I think we
are about to hit the 2 hour mark, so I'd like
to thank Sjoerd for taking his time
out of his day, and also, making
this amazing project. It's quite breathtaking
just like you, apparently. >>Sjoerd: Well, I guess. >>Victor: That said, next week,
we will actually be kicking off the 2020 Unreal
Spring Jam, and we'll have Michael Noland on
the stream showing off a little bit of game
game jam tips and tricks. Not entirely sure what he
has in store for us just yet, but it's going to be exciting. And then at the 3 PM
mark we will announce the theme for the Game Jam. That said, I think I'm going
to need another glass of water because my bottle is out,
and Sjoerd, thanks again for coming on. >>Sjoerd: Thank you. >>Victor: Yeah. It was great. Perhaps, I hope, we can have you
on before the end of the year is over. >>Sjoerd: I hope so. I want to do another one
of these kind of things. I mean, these kind of demo
projects, so I have some ideas. >>Victor: I got another
little ping here I was just trying to look at. Yeah, and we're excited to
see what you're working on. It's quite normal for, I
mean, most of the evangelists are working on little
projects, tips and tricks. Where can our viewers go
to see that if they're curious about what you
guys are working on? >>Sjoerd: Kind of different
places a little bit. Primarily, all of
our Twitter accounts are probably the best
reference at the moment, and we've got a page, Unreal
Indies on unrealengine.com that has all of our profiles up
there and Twitter accounts next to them. And that's clearly the
best place, I think. Yeah. >>Victor: Yeah. I've also seen some of you
posting it on the forums as well. >>Sjoerd: Yes, absolutely. >>Victor: Links and
breakdowns-- so that's where you can go to see
what they're working on. In normal times,
they would also be able to see you all around
the world, whether European or American or Asian
conferences, which is also part of your job, what
you do, but unfortunately, at this time, we are only
able to try to spend time with you all virtually. But I'm happy we're at
least able to do that. Cool. With that said, time to go. Thanks everyone
for watching today. I hope you enjoyed
and learned a lot. If you would like to know more
or have any further questions or would just like to
discuss the features that are part of Sky and
Atmosphere, feel free to use the announcement
thread for the stream. It's a good place to sort of get
around and discuss specifically what was said and
showcased in the stream. So with that said, I will
see you all next week. Bye, Sjoerd, and bye
everyone out there. I hope you have a great
rest of your week.