Monday, June 21, 2010

AK Peters GPU Pro Source code website available

The accompanying source code page for the book GPU Pro is now available at

http://www.akpeters.com/gpupro/

All the source code is available from there and the Table of Content from the book. As you can see in the TOC the book ended up with 709 colorful pages that will stimulate your retina and brain.

Saturday, May 1, 2010

Stylized Rendering in Spore

Dear GPU Pro Blog,
In chapter 9.1 Stylized Rendering in Spore, we spill the details about Spore's scriptable "filter chain" compositing system. We believe such a system is indispensable for any engine that supports deferred shading and discuss our design and final implementation. We also show how the system can be used to generate a bunch of NPR-esque visual styles that are available as cheats in the game.

Here is an oil painting effect done with the system:














Here's a crayon rendering done with the system:










For more, check out our chapter!
Shalin Shodhan
Andrew Willmott

Polygonal-Functional Hybrids for Computer Animation and Games



I am Denis Kravtsov, a PhD student at the National Centre for Computer Animation at Bournemouth University, UK. Me and my colleagues present an approach utilising hybrid models, combining together both polygonal and Function Representation models. We perform model evaluation and rendering entirely on the GPU using NVidia CUDA SDK. Our approach allows us to produce animations involving dramatic changes of the shape (e.g. metamorphosis, mimicked viscoelastic behaviour, character modifications etc) and interactively create complex shapes with changing topology in short times.

Friday, March 12, 2010

AK Peters Website

You can find GPU Pro on AK Peters website here. There will be additional material on this website as well. Please bookmark this page :-)

BTW: the release date is in May.

Saturday, February 27, 2010

GPU Pro: Table of Content

Section 1 Mathematics
1.1   GPU Color quantization by Chi Sing Leung, Tze-Yui Ho and Yi Xiao
1.2   Visualize Your Shadow Map Techniques by Fan Zhang, Chong Zhao and Adrian Egli
Section 2 Geometry Manipulation
2.1 As-Simple-As Possible Tessellation for Interactive Applications by Tamy Boubekeur
2.2 Rule-based Geometry Synthesis in Real-time by Milan Magdics and Gergely Klar
2.3 GPU-based NURBS Geometry Evaluation and Rendering by Graham Hemingway
2.4 Polygonal-Functional Hybrids for Computer Animation and Games by D. Kravtsov, O. Fryazinov, V. Adzhiev, A. Pasko, P. Comninos
Section 3 Rendering Techniques
3.1 Quad-tree Displacement Mapping with Height Blending by Michał Drobot
3.2 NPR effects using the Geometry Shader by Pedro Hermosilla and Pere-Pau Vazquez
3.3 Alpha Blending as a Post-Process by Benjamin Hathaway
3.4 Virtual Texture Mapping 101 by Matthaus G. Chajdas, Christian Eisenacher, Marc Stamminger, Sylvain Lefebvre
3.5 Volume Decals by Emil Persson
Section 4 Global Illumination
4.1 Fast, Stencil-Based Multiresolution Splatting for Indirect Illumination by Chris Wyman, Greg Nichols and Jeremy Shopf
4.2 Screen-Space Directional Occlusion by Thorsten Grosch and Tobias Ritschel
4.3 Real-time multi-bounce ray-tracing with geometry impostors by Peter Dancsik and Laszlo Szecsi
Section 5 Image Space
5.1 Anisotropic Kuwahara Filtering on the GPU by Jan Eric Kyprianidis, Henry Kang and Jürgen Döllner
5.2 Edge Anti-aliasing by Post-Processing by Hugh Malan
5.3 Environment Mapping with Floyd-Steinberg Halftoning by Laszlo Szirmay-Kalos, Laszlo Szecsi, and
Anton Penzov
5.4 Hierarchical Item Buffers for Granular Occlusion Culling by Thomas Engelhardt and Carsten Dachsbacher
5.5 Realistic Depth-of-Field in Post-Production by David Illes and Peter Horvath
5.6 Real-Time Screen Space Cloud Lighting by Kaori Kubota
5.7 Screen-Space Subsurface Scattering by Jorge Jimenez and Diego Gutierrez
Section 6 Handheld Devices
6.1 Migration to OpenGL ES 2.0 by Ken Catterall
6.2 Touchscreen-based user interaction by Andrea Bizzotto
6.3 iPhone 3GS Graphics Development and Optimization Strategies by Andrew Senior
6.4 Optimizing a 3D UI Engine for Mobile Devices by Hyunwoo Ki
Section 7 Shadows
7.1 Fast Conventional Shadow Filtering by Holger Gruen
7.2 Hybrid Min-MaxPlane-Based by Holger Gruen
7.3 Shadow Mapping for Omni-Directional Light Using Tetrahedron Mapping by Hung-Chien Liao
7.4 Screen Space Soft Shadows by Jesus Gumbau, Miguel Chover and Mateu Sbert
Section 8 3D Engine Design
8.1 Multi-Fragment Effects on the GPU using Bucket Sort by Meng-Cheng Huang, Fang Liu, Xue-Hui Liu
and En-Hua Wu
8.2 Parallelized Light Pre-Pass Rendering with the Cell Broadband Engine™ by Steven Tovey and Stephen McAuley
8.3 Porting code between Direct3D9 and OpenGL 2.0 by Wojciech Sterna
8.4 Practical Thread Rendering for DirectX 9 by David Pangerl
Section 9 Game Postmortems
9.1 Stylized Rendering in Spore by Shalin Shodhan and Andrew Willmott
9.2 Rendering Techniques in Call of Juarez: Bound in Blood by Paweł Rohleder and Maciej Jamrozik
9.3 Making it large, beautiful, fast and consistent – Lessons learned developing Just Cause 2 by Emil Persson
9.4 Destructible Volumetric Terrain by Marek Rosa
Section 10 Beyond Pixels & Triangles
10.1 Parallelized Implementation of Universal Visual Computer by Tze-Yui Ho, Ping-Man Lam and Chi-Sing Leung
10.2 Accelerating Virtual Texturing using CUDA by Charles-Frederik Hollemeersch, Bart Pieters,
Peter Lambert, and Rik Van de Walle
10.3 Efficient Rendering of Highly Detailed Volumetric Scenes With GigaVoxels by Cyril Crassin, Fabrice Neyret, Miguel Sainz, and Elmar Eisemann
10.4 Spatial Binning on the GPU by Christopher Oat, Joshua Barczak and Jeremy Shopf
10.5 Real-Time Interaction between Particles and Dynamic Mesh on GPU by Vlad Alexandrov

