Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

104 Neutral

About okroms

  • Rank
  1. Hi Digitalfragment, Thanks a lot for the input. [background=rgb(250, 251, 252)]Use this to generate your not-yet-destroyed object once at load time, not for real time.[/background] [/quote] Ok, I was even ready to cook before and deploy the whole terrain volume(at game installation) as a single reference SVO(even if very heavy on disk), stream / play with / destroy an instance of it in-game. [color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif][background=rgb(250, 251, 252)]Depends on how you want to destroy it.[/background][/font] [/quote] Upon impact with shots and let the gravity break-up the detached group(s) in smaller shards upon collision(+enough speed) with the underlying rest of the terrain. If I use child pointers, I am not sure to understand how to update the octree after such events. [color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif][background=rgb(250, 251, 252)]To shatter an SVO is just taking a chunk of the voxel nodes out and creating a new SVO out of them.[/background][/font] [/quote] Thanks for that, this is one of the keys I needed to hear ! [color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif][background=rgb(250, 251, 252)]Heavy use of spatial partitioning[/background][/font] [/quote] I tried to get familiar with several inner/leaf node structures to store my noise values but I am still hesitating in choosing one that will serve as well an easy ray-casting and physics animation. I saw one person on youtube publish a sample with fair frame rates, ray-casting only on the CPU. I asked him about the node structure used and he said he used barely half of Laine & Karas's one (without contours nor colors for test purposes) and their exact same ray-casting algo but without CUDA. Laine's ray-caster looks indeed easy to pull from CUDA to CPU. I probably need to have a shot at something like this but I am still not 100% sure : Much thanks again Digitalfragment.
  2. okroms

    Rendering many trees

    [background=rgb(250, 251, 252)]but usually the data seems useless[/background] [/quote] Sometimes it is hard to figure out the cause of your stalls from the profiler only but if a module function comes on top at your app's run-time, at least you know your app is intensively using it. You must also use timing functions directly in your code to locate bottlenecks. For your second question, it often depend on your transparency approach. If you use raw blending, you need a clever primitive ordering to get the most of it but sometimes screen door is more appropriate (no back to front order needed). Check those : http://www.gamedev.net/topic/599103-issues-with-blending-transparency/ http://www.opengl.org/archives/resources/faq/technical/transparency.htm
  3. okroms

    Rendering many trees

    Clb is right, you must measure as much as you can, and NO, you don't really need training for that. You will be glad to simply check out methods with the highest profiles(the ones on top of the list) and possibly concentrate on/optimize them. You can also more directly evaluate the time spent between statements with very simple functions. Just google for c++ profiler/profiling tools. Bench-marking your code is crucial to evaluate yet if you have enough budget for a specific job before writing it. It also helps a lot to get extra clues about what's possibly wrong.
  4. okroms

    Rendering many trees

    Ok so it is not the drawing... I don't know how you have implemented your quadtree but maybe you could test if some trees located outside the desired area get processed ? For example, you could try to setup a breakpoint if a candidate tree is outside the desired area just to check. You could also double check if your whole loop or part of it does not get processed several time instead of only once. Check if one of your visible trees does not get considered more than once. It happens to me all the time, fast(your [color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif][background=rgb(250, 251, 252)]trunk/branches[/background] [/font]) does unfortunately not always mean neat. Good luck.
  5. okroms

    Rendering many trees

    Ooops sorry, you are doing quadtree culling yet so there might be unnecessary traversal. My best guess is to debug your quadtree scheme and make sure no unnecessary trees are processed before or after.
  6. okroms

    Rendering many trees

    Are you using frustum culling ? If yes, I don't understand why your fps still stalls even if the camera is not facing the leaves. What is the size of your leave texture ? Did you try to load a really low one (eg. 1*1) to see if the problem comes from here ?
  7. okroms

    Rendering many trees

    Are you using mip-maps for your leaves texture ? If not, you may speed up things by doing so, and also potentially reduce your aliasing.
  8. First answer : At the data management level, you have many examples out there to teach you how to stream / page / cache parts of your levels from disk to main memory if your level data exceeds it. For example, you can use thread pools to prefetch blocks of your level asynchronously in a view / position dependant basis for more immediate use. For sure, you need a good understanding of your needs to design a data structure that will efficiently serve your engine or specific concept. Make sure to use small textures and try to stick to a polygon roof-top budget. The goal (rarely achieved though) is to keep the same average size for all your polygons on the screen, whatever their distance to the camera. At the rendering level you have 3 popular techniques : - First you can do backface culling, detecting and skipping primitives that don't face the camera. (easy) - Frustum culling whereas you select only polygons inside the view and skip shading others. (intermediate) - Occlusion culling is the next step where you can try to detect if further polygons are not already occluded by closer ones. (advanced) You have to benchmark your code so that you can easily detect where it stalls and add some workarounds accordingly. This last point is very important because it will help you to predict if your jobs will fit before even getting through tedious efforts. Second answer : Collision detection can be achieved through a sequence of ray-face intersections. You are going to test collision between 2 operands, object A and B. Thus, you have to make sure your both operands are holding very few primitives. Then you can try to "ray-face" test every edges of object A against every faces of object B. People typically use dummy geometries, bounding volumes that may barely represent your operands general aspects, since physics events can render great, even if the objects tested are far less detailed than the mesh used for the rendering process. There are very mature libraries that have pushed very far the subject and may help you to get started from the right point. I personnaly recommend Bullet Physics.
  9. Sorry to raise one more time this kind of question. Gamedev.net is sometimes Santa Claus so lets believe in him and ask for big BIG XMas presents ? Noise multi-octave function = OK -> Ray marching it is expensive + applying, storing destruction over an implicit function look like a nightmare. So, storing the 3D noise scalar field inside a SVO to stream/page it from disk ? OK, but which node structure is suitable for destroying it ? How to shatter the SVO volume and apply physics on shards, shattering again and again upon gravity collision until shards reach the size of a single voxel ? Physics over such amount of voxels is obviously too expensive. So should I polygonize with a MC function, blocks of voxels in the shattered area and rasterize triangles out of those blocks rather than try to DVR a whole "dynamic" SVO ? Atomontage answered me that he don't polygonize at all his atoms... How is he doing physics on a that huge amount of voxels ?! Help ! Help ! Help ! Thanks ! Thanks ! Thanks !
  10. okroms

    Seamless Noise

    Hi JTippetts, This trick is awesome because it completely solve the problem. Thank you for explaining it. Kindest regards
  11. Hi bluntman, Thanks for this post, this sample runs a treat here ! I tried it on a grid's vertices positions. As you posted in 2008, do you know any faster alternative nowadays ? If yes, could you provide a link or method keyword ? I am asking because I am testing it on various heavy streams. Of course, I would like to noise as much as possible data so it would be great for me to make sure there is nothing faster out there. According to you, what would be the fastest coherent 2d/3d fractal noise approach ever so far ? I am probably mistaken but it seems that improved perlin is still on top of things as far as we need 2d or 3d. Much thanks again for the fantastic sample.
  • 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!