bump mapping, normal mapping, offset mapping, and....

Discussion in 'Architecture and Products' started by PowerK, Jun 16, 2004.

  1. PowerK

    Regular

    Joined:
    Jun 12, 2004
    Messages:
    312
    Likes Received:
    0
    Location:
    Seoul, Korea
    Hi, folks.

    Is there any good article which explains differences between bump mapping, normal mapping, offset mapping, and virtual displacement mapping ?

    It seems to me that they are all designed to give textures more 3D look, but I'm not sure what the fundamental differences are between them.

    I've recently found out the differences between bump mapping, and normal mapping by watching this video clip. Normal mapping demonstion video taken from Riddick .
    http://www.gametrailers.com/gt_vault/t_chroniclesofriddick_efbb_tech.wmv

    Cheers.

    EDIT : bad link corrected.
     
  2. Hyp-X

    Hyp-X Irregular
    Veteran

    Joined:
    Feb 6, 2002
    Messages:
    1,170
    Likes Received:
    5
  3. anaqer

    Veteran

    Joined:
    Jan 25, 2004
    Messages:
    1,287
    Likes Received:
    1
  4. KimB

    Legend

    Joined:
    May 28, 2002
    Messages:
    12,865
    Likes Received:
    192
    Location:
    Seattle, WA
    Bump mapping: Includes many techniques that are designed to fake a non-flat appearance on a flat surface.

    Normal mapping: One specific implementation of bump mapping that calculates lighting differently for each pixel to simulate bumps. Basically a normal map stores the desired "texture" of a surface, which the hardware uses for proper lighting.

    Offset Mapping and Virtual Displacement mapping: The same thing. This technique comes under a few other names as well. This technique is the same as Normal Mapping, but with the added consideration that since the surface isn't smooth, the position of its pixels shouldn't be calculated as if it were. So, the textures are offset by some amount dependent upon the curvature of the surface in order to improve the illusion given by Normal mapping.
     
  5. trinibwoy

    trinibwoy Meh
    Legend

    Joined:
    Mar 17, 2004
    Messages:
    10,418
    Likes Received:
    411
    Location:
    New York
    My grasp of it is :

    Normal Maps: Since the reflection of light is dependent on the angle at which the light hits the surface normal maps provide this information by representing the surface normal at the particular point in the texture. As such when lighting is done against the textured object it is the angle of reflection of the light that gives the ordinary flat texture more geometric detail.

    Displacement Mapping : The end result is the same as above but instead of manipulating reflections the vertices of the object are directly moved (displaced) by some value stored in the displacement map. Of course, since the object is changed the way it reflects light will change also. This method should be more accurate than normal maps since the lighting trick won't be effective at certain angles . e.g looking at a wall head on.

    All of this would be much better understood with diagrams and I'm sure there is a good article out there somewhere.
     
  6. Simon F

    Simon F Tea maker
    Moderator Veteran

    Joined:
    Feb 8, 2002
    Messages:
    4,560
    Likes Received:
    157
    Location:
    In the Island of Sodor, where the steam trains lie
    Nice summary Chalnoth.
     
  7. GameCat

    Newcomer

    Joined:
    Aug 18, 2003
    Messages:
    185
    Likes Received:
    0
    Location:
    Stockholm, Sweden
    Working clicky

    That really is a pretty inaccurate explanation though. For one, they claim that normals mapping stores both depth/displacement info and information about complex angles and phases whatever that means. They're right in that it's suitable for reducing geometric detail of objects while retaining lighting quality though. You could do the same thing with a bump map, but you'd need more pixel shader math and you'd have to use more bits for the bump channel than the tradiotional eight.
     
  8. Ostsol

    Veteran

    Joined:
    Nov 19, 2002
    Messages:
    1,765
    Likes Received:
    0
    Location:
    Edmonton, Alberta, Canada
    Chalnoth's point about bump-mapping is that there isn't just one technique for it. Of course, the most common is dot3 bump-mapping (Phong), which used in normal-mapping as well. There's also emboss bump-mapping, but I don't think anyone uses that anymore for 3D applications.
     
  9. PowerK

    Regular

    Joined:
    Jun 12, 2004
    Messages:
    312
    Likes Received:
    0
    Location:
    Seoul, Korea
    I apologize for the bad link, guys.

    Ok. It became clearer now. :)

    One thing though. Am I correct in assuming that any VPUs fully supporting DirectX 7 are capable of Normal mapping ? (If my memory serves, bump mapping was first introduced in DX7). And offset mapping (aka virtual displacement mapping) requires VPU with Shader Model 2.0 capability (DirectX 9) ?
     
  10. LeGreg

    Newcomer

    Joined:
    Nov 1, 2003
    Messages:
    239
    Likes Received:
    3
    Yes and now. You're also limited in the number of operations you can do in the pixel shader (well the equivalent which is texture stage state) that limits the interest of normal mapping. Some dx7 class hardware can't do dot3 operation between colors. There is no such thing as a "fully dx7" as there is no such thing as a "fully dx9", dot3 at least is not a requirement.

    with very limited conditions some people did something similar on xbox (geforce3/4 hardware).

    Before we were being able to do dependant texture per pixel, what you could also do is store a view dependant texture that you select "en amont" in the pipeline.
     
  11. Laa-Yosh

    Laa-Yosh I can has custom title?
    Legend Subscriber

    Joined:
    Feb 12, 2002
    Messages:
    9,568
    Likes Received:
    1,452
    Location:
    Budapest, Hungary
    The most important difference IMHO is that no artist could paint a normal map, so it has to be generated from either a grayscale height map (that could be hand-painted) or 3D geometry.
     
  12. AlBran

    AlBran Ferro-Fibrous
    Moderator Legend

    Joined:
    Feb 29, 2004
    Messages:
    20,606
    Likes Received:
    5,711
    Location:
    ಠ_ಠ
     
  13. JF_Aidan_Pryde

    Regular

    Joined:
    Feb 6, 2002
    Messages:
    601
    Likes Received:
    3
    Location:
    New York
    I agree. The most significant thing about normal mapping is that the information is (in most cases) from a massively higher polygon model.
     
  14. DeanoC

    DeanoC Trust me, I'm a renderer person!
    Veteran Subscriber

    Joined:
    Feb 6, 2003
    Messages:
    1,469
    Likes Received:
    185
    Location:
    Viking lands
    Just to clarify.

    Normal maps can come from anywhere (even generated real-time), the technique of generating bump-maps from high poly models is "Appearance Preserving Simplification". Its works just as well on Blinn Bump-maps as normal maps.

    Most normal maps so far aren't APS but hand created heightfields. Its also worth noting the the Dreamcast supported normal maps in hardware and Trespasser did them in software a few years back (though IIRC both do them in polar coordinates rather than cartesian coordinates).
     
  15. JF_Aidan_Pryde

    Regular

    Joined:
    Feb 6, 2002
    Messages:
    601
    Likes Received:
    3
    Location:
    New York
    Given that emboss bumpmapping uses the 8 bit alpha channel for 255 levels of 'bumpyness', can someone clarify the format of the normal map?

    Is it 24-bit RGB or 32-bit RGBA?

    Which channel is used to store what information?

    Where does this information come from?

    And is this a standard format for storing normal maps or does diffferent software use different methods?
     
  16. Ostsol

    Veteran

    Joined:
    Nov 19, 2002
    Messages:
    1,765
    Likes Received:
    0
    Location:
    Edmonton, Alberta, Canada
    Normal maps can be stored in various formats. The traditional method is a 24 bit RGB texture, representing an XYZ vector. Sometimes the alpha channel is used to store a specular- or gloss-map. Recently, ATI has been promoting the use of a 2 channel, 32 bit texture -- 16 bits per channel. These two channels represent the x and y components of a normalized vector. The remaining z component is derived from x and y.
     
  17. MfA

    MfA
    Legend

    Joined:
    Feb 6, 2002
    Messages:
    6,710
    Likes Received:
    458
    Virtual displacement mapping is a more elaborate form of offset mapping than used at the moment, better results but less practical.
     
  18. ninelven

    Veteran

    Joined:
    Dec 27, 2002
    Messages:
    1,699
    Likes Received:
    117
    I think the The Chronicles of Riddick: Escape from Butcher Bay game is one of the first to use normal mapping (for APS as described earlier) on the Xbox. Halo2 will, as well as a few other upcoming games I believe.

    EDIT: Corrections in bold.
     
  19. DeanoC

    DeanoC Trust me, I'm a renderer person!
    Veteran Subscriber

    Joined:
    Feb 6, 2003
    Messages:
    1,469
    Likes Received:
    185
    Location:
    Viking lands
    Err just about every XBox title since release uses normal mapping (including at least Halo 1 and Shrek 1).

    Now if your talking 'Appearance Preserving Simplification' then maybe...

    And yes I am going to correct you everytime until you get it right.
     
  20. darkblu

    Veteran

    Joined:
    Feb 7, 2002
    Messages:
    2,642
    Likes Received:
    22
    while on the topic of normal storage spaces/formats, the XY normals storage space with posterior Z derivation has a nice little advantage over the rest of the normal storage formats when it comes to texture filtering: it handles flowlessly interpolation across normals in situations where other normal storage formats would have hard times to interpolate, i.e. between opposing normals (yes, that might actually happen).

    so one day you got two neighbouring normals n0 = (-1, 0) and n1 = (1, 0) and a misfortunate pixel right amids those two of ni = .5 n0 + .5 n1, e.g. ni must get a bloody norm of zilch, right? -- have no worry as interpolation result (0, 0) from XY space automatically got you a nice normal of (0, 0, 1) in 3d space. for comaprison, in both XYZ space and polar space interpolation logic you'd be using a big spiked club against an opposing-normals case.
     
Loading...

Share This Page

  • About Us

    Beyond3D has been around for over a decade and prides itself on being the best place on the web for in-depth, technically-driven discussion and analysis of 3D graphics hardware. If you love pixels and transistors, you've come to the right place!

    Beyond3D is proudly published by GPU Tools Ltd.
Loading...