Using Billboard-fur for greenery with lots of variation!

Gentlemen,

I believe we can make amazing greenery with just a few additions to microStation.

For a long time we have been doing grass using the fur shader*, and forests using the fur shaders billboard capability. This post is about the latter. The billboard forest. I love a good fur-forest! But feel free to use this thread to discuss your fur settings also.

In my opinion, a nice bitmap-forest will compete with, and likely beat a 3D-modelled forest any day. Not only because of the obvious fact that it renders insanely fast compared to thousands of models, but also with regards to the perceived quality of the greenery. For a modeled forest to compete with a forest made up of photos of real organic trees, it would require a seriously talented artist and a very long and expensive modeling session.

Sadly the tools we have today are not fully developed:

The forest of clones

Out-of-the-box renderings provide next to no control of appearance, and this is the kind of greenery we can expect:

(8s rendertime - The bitmaps use the fast 1-bit transparency available. Yes, that is one bit. We don't have 8-bit transparency in microStation, but even your internet browser have that.)

To be fair we can control a few of the aspects of this "forest" such as height-scale (width is not working) and some rotational values, but in the end it looks pretty much like it is stamped on with brute force by a ten-year old in msPaint.

Controlling color and height

Through testing I found an exploit that will add color control to our bitmap-forest. It is a rather ugly process but proofs that it could be available to us.

(Rendertime 6m48s)

Color and height are controlled by separate maps on the forest geometry. Without using the alpha channel - which is sadly necessary to exploit this bug/feature - the render time is a blazing 52 seconds only. [Read: How it should be].

Also showing, is the fact that there is no control of the width and/or of the spacing between each tree, even though this is an option.

Controls we need

A few suggestions to improve the material system by adding more shader-controls. Even though this is based upon a wish to produce a decent greenery, I believe these will add value to many other situations.

Conditional branching
To branch a shader depending on a value, and a way to STOP it from processing further. Lets say we could get the parent materials HUE in a certain point, and filter on it, we could even do branches using colored bitmaps (if hue > 32, continue along this path, else along another). Today the only "branching" is through exploiting the alpha shader, which isn't really build for this and is very heavy to render. Also it cannot be told to stop, and will continue to overlay images upon images upon images.. making it very heavy.

Atlas textures
To control what part of a bitmap is used (applied to each tree). That is, the dimension and offset on the bitmap used for a material. That is not possible today at all. With that function, one shader using one bitmap could provide lots of different greenery.

Proper support of values from the shader on the parent geometry

As shown in the exploit above, the color from the material on the parent geometry is infact transferable to the fur. I suspect most values from the fur's parent shader are.

If we had these three options, we could very precisly control when to use what settings for the fur, and thus have all kinds of trees, bushes and grass in one shader, AND adding greenery would become as simple as painting it on a map in photoshop!

I obviously don't know anything about the internals of your code, so I don't know how horrified you are thinking of adding these. I also don't know anything about any possible obstacles with regards to the Luxology shader model. But I can dream, right? :)

/peace

tl;dr : I whine alot, and would love better shaders.

* the fur shader is a procedural shader that creates bits of randomly positioned geometry on a surface when rendering. This technique could be used to write shaders that create any kind of geometry abiding to any kind of rules.