Don’t you just want to lick it. Launching Counter-Strike with the option ‘-tools’
gives the console some new features, which is probably there to help mappers to spot problems
with their maps, but I’m going to use these commands to dick about with the graphics for fun.
Selecting the page ‘cs2 workshop’ just here gives us all of these options to toggle on
and off. Some don’t do anything exciting -though they’re probably quite important- while others
DO significantly change how everything looks, while probably being slightly less important.
Let’s start with good old FULLBRIGHT, which removes all of the Source 2 lighting benefits
and returns the level back to how it used to look back when the map was being made in the editor.
But with a shiny twist! It seems like, even though it’s fullbright, the surfaces facing you light up
more than those that are facing away, which gives everything an oddly shiny look as I’m flying
about. But this makes sense, because if I compare this with a fully fullbright map that doesn’t have
this shiny effect, you can see that without any shading at all it can get very confusing to know
where one surface ends and where the next begins. In case you don’t know from the hundreds of times
I’ve talked about this already, Source and Source 2 light their maps by pre-calculating
their lighting, using raytracing, in a process that can take hours and hours to complete.
The better the quality of this pre-calculated lighting, the larger the map filesizes become,
so Source 1 kept the shadow quality to a minimum, with CS:GO relying on realtime shadows over the
top of this to make things look okay. But Source 2’s pre-calculated shadows look amazing already,
so with Counter Strike 2, I don’t think we even need these real time shadows
too much anymore! And in some ways, they’re actually worse than the pre-calculated ones.
This handy button lets us disable the real-time shadows, leaving just the pre-calculated ones
that are beneath. I am so thankful this option exists, because in CS:GO there’s no easy toggle,
presumably a make-shift attempt by Valve to prevent cheating in some way. Instead, you have
to type this console command, which literally KILLS the shadows. Doesn’t just disable them:
it KILLS them. Not only is this really cruel, but it means you can’t easily get them back again.
Because they’re DEAD.
And that’s a shame because CS:GO’s shadows look horribly blobby and sad without them. But it’s
just as well I disabled them, because it perfectly demonstrates how awful CS:GO’s
underlying shadows look, when compared with CS2’s. The map file is 3x bigger,
but I think you’ll agree the shadows look more than 3x better! There’s even an option to lower
the quality of CS2’s shadowmap, yet even in this state it STILL looks a million times better than
CS:GO’s shadows did. This is probably one of the biggest improvements with Source 2, right here.
But no matter how nice these pre-calculated shadows look, they can’t update when things move.
This includes these leaves here, which as a player of the game you probably don’t care about, but it
also means that players’ shadows won’t show up, which you might care about a bit more if you can’t
see them. Especially when other players still can. And although much better than CS:GO, these Source
2 shadows still look generally fuzzier than the real-time ones do- which isn’t necessarily worse!
To demonstrate this, I went to Morocco. Look! There’s that thing from Bombsite A.
That’s when the sheer awesomeness of the whole thing struck me: to think, this is probably
exactly where somebody from Valve has stood at some point in the past. I felt so honoured.
Next, I ventured out into the desert and came across a Mirage. They even had similar roof
trims. And this was when my discoveries began! You can see from the shadow of this post that it gets
SLIGHTLY less defined, the further away from the object it gets. But why? That’s because the sun
is BIG, and not a single point in the sky. So it behaves almost like lots of little lights, all in
slightly different locations, meaning that there will be some spots where only some of these lights
will reach the area, resulting in a half-shadow, which looks kind of like a blurry outline around
the edges of the proper shadow. So this
‘blurrier-the-further-away-from-the-object-the-shadow-is’ is something that CS:GO’s real-time shadows
-and indeed- Source 2’s real-time shadows cannot do. Is this a problem? Ehh, not really. You can
see from the shadows cast here that, even when they’re cast from the tops of buildings and
landing on the ground below, they’re still pretty well defined, gaining only a BIT of blur at most.
So CS2’s ‘very high’ shadow setting is probably a bit over the top with its crisp, clear definition,
but high is quite realistic. I’d avoid medium setting since that fades out unconvincingly
not far from your character’s position… but get this! LOW setting disables the real-time shadows
completely, on everything but your player models. Sure, the shadows on trees on longer move. And
your player’s shadow is a bit blobby and shimmery-looking. But in some
ways CS2’s low shadow setting is the closest to real life that you can get,
and whenever you’re indoors it will still look the same as higher settings would any way!
Low shadow setting misses out on pretty self-shadowing stuff,
like how the shadows of these leaves pass down through other ones in this example. But
you might prefer this to be disabled completely, as it looks simpler and may be less distracting!
But for those of you who like to turn everything up to highest setting for best definition,
don’t worry: this kind of self-shadowing looks awesome at highest setting, and the only time
that CS2’s sharp-looking real-time shadows will be noticeably wrong is when the shadows cast are from
a long way away, like from the tops of the tall towers on Mirage. But get this: NO tower on Mirage
has a visible shadow anywhere within the playable space. It’s almost as if this was done on purpose!
But how SHOULD these distant shadows look? Well, kind of like this camel’s shadow,
once it reaches down to the bottom of this large sand dune. Close up, his shadow starts solid
and with clear outlines, but down the bottom ends up being super muddy and messy looking.
Which coincidentally mirrored my bowl movements that day.
But no matter which shadow setting you choose, nothing will stop the shadows from
being wrong any way because the sun’s position in this map doesn’t match up. VALVE PLS FIX.
I’ll let you in on a secret: no matter how great we get at texturing and decorating a level,
it will NEVER look as nice as if we disable the textures completely. There’s something timeless.
Something beautiful, about the simplicity of displaying the lighting and nothing else. Where
the only colours we see are but the shades of lighting hitting and bouncing off surfaces
and blending in with one another. Beautiful. I’m going to keep this setting on for a while,
because it makes it easier to see what the other options I’m toggling on and off are actually
doing. Plus like I said, it looks really pretty! ‘Show lightmap res/luxels’ covers the level in
tiny squares. You know I was saying the shadows in Source 2 look better? THIS is why. Because of how
many squares there are. Think of this as a massive texture, covering the entire map, representing the
shadows and how bright each spot should look. If I now lower the quality of the shadows,
these squares get bigger and thus less able to represent smaller details, hence the blobbier
looking shadows. As you might imagine, the squares in CS:GO would have been much, much bigger again.
But it’s not just the surfaces that are lit in Counter Strike 2! If we enable Light Probes,
it fills the world around you with THOUSANDS OF BALLS. More balls than you’ve ever seen
before! If you like looking at balls then this is definitely the mode for you. But
what exactly are they for? Well, each of these represents a spot in the map that’s
had its lighting pre-calculated before-hand. It means that moving objects, like players,
will have their characters lit correctly by simply grabbing lighting information from the
nearest ball, and by covering their own body with it. That’s right: Counter Strike 2 lights
you with BALLS. Or at least the lighting information from them. Do we need this many
balls? Even beyond the playable space and high up in the sky, there are thousands of balls.
And I don’t know the answer to this. It seems a bit excessive if you ask me, but what do I know.
I don’t really know what albedo does, but all it seems to do is to show how surfaces look if
they weren’t lit at all. And anything flashing is apparently out of range in some way. In a
similar way, I guess the reflectivity and roughness options represent those
properties on a scale from black to white. I think these are all here to check different
parts of Source 2’s texture properties. You might have heard of older methods like bump mapping and
specular maps, which are effects you can give to textures to make them look more bumpy or shiny,
when they previously might not have looked right. But this has fallen out of favour in recent years
as PBR has taken off. PBR, being Physically Based Rendering, is kind of like an ‘all in one’ system
for representing how a material should look by simulating how light should interact with it,
be it a shiny surface, a rough one, a translucent one, or a bit of everything. Gross. It’s why newer
games look RIGHT, and why everything in older games looks kind of artificial and computer-y.
What IS interesting though is the AO setting. Which stands for Ambient Occlusion! You know
where I’m going with this. As a whole, not a lot of stuff in this map has this setting- because
most of it’s baked in with the pre-calculated lighting. So AO is used simply as an extra measure
for lighting stuff that can move or change in some way, so you’ll tend to see it around smaller
and breakable props which I guess need to have the shading in the surrounding area updated if
they’re destroyed. And YES, you’ll see it around the spinning fans. And it’s interesting to see how
far this shading extends- far further than can be seen in practice. Same with your character model-
toggle third person and you can see how you darken the atmosphere wherever you go. And in the game!
Third person view also lets you appreciate the quality of your
character’s animations- especially when he’s flailing about in the air all like ‘ ahhhh’.
And now we get to the fun one- CUBEMAP VIEW. This turns everything into a completely
reflective mirror, allowing you to easily see which cubemap is being applied to literally
every surface on the map. And yes, you can also enable LIGHT PROBES to generate tens
of thousands of reflective balls everywhere. You know where I’m going to showcase this,
don’t you. Inside palace, you can finally see how the game transitions between different
cubemap areas, and how it can display several at the same time to generate a surprisingly
good-looking real-time-y reflection from just a bunch of pre-drawn cubemaps. The trick is
definitely how it fades out the reflection as it approaches the surface and your position,
which you can see that, in normal play and with normal types of reflections,
can look very acceptable. If not perfect. And enabling cubemap complexity lets you see where
these reflections transition between one another. Now for OPTIMISATION! It’s hard to explain
optimisation. You MIGHT think that the best way to render a game is only to draw what’s seen,
but Source 1 seldom worked like that. So while this example shown here is Source 2,
I’ve disabled the GPU culling, which makes Source 2 behave almost identically to how
Source 1 worked. Let me explain what’s going on here: Source 1, rather unsurprisingly, had an
older and more basic approach to deciding what to render. It would split the map into ‘rooms’,
then would pre-calculate which rooms could be seen from the other rooms. It meant that
as you entered a new area, or ‘room’, ALL the surrounding visible chunks would also be loaded
up in their entirety. I mean, there were other hand-placed elements you could do to try and
improve things, but that was the general idea. HOWEVER! If we enable Source 2’s new GPU culling
feature, it now AGGRESSIVELY hides things the moment they’re hidden behind a wall or object-
even if they’re still in the same room as you are! It will even stop rendering things if
they’re hidden behind your player model, or even the weapon that you’re holding. So this means that
your framerate might actually be better if you’re holding a larger gun model that’s hiding more of
the screen. Not drawing stuff that’s hidden makes sense in theory, though just know that
calculating what NOT to draw also tends to come with a bit of slowdown, so it’s a balancing act.
In Source 1 there was a tool called an areaportal, that would do this effect, and it was often placed
in windows and doorways. And the question that mappers had in Source 1 was: why not just strap
one of these areaportals to the player’s face to make it do exactly this, no matter where they were
stood? And the answer to that was: LOL that’s a stupid idea, it wouldn’t work, and if it did
then Valve would have done it already. …and now with Source 2, Valve has,
and I found my framerates to be generally better with the GPU culling on. Source 2:
where you’re sprayed in ball colours and have an areaportal strapped to your face.
And there are many other options on this menu which I won’t be covering. A lot of
these things -possibly all of them- are console commands that you can use already,
should you know what to type to trigger them. But to see it all here in one simple, accessible menu
where everything’s toggleable in just a few kliks is going to save thousands of manhours. This is a
screen that mappers -and myself- will gain mastery of over the coming years. Thanks Valve, very cool.