Giter Site home page Giter Site logo

uou-interactive-graphics's Introduction

I'm learning computer graphics by watching the a l a r m i n g l y well produced recorded lectures by Cem Yuksel for University of Utah's Interactive Computer Graphics CS 5610/6610.

This repository contains my attempt to complete the projects associated with the course.

โ— WARNING: Developed and tested ONLY on Metal 3 (MacOS Ventura Beta 4, Xcode 14 Beta 4, MacBook Pro M1 Max). Outside of this setup, I have no idea whether any of this code works.

  • Render something!

Project 1

  • Transform model vertex coordinates to to normalized device coordinates
  • Toggle between Orthographic and Perspective Projection

Project 2

  • Ambient, Diffuse, and Specular Shading

Project 3

  • Load and render model materials

Project 4 Teapot Project 4 Yoda

  • Render to a texture, then render that texture to a plane
  • Toggle between different texture sampling modes
    • Nearest
    • Bilinear
    • Trilinear
    • Anisotropic

Project 5 Checkerboard Project 5 Yoda

  • Render an environment (skybox) using a cube texture
  • Render model and plane with perfect, mirror-like material
  • Render model's reflection onto the plane

Project 6 Teapot

Alternate implementation of Project 6 using Ray Tracing.

  • Render model and plane using multi-bounce (4) ray tracing
    • Unlike original Project 6, the model reflects on itself!
  • Render laser pointer to visualize ray tracing

X-Project 6 Ray Traced Teapot

  • Render shadows of a model onto itself and a plane below it
  • Use a Shadow Map (Depth texture)

Project 7 Yoda

Alternate implementation of Project 7 using Ray Tracing.

  • Render shadows of a model onto itself and a plane below it
  • Use a Ray Tracing

X-Project 7 Yoda

  • Normal Mapping
  • Displacement Mapping with Tesselation Shaders

Project 8

X-RT Yoda

Implementation

Hold on to your butts....

I'm trying to learn new stuff on top of new stuff.

Common Project Architecture

TODO: Document metal-types/metal-build crates and how data structures are shared between Metal and Rust

TODO: Document how metal-build provides build.rs support for each project to precompile shaders

TODO: Document metal-app, especially RenderPipeline and Binds for simplifying and removing/reducing errors when setting up simple to complex (ex. depth/stencil, multiple sub-passes, many binds) render pipelines.

Performance

See performance.md for more in-depth documentation on workflows and tooling for assessing performance.

uou-interactive-graphics's People

Contributors

peterwmwong avatar

Stargazers

Yongning Xu avatar

Watchers

 avatar James Cloos 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.