Programming Graphics (New Unit content coming soon!)

AIMS

The purpose of the unit is to ensure that students are equipped with the technical computing skills necessary to design and implement graphics tools and pipelines The unit aims to equip the students with the knowledge to select the correct programming languages / paradigms and API’s to solve computer generated imagery problems using a Test Driven approac

INTENDED LEARNING OUTCOMES

Having completed this unit the student is expected to:

  1. write effective programs using a high-level programming language and a computer graphics application programming interfaces (API)
  2. use Test Driven Development and Design to generate programs and tools
  3. select and apply appropriate programming paradigms to solve graphics and vfx problem

Learning and teaching methods

This unit will use a combination of Theory lectures and supporting practical workshops to introduce the concepts of Test Driven Development as applied to animation systems. The workshops both complement and mirror the corresponding lectures with practical programming examples and exercises. Students are exposed to various strategies for designing, implementing, testing and documenting programs. Students are also encouraged to develop a personal approach to solving computer graphics related problems based upon recognized practices of software engineering

Indicative unit content

  • Programming Paradigms
  • S.O.L.I.D.
  • OO design (textural analysis), composition, aggregation.
  • Test Driven Development and Design
  • TDD + Python
  • Pytest vs Unitest.
  • Inheritance: from generatlisation to specialisation
  • Introduction to Qt and GUI’s
  • Introduction to Modern OpenGL
  • Basic OpenGL drawing, and loading of shaders using PyOpenGL / PyNGL
  • Shading Languages and the GPU
  • Framebuffers and Texture Objects
  • Modern rendering techniques and PBR

INDICATIVE KEY LEARNING RESOURCES

Each student will have access to a workstation with an appropriate development environment. Budd, T. 2001. Introduction to Object-Oriented Programming Addison Wesley. Eckel, B. 2000.

Thinking in C++ volume 1 Prentice Hal Inc, 2000. Available online http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html

Foley, J.D., vanDam, A., Feiner, S.K. & Hughes, J.F. 1996. Computer Graphics: Principles and Practice, Addison-Wesley, 2nd Edition in C

Hill F.S. 2005. Computer Graphics using OpenGL. 3 rd Edition Addison-Wesley

Parsons, D., 1997. Object Oriented Programming with C++. 2nd edition. Letts Educational

Shreiner, D., Sellers, G., Kessenich, J. M., Licea-Kane, B. M., 2016, OpenGL Programming Guide: The Official Guide to Learning OpenGL , Version 4.5 with SPIR-V, Addison-Wesley

Stroustrup, B., 1997. The C++ Programming Language, 3rd edition, Addison-Wesley

Watt, A., Watt, M., 1992. Advanced Animation and Rendering Techniques. Addison-Wesley

Woo, M., et al. 1999. OpenGL Programming Guide The official Guide to Learning OpenGL, Version 1.2 (3rd Edition) Addison-Wesley

Woo, M., et al., 1997. OpenGL Programming Guide. Version 1.1, Addison-Wesley

Journals

‘Communications of the ACM’ monthly publication of Association of Computing Machinery

Websites

http://www.opengl.org/ (the OpenGL official site)

http://www.opengl.org/Documentation/Books.html (books on OpenGL)

http://www.acm.org/siggraph

http://www.research.att.com/~bs/C++.html (Bjarne Stroustrup C++)