Tag Info

Hot answers tagged

10

ROAM stands for "Real-time Optimally Adapting Meshes." It is a level of detail algorithm for rendering large terrains. It's somewhat complicated so I'll link to some more in depth explanations: Here is the paper: https://graphics.llnl.gov/ROAM/roam.pdf The following is a slightly less academic explanation: ...


10

I use a template model. Every object in my game has a template ID, which is an integer. You can use the template ID to look up from a database or spreadsheet (or whatever you'd like), all the information about that kind of object. For example Template ID Name Render Mesh Physics Mesh 1 Pine Tree Pine_Tree.nif ...


8

1 : I can't understand at which point down the Chunked LOD pipeline that the mesh gets split into chunks. Is this during the initial mesh generation, or is there a separate algorithm which does this. It does not matter. For example, you can integrate the chunking into your mesh generation algorithm. You can even do this dynamically, so that lower levels are ...


6

Finally, after a lot of researching I can conclude that, as some one said before, There is not universally "best" method. But my research led me to the knowledge of the following things: Depending on the mesh you will finally use: Spherified Cube: any LOD method with quadtree implementation will work just fine, you just have to take care on special cases ...


6

For now it seems that discrete LOD is still preferred, but it remains to be seen if this will change with the next generation of console hardware. For what it's worth Tom Forsyth has written a lot about continuous LOD, which he calls "progressive meshing". Game Programming Gems 2 purports to have one of these articles, but it appears to be mirrored here. ...


6

Creating chunks are really a good idea but you need to use it wisely. there are many big titles that use the same idea to give the illusion of very large world. for example you I can mention Spore or Oblivion. First let's talk about spore since in it's galactic phase you can easily see how the things work: there are many planets in the galaxy but not all ...


6

The probably best reference to rendering grass: Boulanger. Also, since geometry shader was mentioned: this techdemo has slightly inferior quality compared to K. Boulanger's technique, but it is stunning in another way since it draws crazy amounts of grass blades and does the culling via the geometry shader and transform feedback, which is a pretty cool ...


4

You might find http://software.intel.com/en-us/articles/dynamic-resolution-rendering-article/ interesting. Off the top of my head, there's a couple of things that will make automatically scaling somewhat complicated though: Measuring FPS isn't enough. At the very least you need to know if the bottleneck is the CPU or the GPU so you can make a good choice ...


4

Supreme Commander (1&2) - this RTS prides itself in the fact that you can smoothly zoom out all the way to see a map of the battlefield, and then zoom all the way in on an area and manage it. It uses LOD very well as you zoom in and out to keep from overloading the graphics card, and at a certain zoom out level the meshes are replaced by 2D images of ...


4

I'm not sure what is considered the best approach, but one option would be to use instanced geometry - you provide the GPU with a 3d model and a list of places/orientations where you'd like it drawn (preferable in the form of a concatenated matrix), and the GPU will handle the rest via a custom vertex shader. Basically, you create two vertex buffers: one ...


4

From my litte experience with terrain rendering, one of the visually most offensive things that happens when naively reducing the polycount with increasing distance is that -for example- the peaks of mountains can get "cut off" or valleys vanish. This obviously will happen when removing vertices uniformly from the mesh and these landscape features simply ...


4

In general when polygons get smaller than one or two pixels in either width or height you can get aliasing from that. This is generally called Geometry Aliasing. It is most noticeable when the small polygons have significantly different colours to the ones next to them. Different normals can also be a problem because specular highlights will change the ...


3

From what I can tell there are two major requirements for your terrain that Marching Cubes (MC) simply cannot fulfill: Sharp edge rendering Chunked LOD I'd recommend the Dual Contouring (DC) algorithm, which handles both cases quite gracefully, and as a bonus is able to optimize chunks with fewer features to use fewer triangles. There is an often-cited ...


3

LOD is about trying to keep the amount of processing constant over time. Hierarchical level of detail is the only way of doing this for scenes of considerable detail. If you are near enough to an object, it decomposes into multiple objects. This recursive LOD provides not only a simple mechanism for handling the transition points for switching in new levels ...


3

One modern approach to continuous LOD is hardware tessellation. Hardware tessellation was implemented in DirectX 11 and essentially provides programmable subdivision of surfaces. Because this is implemented on the GPU, it allows for much higher detail than provided by CPU-generated tessellation. By subdividing surfaces based on the view distance, for ...


3

When rendering terrain, for efficiency you usually want to reduce the level of detail of geometry in areas far from the camera. As the camera moves around, you would adjust the level of detail to keep the area near the camera at high detail. Geomipmapping, geometry clipmaps and suchlike are ways of managing this on the CPU. Although the GPU always does ...


2

Here is an alternative suggestion, just to keep it interesting. Convex decomposition can create approximate geometries quite quickly, and is usually for collision meshes. These meshes work well as LOD and it is plausible as a real time decimation for speeding up a pipeline. http://codesuppository.blogspot.com/2009/11/convex-decomposition-library-now.html


2

One issue you'll run into is that the mesh is camera-relative, so you'll get a "swimming" effect as you move and pan the camera around, as the topology of the mesh sweeps over the underlying heightfield data. This can be a distracting visual artifact. However if you can minimize that, it could be a good approach. It's reminiscent of what CryEngine 2 did ...


2

I believe the process you're talking about is something like a fractal landscape. Fractals allow infinite zoom. Perlin noise, without modification, is not appropriate for a fractal. You also typically want some minimum level of detail when dealing with landscape. Natural landscape doesn't really follow a fractal because the large scale landscape shape is ...


2

It's not easy to debug recursive structures, particularly when you're relying on a potentially bugged renderer to inform you. So the question is, Is this a bug in your rendering code, or somewhere else? Suggestions: Ensure that when a larger, parent quad subdivides, you stop rendering it. In other words, render only what are considered to be its leaves. ...


2

I don't think there is a right formula, it's more important to keep your frame rate smooth rather than keeping the number of polygons fixed. Most games have some polygons budget that they strive to keep their polygons count below. So I would say change how aggressively your application simplify the terrain based on how good the game performs and how good it ...


2

As @Adam said, one or two pixels is as small as you want to go. In fact, 1 pixel by 2 pixels is the correct size (unless multisampling, which decouples screen pixels from geometry pixels). The reason it's correct is that 1x2 yields one pixel for each triangle. If your polygons are smaller than that, then multiple color outputs must be combined into a ...


2

I fixed the problem... Here is the revised code for the method "create()" if anyone is interested, Thanks for the time: public static void create(Quad quad, int i, int ii){ quad.children = true; i*=2; ii*=2; Vector3f parent = new Vector3f(i*quad.width/2, 0, ii*quad.width/2); System.out.println(parent + " "+ toString(quad)); if(quads ...


2

I believe the answer is no, you cannot use SetLOD. As the documentation says, the texture must be managed which means D3DPOOL_MANAGED and which does not exist in Direct3D 9Ex. I have a sample app which uses Direct3D 9Ex, and tried calling SetLOD, and I got a return of 0 which means it failed according to the documentation which states This method ...


2

After reading a lot about this over the years, the advice that I see the most is to avoid doing it at all. It might not feel like good advice at first, but the arguments are that the performance gains you get for making this kind of structure is totally overshadowed by the potential performance gain you would get by simply chopping your model into cubes at ...


1

The w component is simply the index of the desired mipmap. A value of 0.0 will fetch the first mip level (the highest resolution), 1.0 will fetch the second level (half resolution), etc. Fractional values are used for trilinear filtering. For example, w = 0.5 will fetch both the first and second levels and then blend 50% between them.


1

Finally found it! It's Object.CalculateLevelOfDetail. It's not listed under Shader Model 5 Reference, but under 4.


1

i would consider looking into GIS based methods firstly although i do not know exactly how this would relate within a game. http://gis.stackexchange.com/ if i were to write from scratch for simplicity purposes however, i would scale the 2d positional Vector and group the value by those scaling within a given range i.e if you had a 1000 pixel map condensed ...


1

UDK doesn't have anything built in that does exactly what you say. However, it's certainly possible since you can conditionally play/display sounds/meshes. For example, using Kismet, the conditionals are pretty simple. It'll certainly be a lot of work, though it's unclear from your requirements if that's a "showstopper". There's nothing that's technically ...


1

LOD on individual meshes is still your best bet, IMHO. It's very well studied and works well for crowds, especially if they are animated individually. At the extreme, you have a single quad (or triangle) with a pre-rendered sprite that's appropriate for the camera angle. This is called impostors in the field. Since we're talking about extreme levels of ...



Only top voted, non community-wiki answers of a minimum length are eligible