Download

Test of instanced foliage and overdraw with Opaque, Masked, and Translucent in 4.17

I wanted to see where it would slow down, and by how much and thought I would displace my findings here.

Simple scene, one unreal plane (default shader), atmospheric fog, directional light, and a skysphere. Nothing crazy.

Foliage object is a single polygon strip composed of 4 quads. My alpha mask (used later) leaves the center 1/3 opaque allowing the sides to provide plenty of overdraw during the test.

There are 47,124 instances filling about 1/2 the screen.

My basic shader starts as opaque with a solid green colour. 2 sided. 0 Metalic, 0 Specular. and 1 for Roughness.

My starting speed is FPS 82-86 (seems with or without foliage this is the standard speed)

Masked mode (No Alpha)

FPS 82-86 (no change in FPS)

Opacity mask W/ Alpha

FPS 79-84

Opacity Mask W/ FULL TRANSPARENCY (

FPS 52-54

**Switch to translucent mode **(No alpha)

FPS 37-39

Opacity W/ Alpha

FPS 34-36

So my findings seem to suggest that Overdraw is certainly an issue, but translucent materials (even without an alpha) are more expensive over all at their default settings, and in fact… adding he alpha only cut about 3 FPS from the overall speed in my test. I’ll do a test with a more complicated texture next and see how much effect this seems to have.

Testing level 2

Same scene and base material as above. This test is to evaluate the difference between an opaque polygonal representation of many blades of grass, vs a mostly alpha based representation. To complete this task I created a very graphic and simple representation of a grass blade from a 1x4 polygon plane. shaped it as a grass blade and then duplicated and aligned it as if it were a plane. Then made an Alpha Texture which was of the exact same shape and applied it to a single 1x4 polygon plane scaled to the exact same size as the collection I’d just made. This means that when using them the two examples will have the exact same number of grass blades and the exact same look. Below are the results

Polygon tester:

Low Poly w/ Alpha

512x 512 alpha (Masked Material)
3 planes 4 quads each (total 24 triangles)
In overdraw mode 1/2 of the screen is white rest is red or green
4.99k instances

FPS 76-77

High Poly NO Alpha

Opaque material
216 trianlge set of grass blades with same alignment as above.
Overdraw mode 1/3rd of screen is green, rest is dark blue.
4.99k instances

FPS 77-79

Despite being 9X more polygons, the grass clusters with no opacity change were mildly faster. The one thing I did notice though was that baking lighting was about 3x longer on the higher poly test, outside of this however it was faster.

Small note: if anyone wonders why I’m doing this, it’s because I wasn’t satisfied with the information I was finding on the subject. I wanted conclusive test data, and updated to the current version, since bug fixes and methods change over time. My card is the Nvidia GeForce GTX 750 Ti. Not top of the line… but fine for a consistent test. :slight_smile:

Next test is speed levels for translucent shaders (how can I speed it up… any suggestions here?) and comparing looks between a faked opaque texture.