Skip to content

About

CIS565: CUDA Rasterizer

Resources

Stars

0 stars

Watchers

1 watching

Forks

 
 

Repository files navigation

CUDA Rasterizer

CLICK ME FOR INSTRUCTION OF THIS PROJECT

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

  • Bowen Bao
  • Tested on: Windows 10, i7-6700K @ 4.00GHz 32GB, GTX 1080 8192MB (Personal Computer)

Overview

Here's the list of features of this project:

  1. Core Features (Basic Rasterizer):
    • Vertex shading
    • Rasterization
    • Fragment shader
  2. Extra Features:
    • UV texture mapping with bilinear texture filtering and perspective correct texture coordinates.
    • SSAA
    • MSAA

Texture Mapping

Base on depth per fragment for each pixel, and the transformed texture position indices, we load the correspond texture color. ###Bilinear filtering We use bilinear filtering to smooth textures when they are displayed larger or smaller than they actually are.

###Perspective Correct There will be distortions if we transform the pixel coordinate directly to position on textures. In perspective correct mapping we take into consideration the depth of the coordinates as well.

Result of distortion mapping.

Result of perspective correct mapping and bilinear filtering.

Anti-aliasing

SSAA

We first perform 4xSSAA to remove most of the rough edges. Although the performance cost is huge.

No anti-aliasing compared to SSAA.

MSAA

We also perform 4xMSAA to remove the rough edges. We could observe MSAA detects the edges of different fragments, as most of the rough edges occurs on those edges. Running super sampling on only those pixels greatly reduce the performance cost compared to SSAA.

Pixels in red are those whose super sample positions lie in different fragments.

No anti-aliasing compared to MSAA.

Performance Analysis

Here we compare the performance of our rasterizer under basic feature, 4xSSAA and 4xMSAA.

This is the performance graph of rendering the milk truck. In MSAA we separate and perform depth test before rasterization, in order to render pixels based on nearby positions later in rasterization step. We can observe that MSAA is much faster than SSAA, as we are only super sampling pixels on fragment edges.

This is the performance comparison of rendering duck. It shows similar results as the earlier graph. Also we could observe the proportion of processing rasterization is not as large as rendering milk truck. This is because in this case the fragment pixel count is not as large as the previous example.

Credits

About

CIS565: CUDA Rasterizer

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages