View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0005084||The Dark Mod||Graphics||public||29.12.2019 06:46||03.01.2020 06:08|
|Target Version||TDM 2.08||Fixed in Version||TDM 2.08|
|Summary||0005084: Interaction culling and Shadowhide WIP performance|
|Description||The purpose of this issue is to track the following forum thread:|
The problem is that rendering performance got worse on SVN than on 2.07, when testing on the Shadowhide WIP (Painter's Wife).
|Steps To Reproduce||Start the aforementioned FM and execute: setviewpos 80 -300 -125|
See forum thread for more details.
|Tags||No tags attached.|
The initial results on my machine were:
2.07 hotfix: 48-50
svn8401 with reverted 8380,8381 and r_useMultiDraw 0: 58-60
svnHEAD with reverted 8380,8381 and r_useMultiDraw 0: 58-60
1) performance improved between 8334 and 8346 (most likely due to the change in VertexCache implementation)
2) performance worsened between 8346 and 8401 (due to removal of interaction culling).
Some fixes by Duzenko to partly recap the removed culling:
svn rev 8454 (40-45 FPS): for off-screen entities, drop interaction if entity and light are in disconnected portal areas
svn rev 8456 (45 FPS): with loose shadow bounds, cull by viewport and by light scissor rect
svn rev 8459 (57-60 FPS): moved both new culling checks earlier avoids instantiating dynamic models and building shadow geometry
Next, the original interaction culling (previously removed in svn rev 8380) was restored with a few small fixes:
svn rev 8468: fixed issue with idBounds intersection (see 0002734) --- that could ruin the case when shadow frustum does not hit the portal
svn rev 8469: interaction culling in its original form fully restored (note: additional checks added by Duzenko also remain)
svn rev 8473: added check for return value of ProjectionBounds inside FloodFrustumAreas (probably not important)
After that, it was discovered that FloodFrustumAreas implementation from vanilla D3 is wrong, and can erroneously remove shadows a rare cases:
The repro map added to SVN as test/FloodFrustumAreas_bug.map
Aside from that, the main problem with interaction culling still remained: it could not be used in parallel from multiple threads.
Because it cached the list of portal areas found by FloodFrustumAreas in the interaction, with a use of global custom allocator.
Finally, interaction culling was changed to make it on-the-fly and threadsafe:
svn rev 8475: redone the whole culling code (better read svn commit message)
svn rev 8476: two new checks added by Duzenko refactored into proper place (again, see commit message)
Also, the new algorithm is not susceptible to the bug mentioned above.
Finally, there is a note about a bit of missed opportunities:
Perhaps would be done later.
|For me, performance is the same on 2.07 and current SVN, with the updated version of the map.|
|29.12.2019 06:46||stgatilov||New Issue|
|29.12.2019 06:46||stgatilov||Status||new => assigned|
|29.12.2019 06:46||stgatilov||Assigned To||=> stgatilov|
|29.12.2019 06:47||stgatilov||Note Added: 0011951|
|29.12.2019 06:56||stgatilov||Note Added: 0011952|
|29.12.2019 09:34||stgatilov||Note Added: 0011960|
|30.12.2019 15:35||stgatilov||Note Added: 0011984|
|03.01.2020 06:07||stgatilov||Note Added: 0012033|
|03.01.2020 06:08||stgatilov||Status||assigned => resolved|
|03.01.2020 06:08||stgatilov||Resolution||open => fixed|
|03.01.2020 06:08||stgatilov||Fixed in Version||=> TDM 2.08|