
Syllabus
BS Computer Science
Computer Graphics (CSAL4273)
Fall, 2016
(3 credits)
Description
The objective of this course is to introduce to the students the concepts of computer graphics and exciting software packages that enable enhanced modeling, animation, and visualization skills. It starts with an overview of interactive computer graphics, two dimensional system and mapping, then it presents the most important drawing algorithm, 2D/3D transformation, clipping, texture mapping, sampling, anti-aliasing, and an introduction to 3D graphics with shaders. In addition, this course will introduce students to all aspects of computer graphics including hardware, software and applications.
Prerequisites
CSCP2033 (Data Structures and Algorithms),
CSSS2753 (Linear Algebra)
Instructor
Dr. Furqan Ullah, furqanullah@ucp.edu.pk,
Office: R303, +92-42-35880007
Office hours: Tuesday, Wednesday 2:00–3:00 pm
Teaching Assistant
TBA, TBA@ucp.edu.pk,
Office: TBA
Office hours: TBA
Meetings
Monday, Wednesday, Thursday, 02:00–02:50 am, R303
Format
This course will be a mixture of lectures, discussions, and demonstrations. The student is expected to actively participate in all class activities.
Text and References
- Interactive Computer Graphics, by Edward Angel and Dave Shreiner, 6th Edition, Addison-Wesley, 2011.
- OpenGL Programming Guide The Official Guide to Learning OpenGL, Version 4.3, 8th Edition, by Dave Shreiner, Graham Sellers, John Kessenich, Bill Licea-Kane, Addison-Wesley, 2013
- Fundamentals of Computer Graphics, Third Edition, by Peter Shirley, Steve Marschner, Taylor & Francis Group, LLC, 2011.
- Advanced Graphics Programming Using OpenGL, by Tom McReynolds and David Blythe, 1st Edition, Morgan Kaufmann Elsevier, 2005.
- OpenGL Superbible 5th Edition, by Richard S. Wright, Jr. Nicholas Haemel, Graham Sellers, Benjamin Lipchak, Addison-Wesley, 2010.
Reference Material
- OpenGL Reference Manual, Addison-Wesley, 2004.
Online Resources
Course website will be used for organizing additional reading and programming material.
- http://cgav.ucp.edu.pk/teaching/introduction-to-visual-computing/
- https://www.opengl.org/sdk/docs/man/
- http://www.learnopengl.com/#!Introduction
Specific outcomes of instruction
Upon successful completion of the course, the students will be able to
- Use OpenGL API to create interactive computer graphics
- Understand the basic theory, core concepts, and structure of an interactive computer graphics system
- Create a program to display 3D models of simple graphics images
- Understand the geometrical transformations and 3D viewing
- Understand the techniques for representing 3D geometrical objects
- Compare and contrast the different rendering techniques
- Understand the concept and applications of texture mapping, sampling, and anti-aliasing
- Apply design and development principles in the construction of software systems of varying complexity
Course Outline
- Computer graphics overview
- Introduction to 2D and 3D graphics
- Applications of computer graphics
- Introduction to OpenGL
- The pinhole camera
- The human visual system
- C++ programming review
- C vs C++
- Build processes
- Link to libraries
- working in a windowed environment
- OpenGL’s rendering pipeline
- Graphics programming
- Graphics functions
- The OpenGL interface
- Coordinate systems and frames
- Primitives and attributes
- Colors
- Viewing
- Clipping
- Basics of GLUT: The OpenGL Utility Toolkit
- Initializing and creating a window
- Running the program
- OpenGL and window systems
- Shader fundamentals
- Basic shaders
- Shader processor
- Compiling shaders with GLSL
- Geometric objects and transformations
- Scalars, point, lines, vectors
- Homogeneous coordinates
- Matrices
- Translation, rotation, and scaling
- Transformations in homogeneous coordinates
- Affine transformations
- Concatenation of transformations
- Transformation matrices in OpenGL
- Interfaces to 3D applications
- Classical and computer viewing
- Viewing with a computer
- Positioning of the camera
- Parallel projections
- Perspective projections
- Projections with OpenGL
- Perspective-projection matrices
- Eye coordinates
- Viewing, modeling, viewport transformations
- Hidden-surface removal
- Displaying meshes as a surface
- Projections and shadows
- Lighting and shading
- Light sources
- The phong reflection model
- Computation of normals vectors
- Polygonal shading
- Implementing a lighting model
- Shading of the sphere model
- Fragments
- Rasterization
- Fragment processing
- Polygon clipping
- Bounding boxes and volumes
- Clipping in 3D
- Hidden-surface removal
- Antialiasing
- Color, pixels, and framebuffers
- Color representation and OpenGL
- Multisampling
- Textures
- Texture mapping
- Creating and initializing textures
- Loading textures
- Texture coordinates
- Complex texture types
- 3D textures
- Array textures
- Shadow samplers
- Buffer textures
- OpenGL examples
- Physical simulation in the vertex shader
- Graphic rendering techniques
- Texture objects
- Environment maps
- Bump map example
- Image processing
- Modeling
- A robot arm
- Geometric objects
- OpenGL real-time rendering
- 3D meshes
- Import, export, render
- 3D meshes review
- Textures review
- Interfaces to 3D Applications
- A virtual trackball
- Smooth rotations
- Incremental rotation
- Curves and surfaces
- Bezier curves and surfaces
- Cubic B-Splines
- Rendering curves and surfaces
- Mesh generation from data
Projects
There will be a semester project for a group of 3 students. Class assignments will include implementing basic camera and trackball control system, a simple game, a GUI implementation.
Exams
Midterm, TBA
Final, TBA
Grading
10% Assignment
10% Quiz
20% Project
25% Midterm
35% Final
Course Policies
- All work must be your own, group work is CHEATING, and all group members will receive a zero.
- Turn off cell phones and pagers before class.