![](http://w26.hitbox.com/w6/W39343423.cgi)
Docs/Tutorials
This is a collection of just about all the tutorials and docs I know of
on the net (over 200 at last count). I linked individual files, not whole pages as in other
link collections, so it's hopefully easier to get to specific info. The
thing is, though, that I only link stuff I consider useful from my point
of view, so searching through other links might
be your only option for finding what you want. But I try to make this a comprehensive and uselful
resource which I'll be expanding as I find new stuff (and my own knowledge
catches up :-), but if you know of any doc or whole category that I didn't
include here and you'd like to see, feel free to
tell me about it, as well as any other comments.
Also, it seems like this page will be impossible to keep current, so if you
see a broken link, I'd really appreciate you telling be about it, maybe
even what's wrong with it. Thanks.
Now on to the good stuff...
If you need PostScript or
PDF
viewers, well there they are. For PS there's also the universal GhostScript
that's way too big and unwieldy for my taste. If you know another free viewer
I'd like to hear about it.
Table of Contents
2D
3D
Graphics & Video
Basics, VGA Mode 13h
Accessing mode 13h in djgpp
Graphics in djgpp - 13h to vesa
LKS' graphics doc - mode setting, palette, geometry, bitmaps, effects, etc
Initializing video modes
Initializing video modes in djgpp
SQRT-1 - video modes and memory
Mode setting, palette
Palette manipulation
Plotting pixels
Putpixels in djgpp
Drawing lines
Virtual acreen
Double buffering
Vertical retrace detection for animation
Scrolling
Sprites
More sprites
The PCX file format - reading and writing
SVGA
VBE2 Coding using asm, by Vertigo
VESA and VBE2 programming
Charles Sandmann's VBE 2 source code for djgpp using both near and far pointers
VESA doc by XYZZ
My page - VESA 1 bank swirching and VBE2 linear frame buffer
Effects
SQRT-1 - all the classic demo effects from plasmas to tunnels
Bounding box and pixel perfect collison detection using allegro
Plasma efect using Allegro
Tutorial on seamless plasma
Plasma code by XYZZ
Fire code by XYZZ
DJGPP fire code by XYZZ
Creating marble textures
Particle system using Allegro
Tom Hammersley's particle system doc
Sine wave distortion of a bitmap using Allegro
Water code for Allegro by XYZZ
Tom Hammersley's water doc
Fade, lookup tables
Lens efect, color quantization
2D bump mapping - djgpp code
2d bump mapping using Allegro (and djgpp, of course)
Another 2d bump mapping doc by Sqrt-1
Tom Hammersley's bump mapping doc
3D Coding
Poly Filling
Flat
My Tutorial
Poly tutorial by OTM
DemoNews docs by Kiwidog
Polygon scan conversion
Lambert shading doc
Poly filling tut by Nathan Whitaker
Asphyxia tut 9
WGT
Flat filling doc - mostly code
3DGPL - 3D engine code and tutorial (here's a fix for djgpp 2.x)
Gouraud
My Tutorial
Poly tutorial by OTM
DemoNews docs by Kiwidog
Poly filling tut by Nathan Whitaker
Asphyxia tut 9
Another Gouraud doc
Poly doc by Karma
WGT
Gouraud shading doc with example code
Gouraud shading using quadratic interpolation - reciprocal
3DGPL - 3D engine code and tutorial (here's a fix for djgpp 2.x)
Phong
My Tutorial
Phong shading using angle interpolation and special palette
Theory and math of Phong lighting (and why otmphong doesn't work :-)
Fast phong shading
Illumination Buffers - phong emulation with multiple colored light sources
Fast Phong shading - using Taylor series
Effects of Phong Lighting with R·V vs. N·H
Affine Texture Mapping
My Tutorial
Fast affine texture mapping v1 and 2 using asm optimizations
Texture mapping how-to with example code
Poly filling tut by Nathan Whitaker
Win95-GPE
Poly doc by Karma - asm optimizations
WGT - text version
Another texture mapping doc
Tom Hammersley's doc
Yet another affine texture mapping tutorial with code - mostly code
3DGPL - 3D engine code and tutorial (here's a fix for djgpp 2.x)
Perspective Correct Texture Mapping
Win95-GPE - all kinds of methods from quadratic interpolation to full divs/pixel
3DReview Article - using reciprocals, only corrects at intervals; good
Reciprocal method by Kalms - short and to the point
The Perspective Texture Mapping Algorithm by Marc Salmurri
Texture mapping how-to - reciprocal and magic vectors
Tom Hammersley's doc - reciprocal
3 Doom texture mapping approaches
Free direction texture mapping
Constant slope texture mapping
Another doc on constant slope
Another doc
Another one
Doom engine techniques
Source code by Chris Hecker
MIP mapping
Bilinear interpolation, MIP mapping and trilinear interpolation - reciprocal
More on MIP mapping
Guess what: another MIP mapping doc
Other
Poly filling tut by Nathan Whitaker - environment and bump mapping
My Tutorial - Environment mapping
Environment mapping
Env mapping tut with code
Environment and chrome mapping - not the simple demo style method
Fake phong using environment mapping
Shaded texture mapping with palette lookup
Bump mapping
Realtime sphere rendering - scanline rendering; shaded, textured, bumpmapped
Math
Basics of 3d - vector concepts, operations, misc.
My Tutorial
DemoNews docs by Kiwidog
comp.graphics.algorythms faq
3D basics - points, lines, polygons, etc.
2D and 3D vector math
SQRT-1 - the essentials
Mathematcs of 3d graphics - vector and matrix math, transformations
3D math basics
LKS' 3d math doc
Fundamentals of 3d math - everything from transformations to clipping
On-Line Computer Graphics Notes - Vector Spaces
On-Line Geometric Modeling Notes - Transformations - both of these docs use rigorous linear algebra
Zed3D .95b - just about everything you need, but maybe a bit hard going (get Word viewer if you don't have MS Word 6)
3D math tricks
3D geometry
Skal's demo maths - general vector math, lighting, projection, etc.
Description of the point-normal plane equation
Test for a point beind inside/outside a plane
Code for various distance measurements like point to plane, etc.
Shading - lighting calculations also by VLA (asm example code)
Lighting/Shading Calculations in my tutorial
3D Shading
3D lens effect
Transformations
Transformations - trigonometric and matrix methods
Homogeneous Coordinates
Geometric Transformations (for the more algebra minded ;)
3D rotations
Rotations with trig functions and matrices
Rotation with quaternions
Euler parameters - keeping the rotation matrix normalized
Code for cordic rotators
Matrix rotations with 12, 9 and 6 muls - everything from transformations to clipping
Rotation, fixed point math
Rotation, normals by VLA
Hierarchical Modelling/Transformations
Viewing systems - several ways to represent the camera orientation and space
More about cameras
3x3 camera matrix
Fixed Point Math
LKS' fixed point doc - asm
Fixed point math
Another fixed point doc
Fast fixed point math using inline asm for djgpp
Fast float->int and sqrt - also asm
Matrix Math
Matrix doc by OTM
Matrix basics
Matrix transformations
Matrix theory and transformations
Another doc on transformations using matrices
Perspective transformation using matrices
Homogeneous Coordinates
Geometric Transformations (for the more algebra minded ;)
Egine Techniques in General
My Tutorial
Zed3D .95b (get Word viewer if you don't have MS Word 6+)
Overview of realtime 3d graphics and techniques
3DGPL - 3D engine code and tutorial (here's a fix for djgpp 2.x)
Asphyxia tut 8 - 3D basics
Intro to 3D
Lights, camera, action! - fundamentals of 3d graphics
Doom engine techniques
Fast landscape rendering
Polygonal fractal terrain generation
3D programming using Allegro
Optimizations for realtime 3d graphics
Raycasting
Visibility Determination
Object Culling
Description of Different Culling Methods like frustrum and portal culling, and bounding volumes
Occlusion Culling using hierarchical occlusion maps (pdf)
Occlusion Culling using shadow volumes (ps)
Description of the Plane Equation (point-normal form) and Point Idside/Outside Plane Test - used for frustrum clipping/culling, of course
The 3D Visibility Skeleton
Backface Culling
My Tutorial on Backface Culling using clockwise test
Backface culling
Description of different culling methods including backface culling
Backface culling - way too inefficient, uses plane equation, but the principle's the same
Backface Culling in object space using inverse transformation
Backface Culling using Normal Masks
Clipping
Poly clipping
Polygon clipping
Parametric line clipping
Code for various poly and line clipping methods among other things
Frustrum clipping doc with source code
Frustrum clipping - Sutherland-Hodgman algorythm
Frustrum clipping code by Mike Abrash
On-Line Geometric Modeling Notes - Clipping - uses rigorous linear algebra
Sorting
Z-sorting doc
Fast algorythms for polygon sorting
Polygon sorting with a hash algo (and that's no grass either! ;)
And more sorting...
My Tutorial - very short
Z-Sorting code by Mike Abrash
Z-Buffering
3DReview Article - z-buffering and other hsr methods
Poly doc by Karma
Poly tutorial by OTM
Another z-buffering doc
Z-buffering doc by Tom Hammersley
Backface culling and z-buffering doc
Z-Buffer doc with source code
S-Buffering also by VLA (asm example code)
Tom Hammersley's S-buffer doc
BSP
BSP doc in the win95-gpe
BSP Doc by Jakko Bikker
BSPs - by Nathan Whitaker
BSPs - extracting connectivity info
DemoNews docs by Kiwidog
Tom Hammersley's BSP doc
BSP code by Mike Abrash
Leafy BSP trees
Optimizing BSP tree traversal
Portals
Portal rendering doc from Crystal Space
Portal rendering doc from the win95-gpe
Portal doc by the Fumincuban
Portal doc by Jakko Bikker - very short, describes the basic algorythm
BSP construction to aid in portal rendering
Portals and Mirrors
Lighting, Shadows
Shading - lighting calculations and light tables
Directional, omni and spotlight light sources
Various shadow algorythms
Lighting and shadows using light maps
Fast shadows using the z-buffer
3 shadow volume algorythms
Shadows - fake, z-buffer based, shadow volumes, slabs and realtime volumetric lighting
Math of shadow casting
Shadow casting on a plane
Projecting Shadow Poly on Axis Alligned Plane (should be expandable to free direction planes)
Surface caching
Radiosity
Surface Representations
The Winged-Edge Data Structure
Geometry in Action: Convex Hulls
Geometry in Action: Quadtrees
Geometry in Action: Delaunay Triangulation
Subdivision Surfaces - uses equations and pictures to illustrate the different methods
On-Line Computer Graphics Notes - Subdivision Surfaces
General LOD, Mesh Generation/Simplification
Hugues Hoppe's home page for abstracts of the below papers
Progressive simplicial complexes. J. Popovic and H. Hoppe. [PDF]
View-dependent refinement of progressive meshes. H. Hoppe [PDF]
Progressive meshes. H. Hoppe [PDF] [HTML]
Multiresolution analysis of arbitrary meshes. M. Eck, T. DeRose etc. [PDF] [HTML]
Surface Reconstruction from Unorganized Points. Hoppe.
Efficient implementation of progressive meshes by Hugues Hoppe [PDF]
Fast and Memory Efficient Polygonal Simplification. Lindstrom, P [PDF]
View-Dependent Simplification Of Arbitrary Polygonal Environments
Fast Rendering of Complex Environments Using a Spatial Hierarchy [PS]
Continuous Level Of Detail rendering of triangle meshes
Multiresolution Analysis for Surfaces of Arbitrary Topological Type [PS] - kinda subdivision surfaces
Mesh Optimization [PS] - minimizing an energy function
Implicit Surfaces
Jules Bloomenthal, Implicit Surface Research - abstracts of below papers
Implicit Surface Polygonization by Jules Bloomenthal [PDF] - general ideas
An Implicit Surface Polygonizer by Boomenthal [PDF] plus code
Interactive Techniques for Implicit Modeling, Bloomenthal [PDF]
Convolution Surfaces, Bloomenthal [PDF] - smoother implicit surfaces
Eliminating bulges with convolution surfaces, Bloomenthal [PDF]
Marching cubes algorythm for tesselating 3d implicit surfaces (ie: blobs)
Implicit surfaces - example code by Paul Burke
Isosrface generation
Isosurface propagation with extrema graphs - finding dense spots
Marching Triangles - polygonizes directly without octree
Parametric Surfaces
CS390 Introduction to Computing with Geometry Course Notes - parametric curves/surfaces
Bezier surfaces
On-Line Geometric Modeling Notes - Bezier Patches
NURB curves and surfaces - nonuniform rational b-splines
A great doc by Apple on NURB curves
Another NURBS doc
NURBS code
Wavelets
Wavelets for Computer Graphics: A Primer [PDF] and Part 2 [PDF] - very good as an introduction
Wavelets. G. Strang [PS] - another good introductory read
Wavelets for Kids [PS] Part 2 [PS] - and another one
1996 SIGGRAPH Wavelets in Computer Graphics Course
CS 448 - Mathematical Methods for Computer Graphics, Wavelet Lecture Notes [PS]
Surface approximation using wavelets
Interactive Multiresolution Surface Viewing [PDF]
Terrains
Generating Random Fractal Terrain with diamond-square algo
Real-Time, Continuous Level of Detail Rendering of Height Fields. Lindstrom P. [PDF] and graphics version (5megs)
Level-of-Detail Management for Real-time Rendering of Phototextured Terrain. Lindstrom, P. [PDF]
![](home.jpg)
Back to Steel's Programming Resources
Last updated on 05/10/97
Number of Links: 300