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)
Here's the list of features of this project:
- Core Features (Basic Rasterizer):
- Vertex shading
- Rasterization
- Fragment shader
- Extra Features:
- UV texture mapping with bilinear texture filtering and perspective correct texture coordinates.
- SSAA
- MSAA
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.
We first perform 4xSSAA to remove most of the rough edges. Although the performance cost is huge.
No anti-aliasing compared to SSAA.
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.
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.







