I've come across two fundamental problems:
- Mip-Mapping causes problems. As discussed in the previous journal entry. There are two possible solutions, firstly to disable mip-mapping or limit it to 1-3 high resolution stages. Alternatively I could try and perform the bilinear filtering correction down each level in the mip-chain.
- Neighbouring texels of different sizes. If adjacent triangles are substantially different sizes then they'll have different allocations in the UV map. This means that the sampled pixels are different sizes and you get errors. I think i could solve this by authoring the higher-resolution section's borders, it'd get rid of most of the error - but I think you'd still be able to notice the change from high-res to low-res.
So, the bottom-line conclusion I've come up with: Being clever by using a UVAtlas on a terrain is a nice idea, but there are a huge number of issues to consider.
I also get the feeling that, because pretty much all of my implementation is concerned with "fighting" the artefacts, that the original idea must be flawed at a theoretical level.
So I think I'm gonna try and find something else to work on. There are two demo's that I'm thinking of. HDRI + Shadows, and then a D3D10 specific demo (but if I posted about that here I'd probably get hunted down and executed by the DX team [lol]).