Normal Blending over Terrain Tile Edges

Started by
3 comments, last by PhillipHamlyn 11 years, 2 months ago

Hi,

I have a tiled terrain structure in my hobby game, and have a problem with Normal Blending on the tile edges. When I calculated my normals I did it from a large scale heightmap and "oversampled" at the edges to pick out the normal of the adjacent face on the neighbouring tile, to make sure my normal was an average of all its adjacent vertexes, not just the ones in that tile.

This gives a reasonable result, but I can see clear edges where the renderer cannot interpolate between the normals on one tile and the normals on another to give a smooth join, since they are in different Draw calls.

Can anyone point me to a technique to ensure a smooth blend on tile edges please ?

Phillip Hamlyn

Advertisement

Can you put up an image please.

The normals being in different draw calls shouldn't make any difference, if there is a hard edge, it's because you're normals are not co-directional, I think it's as simple as that. So your calculations are probably wrong.

You could check the vertex normals at a corner to test if they as you expect .. equal.

What he is saying is that the normals at the edge of each cell he's rendering are averaged with the surrounding polygons. But if two cells are rendered next to each other, the normals at the boundary of the first cell are not averaged with the normals at the boundary of the next cell because he probably stores each cell in a separate mesh, so he sees a discontinuity in the lighting.

Where are the normals coming from? If they're part of your vertex then I think the issue must lie in your vertex normal calculation as Gavin Williams states.

If they're being sampled from a texture on your vertex shader, then you might be able to fix or reduce the artifacts by changing your sampling mode. Try disabling the bilinear filtering and/or wrapping and see if that gets you anywhere.

I'm placing them in my Vertex Buffer. I believe I am calculating the face normal of each adjacent face, summing, then normalizing the normal for each vertex I examine. The adjacent face I'm using doesn't have to be in the same terrain tile at generation time so I'm not treating edge vertexes as having less faces than internal vertexes. I will as suggested manually check the values of the edge normals of the adjacent tiles to make sure they are identical. I'll post an update on whether this is the issue.

Sorry for the lack of image, I can't see how to upload an image into my gallery to share with you, although I'm sure you've seen this issue a zillion times before.

This topic is closed to new replies.

Advertisement