Time Patience Perseverance

 In the last few weeks I have been researching these few papers here on different grass techniques:

https://www.researchgate.net/publication/244493698_Real_Time_Animated_Grass

https://www.researchgate.net/publication/278628125_Rendering_Grass_in_Real_Time_with_Dynamic_Light_Sources

https://www.researchgate.net/publication/220979014_Realtime_rendering_of_realistic-looking_grass

These papers look at bidirectional texture formats (BTFs) and shells as a grass rendering techniques.

I then compiled what I learnt about them into a more readable and concise format that discussed what the technique was and its strengths and weaknesses. 

Here are the two paragraphs I wrote on the topics:


BTF:

Bidirectional Texture Functions (BTFs) is a form of rendering technique that is used to draw highly complex objects by sacrificing memory for reduced computation. It does this by baking 3D objects with various view angles and lighting into a series of several thousand images and picking the correct one based on a lookup table of illumination and camera location. This means that BTFs can hold infinite complexity assuming the memory cost can be handled.


Although this has been used as the primary method for rendering grass before (Shah, et al.,  2005) it has not had the capability to run in real-time with Shah’s implementation running at only 20fps and holding a requirement of 512MB. This is due to the vast scale of data required to convince users that the BTF being rendered has shape, form and realistic lighting as the focal point. 


Figure 1: Example of primary BTF based grass (Shah, et al.,  2005)


As the predominant rendering technique of a real-time application it is ineffective, however as an in-between method for medium Level of Detail (LOD) it has found some success. A research paper by Boulanger, et al. (2006) uses highly simplified BTFs drawn onto slices to transition from highly detailed grass to flat quads on the ground all rendered in real-time. Because it is not the focal point of the user they get away with only having 5 view directions and rely on light direction instead of the exact point of lights meaning that the memory cost gets reduced drastically with their method only using an uncompressed 45MB of BTF data. 


Figure 2: Example of medium distance BTFs  (Boulanger, et al., 2006)


Shells:

Shell based rendering is mostly used for large sets of strands such as fur or grass. It achieves this by layering semi-transparent shells above the object using the mesh normals to perfectly project it outwards. It then renders dots on the intersection between the strands and the shells to give the illusion of individual blades of grass. These dots can then be efficiently manipulated by moving the vertices of the mesh around through a vertex shader making it easy to add wind effects later on. 


Shells have a big advantage over other techniques because it requires far less geometry to achieve the detail and interactability of individual blades of grass. This makes it the most efficient method to render large fields of individual grass blades, however there are some downsides visually. Because the grass is rendered as flat spots layered on top of each other they lose their illusion of blades of grass if seen side on. This means that to keep the grass looking realistic it is best viewed from a high angle making it unsuitable for use as tall grass or in extreme terrain.


References:


 (Boulanger, et al., 2006), Boulanger, Kévin & Pattanaik, Sumanta & Bouatouch, Kadi. (2006). Rendering Grass in Real Time with Dynamic Light Sources. 


 (Shah, et al., 2005), Shah, Musawir & Kontinnen, Jaakko & Pattanaik, Sumanta. (2005). Realtime rendering of realistic-looking grass. 77-82. 10.1145/1101389.1101403.




Comments