University of Pennsylvania, CIS 565: GPU Programming and Architecture, Project 6
- Wanru Zhao
- Tested on: Windows 10, Intel(R) Core(TM) i7-8750H CPU@2.2GHz, GTX 1070 with Max-Q Design(Personal Laptop)
- Compute shader
- Add forces: gravity, recovery and wind
- Perform culling: orientation, view-frustum and distance
- Grass pipeline stages
- Vertex shader: transform vertices
- Tessellation control shader: passing needed info and tessellation level
- Tessellation evaluation shader: performing interpolation along Bezier Curves
- Fragment shader: final shading
| Orientation Culling | View-frustum Culling | Distance Culling |
|---|---|---|
![]() |
![]() |
![]() |
From above chart, we can find out that obviously, when the number of blades increases, the fps will decrease.
When all three culling methods are used to reduce the number of blades, the performance of rendering is the best. Non-culling rendering is the worst among all methods. For single culling strategy, the performance benefits most from orientation culling. This is because the orientation case is more general and of more blades than others. In test, I used near scene, so the performance improvement from distance culling is small, when the scene is far away from camera, the improvement will be better. Also for view-frustum culling, it is of more help when the scene is closer to the clip plane, since more grass will be culled at edges of screen.
The following resources may be useful for this project.






