TyphoonLabs has released version 1.3 of the OpenGL Shader Designer, an integrated development environment for GPU fragment and vertex shaders in GLSL (the OpenGL shading language). Key features include plugins for vertex attributes (tangents, binormals, etc.), textures (noise, volumes, etc.), real-time preview with multiple light sources, full syntax highlighting and “intellisense” for GLSL, and much more! (OpenGL Shader Designer 1.3)
ShaderTech.com is a new site that’s focused on real-time shader development, providing numerous resources such as articles, forums, books, tools, and more. Because there are now several very capable high-level shading languages in active use by developers, ShaderTech aims to support the entire GPU development community regardless of shader language.
This SIGGRAPH 2004 paper by McCool et al. describes a “Shader Algebra”, Sh’s system for manipulating shaders (functional composition, specialization, etc.) and doing stream programming. Sh has recently added operators to combine shaders and to apply shaders to streams. Sh now also manages buffers, enabling more convenient general-purpose stream processing. Stream processing is supported on both the GPU and on the CPU (using just-in-time compilation in both cases). The operators, in conjunction with the optimizer, glue shaders, and special “manipulator” support functions, can support a variety of useful operations including shader specialization, redundancy elimination, and I/O adaptation. (Shader Algebra preprint and talk preview.)
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)
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.)
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 paper by Bill Mark et. al describes the Cg high-level graphics hardware programming language and the associated run-time system. The paper details the rationale behind the decisions made in the design of the language. (Cg: A system for programming graphics hardware in a C-like language. Bill Mark, R. Steven Glanville, Kurt Akeley, and Mark J. Kilgard. To appear in the proceedings of SIGGRAPH 2003.)
This paper describes the use of standard C++ to define a high-level shading language directly in the API. The language is nearly indistinguishable from a special-purpose shading language, yet it simplifies implementation, and permits more direct interaction with the specification of textures, parameters, and attributes. (Shader Metaprogramming. Michael D. McCool, Zheng Qin, and Tiberiu S. Popa. SIGGRAPH/Eurographics Graphics Hardware Workshop, September 2-3, 2002, Saarbruecken, Germany, pp. 57-68.)