const grass = { normal: img, albedo: img, displacement: img, triaplanar: true | false, scale: [x], tilingMethod: { type: grid | smoothVoronoi | smoothhex, args: {} }, edge: hard | blend | stocastic }
<TerrainMaterial displacementMap displacementScale displacementBias splatTextureModeMode="rgab|bw" interpolateHights normalMap={img} splats={[a,b]} splatTextureMode="rgab|bw" materials={[grass,moss,dirt,mud,rocks]}
DONE: TerrainMaterial, extends standard material + supports just splatting materials = {albedo,scale} scale splat color modes material normals
TODO: Tiling method: smoothVoronoi material displacement roughness/metalness map Each feature should get a before after picture in the
#idea: dynamic angle based teselation: increase teselation if you are looking at the side of a surface, decrease it if you are looking at it head on could drive off of heightmap or infer from normal map
https://hhoppe.com/geomclipmap.pdf (render hd near camera) restricted quadtree triagulation (render hd arround complex details like clifs https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.69.7733&rep=rep1&type=pdf)
concurent binary tree: (subdivide where it maters) https://onrendering.com/data/papers/cbt/ConcurrentBinaryTrees.pdf avoids t-juctions to so no cracks in the terrain
need higher quality tile textures should be able to get away with lower quality splat if they are procedurally blended instead of just a straight linear gradient