Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

229 Neutral

About Zemedelec

  • Rank
  1. Zemedelec

    Auto LOD generation

    Quote:Original post by _swx_ This document shows the results of remeshing and simplifying complex models and then packing the textures and materials: http://www.donyalabs.com/pdf/SceneOptimizationWhitepaper.pdf Looks stunningly good! Grats for actually succeeding where many failed :)
  2. Zemedelec

    Auto LOD generation

    Mm, did your lead make some outline of the LOD process that should do the job? First, you should not have problems with texture coordinates, since you should handle them in the same manner as the positional info, so you won't delete texture seams, etc. It is common for all LOD algorithms to treat all vertex data in a similar way, be it tangents, positions or texture coordinates. But the task you are doing is not by far the simplest thing at all. Imo, your lead don't exactly knows, what a beast a LOD can turn into. Most people do it by hand. Introducing vertices should be a must, where they touch geometric surfaces or else you'll get holes and wierd stuff. Btw, for very distant stuff you could try depth sprites (require rerendering of the original mesh) or a more generic LOD approach - marching cubes over the mesh, until some cube size, then bake the geometry into a single quad/triangle + baked texture from this piece of the mesh. Very straightforward and generally easy to write, but will require unique texture for the whole mesh.
  3. Zemedelec

    Texture streaming questions

    Create a group of slots, for different texture sizes - 128..2048 for example, keep all mips from 1..64 in the VRAM. Then decide what mip exactly is needed for every single texture in the view. Sort. Textures that move up in the size, just get reloaded from disk. Textures that got downsized, can be just copied (higher mips get lost). Remember to put some heuristic, that will keep textures stable if there is no "pressure" from some other texture for using their slot (your texture needs less resolution, but nobody needs its resolution right now), etc. Such texture streamer can really help to some extend, but if you try to fit entire world textures into 10x less memory, you will fail. I.e. creating all your art in 2k maps, then trying to stream them into 50mb will be huuuge disappointment :)
  4. Zemedelec

    Do you think WoW is using LOD?

    Quote:Original post by pcwlai For the terrain mesh part, it is not rendering a lot of polygons in each view. Also, the distant terrain mesh even with high detail, only rendered with plain color with fog enabled. This helps to keep the GPU working hard on filling with single color which is easy and efficient. You can have a try and test it for yourself. Distant mesh is very optimized and is projected directly into [FarZ,FarZ] range. Thus Z range is not very big, compared to the visible distance.
  5. Quote:Original post by pcwlai Thanks for all the information. Though, what interested me most is how WoW did it. They may not have the best visual quality for if for creating the solution for a vast open scene with many in door areas, I trust their solutions. I used tools to convert many games into wire frame mode and those WoW model and map loaders to view and learn from it. After these many years, how terrain like WoW is rendered still bothers me as I cannot recreate the level of performance I need even when hardware performance upgrades are factored in. Now, I am concentrating on implementing those features and elements needed for games instead of heading for the best graphics quality seen in Crysis. Game play is more important even for a programmer. From the wire frame mode and, there seems only 1 terrain mesh (comprised by many chunks of course) being rendered. And there is no separate mesh for roads. What makes me wonder is, if just detail maps for each triangle is used, there will be many to be used which seems requires a lot of GPU RAM even at the time when the game is released.
  6. Quote:Original post by solenoidzIt would be nice if you say few words of how exactly you model the road mesh around the spline, and is there any difficulties with the UV generation. The mesh is a Bezier spline, subdivided regularly along its direction. Vertices are laid over the terrain, the terrain is smoothed also, so its vertices go below the road. UV coords are computed from the spline length, then there is a relaxation process along the spline ends, so there is no UV stretching/shrinking. Rendering is done right after the terrain, with relatively big depth bias + world space prespective bias (which gets bigger, depending on the distance of the vertex from the camera). No depth writes. After the road, all objects are rendered. The rendering is an order of magnitude simpler, compared to all other code that computes road-related stuff - sidewalk rasterization into the pathfinder weight table, road construction in realtime (while game is running), traffic system, terrain flattening - which care about buildings and other roads around, etc. etc. In was heaviest engine feature in the Tropico 3...
  7. Quote:Original post by solenoidz Maybe you should consider using a separate mesh for the road(curved over and bellow the terrain) and then align the terrain mesh to that road. Something like this ? +1. Here is another example of a road made by mesh: http://pc.ign.com/dor/objects/14327511/tropico-3/images/tropico-3-screens-20090610000645685.html?page=mediaFull
  8. Zemedelec

    Do you think WoW is using LOD?

    Quote:Original post by pcwlaibut with a modern discrete GPU, it is faster to turn off LoD and allow it to use brute force to render in the highest detail. Did you made any tests?
  9. Quote:Original post by MJPI don't see why that would be the case, the z-cull data should be updated with feedback from the ROPs. AFAIK hardware build Z-Cull data immediately after the rasterizer. If it was using ROP feedback, then there won't be any reason alpha test to be such offender. Quote:Original post by venzon1-2fps sounds really slow. Yep, indeed - that was until we changed shadowmap texture address modes from 'wrap' to 'clamp'. Then we got 20-25 fps, down from 60 using single cascade. 1280x1024, 7800.
  10. Quote:Original post by Ashaman73 ...normal shadowmapping Yeah, thanks, no problems with normal shadowmapping. We will eventually try that, sacrificing some quality on G80- hardware.
  11. Quote:Original post by Krypt0nit's executed before the pixel pipeline, but it relys on z-cull afaik. Well, that explains the bad DBT performance on Z-Cull-less RT... Quote:Original post by Krypt0nafaik the z-cull information for alpha-test pixel do not exist, that means, even after you disable alpha-test, you'll shade everything within the pixel-quads that have been playing with alpha-test. As I understand all that Z-cull thing now, it will Z-Cull against the old, pre-alpha-test DIP value, then will execute PS if it fails Z-Cull and then that fragment will be clipped by the real fina grained Z-buffer. So, while visually correct, the performance will stil drop on alpha-tested meshes, since all cascades will be rendered over their fragments. My only hope (for deferred shadows to execute in multi-pass mode) now is S-Cull.
  12. Quote:Original post by MJPDepth bounds test can be very useful if you're doing each cascade in a separate pass. I am doing exactly that and my experiments (and NV docs) shows that PS is still executed before DBT, so it is kinda useless here IMHO. Quote:Original post by MJPOtherwise you can try just doing all cascades in one pass. That's the only option I'm going for right now. The main disadvantage is that it will completely destroy the flexibility of multi-pass deferred shadows.
  13. Quote:Original post by Krypt0n that depends on what rule you break, some will partly disable the optimization, some will just reduce the efficiency of it and some will switch it of until you clear the surface. Alpha test. Quote:Original post by Krypt0nnot even when you sort it and render it with alphablend to fake alphatest (setting alpha to either 0.f or 1.f) ? I do not want to sort all the triangles of all the vegetation - this is not practical, since there are tons of geometry there. Quote:Original post by Krypt0nit has some stencil optimization within the z-cull. you need to clear the stencilbuffer and mask the area you want to use in the stencilbuffer and then draw on this area (not changing any stencil states) using your lightin pass batch. I do just the same, but with only one Clear(), before the scene rendering. Will try to clear only the stencil after the scene and before shadow rendering!
  14. Quote:Original post by Ashaman73I still don't understand why early-z or early stencil should increase your performance ? Early-Z disables pixel shader from executing. Having pixel shader as the bottleneck, Early-Z can remove some of this 'bottleneck' from execution. So, clearly it will speed things up. And the 'two times' is not entirely correct here, because the execution time for different fragments is not the same in the general case (dependant reads, texture fetches based on fragment information). Quote:Original post by Ashaman73 Even if it doubles the fps by only affecting half the pixels, it is still too slow. In reality, each cascade can cover very small amount of pixels - and early-stencil + early-z cuts them nicely. When they are not present or work after PS, the number of pixels processed are very big, not twice, but more times bigger. Quote:Original post by Ashaman73 I once implemented CSM with 4 layers on a 6600 with a forward renderer without really having trouble with the performance. I have that one working too, but my concern is with the deferred renderer in that case.
  15. Quote:Original post by samoth Quote:Original post by Zemedelec P.S: Humus demo uses ATI-feature - they have early-stencil for many years now, while NV has it working G80+.The card I tried this with, years ago, was a 6600 LE, and it very noticeably increased the framerate. Maybe the early models didn't have an all-aggressive hierarchical z-culling, but they certainly discard fragments before running the pixel shader. Heck, it wouldn't make sense to do anything else. :-) Are you sure, the increase in frame rate was due to pixel shader culling, or just from cut in the bandwidth? 6600 LE sounds like it would strongly benefit from both... Also, let me repeat - earlier hardware have early HZ (Z-Cull), not fine-grained per-pixel test (Early-Z). So, the speed up was due to the hierarchical tests probably.
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!