Now introducing an experimental new feature called orientability maps in version 6.
Code is available to demonstrate usage of the generated orientability maps:
https://github.com/dmdware/sped/blob/master/source/render/ordraw.cpp
https://github.com/dmdware/sped/blob/master/source/render/ordraw.h
https://github.com/dmdware/sped/blob/master/source/tool/rendertopo.cpp
https://github.com/dmdware/sped/blob/master/source/tool/rendertopo.h
https://github.com/dmdware/sped/blob/master/shaders/or.frag
https://github.com/dmdware/sped/blob/master/shaders/or.vert
https://github.com/dmdware/sped/blob/master/shaders/orpersp.frag
https://github.com/dmdware/sped/blob/master/shaders/orpersp.vert
Orientability maps are a further development beyond parallax mapping, towards fully "fake" triangles. Instead of rendering hundreds of polygons for many individual objects, a single quad can be used for each object with about 23-37 jumps per screen fragment to locate the right pixel data.
Parallax maps use "heightmaps", so not all possible triangle arrangements are possible, like overarching branches, arms, etc. Orientability maps use new texture types to describe almost any arrangement.
Orientability mapping eliminates the need for ALL polygons, except a quad plane perpindicular to the camera view vector.
The advantage is where there would otherwise be heavy overdraw and fillrate,
as in a sky view overlooking many trees or individual figures.
Instead of rendering 1000's of overlapping triangles, only a few
needed screen pixel fragments are needed to look up the right data.
The use of a large enough generated jump table can make small details
work by quickly giving the needed convex "island" visible in the
given angle and view offset. Effects like grass or trees can be achieved this way.
Users should be aware of the general limit of 16384x16384 for addressable
generated textures for positions, diffuse colours, and jump look-up table
maps in this version.
So avoid setting the jump plane width and longitudes, or jump plane
height and latitudes and rolls, being multiplied to give a side length greater
than 16384 pixels.
