CIS565-Fall-2016 / Final-Project

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Final Project

CIS 565: GPU Programming and Architecture

University of Pennsylvania

Fall 2016

The final project gives you an opportunity to embark on a large GPU programming endeavor of your choice. You are free to select an area in graphics, GPU computing, or both. You can reproduce the results of recent research, add a novel extension to existing work, fulfill a real need in the community, or implement something completely original.

Expect this to be 2-3x more work than the hardest project this semester. The best projects will require a time commitment of at least 100 hours per student. It will be worth it.

Guidelines

  • Form teams of two. Each team member will receive the same grade. Teams of three will be considered, but will be expected to build something truly amazing like this. Teams of one are not encouraged, but can be accommodated on a case-by-case basis.
  • Use GitHub. We encourage, but do not require, you to develop in a public repo as open source.
  • Programming language, graphics and compute APIs, and target platforms are up to you.
  • You are allowed to use existing code and libraries. These should be prominently credited and your code should be easily identifiable. Be incredibly clear about what is your work and what is not.

Project Ideas

WebGL

See WebGLSamples/WebGL2Samples#91

WebGL vs. OpenGL ES Mobile Power Usage

On mobile, how does the power usage of JavaScript/WebGL compare to C++/OpenGL ES 2 (or Java/ES or Objective C/ES)? For example, if the same app is developed in WebGL and OpenGL ES, which one drains the battery first - and why? What type of benchmarks need to be developed, e.g., CPU bound, GPU compute bound, GPU memory bound, etc.?

WebGL for Graphics Education

Create a tutorial using WebGL that teaches either basic GPU architecture (parallelism, branches, multithreading, SIMD, etc.) or Tile-Based Architectures like those used in mobile GPUs. For inspiration, see Making WebGL Dance by Steven Wittens.

WebGL-Next

Propose and prototype a next-generation WebGL API. See Thoughts about a WebGL-Next.

glTF

Disclosure: I am one of the glTF spec editors.

Various Projects

glTF, the GL Transmission Format (glTF), is a new runtime asset delivery format for WebGL. It needs an ecosystem of tools, documentation, and extensions. See these ideas. Ideas:

GPU-accelerated prebaked AO

GPU-accelerate the prebaking AO stage in the glTF Pipeline. See the AO Roadmap.

Use a uniform grid; see A Memory Efficient Uniform Grid Build Process for GPUs.

Vulkan

renderdoc

Contribute to renderdoc.

In Defense of Batching

Does batching still help with Vulkan? If so, when it is worth it?

Domain-specific shading languages

Create a domain-specific shading language targeting SPIR-V. Perhaps a language tuned for CSG, voxels, or ray marching.

Utility library

Implement a new abstraction layer using Vulkan that is higher level than Vulkan, but lower level than, for example, Unity.

Multithreaded Engine

Prototype a small engine with multithreading for LOD and culling.

Tutorial Series

Write a Vulkan for OpenGL developers tutorial series.

CUDA / GPU Computing

Point Cloud Processing

GPU accelerate filters in PDAL or PCL.

Autonomous Cars

GPU accelerate parts of autonomous cars.

Alternative Rendering Pipelines

Use CUDA or compute shaders to build a custom or hybrid rendering pipeline, e.g., instead of creating a rasterization pipeline for triangles, create a graphics pipeline optimizations for points, voxels, or vectors.

Surfels: Surface Elements as Rendering Primitives by Hanspeter Pfister et al.

VoxelPipe: A Programmable Pipeline for 3D Voxelization by Jacopo Pantaleoni.

Massively-Parallel Vector Graphics by Francisco Ganacim.

VR

Efficient multiview rendering

For example, see Multiview Rendering for VR and Efficient Stereoscopic Rendering of Building Information Models (BIM).

Other

Google Tango

Anything that runs in real-time using the GPU and the Tango API.

Embedded Systems

Anything using the NVIDIA Jetson TK1.

Previous Semesters

For inspiration, browse the CIS 565 final projects from previous semesters: Fall 2015, Fall 2014, Fall 2013, Fall 2012, Spring 2012, and Spring 2011.

A guideline is that your project should be better than last semester's projects; that is how we move the field forward.

Selected Projects

Conferences and Journals

Browse these for ideas galore!

Timeline

Wednesday 11/16 - Project Pitch

Sign up for a time slot ASAP.

Your project pitch is a 15-minute meeting with Patrick, Shrek, and Gary and a write-up no longer than one page that includes an overview of your approach with specific goals. First, focus on why there is a need for your project. Then describe what exactly you are going to do. In addition to your write-up, provide supplemental figures, images, or videos.

Think of your pitch as if you are trying to get a startup funded, convincing your company to start a new project, or responding to a grant. For an example, see Forward+ Renderer using OpenGL/Compute Shaders by Bradley Crusco and Megan Moore

Before the meeting:

  • Email your one page pitch and any supplemental material to Patrick, Shrek, and Gary by end of Tuesday 11/15.

After the meeting:

Monday 11/21 - Milestone 1

Your first presentation should be 7-10 minutes long. Present your work-in-progress. Your presentation should include a few slides, plus videos, screenshots, or demos if possible. Be sure to

  • Demonstrate working code (videos and screenshots are OK; it doesn’t have to be live).
  • Provide a roadmap with future milestones (11/28 and 12/12), and the final result (date TBA). Set goals for each.

See the Cesium Presenter's Guide for tips on presenting. Be sure to present as a team; for a great example, see http://www.youtube.com/watch?v=OTCuYzAw31Y

After class, push your presentation to your GitHub repo.

Monday 11/28 - Milestone 2

A 5-7 minute presentation on your progress over the past week. Demonstrate how you reached or exceeded the goals for this milestone. If you didn't reach them, explain why. Remind us of your upcoming milestones.

After class, push your presentation to your GitHub repo.

Monday 12/12 - Milestone 3

Same format as Milestone 2.

Thursday 12/15 - Final Presentation

5-minute final presentation.

This should be a polished presentation with a 1-2 slide overview of the technical at a high-level of abstraction, followed by a demo/video of the results in different representative scenarios, followed by a careful performance analysis, and finally shortcomings of the approach.

It is OK to present this as a few slides with a demo/video for the results section, or to prepare a video for the entire presentation and then talk to the video as your presentation.

Please practice for timing; do not exceed five minutes.

By 6pm:

  • Push the following to GitHub
    • Final presentation slides/video
    • Final code - should be clean, documented, and tested
  • A detailed README.md including:
    • Name of your project
    • Your names and links to your website/LinkedIn/twitter/whatever
    • Choice screenshots including debug views
    • Link to demo if possible. WebGL demos should include your names and a link back to your github repo
    • Overview of technique and links to references
    • Link to video
    • Detailed performance analysis
    • Install and build instructions

As always, see How to make an attractive GitHub repo for tips on your README.md.

Grading

The final project is worth 50% of your final grade. The breakdown is:

  • Milestone 1: 25%
  • Milestone 2: 25%
  • Milestone 3: 25%
  • Final Presentation: 25%

About