Real Time Grass

This is as close as I could come to the set-up used in Shadow of the Colossus for the more elaborate grasses. They used it a lot to cover up the areas where one ground object meets another with a different mesh density, I noticed. It’s prettier in the game, and I imagine someone could do a lot more with this. Make it more elegant, use nodes (of which I know nothing), etc. I would really love to see this done better and I hope it provides a good stepping stone. You can replace the noise image with any procedural mapped the same way, just turn off map to color. Thanks!


Grass_SOTC_Simple.blend (257 KB)

that’s a really common technics in video game which works great, to make it look even better you can shrink the alpha treshold for each layer, you’ll get ever a better result (not sure I you can do it with blender multi-Layer, otherwise it could be done with GLSL though, but would be too bad to have to use GLSL for a multi-layer technics.
I usually use this technics to make fur like that :

  • take a picture of dog fur
  • make it tile
  • copy one of the R, G or B channel (the most contrast one) and past it the alpha channel
  • re-contrast the alpha channel a bit
  • apply the texture as copy on the first layer
  • apply the texutre to a second layer with a bit of alpha treshold
  • apply the texture to a third layer with more alpha treshold

Usually gives a really really nice result !

Ooh hot tips thanks. My goal was to keep it really lo-fi and use no outside textures or manually dealing with every shell. This technique is indeed ancient, but the closest representation I found was Dave’s GLSL grass which was prohibitively top-heavy for my tastes.
Is there any way to scale a texture’s contrast/brightness over Orco Z using ipos or nodes? That would be peachy.

Hello, this is an interesting technique, but it doesn’t seem to work in the game engine i.e. being real-time?

@Lamoot: I experienced the same thing. I opened the file and pressed P-KEY and nothing happened.

it doesn’t work in real time, but you can render it

Right, you’d have to bake a full render to a new UV for it to run in the game engine. That or pump it full of nodes or something. Before doing that though, playing with the procedural textures yields variation in color, length, dispersion, etc. I’ll tinker with a patch prepped for GLSL and post it up soon.

well to have this optimized for realtime I’m not sure Blender gots everything you need.

This is usually the approach, the key is to not loading extra meshes but always using the based mesh so no extra mesh on the hardware.
So the material needs to :

  • be multi-layer
  • have the alpha treshold per layer
  • normal extraction per layer

First Layer gets the texture
Second Layer gets the texture + a bit of alpha treshold + some normal extraction
Third Layer gets the texture + more alpha treshold + more normal extraction

if you cannot do that, you’ll won’t be able to make it realtime & optimized at the same time with the Multi-Layer material approach. Only a Shader (glsl) would do … I think !

so far I couldn’t find those feature in Blender yet, maybe their are here, but couldn’t find it.

Works in GLSL but not game engine. It would be fairly simple to get it GE ready, but the process would shatter the purpose of this object being light and easy to change variables. One would have to make a new image for every step in the color gradient. I was already displeased enough to have to manually set increments for height variation, so I’m calling this project done. Sorry about GE. I know “real-time” was promised, but I was really more interested in making a tight package that came close enough to the standard. All of the procedural textures used to make the diffuse and alpha maps are in the materials. Beyond making textures to get the gradient in GE, you can tweak the colorband in the ‘Noise’ texture to have the blades of grass taper, but this would also demand creating new textures for every increment.

If there are any scripters interested in making real-time grass a much easier reality, maybe this link will be of some use.


Grass_SOTC_Simple3.blend (432 KB)

they really used planes in the game for the fur
here is a pic i found in a pdf(making of shadow of the colossus)


It is really important for the game.I am also looking for this from a long time.I want to ask some thing about this.Can we apply this for all games or not?Because in the pic it has been mention.