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]



    Back to Steel's Programming Resources


    Last updated on 05/10/97

    Number of Links: 300