• Advertisement


  • Content count

  • Joined

  • Last visited

Community Reputation

1990 Excellent

About tool_2046

  • Rank

Personal Information

  • Interests
  1. Math related to 3D graphics.

    Truth is there's a good chance you'll use little of that in practice, but all of it is worth learning. Take the classes that interest you the most and research the rest on your own time. 
  2. Wouldn't that only end up rendering the edges rather than filling them? Or have I misunderstood?     Yeah, you are right. You need to use the stencil buffer to get an accurate in/out voxel model. Basically, I'm thinking of the voxelization described near the bottom of section 30.2.4 here:   http://http.developer.nvidia.com/GPUGems3/gpugems3_ch30.html
  3. This is probably massively out of date, but can you adjust clip planes to render to slices and use the slices to build the voxel representation? Basically fix a camera on an axis, create clip planes that clip out everything above and below a predetermined thickness, then write out to a slice?
  4. Cloud Rendering

      Could it be lack of self-shadowing and maybe not using exponent on the noise, which is creating very wispy looking clouds in your screenshot? Though obviously sometimes wispy clouds are desirable, they often don't look very volumetric.   My go to resource for cloud rendering is a rather old thread here on gameDev by Yann-L, sadly the pictures are all missing now, but they looked impressive at the time and i'm pretty sure the techniques are still in use today. Though the site redesigns have made the posts harder to follower (quote blocks seem to have been lost and so a reply and quote all flows together), there is still plenty of good information to be found in Yann's posts, probably worth a read.     Yann's work was pretty amazing. These days this is probably the best paper I've seen on sky rendering: http://www.hpi.uni-potsdam.de/fileadmin/hpi/FG_Doellner/publications/2012/MED12/paper_1056_cr.pdf   Here's the video: https://www.youtube.com/watch?v=t8ibsEl0kAI   The clouds are based on a Game Programming Gems article that traces rays through a heightfield. The results are pretty convincing. 
  5. I think I'm misunderstanding you. I thought the complaint with how OBJ's store vertices is that there's separate lists for positions, normals and texture coordinates. By "collapse them down" I mean make a single vertex list where each vertex has a position, normal and texture coordinate, and a single index buffer that indexes into that list. 
  6. Alright, my apologies. I don't disagree that using a single vertex and index buffer per subset is better than using one per positions/normals/texture coordinates. I do disagree that collapsing vertices and indices down is difficult. Identifying unique vertices is a matter of looking at the triplet of indices specifying a vertex.    Like I said, your game probably isn't going to be using any standard format natively. If you just want to load in a standard model file to mess around, writing an OBJ loader is quick to do. I honestly thought it was pretty fun and educational. Could your time be spent better elsewhere? Probably, but it's not like you are wasting a month trying to convince Collada or something to load. assimp is a fine solution. But if you want to spend a day or so, you can write an effective OBJ loader.
  7.   I agree on some levels, but I see a few good reasons for writing an OBJ parser.   For starters, it's easy. Probably the easiest model format I've dealt with. There isn't a whole lot of variation you'll encounter between exporters (watch out for negative indices!) and it will support static meshes pretty well.    It's also widely supported in modeling applications. There aren't many modeling applications that do not support OBJ, and again, you aren't hitting COLLADA style variations here.   The data is generally organized well and easily translates to graphics APIs. No, you aren't getting shaders here. Yes it's not binary. In my experience though, you are likely writing your own format, complete with your own exporters from whatever application you are using. OBJ may be less efficient, but it's a good starting off point. 
  8. OpenGL Render queue ids/design?

    If you don't care about perfect depth sorting, but do want a rough depth sort (good for opaque, not so good for translucent), you can definately quantize it to some smaller amount of bits. e.g. quantized = depth/maxDepth * 2numBits-1     If you need to be able to recover the original 32-bit index, there's no way to do this. You need to use 16-bit indices to begin with. If you don't need to be able to recover the original values, there's many ways, including hashing. A very simple hash that I sometimes use is just: hashed = ((original >> 16) ^ original)&0xFFFFU;   Speaking of recovering original values -- there's two design choices here: 1) You design your render queue so that from a large sorting key (e.g. 64-bits) you can extract all sorts of state information of how that object should be rendered. You can extract materials ID's, geometry ID's, shader ID's, etc, etc. 2) You treat the sorting key as just a binary lump of data that's only used for sorting and nothing else. You store render-state information elsewhere.   Both methods have their merits. To offer another point of view though, I personally chose #2. The objects in my render queue look kind-of like: { u32:key, u32:drawCallData, u32:numStateGroups, StateGroup[]:states } Each item contains the data that will be used to make the draw-call, and then it contains a variable-sized list of state-group pointers. A state-group then contains actual render-states, like commands to bind textures, buffers, shaders, etc...   The sort key is only used for sorting; no data is ever extracted from it. Different high level rendering systems can then populate it in whatever way they need to. If translucent and opaque objects are going to be put into the same queue, then the most-significant-bit can be used to define which one of these passes the object should appear in. Opqaue objects could then follow this with an 8-bit shader hash, whereas translucent objects could follow it with a 24-bit depth value, etc...   Hodgman has once again done a great job of explaining, and I have little to add. Here's the first source I saw suggesting this though: http://realtimecollisiondetection.net/blog/?p=86
  9.   That's very compelling. Is there a video or something to accompany it? I can't quite follow how they're doing that from the slides. I Googled the guy's name a bit but could only find the slides.     I don't know of video for the slides, and this suggests it was lost:   http://directtovideo.wordpress.com/2012/03/15/get-my-slides-from-gdc2012/   I haven't dug through the GDC Vault to see what there is though. 
  10. Maybe not what you are looking for, but this a pretty good presentation:   http://directtovideo.files.wordpress.com/2012/03/gdc_2012_released.pdf
  11.   To be honest, I seriously dislike replies like this. There are plenty of reasons why someone won't find "obvious" research and the whole lmgtfy just wreaks of unnecessary arrogance. Man up and give the guy a link or two, or don't bother responding.    On that note, check out the GPU Gems chapter on this:    http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter02.html   There are better ways of handling things these days. If you are using D3D11 look into using tessellation. If you are using D3D11.2 there's hardware support for virtual textures. 
  12. Can't you just use a ray cast and count intersections? Odd = in, even = out? Maybe I don't understand the question, but see here:   http://en.wikipedia.org/wiki/Point_in_polygon#Ray_casting_algorithm   Should work fine for 3D as well, assuming your mesh is water tight.
  13.   This is interesting and much better than what I proposed as it avoids the costly segment vs segment intersection tests.  Do you know what it's called?   Sounds like gift wrapping to me: http://en.wikipedia.org/wiki/Gift_wrapping_algorithm
  14. Ambient Occlusion from Depth Map?

    What you are trying to do is called screen space ambient occlusion (SSAO). There's a lot of resources out there for this, and more advanced variants of it. Here's a good starting point: http://www.iquilezles.org/www/articles/ssao/ssao.htm
  • Advertisement