GrassPlugin

Procedural Grass Plugin is a GPU driven landscape grass system which supports millions of grass simulations for open world games.

Features of GrassPlugins

  • Quad-tree based runtime grass tile management.
  • Runtime camera frustum culling for grass tiles.
  • Completely procedural blades generation.
  • GPU instancing supported.
  • Runtime LOD supported.
  • Few GPU memory consumed.
  • Compatible with Unity Universal PBR shading model and metallic workflow perfectly.
  • Supports blades translucency & AO.
  • Draw instanced procedural indirect.
  • Wind fields and waves on grass tile.
  • Control grass thickness by Unity terrain splat layer.
  • Manipulate various blade shapes with Tilt, bend and cubic bezier curve.
  • High quality programming architecture and well coding style.
  • Pure hand-written sophisticated shaders.

Compatibility of GrassPlugins

Engine

Unity 2020.3.30 (LTS) or later .

Unity SRP

Universal RP 10.8 or later 

Graphics APIs

DX11, Metal, Vulkan 

How To Use

Import Plugin

First of all, open unity Package Manager and import GrassPlugin.

Setup Renderer Feature

Click your URP Renderer settings asset and add a ‘Grass Renderer Feature’.

Setup GrassLand in Level

You can do this via menu items: “Window/GrassPlugin/Create GrassLand”.

GrassPlugin tools can be able to setup everything for you and you just need to click ‘Play’ button to preview it or modify the component fields.

 Setup Custom Grass Tiles

Click menu item: “Window/GrassPlugin/Create GrassTile”.

The tool will create a GrassTile prefab in Assets Directory and select it automatically.

  • Size

  • Instancing Shader
  • Modeling Shader
  • Thickness Layer
  • Thickness Culling
  • Wind Range
  • Grass Settings
  • Tile size, must be 2^n. It would take lots of time on frustum culling if this value is too small and take lots of time on rendering if it is too large. 16 x 16 is recommended in most cases.
  • Compute shader for grass instance placement.
  • Compute shader for grass procedural modeling.
  • Which terrain layer will the grass be placed.
  • Thickness layer threshold to culling.
  • The grass data settings.
  • List item
Setup Grass Settings

Click menu item: “Window/GrassPlugin/Create Grass Settings”.

  • Material
  • Grass Distortion
  • Grass Density
  • Grass Blades
  • Grass Divergence
  • Grass Scale
  • Minimum Segments
  • Maximum Segments
  • Blade Width
  • Blade Height
  • Blade Tilt
  • Blade Bend
  • Wind Speed
  • Wind Strength
  • Wind Field
  • Grass material which uses the shader “GrassPlugin/Grass-URP”
  • Noise map for grass placement. If it is none, the grass would be placed in rows and columns exactly.
  • Blades count per square meter.
  • (Reserved) Blades count per clump.
  • (Reserved) Clump radius factor.
  • andom range for blade scaling.
  • Minimum segment count per blade. Used to runtime LOD.
  • Maximum segment count per blade. Used to runtime LOD.
  • Random range for blade width.
  • Random range for blade height.
  • Random range for blade tilt.
  • Random range for blade bend.
  • Speed of wind waves.
  • Strength of wind. Blade orientation would be effected by larger wind strength.
  • Wind flow field map.