Jump to content
  • Advertisement

HellRaiZer

Member
  • Content Count

    663
  • Joined

  • Last visited

Community Reputation

1001 Excellent

About HellRaiZer

  • Rank
    Advanced Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. HellRaiZer

    Useless Snippet #2: AABB/Frustum test

    Everyone, thanks for the constructive comments. I've updated the article based on some of your suggestions.   @Matias Goldberg: Unfortunately, changing _mm_load_ps((float*)&absPlaneMask[0]) to be standard compliant as you suggested, as well as adding the __restrict keyword, requires a rerun of the benchmarks, because otherwise the numbers won't be accurate. I'll keep a note and hope to be able to do it sometime soon.   One small note about your last comment. The 4 AABBs at a time SSE version has a loop at the end which should handle the case where the number of AABBs isn't a multiple of 4. The code isn't shown for clarity (it should actually be the same as the 1 AABB at a time version).   Thanks again for the great input.
  2. HellRaiZer

    Useless Snippet #2: AABB/Frustum test

    @zdlr: Of course you are right. I forgot about those two. I'll edit the article to read "C++" instead of "C".   @Matias: Thank you very much for the tips. I'll try to find some time to do the changes you suggest and edit the article. I'll also try to make a little VS project to attach to the article at the same time.    About the two dot products. Do you mean method 5 on that article? In this case, the resulting code wouldn't be able to distinguish between fully inside and intersecting states which is a requirement for this article. I know, it might sound bad trying to optimize something and add arbitrary restrictions which might affect performance, but I think having the ability to distinguish between those two cases might help in the case of an hierarchy. E.g. parent is completely inside, so there's no need to check any of its children.   Please correct me if I'm wrong. 
  3. HellRaiZer

    Useless Snippet #2: AABB/Frustum test

    Thank you all for the comments.   @Servant: Bacterius is right. The numbers are "cycles per AABB". Culling a batch of 1024 AABBs in a single loop ends up being faster than 32 probably because the function overhead (e.g. calculating the abs of the plane normals) is minimal compared to the main loop.    Example: Assume that the initial loop which calculates the abs of the plane normals requires 200 cycles. Also, assume that each AABB requires 100 cycles. For a batch of 10 AABBs, the function would require 1200 cycles to complete. Or in other words, 120 cycles per AABB. If the batch had 1000 AABBs, the function would require 100200 cycles, or 100.2 cycles per AABB. Hope that makes sense.   @zdlr: Variable names were kept like that in order to match the examples in Fabian Giesen's article which I linked above. Also, the term 'reference implementation' doesn't mean that the code uses references. It means that, that specific snippet is used as a baseline for performance comparisons (if this was what you meant).
  4. HellRaiZer

    Virtualized Scenes and Rendering

    I think you have to include the reply_id=XXXXXX part of the post. E.g. all links right now seem to point to the journal itself (http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=363003?). Btw, you don't need the last '?'. Change those to (e.g.) http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=363003&reply_id=3473003. (I hope the last link works when I press Reply, otherwise ignore me :) )
  5. HellRaiZer

    More D3D11

    I was just browsing Graphics Programming Methods on Google Books and I saw this article: Higher-Order Surfaces Using Curved Point-Normal (PN) Triangles. Of course it's not about DX11, so you probably don't need this. But since it's online I thought I'd share it. I haven't worked with PN triangles, but i guess the theory in the 2 of the 3 papers you posted should be enough (i don't expect the "marketing" one to very detailed). HellRaiZer
  6. HellRaiZer

    Terrain texturing

    Very interesting post indeed. I always wanted to try texture packs for texture splatting but the thought of manual texture filtering in the shader kept me from doing it. Quote: If I'm not mistken, this is also the technique used in Far Cry / Crysis. AFAIK FarCry used the technique you described. But from the little time i've spent with Crysis' editor i think they use another technique very similar to texture splatting. For distant terrain they use a prebaked texture (one per terrain patch i think) which can have arbitrary dimensions (higher resolutions are used in the playable area of the level, lower res for the distant terrain where you can't go). For close up terrain, they create one mesh per material (this is a mesh which holds only the terrain triangles which use the specified material) and add it on top of the base layer (the prebaked texture), instead of rendering the whole patch with alpha blending. I don't remember the details of the shader, but i think they also use your limitation for 1 layer per-vertex. Quote: For example, at the highest quality, shadow maps use 4 TMUs. I assume that by highest quality you mean PSSM with 4 4096x4096 shadowmaps. You have probably already said that in a previous journal post so forgive my memory. If you can get away with just 2048x2048 for the highest level, you can pack those into an atlas and use just 1 texunit (you would need one more for a 4x4 indirection texture, but the idea is that independently of the number of PSSM slices the texunits required are always 2). I imagine you've already checked that (or it has already been suggested by someone else), so sorry for repeating the obvious. Once again, thanks for this really interesting post. And forgive my English. HellRaiZer
  • 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!