The current text could be interpreted to mean that a data folder
_must_ have a plugin, but this isn't the case.
This added text clarifies that a plugin or resources are needed.
This allows to distribute AI reaction calls over time.
Before this change actors appearing at the same frame will react in the same
frame over and over because AI reaction period is constant. It creates a
non-uniform CPU usage over frames. If a single frame has too many AI reactions
it may cause stuttering when there are too many actors on a scene for current
system.
Another concern is a synchronization of actions between creatures and NPC.
They start to go or hit at the same frame that is unnatural.
The sunglare works by comparing an occlusion query with depth testing on
against one with depth testing off to determine if there's anything
closer to the camera than the maximum depth buffer value. For the depth-
tested query, the depth range is set from 1 to 1 so it's always drawn at
the maximum distance. Originally, we had the depth function set to LESS,
meaning that the query would always fail as 1 is not less than 1, but
also glPolygonOffset was used to move the query by "the smallest value
that is guaranteed to produce a resolvable offset for a given
implementation" closer to the camera. While other driver and hardware
combinations do that, Mesa seems to be clamping to the depth range, so
still failing.
Instead, it's simpler to just get rid of the polygon offset and change
the depth test to LEQUAL as 1 *is* less than or equal to 1, but not than
any other possible depth buffer value.
Not everything is supported but it does build with the following CMakeSettings.json
variables and dependencies from vcpkg:
"variables": [
{ "name": "OPENMW_USE_SYSTEM_BULLET", "value": "False", "type": "BOOL" },
{ "name": "OPENMW_USE_SYSTEM_MYGUI", "value": "False", "type": "BOOL" },
{ "name": "OPENMW_USE_SYSTEM_OSG", "value": "False", "type": "BOOL" },
{ "name": "BULLET_STATIC", "value": "True", "type": "BOOL" },
{ "name": "OSG_STATIC", "value": "False", "type": "BOOL" },
{ "name": "MYGUI_STATIC", "value": "False", "type": "BOOL" }
],
What works: it builds
What does not work: Not all DLLs are copied into the output directory with this set up
(SDL2, MyGUI, Bullet, OSG, are not copied).