Skip to content

immiao/Project4-CUDA-Rasterizer

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

835b1c4 · Nov 6, 2016

History

94 Commits
Sep 28, 2015
Jun 8, 2016
Oct 22, 2016
Oct 30, 2016
Oct 19, 2016
Nov 6, 2016
Sep 15, 2016
Sep 27, 2015
Sep 30, 2015
Oct 13, 2016
Sep 30, 2015
Sep 30, 2015
Sep 30, 2015
Oct 23, 2016
Oct 30, 2016
Sep 30, 2015

Repository files navigation

CUDA Rasterizer

University of Pennsylvania, CIS 565: GPU Programming and Architecture, Project 4

  • Kaixiang Miao
  • Tested on: Windows 7, i7-3630QM @ 2.40GHz 8GB, GTX 660M 2GB (Lenovo Y580 laptop, personal computer)

Screenshot


Perspective-correct Color Interpolation

duck.gltf (Blinn-Phong) cow.gltf (Blinn-Phong) flower.gltf (Lambert)

Bilinear Texture Mapping

duck.gltf CesiumMilkTruck.gltf

Perspective-correct Texture Mapping

Bad Mapping Nice Mapping

Bilinear Texture Mapping

Bilinear Off Bilinear On

Backface Culling

Backface Culling Off Backface Culling On

###Performance Analysis

Kernel Time of Different Stages

The kernel time of different stages of different .gltf files is shown as below. However, in spite of the fixed distance from the object, the objects have different scale factors, which make the stacked chart below less meanningful.

Instead of comparing different objects, different distance from the object duck.gltf to the opsition of the camera is applied.

As the camera getting closer and closer, the rasterizer stage takes up more time. It illustrates that as the object taking up more and more area of the screen, the workload of the rasterizer becomes heavier because of the large area of primitives and more pixels needed to be filled by scanline.

The following graph shows the duration of the fragment shader of duck.gltf. Although the value is increasing, the ratio of this stage is decreasing, because of the steeper increase of the duration of the rasterzier stage. Besides, the duration of the vertex shader, the primitive assembly and the backface culling does not vary much because the number of vertices, primitives and backfaces is not relevant to the distance.

Backface Culling

Backface Culling reduce lots of execution time of both fragment shader and the rasterizer stage.

With no backface culling, the stacked chart appears different from the one shown at the beginning. The rasterizer stage takes up most duration because the rasterizer is shading numerous redundant primitives.

Credits

About

CIS565: CUDA Rasterizer

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 43.1%
  • C++ 23.2%
  • CMake 23.0%
  • Cuda 8.7%
  • GLSL 1.9%
  • Makefile 0.1%