View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0005190 | The Dark Mod | Coding | public | 22.03.2020 02:27 | 05.12.2023 01:17 |
Reporter | stgatilov | Assigned To | stgatilov | ||
Priority | normal | Severity | normal | Reproducibility | N/A |
Status | assigned | Resolution | open | ||
Product Version | TDM 2.08 | ||||
Target Version | TDM 2.13 | ||||
Summary | 0005190: Frontend optimizations due to connectedness of entities/surfaces | ||||
Description | One of the inefficiencies of current frontend is that objects are often pushed into visleafs where they don't belong. This usually happens for sloped walls, when the object is completely indoors, but its bounding passes through the wall, so the entity is also considered to be outdoors. This results in excessive draw calls in such cases. The idea is to exploit connectedness property of an object to better determine which areas is belongs to. If the object bounds don't overlap any visportal, then the whole object belongs only to the area/visleaf where its test point (chosen arbitrarily) belongs to. Hopefully, it is possible to deduce connectedness of many objects automatically. However, spawnargs for forcing connectedness / disconnectedness are still necessary. | ||||
Additional Information | See discussion: https://forums.thedarkmod.com/index.php?/topic/20224-arealock-keyword/&do=findComment&comment=444691 | ||||
Tags | No tags attached. | ||||
I'm still a bit scary that we might have situations where mapper puts e.g. a barrel into the wall and it should be visible in both rooms. The suggested optimization would definitely break such a case. Such cases should be rare, but it still sucks to fix them all the time... Instead, I decided to improve the algorithm for searching the areas covered by an entity. Right now we check oriented bounding box against BSP tree. I decided to check BVH trees of static models instead, since they should give slightly better bounds. This did not work out: I did not receive any noticeable improvement in Perilious Refuge regarding the number of entities drawn in view. The only difference that I found was BVH code giving MORE refs, and it turned out to be because it uses "<=" instead of "<" comparison in box-vs-plane check =) Despite my worries about performance of such a check (I planned to enable it only for the very start of the level), it actually worked pretty fast even globally. Still, it is a little bit slower because I changed "common children" important optimization to several areas in a node, which only slowed things down. Perhaps the reason for this is that most of our models are very low-poly and BVH has little effect. Perhaps that's because the whole issue of static entity leaking a wall almost never happens. Really, this is the problem only when entity is within room A, but it's oriented bounding box ix so large that it touches room B behind a wall. Anyway, I decided to not commit this. It is a big change which obviously gives nothing =( |
|
Date Modified | Username | Field | Change |
---|---|---|---|
22.03.2020 02:27 | stgatilov | New Issue | |
22.03.2020 02:27 | stgatilov | Status | new => assigned |
22.03.2020 02:27 | stgatilov | Assigned To | => stgatilov |
05.12.2020 12:33 | stgatilov | Target Version | TDM 2.09 => TDM 2.10 |
22.11.2021 14:06 | stgatilov | Target Version | TDM 2.10 => TDM 2.11 |
15.11.2022 14:47 | nbohr1more | Target Version | TDM 2.11 => TDM 2.12 |
25.01.2023 12:39 | Bikerdude | Relationship added | related to 0006243 |
04.06.2023 07:39 | stgatilov | Note Added: 0016009 | |
05.12.2023 01:17 | nbohr1more | Target Version | TDM 2.12 => TDM 2.13 |