Skip to content

WanruZhao/Project6-Vulkan-Grass-Rendering

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Instructions - Vulkan Grass Rendering

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)

Final Render

Features

  • 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

Results

Grass Model

Culling

Orientation Culling View-frustum Culling Distance Culling

Performance Analysis

Performance of different blade numbers (all culling)

From above chart, we can find out that obviously, when the number of blades increases, the fps will decrease.

Performance of different culling methods

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.

Resources

Links

The following resources may be useful for this project.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C++ 91.0%
  • CMake 5.1%
  • GLSL 3.6%
  • C 0.3%