23
\$\begingroup\$

I've been looking at some screenshots from games like Rocket League and FIFA:

Rocket League

Rocket League

FIFA

and I started wondering one would achieve the short-cut grass effect.

Is it a shader? Is it actual geometry? Or just textured quads? If anyone could point me in a direction, that would be greatly appreciated.

\$\endgroup\$
7
  • 5
    \$\begingroup\$ +1, very interesting question. I would imagine that it's probably a shader (geometry would likely cause lag, textured quads would probably look much flatter) but I'm not completely sure. \$\endgroup\$
    – Superdoggy
    Jul 3, 2015 at 3:34
  • 2
    \$\begingroup\$ In software renderers its usually done with displacement mapping and a lot of vertices. After taking a closer look it seems that they use this here too, with very clever LOD. I guess displacement shaders are in use most likely. \$\endgroup\$
    – akaltar
    Jul 5, 2015 at 10:01
  • \$\begingroup\$ I think they are using parallax mapping. I'm pretty sure about that in the Rocket League screenshots. \$\endgroup\$
    – Tara
    Jul 5, 2015 at 21:06
  • \$\begingroup\$ @akaltar yeah I think you're right about that. And however they did the LOD it's 100% seamless \$\endgroup\$ Jul 6, 2015 at 10:02
  • \$\begingroup\$ I'm gonna attempt to recreate this using shaders and tessellation. \$\endgroup\$ Jul 6, 2015 at 10:02

3 Answers 3

7
\$\begingroup\$

You might want to look into fur shading technique. This is what I would use for this type of grass, since the shorter the grass is the better the performance (less layers).
Basically it works by layering the same surface multiple times in small increments: few layers

enter image description here

You can also change the horizontal offset to make the grass look bent.

\$\endgroup\$
1
  • \$\begingroup\$ that's quite interesting so that I think I could suggest to go deep into it starting with this article \$\endgroup\$
    – Leggy7
    Jul 24, 2015 at 12:48
2
\$\begingroup\$

It is most likely a shader that uses Parallax Occlusion Mapping, which uses normal map to "fake" depth and shadows in a texture. See HERE for examples.

Edit: As @Leggy pointed out, it is perhaps more likely that it is displacement mapping since the foot seems to be going between the grass. Anyway, it is some sort of height mapping shader :)

\$\endgroup\$
3
  • \$\begingroup\$ I don't think so, because in that case the foot would not apear behind the leaves. Displacement mapping sounds to me the most probable way they did this \$\endgroup\$
    – Leggy7
    Jul 16, 2015 at 14:59
  • \$\begingroup\$ I think that would be true if it wasn't short grass, where you can "lower the floor", and if i recall correctly, parallax mapping is faster to compute. But you might be right though, i'll edit my answer. \$\endgroup\$
    – Bluk
    Jul 16, 2015 at 15:45
  • 2
    \$\begingroup\$ You can use parallax occlusion mapping and write to the depth buffer to occlude the foot and that is most likely the technique being used. The Uber shader does that have a look at the downloadable demo. assetstore.unity3d.com/en/#!/content/39959 \$\endgroup\$
    – Seph
    Sep 10, 2015 at 16:49
2
\$\begingroup\$

Rocket league is actually using long quads with texture that sways using vertex shader The trick itself is in the LOD, grass is rendered roughly 20meters ahead and the rest is just flat floor, the thing is, the floor sinks to reveal the close grass and raises gradually as you go further away(until it is at the same height of the grass)

So basically the entire grass field is a few lines and a few rows of long quads let's say 500 long + 500 wide that's 20 meters deep. The rest is simply flat raised ground.

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .