This year ACM SIGGRAPH will feature a full-day course titled “GPGPU: General-Purpose Computing on Graphics Hardware”. The course, organized by Mark Harris of NVIDIA and David Luebke of the University of Virginia, will feature GPGPU experts from industry and academia. The course will discuss core computational building blocks such as sorting, searching, and linear algebra, using case studies ranging from fluid simulation to tone mapping. Particular focus will be given to tools, perils, and tricks of the trade in general-purpose GPU programming. (http://www.gpgpu.org/s2004)
The Cg Toolkit allows developers to write and run shader programs using a wide variety of hardware platforms and graphics APIs. This release introduces several significant new features:
- Interfaces, a language construct that facilitates the creation of
general, reconfigurable Cg programs
- Unsized arrays
- Parameter instances may be created and shared between multiple programs
- Parameters may be marked as compile-time constants, leading to more efficient compiled code
- Support for x86 Linux (Red Hat 7.1 or later etc) and Mac OS X Panther
Be sure to check out the CgReleaseNotes and CgManualAddendum in the documents package for full details. (NVIDIA Cg Toolkit 1.2)
GPU Gems: Programming Techniques, Tips, and Tricks for Real-Time Graphics, published by Addison-Wesley, is a compilation of articles covering practical real-time graphics techniques. It focuses on the programmable graphics pipeline available in today’s graphics processing units (GPUs) and highlights techniques needed by developers creating advanced visual effects. Several articles in the book deal with GPGPU-related topics. For more information, please visit the book’s web site. GPU Gems will be available at GDC 2004.
Developers registered with NVIDIA now have a place to discuss issues and ideas with other developers and the NVIDIA Developer Technology team. The goal of this feature is to provide a forum to aid in answering questions about programming techniques, developer tools, and NVIDIA products. Look for it now on http://nvdeveloper.nvidia.com.
Brook for GPUs is an active research project at the Stanford University Computer Graphics Lab to explore general-purpose computing on modern programmable graphics hardware. BrookGPU is a compiler and runtime implementation of the Brook stream programming language which provides an easy, C-like programming environment for today’s GPU. The beta version of Brook for GPUs is now available for download at the link below. Brook requires no graphics or GPU programming experience, and supports both ATI Radeon 9500+ and NVIDIA GeForce FX /Quadro FX hardware, using both DirectX and OpenGL APIs. BrookGPU has a complete fallback CPU implementation. (Brook for GPUs.)
Beyond3D.com recently held a shader competition, the results of which are available here. Of interest to GPGPU readers is the runner up entry by Eyal Teler called “retro”, which implements the classic game “Frogger” entirely in pixel shaders. The game is designed to run on ATI GPUs. (Beyond3d.com Shader Competition.)
GlipKit is a small library that provides a few hardware-accelerated implementations of computational stereo methods. The library currently provides disparity matchers (hierarchical & non-hierarchical, with optional back-matching) and a shape from stereo implementation based on a plane-sweeping approach. The library is currently biased toward ATI cards (due to the use of the ATI_fragment_shader OpenGL extension). (GlipKit hardware-accelerated image processing toolkit.)
Sh is a metaprogramming language for programmable GPUs, developed at the University of Waterloo. From the “About Sh” page: “A high-level language allows programming GPUs with familiar constructs and syntax, without worrying about the details of the hardware. Sh is such a high-level language. It offers the convenient syntax of C++ and takes the burden of register allocation and other low-level issues away from the programmer. This allows GPU programs to be written much quicker and makes porting such programs extremely simple.” Sh is an open-source project hosted on SourceForge http://libsh.sourceforge.net.
This Graphics Architecture course taught by John Owens at the University of California, Davis, includes content on traditional graphics architecture, as well as programmable shading, stream processing, and general purpose computation. (UC Davis EEC 289P, Graphics Architecture, Spring 2003.)
This demo by Simon Green of NVIDIA demonstrates Verlet cloth simulation implemented on the GPU using fragment programs and floating point buffers. It uses the GL_NV_pixel_data_range OpenGL extension to implement “render to vertex array” in order to render the cloth as a mesh. (Cloth Simulation Demo)