Home Technical Talk

Relaxed Cone Step Mapping?

Hi,

I am part of a group of students developing their final end of the course project. I am sitting on the art side of the fence but have a hinge to the technical and want to get into shader programming. I decided to look into parallax mapping and found out about something called "relaxed cone step mapping" (RCSM)(http://http.developer.nvidia.com/GPUGems3/gpugems3_ch18.html)

Now, I am just curious whether there there any games currently using relaxed cone step mapping and what the reasoning for and against it were? I wonder what impact this method could have on performance and visual quality and how to weigh these factors up against each other.

The reason I am asking this on the boards is because it (RCSM) seems like a reasonable fast approach and can look pretty nice (a demo of cone step mapping (not relaxed) can be attained here: http://www.gamedev.net/topic/372739-cone-step-mapping-paper--demo-bummer-8/), however, the paper is now 6 years old (the paper was released in 2006) and yet I never heard about it until I was looking up on parallax mapping. This of course means nothing since I am still starting out in game development, so I would like to know what you guys think about it?

Replies

  • Scruples
    Offline / Send Message
    Scruples polycounter lvl 10
    Pixel shaders are already being oversaturated, so parallax mapping has been largely abandoned in favor of tessellation which is also capable of altering the objects silhouette and acting like a dynamic LOD system in some situations.
  • Gestalt
    Offline / Send Message
    Gestalt polycounter lvl 11
    Tessellation still has a slew of problems and is, in practice, pretty much exclusive to certain cards and settings (minority of players). IMO There's still plenty of room for faking depth in the shader, and the techniques don't necessarily have to be too expensive for every asset (often just UV tricks). I don't have much experience with rcsm but it is something that I've looked into and wouldn't rule out in some form.
  • Ace-Angel
    Offline / Send Message
    Ace-Angel polycounter lvl 12
    No, there really isn't, PP-Mapping is fancy, sure, but it's useless, I would say if you want to show of your 'leet' skills, that is totally different matter at hand, but at it's core, PP-Mapping doesn't have the magical properties many claim for it to have.

    Lets look at a few things shall we?

    -Fake depth
    -Fake silhouette clipping
    -Raycast directional shadows
    -Show of your skills on making things look nice

    So whats the problem?

    -Depth breaks at certain angles
    -Silhouette and internal depth aren't affected by most types of AA/FA
    -Shadow stacks up in run-time pretty badly
    -Needs alot of 'layers' to look good
    -Even a simplified version is pretty heavy, and looks terrible
    -Adds extra work for artists to make sure the player 'avoids' noticing all of these issue

    If you plan on adding faked depth, do it with Tesselation, not hardcore shaders, since they eat up performance, without a proper LOD system, nor setup to manage in a way that easy to manage right off the bat.

    Sure, it's DX11 limited, but considering how strained some engines become under DX9 alone with heavy shaders with minimum visual feedback, using PP-Mapping isn't the best idea anyway.

    Not mention, as said, artist's will need to compensate for the issues of the shader, or certain things will need to be changed, such as not allowing the user to come to ground level so they don't see the pancake effect of the shader.

    You might as well save yourself a slew of headaches and go with a simple Bump-Offset build with very small values, or hell, even camera based values with distance to have more control of a simple setup.

    Add in an AO setup for indirect lighting, and call it a day without extra overhead.
  • Gestalt
    Offline / Send Message
    Gestalt polycounter lvl 11
    It really depends what technique you use, which I think is the point of bringing up RCSM as a method. By bringing up pancaking I think you're thinking of POM shortcomings. There are tons of ways to fake depth, some expensive some cheap, and I think it's (currently) better to keep those options in mind than to just tessellate everything.

    I think part of my problem is that tessellation is being thrown into the current gen when it really is a fundamentally different approach and mentality. If you are using tessellation in a significant way for lod why stop at silhouettes and parallax, why even bother with normal maps, what's the point of going halfway, you're just muddying approaches and being redundant. The day an engine is designed around using tessellation as a standard approach on all assets, perhaps dynamically based off of a high-poly, and the day that that approach can be experienced by more than a minority of people, that is when I'll support tessellation as a legitimate approach to make content around.

    Until then it's a shiny bonus feature for the minority that's being tagged on top of old techniques, and isn't representative of what most people will actually see.
    /opinion
  • EarthQuake
    Displacement is NOT a replacement for normal maps for a variety of reasons. You still need those per-pixel normals for accurate shading.

    To replace normal maps with realtime displacement you need:
    A. Insane levels of subdivision to get to the pixel-level, to replicate the same detail as a 1Kx1K normal map you need 1048576 quads.
    B. To recompute normals at every subdivision level, which makes it harder to use any optimization on the sub-division and will cause the shading on the model to "swim".

    Most subd/displacement models will "lock" the normals of the mesh and only displace to effect silhouette. So you still need a normal map to get the correct shading.

    The % of assets that would benefit from full on displacement with sub-pixel detail is far to low to build your engine/lod system around that premise, you would be much better simply modeling the appropriate amount of detail and using an automated LOD system, and using parallax or whatever(simple low res displacement+nms) for the few cases(tiling terrain or whatnot that is difficult to model by hand).
  • FelixSchl
    Thank you Ace-Angel for elaborating. Very interesting arguments you guys brought to the table.
    Ace-Angel wrote: »
    Silhouette and internal depth aren't affected by most types of AA/FA
    They talk about anti-aliasing issues in Section 18.1 of the Gpu Gems article and show some comparison pictures which look quite promising, however it's a rather small image so it is hard to judge and I have not yet seen an actual implementation of RCSM to look at it in real time.
    Ace-Angel wrote: »
    without a proper LOD system, nor setup to manage in a way that easy to manage right off the bat.
    That threw me off a bit, too. However, there were solutions suggested, e.g. creating the mip maps by hand using a nearest neighbor resampling method. Maybe I misread, see for yourself in section 18.5 of the Gpu Gems article).
    Ace-Angel wrote: »
    Adds extra work for artists to make sure the player 'avoids' noticing all of these issue
    Isn't that what being a 3D artist is all about ;) I mean we are painting to hide UV seams which are also a technical limitation and so on. But yes, it does add another redundant workflow consideration on the artist's plate which is never good.

    Your post makes it (RCSM and other relief mapping approaches) look like a gimmick and this is how I come to perceive it now, too. I will stay away from it for this project and possibly look at it again for the learning value of it.

    I cannot comment on DX11 dynamic tessellation since I have never played with it. I simply do not have the required hardware for that kinda stuff at the moment.
  • Gestalt
    Offline / Send Message
    Gestalt polycounter lvl 11
    Most subd/displacement models will "lock" the normals of the mesh and only displace to effect silhouette. So you still need a normal map to get the correct shading.

    This is what I'm referring to and it is part of why I think tessellation is premature.
    To replace normal maps with realtime displacement you need:
    A. Insane levels of subdivision to get to the pixel-level, to replicate the same detail as a 1Kx1K normal map you need 1048576 quads.

    In the most extreme situation where there is no type of interpolation sure you could probably imagine it like that, but high screen resolution is 1080p every point on a normal map doesn't necessarily represent a vert, represents values between verts.

    I definitely think that dynamically interpreting meshes in some form is the future, but imo it's premature to say that tessellation as it is currently used is the way to go (as of now). Tessellation just for silhouettes and parallax on select, capable systems (as an option to switch on) seems excessive and trivial when there are so many ways to fake the effect in the shader so that there is consistency across a variety of systems (some cheaply, some requiring some extra artist attention, but that's the name of the game).
  • EarthQuake
    Gestalt wrote: »
    In the most extreme situation where there is no type of interpolation sure you could probably imagine it like that, but high screen resolution is 1080p every point on a normal map doesn't necessarily represent a vert, represents values between verts.
    Right, you don't need to necessarily have a pixel = vert ration depending on the image content, but in a situation where you don't have pixel level detail you could just use a smaller texture too.

    The bigger point I want to make is that displacement is a poor option for high frequency detail, that is much better done with normals. You can do some really efficient stuff with really simple meshes and a couple levels of subd+displacement for your mid/low level forms.

    You sort of run into the same problem with parallax mapping, its poor for really fine details as you tend to "tearing" with too much sharpness/contrast in your hieghtmap. Sure you can use really complex high quality shaders to help, but you're better off tailoring your art content so that it works well.

    I think that is one of the big reasons you don't see really advanced parallax shaders in games, for the instances where they really show big benefits, you're better off just modeling the detail out if the asset is important enough, and everything else you can just tweak the content so it works well.
    I definitely think that dynamically interpreting meshes in some form is the future, but imo it's premature to say that tessellation as it is currently used is the way to go (as of now). Tessellation just for silhouettes and parallax on select, capable systems (as an option to switch on) seems excessive and trivial when there are so many ways to fake the effect in the shader so that there is consistency across a variety of systems (some cheaply, some requiring some extra artist attention, but that's the name of the game).

    I think a mix of very simple lowpoly, with a few levels of displacement to do nice silhouettes with easy LODing and standard D/N/S on top of that is a good way to go for certain things, especially terrain, organics, rocks/cliffs, etc.

    I'm not really convinced that it is viable for precise hard surface work, though I would like to do some tests to really see that for myself sometime.
  • FelixSchl
    EarthQuake wrote: »
    I think that is one of the big reasons you don't see really advanced parallax shaders in games, for the instances where they really show big benefits, you're better off just modeling the detail out if the asset is important enough, and everything else you can just tweak the content so it works well.

    Well put, this thought was the tie breaker for me
Sign In or Register to comment.