An introduction to Core GLSL that covers shader writing, the graphics pipeline, and the OpenGL setup of an application using shaders. Variables, data types, and language syntax are also explored. Several shader examples are presented. This is the updated version of the previous GLSL tutorial which focused on OpenGL up to 2.0.
An introduction to GLSL up to version 1.2. Both ARB extensions and OpenGL 2.0 versions are included in the tutorial with color coded to help the reader to distinguish between them.
GLUT is a library that allows us to write system independent applications without messing up with specific window systems. In this tutorial I cover the initialization required, mouse and keyboard input, pop-up menus, writing text, GLUT’s game mode, and subwindows.
View Frustum Culling
View frustum culling is a simple way to add a boost to an OpenGL application. This tutorial shows how to extract the view frustum for a camera, and how to cull spheres and boxes that are outside the view frustum. Optimizations, notes, references and source code are also provided.
Selecting, a particular item in a 3D scene may prove useful for some applications. The selection can be performed by clicking on an object, requiring a way to determine over which object was the mouse placed. This short tutorial shows how to select objects with the mouse using color coding.
This feature adds the ability to create a counter that can be accessed/incremented/decremented in a shader, and subsequently read in the OpenGL application. This can be put to use in many different situations, for instance, creating auxiliary data to allow one to easily create data structures combined with image load/store, debug, and algorithm evaluation.
For non-trivial graphical effects or techniques, such as shadows or deferred rendering, multiple passes are often required, where the outputs of a pass are inputs of the following pass. This is where framebuffer objects come into play.
OpenGL Timer Queries allows us to profile the GPU, i.e. to determine the amount of time it takes to execute a command, or sequence of commands, in the GPU.
Maths Short Tutorials
A set of math tools for CG. Includes vector operations (length, cross and inner products, and projection), definition of rays and planes, intersection between rays and spheres or triangles, and interpolation.
A great tutorial by Jason Gorski on how to achive the pixelated effect commonly seen in led displays. The tutorial explores in depth how to achieve each of the features of these low res displays. Full source code is made available.
Billboarding is a technique that adjusts an object’s orientation so that it “faces” some target, usually the camera. In this tutorial several techniques to implement billboarding are covered. From cheating billboards to true billboards. In all techniques both Cylindrical and Spherical versions are presented.
Several algorithms to generate artificial terrains, including the Mid Point Displacement algorithm, are presented. This tutorial also covers the creation of a height map from an image, and its rendering. Normal computation and lighting simulation for both directional and positional lights is described in detail. A library to load TGA uncompressed images is also provided.
A tutorial with source code exploring some of the possibilities provided by Display Lists. Enhance your application making it run faster with this simple feature.
Tutorial and Demo sent by Dario Villa covering Shadows using the stencil buffer and projecting geometry onto planes. Contains an interactive demo with moving lights and geometry. Looks really cool.
VRML Interactive Tutorial
This tutorial covers the basics of VRML97 providing limitless source code due to its interactivity. Look for the “TIY” (Try it yourself”) button on the top of some of the pages. Pressing this button opens a new window where you can play with the parameters and view the results. Source code using your parameters is also provided.
VRML Script Tutorial
Geometric Primitives Tutorial
3D tutorial dedicated to Shockwave 3D. In here geometry primitives will be explored as well as some important concepts such as models and resources. If you’re not familiar with macromedia’s Director, and its programming language Lingo, then you should check out one of the many sites dedicated to it.