Well, I'm building a game engine using directX10 and I need to discuss some ideas and conclusions.
Some informations:
- My game is something like diablo/torchlight style mixed with DotA, usign a third camera view from top to bottom.
- Currently I'm using a quadtree to split the terrain and cut some unnecessary draw calls (frustum culling).
- Each chunk of terrain has its own materials: 2 alpha textures, 8 diffuse textures and 8 normal textures, the alpha texture determine where I should use each texture (I use some logic to cut some unnecessary process at the pixel shader).
- For lightning Im using the Light Pre-Pass system, so I render all the geometry 2 times (only normals first).
- All the meshes are well stored and indexed, so when I need to draw the scene, first I look for all meshes of the same type, put all information from them into an Instance Buffer and then just do 1 draw call for them.
1) Just a conclusion, as I will always be facing almost the same number of triangles because Its a third camera view from the top to the bottom and the camera zoom is fixed (maybe a little zoom will be allowed but almost 99% there will be no zoom) I dont need to worry about LOD, correctly?
2) Now Im using some heightmaps to store the height for the vertices from each terrain, they are stored like a texture, this way Im getting +- 1Mb for each terrain chunk, but I need a better way to do this, just using the heightmap dont allow me to do things like this:
- The terrain isnt continuous, to do this I need to store the x, y and z float information that is expensive...There is a bette way do archive the same result?
3) They use alot of meshes or just bump/parallax occlusion techniques?
-Look to the ground
-Ground too
4) A quad tree still is a good idea for this or there is a better way?
5) Each time that I need to load an assert I load it using virtual memory, this is correctly? (all my assert data (texture, meshes, etc) are edited custom file types).
Sorry for my bad english, tutorials, books and examples are welcome too!