> We have to accept some inconsistencies if we want even vaguely tolerable  
> performance, and pretty much everything you said convinces me we should  
> switch to the 'b' approach, or family of them (see below), as the  
> default option after 2.10, to get as much test and feedback as possible  
> before 2.12

Okay, I;m taking your and Stuart's feedback then as input to draft a plan (and 
I do hope for 3.0 then rather than 2.12).

The 'classic' terrain rendering could then be organized into quality levels as 
follows:

0) - default skydome, all shader effects off
1) - atmospheric light scattering on, no terrain shader effects, only one base 
texture per terrain type is loaded
2) - atmospheric light scattering on, up to three textures per landclass (base, 
de-tiling/gradient, hires overlay), some 8 procedural noise frequencies, 
terrain pixel postprocessing (snow, dust, wetness,...)
3) - atmospheric light scattering on, up to 6  textures per landclass (base, 
de-tiling/gradient1, hires overlay, gradient2, grain overlay, hires dot-noise 
overlay), full spectrum of procedural Perlin and sparse dot noise frequencies, 
terrain pixel postprocessing

That'd be one shader per quality level, which is doable to maintain, because 
these are ubershaders, so there's no need to maintain too many distinct terrain 
effect shaders (currently we would have runway, airport grass cover, water and 
urban in addition - I'm still toying with the idea of writing a fully 
procedural rock shader though...). Also, I can then simplify the structure of 
the shader code to remove conditionals.

As evident from the list, I have adapted the ultra such that it allows a 
two-tier transition on slopes just like the existing transition shader, and 
I've introduced a 'transition_model' parameter which can be declared in 
materials.xml which governs the behaviour of the de-tiling texture - if set to 
1, it reproduces together with the gradient2 texture the exact behaviour of the 
current transition effect, if set to 0 it just does a random overlay without 
taking slope into account, if set to 0.5 it reproduces the current behaviour 
doing a mixture of randomness and slope to determine the overlay texture). I 
will also make the slopes at which the transition happens configurable.

So in essence the whole scheme is controlled from materials.xml only, and it is 
largely not needed to make special effects for landclasses, which should make 
things easier for regional texture designers. I will make a wiki page 
documenting how the materials declaration influences the terrain.

What is currently lost are things like the exact heightmap effect on terrain, 
also the crop shader. If anyone wants those, he needs to go the old way and use 
a dedicated effect rather than the ubershader, the same way the urban or water 
effecst are done, I would not convert them.

What is also lost is the inverse slope transition (this effect changes for 
instance a 'Rock' landclass to grass or forest  appearance if the terrain is 
not sloped, giving flat mountaintops a grass cover). I dropped this 
intentionally, because it makes the strong assumption that Rock can only exist 
on steep slopes - inverse slope changes rock on Alaskan coastline to forests 
for instance, also open flat rock can exist in desert areas. 

What would also currently be lost are smaller effects like the flag (there are 
a bunch of shaders in the directory for which I'm not sure what they're 
doing...) - the maintainers would have to port those themselves to ensure the 
correct response to fog and light. I don't know too much about models - I would 
convert the ubershader, but there are probably aircraft which just go via 
specular map or normal map shaders - these would have to be converted to the 
ubershader by the aircraft maintainers.

There are also implementations of landing lights outside Rembrandt - I would 
not support those and rather focus on Rembrandt for secondary light source 
simulation.

With regard to Rembrandt, my plan of attack would be the hope that Fred (or 
someone else) can get the base framework done so that I can learn the workflow 
from a running example, and I could then help adding the various effects to 
that.

* Thorsten
------------------------------------------------------------------------------
Master Java SE, Java EE, Eclipse, Spring, Hibernate, JavaScript, jQuery
and much more. Keep your Java skills current with LearnJavaNow -
200+ hours of step-by-step video tutorials by Java experts.
SALE $49.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122612 
_______________________________________________
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel

Reply via email to