Tone Mapping on GPUs - PowerPoint PPT Presentation

1 / 56
About This Presentation
Title:

Tone Mapping on GPUs

Description:

Tone Mapping on GPUs – PowerPoint PPT presentation

Number of Views:60
Avg rating:3.0/5.0
Slides: 57
Provided by: steve1631
Category:
Tags: gpus | mapping | pav | tone

less

Transcript and Presenter's Notes

Title: Tone Mapping on GPUs


1
Tone Mapping on GPUs
  • Cliff Woolley University of Virginia

Slides courtesy Nolan Goodnight
2
HDR and Tone Mapping
Clamped to 0,1
Compressed
3
Advances in graphics hardware
  • Physically-based rendering on the GPU
  • (Purcell et al, 2003)
  • High dynamic range texture mapping
  • (Debevec et al, 2001)

4
System Overview
  • Interactive tone mapping system for an OpenGL
    application

tone mapping system
application
Display callback
HDR image
Frame buffer
LDR image
5
Interface to the application
tone mapping system
application
  • tmInitialize() // Initialize the system
  • tmEnable() // Retarget GL calls
  • Draw geometry
  • tmCompress() // Compress output
  • tmDisable() // Restore app context

6
Choosing a tone mapping operator
  • Photographic Tone Reproduction for High Contrast
    Images (Reinhard et al, 2002)
  • Global operator is a simple transfer function

1
0
7
Choosing a tone mapping operator
  • Local operator
  • Digital analog to burning and dodging

Center-surround
8
Why use this tone mapping operator?
  • Global operator is simple and fast to compute
  • Only one global computation
  • We can dynamically choose the number of zones

9
Variable number of zones 3
10
Variable number of zones 4
11
Variable number of zones 5
12
Variable number of zones 6
13
Variable number of zones 7
14
Variable number of zones 8
15
System block diagram
16
Implementation
  • Target architecture
  • ATI Radeon 9800 (R350)
  • Data storage
  • Floating-point off-screen buffers (pbuffers)
  • Multiple rendering surfaces (GL_AUXi)

17
Implementation
  • Algorithms
  • ARB fragment and vertex assembly
  • Generate fragments with image-sized quads
  • Data representation
  • Vector vs. scalar organization

18
Global operator block diagram
19
Implementation global operator
  • Simple luminance transform
  • Store luminance and log luminance in separate
    channels

HDR image
Luminance Log luminance
luminance
log luminance
Single pbuffer
Mipmap reduction
LDR image
20
Implementation global operator
Single rendering surface
HDR image
Luminance Log luminance
Single pbuffer
Mipmap reduction
log luminance channel
log average luminance
LDR image
21
Implementation global operator
HDR image
texture 0
operator shader
Luminance Log luminance
texture 1
texture 2
Mipmap reduction
LDR image
22
Local operator block diagram
23
Implementation GPU-based convolutions
  • Transform n-vector product into multiple 4-vector
    products

24
Vectorizing the luminance
  • Output 4 pixels at the same time
  • Useful for expensive algorithms
  • Requires a conversion back to scalar form.

Stacked domain
25
Vectorizing the luminance
  • A simple method for luminance vectorization

26
Vectorizing the luminance
  • A simple method for luminance vectorization

27
Vectorizing the luminance
  • A simple method for luminance vectorization

28
Vectorizing the luminance
  • A simple method for luminance vectorization

29
Vectorizing the luminance
  • A simple method for luminance vectorization
  • Preserves spatial locality

30
GPU-based convolutions
stacked image
31
GPU-based convolutions
Pass 1
stacked image
32
GPU-based convolutions
Pass 1
Pass 2

stacked image
33
GPU-based convolutions
Pass 1
Pass 2
Pass 3


stacked image
34
GPU-based convolutions
  • Compute multiple 4-vector products per pass
  • Less shader and texture switching

Single render pass


stacked image
35
GPU-based convolutions
  • Compute multiple 4-vector products per pass
  • Less shader and texture switching

Single render pass


stacked image
36
GPU-based convolutions
  • Compute multiple 4-vector products per pass
  • Less shader and texture switching

Single render pass


stacked image
37
GPU-based convolutions
  • Compute multiple 4-vector products per pass
  • Less shader and texture switching

Single render pass


stacked image
38
GPU-based convolutions
  • Compute multiple 4-vector products per pass
  • Less shader and texture switching

Single render pass


stacked image
39
GPU-based convolutions
  • Advantages
  • Handles large kernels
  • Efficient memory access
  • No transform back to scalar values

512 X 512 image
11 x 11 kernel
6 ms
21 x 21 kernel
10 ms
41 x 41 kernel
16 ms
40
System block diagram
41
Calculating adaptation zones
luminance
luminance
FRONT
0
1
BACK
Buffer 0
Buffer 1
42
Calculating adaptation zones
luminance
luminance
FRONT
2
1
BACK
Buffer 0
Buffer 1
43
Calculating adaptation zones
luminance
luminance
FRONT
2
3
BACK
Buffer 0
Buffer 1
44
Calculating adaptation zones
luminance
luminance
FRONT
4
3
BACK
Buffer 0
Buffer 1
45
Performance global operator
Frames per second
Image size
46
Performance local operator
Frames per second
Number of zones
47
Performance comparison CPU vs. GPU
48
Results Accuracy
  • Comparison with CPU 512 x 512 image

49
False-color zone images
50
Images generated at 30Hz
Compressed 2 zones
Clamped 0,1
51
Images generated at 30Hz
Compressed 2 zones
Clamped 0,1
52
Images generated at 30Hz
Compressed 2 zones
Clamped 0,1
53
Images generated at 30Hz
Compressed 2 zones
Clamped 0,1
54
Images generated at 30Hz
Compressed 2 zones
Clamped 0,1
55
Images generated at 30Hz
Compressed 2 zones
Clamped 0,1
56
Conclusion and Future Work
  • Summary
  • System for interactively compressing HDR output
    from an OpenGL application
  • Complex tone mapping operator on the GPU
  • Future Work
  • Other tone mapping operators
  • Further optimizations
  • Non-invasive implementation
Write a Comment
User Comments (0)
About PowerShow.com