STYLIZED STATION Profile picture
Aug 8, 2023 33 tweets 9 min read Read on X
Have you ever wondered how the grass in Ghost of Tsushima looks so good?

Wouldn't these environments take decades to build by hand?

Believe it or not, Sucker Punch Studios actually used some very creative techniques to let the grass build itself.

Another long 🧵
To achieve their goal of creating a painterly look for their grass, Sucker Punch Studios originally went for traditional grass cards early in their prototyping phase.

But this wasn’t practical for the amount of grass density they wanted to achieve. Image
Overdraw was a big problem, and they wanted to render lots of grass that interacted with the wind...

So Sucker Punch Productions chose to render their fields by generating individual blades of grass on the GPU that could each have their own procedural appearance and animation. Image
The grass is procedurally generated based on several techniques.
First, they chop the world up into tiles.

These tiles contain a suite of textures that determine the height of the terrain, the material to render the terrain as, and most importantly, what type of grass goes there. Image
Each grass type has several different parameters available to artists to play with, such as its height, width, tilt, and colour.

Each type of grass has a different set of parameters.
I want to note that grass geometry is not created manually by artists.

Instead, each grass blade is built procedurally based on a bezier curve, and its grass type parameters. Image
Using a compute shader, the position of the grass blade is determined by the shader and then randomly offset to add variation.
Then, two techniques called distance and frustum culling are applied to exclude calculating blades of grass that are out of view of the camera.
From there, the grass geometry samples from the assigned textures in the tile to determine its grass type and height depending on its position in the tile.
Usually to add variation to procedural grass, you can add random height values to make it look a little messier. Image
Real grass isn't simply random heights though.

If you look at real grass, it grows in clumps, where taller grass clumps are a result of the soil having a higher nitrogen count in the area, which even affects the color of the grass. Image
GoT mimics this by using a procedural noise algorithm to collect grass blades in an area into clumps and influence their various parameters like height, color, and direction to mimic this grass ‘clumping’ you see in real life. Image
Grass blades come in 2 versions, a high lod of 15 vertices, and a lower lod of 7 verts. Image
To avoid LoD popping when switching from high to low and low to high, the grass lod blends from high to low as it nears its change point by shifting its vertices.
This makes the transition between the two lods much smoother, especially on grass heavily curved by the wind.
GoT also uses an intelligent optimization technique to make fields seem fuller.
If the grass blade is short enough, it would be wasteful to remove the geometry.

GoT instead folds the grass blade in the middle to create two blades of grass to make areas of short grass seem twice as dense for 0 cost.

Super cool trick. Image
In GoT, the wind does the majority of the animation for the grass.
The wind is powered by a simple 2d Perlin noise texture, and scrolled in the direction that the wind is blowing. Image
This scrolling noise determines the power of the wind at any given point and affects the bend of the grass.
Combining this with adding a simple ‘bobbing’ animation to the grass by using a sine wave and blending that with the animation from the wind, you get very realistic grass movement.
Since the grass is created procedurally, each animation is slightly different for each and every piece of grass.
Heres a fun normal trick they used:

In real life, blades of grass aren’t flat faces, they’re slightly curved.

Normally to recreate this you would have to add extra vertices to curve the blade, but this would literally double the amount of vertices that your GPU has to render. Image
So to get around this, GoT uses curved normals to give each blade of grass that naturally rounded look -

this trick is a much cheaper option, and definitely something I’m going to be adding to my own grass in the future. Image
Sometimes in games when you look at blades of grass at a right angle, the grass looks way too thin, like looking at a piece of paper from the side. Image
To make the grass fields feel fuller, GoT also shifts grass blades that are orthogonal to the camera, to face the camera slightly, which subtly thickens the grass blade from the user’s perspective. Image
The various other foliage like spider lilies, and the iconic pampas grass are procedurally distributed in a similar fashion to the grass, where its parameters are determined by the tile each asset is spawned in. Image
Unlike the grass blades, which are built procedurally based on a curve function, these other foliage are built by hand by artists. Image
One of Sucker Punch's biggest grass challenges was how to handle grass LoDs at very far distances.
There are several spots on the island of Tsushima where you can see the entire island at once, and rendering each blade of grass from miles away is unnecessary and extremely expensive. Image
So instead of rendering millions of blades of grass and its other foliage, all of the foliage is removed and replaced with an artist’s authored texture thats rendered at far distances instead of the underlying material. Image
So yeah, grass is pretty cool.

If you want to learn how to make beautiful grass in Unreal Engine, check out my Environment Art course for beginners.

https://t.co/zsMIqGZuOucourses.stylizedstation.com/p/survival-kit
Thanks for reading!

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with STYLIZED STATION

STYLIZED STATION Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @StylizedStation

Nov 30, 2024
How to Quit Your Job to Make a 6-figure Art Business (Even If You’re Over 25) - a big 🧵 Image
I quit my job at 27 to pursue art full-time.

I wasn’t an expert, I wasn’t naturally talented, and I definitely wasn’t rich. But 5 years later, I’m running a 6-figure creative business.

Here’s how I did it—and how you can too.
First, let me say this: It’s never too late.
Read 21 tweets
Nov 28, 2024
75% of artists in the U.S. make $10,000 or less annually from their work. And nearly half make less than $5,000.

But for you, it doesn't have to be that way 🧵 Image
Let that sink in: Most artists are making less than minimum wage. So why is the world still romanticizing the “starving artist”?
The reality is even worse.

66% of artists report experiencing burnout at least once.

Not because they’re lazy or unmotivated, but because they’re forced to do it all:

-Create
-Market
-Network
-Chase payments

The system is crushing the very people it relies on.
Read 18 tweets
Nov 27, 2024
Most people never start because they’re afraid of creating something bad.

But here’s the truth: Bad work is necessary to create great work.

Here’s how to overcome the fear of starting and start creating today 🧵
Fear tells you:

“What if it’s terrible?”

“What if people judge me?”

“What if I’m not good enough?”

But the only thing worse than making bad work… is making no work at all.
Instead of trying to make something good, start by just trying to make something exist.

Your goal isn’t perfection—it’s progress.

A messy sketch is better than a blank page.

A rough draft is better than no draft.

Done is better than perfect.
Read 9 tweets
Nov 23, 2024
Talent is OVERRATED.
As an artist who built a 6-figure business without 'natural talent,' here's the uncomfortable truth about what drives real success—a thread 🧵 Image
At 28, I realized my talent would never measure up to the geniuses of the art world. Based on skill alone, I’d never be the prodigy or the standout artist.

But I knew this: The art industry doesn’t reward just talent—

It rewards strategy.
So I decided to destroy everyone else at the two things most artists ignore: marketing and business.
Read 21 tweets
Nov 21, 2024
Give Yourself Permission to Be Creative - A Big 🧵to inspire you Image
Let me set something straight - Creativity isn’t about being the best. It’s about showing up, letting yourself experiment, and realizing you don’t need anyone’s approval to start. Here’s why giving yourself permission to be creative is life-changing—and how I did it.
I want to make this clear before we get into it.
Stop Waiting for the “Right Time”
There will never be a perfect moment to start creating.
Read 20 tweets
Nov 20, 2024
How I Built a 6-Figure Art Business After Quitting My Job at 27 - a big 🧵 Image
When I was working at a tech company, my soul felt crushed daily. I was burnt out, stuck in a cycle of working hard to fill someone else’s wallet, and constantly asking myself: "Is this really all there is to life?"
The turning point came when I was turned down for a promotion I had worked tirelessly for. That was the moment I realized I was pouring my energy into someone else’s dream while my own potential was slipping away.
Read 19 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(