Giter Site home page Giter Site logo

graphics101's Introduction

Computer Graphics - Homework Assignments

These programming projects accompany an introductory computer graphics course. They cover 2D raster images, 3D geometry, 3D transformations, ray tracing, and the GPU-accelerated graphics pipeline. The assignments have been tested on Mac, Windows, and Linux.

The courses assume familiarity with basic linear algebra, multivariable calculus, and low-level or systems programming.

Homework Assignments:

  1. Airbrush: Raster images and compositing.
  2. Raycasting: Ray tracing and 3D transformations.
  3. Raytracing: Ray tracing and illumination.
  4. Image Processing: Image processing.
  5. Meshes: Mesh processing.
  6. Shaders aka the Graphics Pipeline: The graphics pipeline and GPU shader programming.

Getting Started

  • All assignments will be written in C++. The assignments should ease you in.

  • You will need a working C++ compiler, the CMake build system, and, for the first assignment only (Airbrush), the Qt GUI library. Qt also has a nice integrated development environment (IDE) for C++ called Qt Creator, which is quite useful. Here are my recommended installation instructions:

    • Ubuntu Linux: apt-get install build-essential cmake qtbase5-dev qtcreator

    • Mac:

      1. Install the Xcode compiler and IDE.
      2. Install the Homebrew package manager.
      3. On the command line, run: brew install cmake qt and, if you want the Qt IDE, brew cask install qt-creator.
    • Windows: There is a simpler way and a more complicated way:

      • Simpler: Use Qt's online installer. Install the open source version of the Qt environment. This annoyingly requires you to create an account, but in exchange provides a single installer for Qt Creator, the Qt library, and, on Windows, a C++ compiler. The online installer, by default, includes all versions of Qt. This is unnecessary and takes a huge amount of space. Install only the most recent version (e.g. Qt 5.15), the Qt Creator IDE, and the MingW compiler.

      • More complicated:

        1. Install a compiler. It could be Visual Studio (not VSCode), which provides an entire IDE. It could be MinGW.
        2. Install CMake.
        3. Install the Qt GUI libraries and, optionally, the Qt Creator IDE using the Qt offline installers (no account needed) or the Qt online installer. Install only the latest version of Qt and the Qt Creator IDE.
  • Download each assignment. Inside each folder there is a file named CMakeLists.txt.

    • You can open it directly with the Qt Creator development environment (IDE) if you are using that.

    • If you aren't using the Qt Creator IDE, from inside each folder, run:

        mkdir build
        cd build
        cmake ..
      

      Then, to compile the program, just type make. There are some useful flags you can pass to cmake. Try:

      • cmake -DCMAKE_BUILD_TYPE=Debug .. to compile with debug information for use with a debugger.
      • cmake -DCMAKE_BUILD_TYPE=Release .. to compile an optimized build. Your code will run much faster.
      • cmake -G Xcode .. will generate a project for the Xcode IDE on macOS.
      • cmake -G "Visual Studio 16 2019" .. will generate a project for the Visual Studio IDE on Windows.
  • Build and run the code. Make your changes. Write a Notes.txt. Hand it in.

graphics101's People

Contributors

yig avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.