As the title says, what are the differences between these two techniques? I'm asking this from a user perspective. Which algorithm consumes more memory? Which algorithm is more performant? Which algorithm gives better results in terms of quality? Trying the OGRE sample (in RelWithDebInfo mode) it seems that Forward Clustered is both the lightweightest and the less artifact prone.
I guess Forward Clustered algorithm subdivide the space as explained here (both algorithms share the majority of initialization parameters), but what is the purpouse of decalsPerCell and cubemapProbesPerCell parameters?
Forward 3D vs Forward Clustered
-
- OGRE Contributor
- Posts: 267
- Joined: Wed Apr 23, 2014 3:49 pm
- Location: Bologna, Italy
- x 75
Forward 3D vs Forward Clustered
Senior programmer at 505 Games; former senior engine programmer at Sandbox Games
Worked on: Racecraft Esport — Racecraft Coin-Op, Victory: The Age of Racing
-
- OGRE Team Member
- Posts: 5511
- Joined: Sat Jul 21, 2007 4:55 pm
- Location: Buenos Aires, Argentina
- x 1379
Re: Forward 3D vs Forward Clustered
Aside from the subdivision strategy which you pointed out:
If you're GPU bound F. Clustered will be a win.
Overall F. Clustered is often a win, but I prefer to use F3D during debug builds.
Like lights, they determine the max number of cubemaps per pixel/decals per cluster. If this limit has to be exceeded during render, then artifacts may appear (the same as with lights)
- F. 3D is (usually) lighter on the CPU. F. Clustered (usually) consumes more CPU resources but is highly parallel (more CPU cores = higher perf), while F3D doesn't take advantage of multithreading
- F.3D consumes more GPU, F. Clustered consumes less GPU. It's not because the algorithm makes less calculations, it's simply because lights are culled more tightly against the clusters (i.e. F3D has more false positives, hence pixels may end up processing more lights than they have to)
- Because of the same reason, F. Clustered may produce fewer artifacts (because fewer false positives means there's more available room for genuine lights in the limited space of lights per cluster)
- F3D probably consumes a less VRAM than Clustered, but it shouldn't be a considerable amount (we would have to do the math)
- Per pixel cubemap reflections (see LocalCubemaps sample in 2.2) and decals (see Decals sample) are only supported in F. Clustered
If you're GPU bound F. Clustered will be a win.
Overall F. Clustered is often a win, but I prefer to use F3D during debug builds.
It's for Per pixel cubemaps (see LocalCubemaps sample in 2.2) and decals (see Decals sample). If you don't use these features, leave it as 0.but what is the purpouse of decalsPerCell and cubemapProbesPerCell parameters?
Like lights, they determine the max number of cubemaps per pixel/decals per cluster. If this limit has to be exceeded during render, then artifacts may appear (the same as with lights)