JavaScript EditorFree JavaScript Editor     Ajax Editor 

Main Page
  Previous Section Next Section

Chapter 20. Organic Rendering

"A cloud is not a sphere, a mountain is not a cone"

Benoit Mansdelbrot


  • Nature and Complexity

  • Trees

  • Grass

  • Clouds

  • Oceans

  • In Closing

Particle systems have probably helped widen your perception of what can be rendered in real time. But wait, there's more. There are some objects that cannot be expressed in terms of conventional geometry, nor are they well suited for representation by a particle system. Take a tree, for example: a towering oak with thousands of leaves, branches, and bark. How many different triangles do you need to render it in all its beauty? As anyone familiar with fractals knows, the answer depends on the resolution: How accurate do you need to be? Objects found in nature exhibit the property of fractal depth: an almost unlimited level of detail, which makes them really complex to handle in a real-time game. At some point, you will need to reach a compromise between visual appeal and a stable frame rate.

Thus, organic rendering is defined as the technique used to create realistic representations of nature using computer graphics. Notice that I am talking about rendering, not modeling. If you need to paint a car, most of the decisions are made at the modeling stage—for example, the number of triangles needed, textures, and so on. With nature and its infinitely subtle details, we need to transport part of the work to the rendering stage, applying specific algorithms to create good approximations of the natural world.

This chapter is devoted to the subject of organic rendering. It is a beautiful subject, and the results are often quite spectacular. Unfortunately, it is not a case of one-size-fits-all. Most algorithms work on a case-by-case basis, and although some general strategies exist, we will need to think in terms of very specific problems. I will cover different manifestations of nature one by one (trees, grass, clouds, and so on) and explore suitable algorithms for each.

      Previous Section Next Section

    JavaScript EditorAjax Editor     JavaScript Editor