Saturday, February 20, 2010

GPU Pro 2: Call for Authors

After the tremendous success of the first seven entries to the ShaderX book series, and the upcoming success of the GPU Pro book (see below), we are looking for authors for GPU Pro 2.

The upcoming book will cover advanced rendering techniques that run on the DirectX and/or OpenGL run-time or any other run-time with any language available. It will include topics on: Geometry Manipulation; Rendering Techniques; Handheld Devices Programming; Effects in Image Space; Shadows; 3D Engine Design; Graphics Related Tools; Environmental Effects and a dedicated section on mathematics used in graphics programming.

Proposals are due by May 17th, 2010. Please send them to wolf at shaderx.com. An example proposal, writing guidelines and a FAQ can be downloaded from http://gpupro2.blogspot.com/.

GPU Pro on its way to the printer

Finally the book is on its way to the printer. It can be pre-ordered at Amazon.

Sunday, December 20, 2009

Anisotropic Kuwahara Filtering on the GPU

We are Jan Eric Kyprianidis (Hasso-Plattner-Institut, Germany) and Henry Kang (University of Missouri, St. Louis, USA). In this chapter we present a GPU implementation of the anisotropic Kuwahara filter. The anisotropic Kuwahara filter is a generalization of the Kuwahara filter that avoids artifacts by adapting shape, scale and orientation of the filter to the local structure of the input. Due to this adaption, directional image features are better preserved and emphasized. This results in overall sharper edges and a more feature-abiding painterly effect. Unlike existing nonlinear smoothing filters, the anisotropic Kuwahara filter is robust against high-contrast noise and avoids overblurring in low-contrast areas, providing a consistent level of abstraction across the image. It also ensures outstanding temporal coherence in video abstraction, even with per-frame filtering.


Sunday, December 13, 2009

Making it large, beautiful, fast and consistent – Lessons learned developing Just Cause 2



My name is Emil Persson and I'm working as a graphics programmer at Avalanche Studios. This article (with potentially the longest title in the book) covers some of the rendering technique we used in Just Cause 2. Some of highlights include:

Our dynamic lights - Instead of moving to deferred shading we come up with a solution for having a large number of dynamic lights without multi-passing or increasing the draw calls.

Our shadowing system - A shadowing solution that scales well to large distances. The practical problems we tackled and the extra features we added.

A cross-platform interface for rendering. The advantages of having one, and how we crammed DX10 into a common interface with DX9 consoles and maintained good performance.

Ambient occlusion volumes - Our solution to ambient occlusion from dynamic objects.

Particle trimming - How we doubled performance of particle and cloud rendering at no visual loss.

Cross platform consistency issues and how we dealt with them.

Floating point precision problems we experienced due to our huge world and how we fixed it.

Hope you the enjoy article and hope you play the game when it is released on March 23.

Wednesday, November 4, 2009

Alpha Blending as a Post-Process

My name is Benjamin Hathaway, a senior graphics programmer at Black Rock Studio. In the article presented I will explain a novel approach to the rendering of foliage (and other alpha-test renderings) which was developed for our 2008 title Pure.


