Bo Svensson
a854a6e04a
removes UnrefQueue ( #3181 )
...
Currently, we use an `UnrefQueue` which supposedly aims to transfer destruction costs to another thread. The implications of this unusual pattern can not be well understood because some allocators might free resources more efficiently if they are freed by the same thread that allocated them. In addition, `UnrefQueue` complicates the validation of thread safety in our engine. Lastly, our current usage of `UnrefQueue` triggers `ref()`, `unref()` atomic operations as objects are passed into the queue. These operations could be more expensive than the actual destruction.
With this PR we thus remove `UnrefQueue`. We can expect these changes to have a minor impact at most because we free most resources elsewhere in `ResourceSystem::updateCache`.
2021-10-20 23:02:15 +02:00
Bo Svensson
01605433cb
quadtreeworld.cpp ( #3174 )
...
Currently, we disable a paging root node that we only need in exterior cells by setting its node mask to 0 when transitioning into an interior cell. Node masks are not ideal for this usage case because Node::getBound is unaware of masks. With this PR we just detach the unused node from the scene graph. _shadowedScene->getBound() in the MWShadowTechnique should return a much better value in interior cells with these changes.
2021-10-16 21:48:13 +02:00
Bo Svensson
98f8295765
allows to skip ComputeLightSpaceBounds traversal ( #3152 )
...
Currently, we always traverse the scene graph an additional time with a ComputeLightSpaceBounds visitor during shadow casting. ComputeLightSpaceBounds is only useful when the shadow casting mask allows us to shrink the bounds of the rendered scene, so we guard its traversal with a check against getCastsShadowTraversalMask. In practice, this guard never works because we build the traversal mask inclusively.
With this PR we limit the getCastsShadowTraversalMask check to relevant masks. This new check allows us to skip a superfluous ComputeLightSpaceBounds traversal with most settings.
2021-10-11 11:27:50 +02:00
Bo Svensson
b2af81bc18
converts remaining osg::NodeCallback ( #3147 )
...
With this PR we convert remaining instantiations of the deprecated osg::NodeCallback in Open MW to SceneUtil::NodeCallback.
2021-10-05 14:21:12 +02:00
Bo Svensson
3f731cd102
attempts to fix spellcasting freezes ( #3146 )
...
Firstly, this PR reintroduces commit "Recreate a special case for IntersectionVisitor on QuadTreeWorld" we forgot to reapply while reverting a revert commit. Secondly, in cases we still need to build a view for an intersection visitor, we now use the available `osgUtil::IntersectionVisitor::getReferenceEyePoint` instead of falling back to the origin position that was previously causing long rebuild times.
2021-10-04 22:00:31 +02:00
Bret Curtis
b7c1d9edb0
remove unnecessary includes
2021-09-29 17:13:40 +02:00
Bo Svensson
d8707a763f
fixes build ( #3134 )
...
* quadtreeworld.cpp
* renderingmanager.cpp [ci skip]
* quadtreeworld.hpp
* cellborder.hpp
* cellborder.cpp
2021-09-29 17:10:58 +02:00
Bret Curtis
803195a05f
add back some explicit includes
2021-09-29 16:29:10 +02:00
Bret Curtis
9fabf99250
remove mDebugChunks from chunkManager
2021-09-27 21:38:12 +02:00
Bo Svensson
01cc61087b
improves paging preloader ( #3126 )
...
* Return check for distance when we try to reuse data
* [ci skip]
* [ci skip]
* [ci skip]
* [ci skip]
* [ci skip]
* cellpreloader.cpp
* [ci skip]
* [ci skip]
* [ci skip]
* [ci skip]
* [ci skip]
* [ci skip]
* [ci skip]
* [ci skip]
* quadtreeworld.cpp
* chunkmanager.cpp
* chunkmanager.cpp
* cellpreloader.cpp
* jvoisin
* whitespace
* whitespace
2021-09-27 21:32:18 +02:00
Bo Svensson
3f68ddd8f4
alternate debug chunks ( #3127 )
...
* quadtreeworld.cpp
* chunkmanager.cpp
* chunkmanager.hpp
* quadtreeworld.hpp
* chunkmanager.cpp
* quadtreeworld.cpp
* quadtreeworld.cpp
* quadtreeworld.cpp [ci skip]
* quadtreeworld.hpp
* quadtreeworld.cpp
* quadtreeworld.cpp
* quadtreeworld.cpp
* chunkmanager.cpp
* chunkmanager.cpp
2021-09-27 21:25:39 +02:00
Bo Svensson
d38c8c6dcb
optimise chunk drawing order ( #3116 )
...
* material.cpp
* material.cpp
2021-09-21 22:41:07 +02:00
Bo Svensson
095f4b2ed5
material.cpp ( #3117 )
2021-09-19 13:13:28 +02:00
Cédric Mocquillon
d7352ded36
Add configurable color and offset
2021-09-11 21:53:05 +02:00
Cédric Mocquillon
4b7d0bba53
Avoid adding redundant osg;;Group in non debug mode
2021-09-11 21:53:04 +02:00
Cédric Mocquillon
98a0819d52
Debug terrain chunks
2021-09-11 21:53:04 +02:00
Bo Svensson
ac72f3d636
reduces virtual function calls in a hotspot of cache retrieval ( #3100 )
...
* chunkmanager.cpp static_cast [ci skip]
* groundcover.cpp static_cast [ci skip]
* Update objectpaging.cpp
objectpaging.cpp static_cast [ci skip]
2021-09-10 17:58:57 +02:00
Bo Svensson
9d661359a1
Groundcover consolidation ( #3096 )
...
* chunkmanager.hpp viewdistance
* chunkmanager.cpp viewdistance
* chunkmanager.hpp viewdistance
* quadtreeworld.cpp viewdistance
* quadtreeworld.cpp consolidate
* quadtreeworld.hpp consolidate
* renderingmanager.cpp groundcover consolidate
* renderingmanager.hpp groundcover consolidate
* renderingmanager.cpp updater move
* renderingmanager.hpp updater move
* groundcover.hpp activegrid consolidation
* groundcover.cpp activegrid consolidation
* settings-default.cfg dead settings remove
* viewdata.cpp revert
* wrong file paste mistake
* wrong file paste mistake
* wrong file paste mistake
* renderingmanager.cpp updatecallback fix
* renderingmanager.cpp namespace fix
* groundcover.hpp redefinition fix
* groundcover.cpp redefinition fix
* renderingmanager.cpp crash fix
* renderingmanager.cpp euclidean groundcover distance
* viewdata.hpp getreusedistance
* quadtreeworld.cpp reusedistance
* groundcover.rst [ci skip]
2021-09-09 23:10:22 +02:00
elsid
605cb8db7c
Make sync terrain preloading sleep free
...
This reduces average time spent on in. 5 milliseconds as a base precision is
quite a lot considering that for 60 FPS frame time is 1000/16 = ~16.67 ms
when it's a cell loading frame and there is more important work to do rather
than sleeping.
2021-09-07 14:52:42 +02:00
jvoisin
cb08f490d7
Sprinkle some const-ref in loop
...
This was done on the good advices of clang-tidy
2021-09-04 20:50:59 +02:00
Bret Curtis
436c640da2
the old switch-a-roo because we shoudl only StopTraversal when the node size is larger than 1 and not the other way around
2021-08-09 22:56:04 +02:00
glassmancody.info
09e03fde2e
refactor and fix wobbly shores
2021-08-04 17:49:57 -07:00
glassmancody.info
cad0b151cb
enable shaders path and dehardcode depth formats
2021-08-04 17:39:11 -07:00
glassmancody.info
70fac33940
initial reverse-z depth implementation
2021-08-04 17:39:11 -07:00
Andrei Kortunov
54c8375672
Recreate a special case for IntersectionVisitor on QuadTreeWorld
2021-05-11 16:34:02 +04:00
Andrei Kortunov
3e281f625d
Return check for distance when we try to reuse data (bug #6026 )
2021-05-11 09:36:46 +04:00
psi29a
e94181b2b2
Merge branch 'constexpr' into 'master'
...
Sprinkle a couple of constexpr found by VS
See merge request OpenMW/openmw!800
(cherry picked from commit 5e8ea624bc85acebf457592dd10b790124ecf6ef)
5704b2ac Sprinkle a couple of constexpr found by VS
2021-05-04 21:09:20 +00:00
Andrei Kortunov
2d869ca9ff
Fix node masks signed/unsigned mismatch
2021-04-20 10:52:51 +04:00
Andrei Kortunov
14cf0ce1dc
Implement instanced groundcover
2021-01-26 22:29:41 +04:00
AnyOldName3
eb80c997b8
Avoid OSG setting array binding from multiple threads
2021-01-22 19:44:22 +00:00
Andrei Kortunov
8e5f26c109
Code cleanup
2021-01-09 14:41:10 +04:00
Andrei Kortunov
8084a336b5
Replace zeroes and nulls by nullptrs
2020-11-29 11:14:07 +04:00
Alexei Dobrohotov
53f91a3aa5
Merge pull request #3018 from akortunov/emplace
...
Use emplace_back instead of push_back
2020-11-01 01:58:56 +03:00
Andrei Kortunov
065ed5138e
Use emplace_back instead of push_back
2020-10-18 10:27:35 +04:00
Andrei Kortunov
8ca3c3b123
Mark overrided methods by override keyword
2020-10-16 22:18:54 +04:00
elsid
40ad87bc4d
Replace OpenThreads by std types
2020-06-25 22:16:09 +02:00
Andrei Kortunov
808c905e1f
Initialize fields to avoid undefined behaviour
2020-06-18 14:50:06 +04:00
Andrei Kortunov
0e810c8d32
Fix cell borders color
2020-06-18 09:12:56 +04:00
Andrei Kortunov
805d826d5b
Fix Clang warnings about invalid overrides
2020-06-16 16:59:37 +04:00
bzzt lost a hitlab login
4238fbccdf
view fix
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:28 +02:00
bzzt lost a hitlab login
65cd2c77aa
static intersections
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:28 +02:00
bzzt lost a hitlab login
c7fda6d280
activegrid paging = 2xfps
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:28 +02:00
bzzt lost a hitlab login
b4af2ac672
avoid blocking on pagerebuild
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:28 +02:00
bzzt lost a hitlab login
17637c6575
pagerebuild on disable
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:28 +02:00
bzzt lost a hitlab login
ffbed7ee38
loadingscreen
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:28 +02:00
bzzt lost a hitlab login
da92ad329b
move renderbin
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:28 +02:00
bzzt lost a hitlab login
b7b31926a8
fix map glitch + cleanup
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:28 +02:00
bzzt lost a hitlab login
77b92aee9c
fix shadowsglitch by bounds overflow
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:28 +02:00
bzzt lost a hitlab login
1f891ca46d
billboarding support for tree mods
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:27 +02:00
bzzt lost a hitlab login
cf439581e1
comply by elsid review
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:27 +02:00
bzzt lost a hitlab login
ce505a9bb3
crashfix + optimiziation
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:27 +02:00
bzzt
d684f1a78f
terrainbased objectpaging
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:27 +02:00
Andrei Kortunov
6de97e6bc2
Remove redundant variables from RenderingManager
2020-06-06 14:10:24 +04:00
Capostrophic
1bf2ddac4d
Cleanup
...
Move static variable declaration out of the loop
Remove redundant boolean argument from applyDrawableProperties()
Improve HeightCullCallback class formatting
2020-05-07 18:54:09 +03:00
Bret Curtis
ed970f4d17
Apply suggestion to components/terrain/terraingrid.hpp
2020-04-24 06:26:08 +00:00
Bret Curtis
756ec7117b
make mGrid (and friends) private again, create accessor method to return bool of mGrid.empty()
2020-04-23 17:40:10 +02:00
Bret Curtis
48713915cb
re-use bzzts waterplane overlay for debug; makes it easier to test. To use this, set the env OPENMW_WATER_CULLING_DEBUG=1; You will see blue rectangles corresponding to water outlines. Once there are no more outlines, water is culled. You can further see this by pressing F3 3 times to check the the amount of quads. Before culling it should be around 1600, after culling it should drop to 0.
2020-04-23 11:12:10 +02:00
Bret Curtis
407fbe320e
cleanup and use C++ version of FLT_MAX
2020-04-23 10:10:50 +02:00
bzzt
ed20d869b4
waterculling for both terrain
2020-04-23 08:53:21 +02:00
Bret Curtis
a4d1068d1a
Merge branch '13' into 'master'
...
terrainshadowclusterculling
See merge request OpenMW/openmw!141
2020-04-22 21:42:50 +00:00
Bret Curtis
8a8107e837
as it says; revert vismask and uncomplicate openmw
2020-04-20 20:57:38 +02:00
fredzio
39a55318b0
Remove unused variable
2020-04-10 22:50:28 +02:00
Andrei Kortunov
a68d9aed4c
Fix issues, found by CoverityScan
2020-04-04 17:45:26 +04:00
Andrei Kortunov
84979fa8b7
Move VisMask to components
2020-02-16 16:03:35 +04:00
Andrei Kortunov
f4291ea948
Fix intersector usage (bug #5283 )
2020-02-10 22:31:20 +04:00
Andrei Kortunov
eec82f676a
Merge pull request #2602 from elsid/clang_tidy
...
Fix clang-tidy issues
2019-12-03 08:27:43 +04:00
Andrei Kortunov
5daf602256
Fix iterator usage when destroying cell borders (bug #5218 )
2019-11-29 12:26:17 +04:00
bzzt
480302d634
terrainclusterculling
2019-11-20 13:37:00 +00:00
elsid
4cd2ff9a3d
Avoid virtual call in TerrainGrid dtor
...
/home/elsid/dev/openmw/components/terrain/terraingrid.cpp:31:9: warning: Call to virtual function during destruction [clang-analyzer-optin.cplusplus.VirtualCall]
unloadCell(mGrid.begin()->first.first, mGrid.begin()->first.second);
^
/home/elsid/dev/openmw/components/terrain/terraingrid.cpp:29:12: note: Assuming the condition is true
while (!mGrid.empty())
^
/home/elsid/dev/openmw/components/terrain/terraingrid.cpp:29:5: note: Loop condition is true. Entering loop body
while (!mGrid.empty())
^
/home/elsid/dev/openmw/components/terrain/terraingrid.cpp:31:9: note: This destructor of an object of type '~TerrainGrid' has not returned when the virtual method was called
unloadCell(mGrid.begin()->first.first, mGrid.begin()->first.second);
^
/home/elsid/dev/openmw/components/terrain/terraingrid.cpp:31:9: note: Call to virtual function during destruction
2019-11-17 18:50:11 +01:00
Andrei Kortunov
af41e9acc1
Initialize variables to avoid undefined values
2019-11-13 14:47:29 +04:00
elsid
d42b5fd28e
Fix warning -Woverloaded-virtual
...
In file included from openmw/components/terrain/quadtreeworld.cpp:10:
openmw/components/terrain/quadtreenode.hpp:95:14: warning: 'Terrain::QuadTreeNode::traverse' hides overloaded virtual function [-Woverloaded-virtual]
void traverse(ViewData* vd, const osg::Vec3f& viewPoint, LodCallback* lodCallback, float maxDist);
^
OpenSceneGraph/build/clang/release/include/osg/Group:43:22: note: hidden overloaded virtual function 'osg::Group::traverse' declared here: different number of parameters (1 vs 4)
virtual void traverse(NodeVisitor& nv);
^
1 warning generated.
2019-11-05 09:31:38 +01:00
elsid
751accad0f
Remove unused field QuadTreeBuilder::mLodFactor
2019-09-28 14:26:52 +02:00
bzzt
a730365ea1
Creanup Distant Terrain code
...
- Cull terrain in the stock osg::CullVisitor
- Do not compile composite maps for shadow camera
- Do not abuse userdata for composite maps
2019-06-05 19:09:57 +04:00
bzzt
e4ba6ecf15
Do not store a LOD callback in the every QuadTreeNode
2019-06-05 18:27:37 +04:00
bzzt
a61c0aaee1
Do not load height data to the qued tree since we do not need it now
2019-06-05 18:27:37 +04:00
bzzt
ebcf8ca062
Do not store a ViewDataMap in the every QuadTreeNode
2019-06-05 18:27:37 +04:00
bzzt
cb6d27fb12
Use the custom LineSegmentIntersector for QuadTree to simplify traversal
...
code
2019-06-05 18:27:37 +04:00
bzzt
ce4e8be9ac
Move traverse methods to the QuadTreeNode
2019-06-05 18:27:37 +04:00
Andrei Kortunov
1da012f6ee
Optimize blendmap generation
2019-06-01 14:37:29 +04:00
elsid
4500f01efd
Remove unused field
2019-04-13 13:25:49 +02:00
bzzt
391f6faffb
Remove unused defaultViewer / defaultViewPoint
2019-04-07 11:21:09 +04:00
bzzt
e908790584
Inherit the view point from main camera for water RTT cameras
2019-04-07 11:21:07 +04:00
Andrei Kortunov
489e5c6cce
Store preloaded terrain view in the main thread
2019-04-07 11:15:21 +04:00
bzzt
63ab7345be
Reuse traversal result for different traversal with same view point
...
Rename eyePoint to viewPoint to match OSG conventions (eyePoint is the camera position, viewPoint is for LOD handling)
2019-04-07 11:14:37 +04:00
bzzt
c8d2107b80
Do not store Viewer reference in the ViewData
2019-03-28 09:51:45 +04:00
Bret Curtis
1e9eac568f
Merge pull request #2249 from akortunov/cache
...
Implement generic caching system
2019-03-25 13:32:23 +01:00
Capostrophic
786f3e5fc3
Remove unused and unfinished blendmap packing feature
2019-03-22 22:15:28 +03:00
Andrei Kortunov
0e1f5f68b6
Do not allow different threads to compile the same composite map
2019-03-21 08:52:13 +04:00
Andrei Kortunov
cad45e96ac
Remove redundant mCompile set - we do not use data from it anyway
2019-03-21 08:42:48 +04:00
bzzt
c2986b3bd7
Do not block the loading thread while compiling composite maps in the
...
draw thread
2019-03-20 21:42:53 +04:00
Bret Curtis
b819690e82
Merge pull request #2264 from akortunov/optimize_terrain
...
Delete composite map layers in the background thread
2019-03-18 13:52:17 +01:00
bzzt
aa5a071aef
Delete composite map layers in the background thread
2019-03-18 14:00:50 +04:00
Bret Curtis
d56733149c
Merge pull request #2201 from akortunov/optimize_terrain
...
Optimize terrain
2019-03-18 08:59:10 +01:00
bzzt
6029ed4ecc
Reject empty quad tree nodes at the cell level without land data
2019-03-18 10:27:29 +04:00
bzzt
36fa51b6ad
Fix bounding box calculation for terrain shapes
2019-03-18 10:27:09 +04:00
bzzt
e131e6699c
Match vertex colors data type to source
2019-03-17 07:24:22 +03:00
Andrei Kortunov
2ed05a5195
Implement generic caching system
2019-03-14 09:10:19 +04:00
Andrei Kortunov
12f9184d00
Allow to interrupt terrain preloading
2019-03-09 13:15:23 +04:00
bzzt
e0cf460ba3
Do not load terrain beyond the viewing distance
2019-03-08 22:15:27 +04:00
Andrei Kortunov
a6fd077537
Render nearby default cells if the Distant Terrain is disabled
2019-03-08 22:15:27 +04:00