ELECTRONIC PREPRINT – COPYRIGHT 2013 JOHN JUDNICH – ALL RIGHTS RESERVED. 1 Fast Per-Pixel Displacement Mapping with Screen-Space Depth Interval Grids John Judnich and Nam Ling Abstract—In this paper, we present a novel space skipping algorithm for per-pixel displacement map rendering on the GPU that significantly accelerates ray convergence. Without any preprocessing, this technique achieves raw displacement map rendering performance two to four times as fast as other techniques without loss of visual quality. Displacement mapping algorithms accurately render complex shapes projected within flat geometry by casting rays from the viewer into a tangent-space height-field; this enables otherwise unachievable resolutions of 3-D detail in games and simulations. Our algorithm accelerates ray convergence by first computing ray boundary intervals within screen-space uniform pixel blocks. For 4x4 pixel blocks, this computation is one sixteenth the complexity of ordinary ray casting. The final pass then uses the dynamically computed depth intervals to converge on a precise intersection point very rapidly. As a result, our algorithm enables rendering of raw displacement map data significantly faster than existing algorithms. Moreover, this technique can provide performance improvement to other existing per-pixel displacement mapping algorithms as well, with or without preprocessing. Index Terms—Computer graphics, Computer science, Convergence, Information geometry, Geometry, Layout, Image quality, Image reconstruction, Pipelines, Ray tracing, Reconstruction algorithms, Rendering (computer graphics), Surface texture, Surface treatment, Virtual reality ✦ 1 I NTRODUCTION D ISPLACEMENT mapping adds high frequency geo- metric detail (mesostructure) to otherwise smooth geometry (macrostructure) by applying a tangent-space heightfield (usually referred to as a displacement map). Displacement mapping deforms an object’s geometric shape by offsetting points in a direction normal to the surface at varying magnitudes specified by the displace- ment map [1] [2]. This way, complex high-resolution op- tionally self-shadowing [3] [4] [5] geometry can be added to formerly smooth surfaces, achieving photorealistic [6] rendering of rough or ”bumpy” objects like small gravel, textured wood, and brick walls, for example [7]. Vertex displacement mapping is the most straight- forward method to apply displacement maps, where the macrostructure geometry is subdivided (producing many more triangles), vertices displaced appropriately, then rasterized [8]. This works well for very large dis- placements that need to interact with the z-buffer (e.g. terrain geometry), but tends to produce prohibitively many triangles (millions to billions) when applying ex- tremely fine displacement maps to surfaces. Adding very fine high resolution mesostructure is often more efficiently achieved with per-pixel displacement mapping, where the displacement is applied in reverse by the fragment shader after rasterization [9] [10]. This • J. Judnich and N. Ling are with the Department of Computer Engineering, Santa Clara University, Santa Clara, CA, 95050. E-mail: jjudnich@scu.edu, nling@scu.edu Electronic Preprint – Copyright 2013 John Judnich – All rights reserved. entails computing ray-heightfield first intersections for each pixel rasterized from the macrostructure, in order to determine where the view ray would have struck had the geometry actually been displaced [11]. B A C Fig. 1. Ray-heightfield intersection including entry point (A), intersection point (B), and exit point (C). This process is illustrated in Figure 1. The top bold line represents the macrostructure geometry’s surface. The bottom surface represents the ”bottom” of the heightfield (height values of zero). Key points include the entry point A (where the ray meets the macrostructure sur- face), the exit point C (where the ray leaves the height- field pseudo-geometry), and the first intersection point B. Note that for efficiency and simplicity on the GPU, ray intersection algorithms usually operate in tangent space (surface coordinates referencing pixels in a texture