Why are HEIGHT, ROUGHNESS and FALLOFF referenced outside Basepoint?
Consider if Segment::m_xRef could become a float and multiply by m_res on
initialisation, as it is always used this way.
In Terrain::getHeightAndNormal, the calculation for values passed to
Segment::get() needs to be checked. Its seems to result in strange values
Kick James repeatedly in the head for using .count() and  to check then
Think carefully about whether Surface needs a writable reference to Segment.
Add checks for making sure that mods get applied to segments as the segments
* Implement the constructors which take a Shader::Paramters.
* How about a class for handling building sections of arbitrary size.
Uses quasi random techniques to define the pattern of building elements,
with hopefully an efficient way to render.
* SHould probably make segment etc. less involved in memory, and provide
a way for the memory to be special
* Look at using allocators to control memory allocation for buffers.
* Make SnowShader, High, with thinner snow on steep areas, and more snow on the
* Make GrassShader, banded, with thinner grass on steep areas,
* Mercator should handle weather, vegetation, maybe even houses
* Delete all the leaked surfaces and shaders.
* Devise some way so that FillShader surfaces don't need a shaded surface, as
they can just use a constant color.
* Add threshold shaders. Add an underwater shader which colors the sea bed
according to its depth.
* Try and do something smarter with Segment texCoords and lineIndeces, as they
are the same for every segment, but recalculated every time.
* Re-work code to use 2D arrays for 2D data - AJR
* a sea level? multiple sea levels?
* include Munins texture blending model
* a cache that dynamically creates Segments when they are requested and
deallocates based on a rule such as LRU
* allow for non fractal tiles (hand drawn ones inserted into the landscape) ??
* variable detail? (32, 64 and 128 side tiles on the same terrain?) unsure how
this fits in with the RNG scheme, so this might be difficult. a tile of side
2^n must butt up against tile of size 2^n-1, 2^n or 2^n+1. ie 32 cant
interact with a 128
* transparent patches? allowing caves, or tunnels?
* allow local terrain deformation:
-subtraction eg of a sphere to make a crater - DONE dpm
-addition eg of a cylindroid to make a mesa - DONE dpm
-set all heights within a polygon to one value (level ground on which to build) - DONE dpm
* move some of the stage terrain code into mercator
- normal/height calcs - DONE dpm
- axisbox intersect - DONE dpm
- ray intersect - DONE dpm
* The semantics of Terrain::get() were not as I expected. I wanted an
interpolated value. Should another function be added to do what I
want, plus get the normal too, as it seems to be free? - DONE
* Need to fix normals along edge and corner point. Currently they create
visible seems because they are not the same on adjacent segments. -DONE
* variable roughness. DONE dpm