IntroductionGraphics AreasMajor ApplicationsGraphics APIsGraphics PipelineNumerical IssuesEfficiencyDesigning and Coding Graphics ProgramsMiscellaneous MathSets and MappingsSolving Quadratic EquationsTrigonometryVectorsCurves and SurfacesLinear InterpolationTrianglesRaster ImagesRaster DevicesImages, Pixels, and GeometryRGB ColorAlpha CompositingRay TracingThe Basic Ray-Tracing AlgorithmPerspectiveComputing Viewing RaysRay-Object IntersectionShadingA Ray-Tracing ProgramShadowsIdeal Specular ReflectionHistorical Notes
Surface ShadingDiffuse ShadingPhong ShadingArtistic Shading
Linear AlgebraDeterminantsMatricesComputing with Matrices and DeterminantsEigenvalues and Matrix DiagonalizationTransformation Matrices2D Linear Transformations3D Linear TransformationsTranslation and Affine TransformationsInverses of Transformation MatricesCoordinate TransformationsViewingViewing TransformationsProjective TransformationsPerspective ProjectionSome Properties of the Perspective TransformField-of-ViewThe Graphics PipelineRasterizationOperations Before and After RasterizationSimple AntialiasingCulling Primitives for EfficiencySignal ProcessingDigital Audio: Sampling in 1DConvolutionConvolution FiltersSignal Processing for ImagesSampling TheoryTexture MappingLooking Up Texture ValuesTexture Coordinate FunctionsAntialiasing Texture LookupsApplications of Texture MappingProcedural 3D TexturesData Structures for GraphicsTriangle MeshesScene GraphsSpatial Data StructuresBSP Trees for VisibilityTiling Multidimensional ArraysSamplingIntegrationContinuous ProbabilityMonte Carlo IntegrationChoosing Random Points
Physics-based Rendering
Photons
Smooth metals
Smooth dielectrics
Dielectrics with subsurface scattering
A brute force photon tracer
Radiometry
Radiometry of Scattering
Transport Equation
Materials in practice
Monte Carlo Ray Tracing
CurvesCurvesCurve PropertiesPolynomial PiecesPutting Pieces TogetherCubicsApproximating CurvesSummaryComputer AnimationPrinciples of AnimationKeyframingDeformationsCharacter AnimationPhysics-Based AnimationProcedural TechniquesGroups of ObjectsUsing Graphics HardwareHardware OverviewWhat Is Graphics HardwareHeterogeneous MultiprocessingGraphics Hardware Programming: Buffers, State, and ShadersState MachineBasic OpenGL Application LayoutGeometryA First Look at ShadersVertex Buffer ObjectsVertex Array ObjectsTransformation MatricesShading with Per-Vertex AttributesShading in the Fragment ProcessorMeshes and InstancingTexture ObjectsObject-Oriented Design for Graphics Hardware ProgrammingContinued LearningColorColorimetryColor SpacesChromatic AdaptationColor AppearanceVisual PerceptionVision ScienceVisual SensitivitySpatial VisionObjects, Locations, and EventsPicture PerceptionTone ReproductionClassificationDynamic RangeColorImage FormationFrequency-Based OperatorsGradient-Domain OperatorsSpatial OperatorsDivisionSigmoidsOther ApproachesNight TonemappingDiscussionImplicit ModelingImplicit Functions, Skeletal Primitives, and Summation BlendingRenderingSpace PartitioningMore on BlendingConstructive Solid GeometryWarpingPrecise Contact ModelingThe Blob TreeInteractive Implicit Modeling SystemsComputer Graphics in GamesPlatformsLimited ResourcesOptimization TechniquesGame TypesThe Game Production ProcessVisualizationBackgroundData TypesHuman-Centered Design ProcessVisual Encoding PrinciplesInteraction PrinciplesComposite and Adjacent ViewsData ReductionExamples
Steve Marschner, Cornell University, Ithaca, New York, USA
Peter Shirley, Purity LLC