I was originally rendering the smallest particles as point sprites. Speeding Up the Rasterization-based Approach The larger ones (which are part of the same “particle cloud”) are rendered using velocity stretched quads in a geometry shader, and take up a minuscule amount of rendering time because there are comparatively few of them. Rendering time is dominated by the third type, which comprises the smallest particles (of which there are millions).įor the rest of this article, when I refer to “particles” I am talking about these smallest particles. There are three types of particles that are rendered: two types are larger, velocity-stretched particles (of which there are at most a few tens of thousands). All particles are rendered using additive blending, so no sorting is necessary before rendering. The app needs to render 2 million+ particles to two framebuffers (one for each VR eye) at 90hz. The trailer for the app gives a feel for the particle rendering it does: (Note that I do all particle simulation on the GPU as is common these days.) The app enables the user to create interesting particle effects and scenes, so the particles take the front seat, and the vast majority of GPU time is spent on simulating and rendering them. I developed a custom engine for the VR app I wrote over the course of 2 years: PARTICULATE. See the Addendum for more information.) Background and Motivation With this extension my results are now 37–432% faster than rasterization on the cases tested. (UPDATE: After posting this article, I discovered that I could use the NV_shader_atomic_int64 OpenGL extension (which is also supported by newer AMD GPUs). Using this technique allowed me to ship an app that runs on minimum-spec hardware without sacrificing visual fidelity. I observed these speedups on both NVIDIA and AMD GPUs. My approach runs 31–350% faster than rasterization on the cases I tested and is particularly faster for some “pathological” cases (which for my application are not actually that uncommon). I developed a technique to render single-pixel particles (using additive blending) with compute shaders rather than the usual fixed-function rasterization with vertex and fragment shaders.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |