This is part 1 of a multi-part series on grass rendering. We’ll start by figuring out how realistic grass should look like, and how herbage can be modeled with the tools we have at our disposal in real-time 3D graphics. Then, we’ll look at how to implement different methods of grass rendering in Godot. However, most of the tutorial will not be Godot-specific aside from some node names and syntax. But before getting into any implementation details, we must first understand what grass even looks like. What Does Grass Look Like?# Some of the visual properties are quite surprising if you have never really paid attention to them. For one, grass is shiny, especially long grass. Check out the specular hightlights in this example: Although the random orientations of all the individual grass blades causes quite a rough appearance when looking at an entire field of grass - the specular highlights average out into a diffuse noise - the individual blades actually have quite strong specular reflections, and when looking at a field of grass against the sun, it is more shiny than you might intuitively think. Secondly, grass is translucent. In fact, most herbage and foliage is quite translucent. In technical terms, translucency means that when the object is lit, it is also bright on the other side of its surface (although that light may look different, e.g. more diffuse and with a stronger color). This might seem obvious for grass, but it means we need to use an entirely different logic than what we usually do for rendering, since we usually assume that surfaces are hard and light does not go through them. When looking at an entire field of grass, we see large patterns which affect multiple individual blades of grass that are next to one another. Grass is patchy: depending on environmental conditions, micro-relief, etc., patches of grass with different heights and different shades of green emerge. Related to this patchiness, we see structure and detail mostly because grass is self-...
First seen: 2025-05-29 01:03
Last seen: 2025-05-29 14:06