The technique (Screen-Space Alpha Masking) is a cross-platform solution that enables the rendering of thousands (or millions) of apparently alpha-blended foliage polygons without the need for any prior depth sorting, using no more than two draw-calls and a full-screen post-process.

Thursday, October 29, 2009

Fast Conventional Shadow Filtering


My name is Holger Grün. I do work within the European GPU ISV relations team of AMD. If you want to know how to drastically reduce the number of texture operations for conventional shdaow map filtering you should read my article. With the methods described in the article one can evaluate shadow map filters defined by a separable weights matrix in only (N/2)x(N/2) texture operations. A filter that does consider 8x8 visibility samples would usually be carried out using 49 PCF operations but now only 16 PCF operations are necessary. The article further describes techniques for fast shadow filtering using non-separable weight matrices and presents two usecases for these techniques.

Wednesday, October 28, 2009

As-Simple-As Possible Tessellation for Interactive Applications


My name is Tamy Boubekeur, Ph.D in computer science. I am Associate Professor at Telecom ParisTech within the Paris Institute of Technology (France) where I lead the research activities in Computer Graphics.
In this chapter, I describe and extend the Phong Tessellation operator, a simple and efficient way to define curved geometry from flat polygons. This operator is local, defined per-polygon using only vertex position and normal vectors and does not require to generate any explicit patch. It completes Phong normal interpolation in locations where curved geometry is critical to hide polygonization artifacts (silhouette, interior contours) . I extend the original operator to the case of quads, making it compatible with triangle, quad and tri-quad meshes. This technique can be implemented on today's GPUs using uniform or adaptive instanced tessellation as well as on future DX11 graphics architectures using the tessellator unit.

Thursday, October 22, 2009

Textured Silhouette Edges and Pencil Rendering on the Geometry Shader


We are Pedro Hermosilla and Pere-Pau Vázquez of the MOVING graphics group at UPC in Barcelona. Our contribution to GPU Pro deals with Non-Photorrealistic Rendering on the GPU.


Silhouette detection is a key issue in many non-photorealistic rendering algorithms. Silhouettes play an important role in shape recognition because they provide one of the main cues for figure-to-ground distinction. However, since silhouettes are view-dependent, they must be computed per frame. In this paper we present a couple of techniques that make use of the Geometry Shader in order to generate and texture silhouettes and to simulate pencil rendering in realtime. We provide both the insights of the technique and the source code of a sample application that makes use of the techniques to render a simple object.


Monday, October 12, 2009

Rendering Techniques in Call of Juarez: Bound in Blood


I am Pawel Rohleder, 3D graphics programmer and researcher at Techland. Our contribution to GPU Pro discloses rendering techniques applied in Call of Juarez: Bound in Blood, the Wild West FPS action game. The game depicts the wildest West ever through the story of Ray and Thomas McCall, two deadly gunslingers who are in the quest for the legendary gold of Juarez.

The article goes through very detailed description of single game frame rendering process based on deferred shading method. It demonstrates the advanced lighting and shadowing techniques, adopted do complex, open-space virtual environments, combined with top-notch post-processing effects (SSAO, motion-blur, tone mapping) and natural phenomena visualizations (sky, clouds, water, rain).
We also give the reader a short description of various core subsystems (like terrain, geometry, material management) which are the integral tool-kit enclosed in ChromeEngine4.

Wednesday, October 7, 2009

Virtual Texturing using CUDA


I’m Charles-Fredrik Hollemeersch and am currently working as a researcher at Multimedia Lab. Our contribution to GPU pro shows how virtual texturing can be accelerated using CUDA by offloading many tasks to the GPU. Virtual texturing is a promising technique to improve the visual quality of real-time rendering applications such as simulations and games. By selectively loading parts of the texture dataset, virtual texturing allows for higher resolution textures than possible with traditional techniques. However, this technique also adds a significant overhead to the renderer. First, there is the task of determining the working set of the current frame. Secondly, there is the need to upload and convert the streamed data.

Luckily, these tasks lend themselves well to data-parallel execution on a GPU. In our chapter we will show how all these tasks can efficiently be executed on the GPU though a combination of CUDA and OpenGL based steps.

Sunday, October 4, 2009

Volume Decals


My name is Emil Persson (known on the web as Humus) and one of the articles I'm contributing is called Volume Decals. It's a technique for rendering seamless decals properly wrapped around arbitrary geometry. This solves many of the common issues in traditional decal implementations, such as z-fighting, misalignment across geometric edges, non-trivial clipping, decals partly hanging in the air etc.

The idea is to render decals as convex volumes and use the screen position and depth buffer to generate the texture coordinates to look up in a volume decal texture. The articles covers all the dirty implementation details as well as variations and expansions of the technique. Does a "blast shadow map" sound cool? Read all about it in the article. :)

Sunday, September 20, 2009

GPU Pro - Advanced Rendering Techniques

The book looks fantastic! There will be more than 40 articles in full-color in the book. I already have several favourite articles. I will cover some of them in the next couple of months.