secondlife / viewer

🖥️ Second Life's official client
GNU Lesser General Public License v2.1
212 stars 53 forks source link

Max-Non-Impostors uses a bad shape #2460

Open canny[bot] opened 3 months ago

canny[bot] commented 3 months ago

The shape that detects which avatars to prioritize rendering, seems to be roughly spherical and based on the FOV of the avatar somehow. As the camera is not spherical, it seems odd to choose a spherical algorithm for this, especially since half of that view should be unrendered.

Why does this matter? It's common that only 1/3 of visible avatars are actually rendered as non-impostors. The shape used for non-imposter calculation is putting several avatars, who cannot be seen, as fully rendered. This means 2/3 of my avatar rendering capability is being wasted on things I cant see at all!

https://secondlife.canny.io/admin/board/feature-requests/p/max-non-impostors-uses-a-bad-shape

canny[bot] commented 3 months ago

This issue has been linked to a Canny post: Max-Non-Impostors uses a bad shape :tada:

AtlasLinden commented 2 months ago

See Canny post for more details including some possible repro steps

vladyslavasproductengine commented 2 months ago

Need more info. Verified on the Second Life Release 7.1.11.10947335521 (64bit) on Win10/OSX in the scope of secondlife/iqa#348.

Could you please add a test plan with expected behavior?

LLGuru commented 1 month ago

Hi @vladyslavasproductengine

There couldn't be any test plan for this issue because the change is very internal

The issue relates to the algorithm used for calculation of visibility priorities of avatars Avatars placed behind the back of the camera shouldn't be prioritized while loading QA can't test this directly because these avatars aren't visible on the screen

The sorting method was corrected along the requirements The issue may be closed with the status "Implemented"

AtlasLinden commented 1 month ago

This can be tested by setting up multiple "bots" or animesh around the user. (i.e. There should be bots/animesh both inside and outside your FOV.) Using the "Max # of nonimpostors" slider in Advanced Graphics Preferences: a. Set it to the minimum value of 1 (this will only register your avatar as a 'non-impostor') b. Begin incrementing this setting by 1 and verify that one at a time the bots/animesh in your FOV become non-impostors. (rather than the ones outside your FOV.)

LLGuru commented 1 month ago

The current implementation uses the MaxImpostors value to choose the update interval for the animation There are 3 levels of update interval - FAST, MED and SLOW

All visible avatars (in FOV) are enumerated from 1, where 1 is self, and all others are 2, 3, 4, etc. ordered descending by the pixel area taken on the screen

FAST is being assigned to avatars in interval [1 .. N1] where N1 is MaxImpostors 3 MED is being assigned to avatars in interval [N1 + 1 .. N2] where N2 is MaxImpostors 4 SLOW is being assigned to avatars in interval [N2 + 1 .. ]

a. Set it to the minimum value of 1 (this will only register your avatar as a 'non-impostor')

INCORRECT: the minimum value of 1 means that avatars 1, 2, 3 will be FAST, 4 will be MED, and 5, 6, 7 etc. will be SLOW

vladyslavasproductengine commented 1 month ago

Passed QA. Verified on the Second Life Release 7.1.11.11469579464 (64bit) on Win11/OSX in the scope of https://github.com/secondlife/iqa/issues/374. Hi @AtlasLinden! I used more than 20 animesh. When I set it to the minimum value of 1, my avatar was visualized as expected, all the animesh around me were not animated. When I increased the setting, more and more avatars were visually animated. Is this enough for checks this bug?

AtlasLinden commented 1 month ago

Hi @vladyslavasproductengine, as long as the avatars in your Field Of View were animating before any outside of your FOV then that is enough to pass QA.

vladyslavasproductengine commented 1 month ago

Thank you @AtlasLinden for your respond. Pass QA. Verified on the Second Life Release 7.1.11.11565212741 (64bit) on Win10/OSX in the scope of IQA#375.