1) Store only the texture info, the heightmap and the 2 alphamaps, calculate all the other things at the runtime only when that terrain is needed. Store this data and sent it to the shaders when the render time comes.
No idea what "all the other things are".
If the textures are static, you might want to consider baking them together at level load. Is this your option 2?
Doing 8+2 texture lookups can sure be a problem on low-end adapters.
What about the code? Where is it executed? Assuming you're using PrimitiveID, D3D10 doc reads "The IA stage will add a primitive id to each primitive for use by the geometry shader or the pixel shader stage". So... it's a GS... moving a whole triangle?
It seems to me you're trying to do some kind of "world-space" terrain and I don't like it.
Terrain is a 1D function over a 2D domain. You put the vertices in its 2D domain in the [0..1][0..1] range and then scale this parametrized domain in the world using appropriate transforms. Doing the other way around is a bit of a problem. Come on, doing primitive index manipulation... Just have a tassellated plane with VTF.
- Compute the texture coordinates using the positions.
You don't need to compute them if you use a parametric representation because the parametric position in "terrain space" is the texture coordinate to use. Sure you'll have to map those to world-space then, but it's a single matrix multiply.
quote name='Flicklizic' timestamp='1370824149' post='5068523']
ok, my GPU is not that good, but I can play SC2 normally and Im only rendering the terrain
[/quote]I guess it would be worth saying what GPU are you using, on what CPU, what's going on... I am inclined to believe you also have other problems.