10 roadtorealtimeoit salvi bps2011 with notes

Upload: yurymik

Post on 03-Apr-2018

218 views

Category:

Documents


1 download

TRANSCRIPT

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    1/66

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    2/66

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    3/66

    Todays talk is about trying to understand how far off we are from having robust, high quality

    and fast OIT methods for real-time applications.

    We will begin by showing why there is real need for better transparency methods and then

    well classify and review some of the most representative ones.

    At the end of the talk we will review the current situation in order to try to understand what kind

    of next steps we should take.

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    4/66

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    5/66

    This is a very good summary of the sort of problems we have to face while rendering

    transparent geometry with alpha-blending. AB is the still de-facto standard compositing

    technique in real-time applications, despite the fact it was introduced almost 30 years ago.

    Since AB is an order-dependent technique every time we add a new transparent object to ascene we have to make sure it doesnt intersect with other transparent objects or that is only

    visible from a certain direction, if we dont want to incur in glaring image artifacts. So its not

    surprising that developers would love to abandon this method in favor of more robust

    techniques, if they were available.

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    6/66

    A classic example of this problem is given by hair rendering. Even if sort every individual hair

    strand we still get images like this one on the left side of the slide while what we really want to

    render is something like what we have on the right side of the slide.

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    7/66

    A classic example of this problem is given by hair rendering. Even if sort every individual hair

    strand we still get images like this one on the left side of the slide while what we really want to

    render is something like what we have on the right side of the slide.

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    8/66

    This problem is well exemplified in current games by the space marine character archetype. A

    bandana is strategically placed on his head to conceal his hair.

    Another way to address this problem from the content standpoint is to have characters with

    very short hair or completely bald characters.

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    9/66

    This problem is well exemplified in current games by the space marine character archetype. A

    bandana is strategically placed on his head to conceal his hair.

    Another way to address this problem from the content standpoint is to have characters with

    very short hair or completely bald characters.

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    10/66

    This problem is well exemplified in current games by the space marine character archetype. A

    bandana is strategically placed on his head to conceal his hair.

    Another way to address this problem from the content standpoint is to have characters with

    very short hair or completely bald characters.

    1

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    11/66

    Incorrect compositing is not the only problem that we can solve with OIT techniques. Also

    objects like fences that are usually rendered with alpha-testing which are often prone to

    generate aliasing artifacts that can be rendered as semi-transparent objects with much better

    results.

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    12/66

    The same technique can also be applied to foliage to get anti-aliased branches and leaves

    1

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    13/66

    If we look at this problem from an operational point of view, what does actually mean to

    correctly composite fragments?

    How do we compute the single contribution of a transparent fragment to the final color of a

    pixel?

    The visibility function is computed as a product of step functions, and represent the total

    transmittance between a transparent fragment and the viewer

    1

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    14/66

    Assume thin transparent light blockers; the final pixel color its just a sum of the fragments

    color pre-multiplied by their alpha and visibility terms

    1

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    15/66

    High image quality

    No major spatial & temporal artifacts

    Accurate evaluation of compositing equation

    High and predictable & stable performance Weak or no dependencies on primitives ordering

    Avoid methods that are based on sorting fragments

    Bounded memory usage

    A must for real-time applications

    1

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    16/66

    Recursive = implicit evaluation of visibility function

    Other methods perform an explicit evaluation of the visibility function

    1

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    17/66 1

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    18/66 1

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    19/66 1

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    20/66 2

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    21/66 2

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    22/66 2

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    23/66 2

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    24/66

    More modern approaches to depth peeling can process multiple layers in one pass.

    Despite these advancements DP is not a frequently used technique.

    2

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    25/66

    A-buffer requires sorting fragments per-pixel. Once fragments are sorted we composite them

    using alpha-blending/compositing.

    2

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    26/66

    A-buffer requires sorting fragments per-pixel. Once fragments are sorted we composite them

    using alpha-blending/compositing.

    2

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    27/66

    A-buffer requires sorting fragments per-pixel. Once fragments are sorted we composite them

    using alpha-blending/compositing.

    2

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    28/66

    Left: image rendered with Stochastic Transparency (24 samples per pixel, we can still notice

    some noise) vs Right: scene rendered via A-buffer (some smoke is missing due to lack of

    memory)

    2

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    29/66 2

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    30/66

    VFs are monotonically decreasing functions with values over the interval [0, 1]

    3

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    31/66 3

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    32/66 3

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    33/66 3

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    34/66 3

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    35/66 3

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    36/66 3

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    37/66

    We compute the smallest area variation and we remove the node that generates it.

    We never remove the front-most node, as it can give very important visual cues (closest

    transparent fragment to the viewer)

    3

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    38/66

    We compute the smallest area variation and we remove the node that generates it.

    We never remove the front-most node, as it can give very important visual cues (closest

    transparent fragment to the viewer)

    3

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    39/66

    We compute the smallest area variation and we remove the node that generates it.

    We never remove the front-most node, as it can give very important visual cues (closest

    transparent fragment to the viewer)

    3

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    40/66

    We compute the smallest area variation and we remove the node that generates it.

    We never remove the front-most node, as it can give very important visual cues (closest

    transparent fragment to the viewer)

    4

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    41/66

    We compute the smallest area variation and we remove the node that generates it.

    We never remove the front-most node, as it can give very important visual cues (closest

    transparent fragment to the viewer)

    4

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    42/66

    We compute the smallest area variation and we remove the node that generates it.

    We never remove the front-most node, as it can give very important visual cues (closest

    transparent fragment to the viewer)

    4

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    43/66

    We compute the smallest area variation and we remove the node that generates it.

    We never remove the front-most node, as it can give very important visual cues (closest

    transparent fragment to the viewer)

    4

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    44/66

    We compute the smallest area variation and we remove the node that generates it.

    We never remove the front-most node, as it can give very important visual cues (closest

    transparent fragment to the viewer)

    4

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    45/66

    We compute the smallest area variation and we remove the node that generates it.

    We never remove the front-most node, as it can give very important visual cues (closest

    transparent fragment to the viewer)

    4

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    46/66

    We compute the smallest area variation and we remove the node that generates it.

    We never remove the front-most node, as it can give very important visual cues (closest

    transparent fragment to the viewer)

    4

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    47/66

    We compute the smallest area variation and we remove the node that generates it.

    We never remove the front-most node, as it can give very important visual cues (closest

    transparent fragment to the viewer)

    4

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    48/66 4

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    49/66 4

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    50/66

    5

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    51/66 5

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    52/66 5

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    53/66 5

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    54/66 5

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    55/66 5

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    56/66 5

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    57/66 5

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    58/66 5

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    59/66 5

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    60/66 6

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    61/66

    Cannot map DX11 atomic ops to fragment insertion/compression ops

    Cannot avoid data races as GPUs can concurrently shade two or more fragments that map to

    the same pixel (no atomicity)

    6

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    62/66

    We avoid those issues by giving up a bounded memory implementation (proof-of-concept

    implementation)

    6

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    63/66 6

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    64/66 6

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    65/66

    Max depth complexity = 120

    Transparency nodes = 8

    Average depth complexity = 4

    8/26/201

    6

  • 7/29/2019 10 RoadToRealTimeOIT Salvi BPS2011 With Notes

    66/66