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`.
3 years ago
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.
3 years ago
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.
3 years ago
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.
3 years ago
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.
3 years ago
Bret Curtis
b7c1d9edb0
remove unnecessary includes
3 years ago
Bo Svensson
d8707a763f
fixes build ( #3134 )
...
* quadtreeworld.cpp
* renderingmanager.cpp [ci skip]
* quadtreeworld.hpp
* cellborder.hpp
* cellborder.cpp
3 years ago
Bret Curtis
803195a05f
add back some explicit includes
3 years ago
Bret Curtis
9fabf99250
remove mDebugChunks from chunkManager
3 years ago
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
3 years ago
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
3 years ago
Bo Svensson
d38c8c6dcb
optimise chunk drawing order ( #3116 )
...
* material.cpp
* material.cpp
3 years ago
Bo Svensson
095f4b2ed5
material.cpp ( #3117 )
3 years ago
Cédric Mocquillon
d7352ded36
Add configurable color and offset
3 years ago
Cédric Mocquillon
4b7d0bba53
Avoid adding redundant osg;;Group in non debug mode
3 years ago
Cédric Mocquillon
98a0819d52
Debug terrain chunks
3 years ago
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]
3 years ago
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]
3 years ago
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.
3 years ago
jvoisin
cb08f490d7
Sprinkle some const-ref in loop
...
This was done on the good advices of clang-tidy
3 years ago
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
3 years ago
glassmancody.info
09e03fde2e
refactor and fix wobbly shores
3 years ago
glassmancody.info
cad0b151cb
enable shaders path and dehardcode depth formats
3 years ago
glassmancody.info
70fac33940
initial reverse-z depth implementation
3 years ago
Andrei Kortunov
54c8375672
Recreate a special case for IntersectionVisitor on QuadTreeWorld
4 years ago
Andrei Kortunov
3e281f625d
Return check for distance when we try to reuse data (bug #6026 )
4 years ago
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
4 years ago
Andrei Kortunov
2d869ca9ff
Fix node masks signed/unsigned mismatch
4 years ago
Andrei Kortunov
14cf0ce1dc
Implement instanced groundcover
4 years ago
AnyOldName3
eb80c997b8
Avoid OSG setting array binding from multiple threads
4 years ago
Andrei Kortunov
8e5f26c109
Code cleanup
4 years ago
Andrei Kortunov
8084a336b5
Replace zeroes and nulls by nullptrs
4 years ago
Alexei Dobrohotov
53f91a3aa5
Merge pull request #3018 from akortunov/emplace
...
Use emplace_back instead of push_back
4 years ago
Andrei Kortunov
065ed5138e
Use emplace_back instead of push_back
4 years ago
Andrei Kortunov
8ca3c3b123
Mark overrided methods by override keyword
4 years ago
elsid
40ad87bc4d
Replace OpenThreads by std types
5 years ago
Andrei Kortunov
808c905e1f
Initialize fields to avoid undefined behaviour
5 years ago
Andrei Kortunov
0e810c8d32
Fix cell borders color
5 years ago
Andrei Kortunov
805d826d5b
Fix Clang warnings about invalid overrides
5 years ago
bzzt lost a hitlab login
4238fbccdf
view fix
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
5 years ago
bzzt lost a hitlab login
65cd2c77aa
static intersections
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
5 years ago
bzzt lost a hitlab login
c7fda6d280
activegrid paging = 2xfps
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
5 years ago
bzzt lost a hitlab login
b4af2ac672
avoid blocking on pagerebuild
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
5 years ago
bzzt lost a hitlab login
17637c6575
pagerebuild on disable
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
5 years ago
bzzt lost a hitlab login
ffbed7ee38
loadingscreen
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
5 years ago
bzzt lost a hitlab login
da92ad329b
move renderbin
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
5 years ago
bzzt lost a hitlab login
b7b31926a8
fix map glitch + cleanup
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
5 years ago
bzzt lost a hitlab login
77b92aee9c
fix shadowsglitch by bounds overflow
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
5 years ago
bzzt lost a hitlab login
1f891ca46d
billboarding support for tree mods
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
5 years ago
bzzt lost a hitlab login
cf439581e1
comply by elsid review
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
5 years ago
bzzt lost a hitlab login
ce505a9bb3
crashfix + optimiziation
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
5 years ago
bzzt
d684f1a78f
terrainbased objectpaging
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
5 years ago
Andrei Kortunov
6de97e6bc2
Remove redundant variables from RenderingManager
5 years ago
Capostrophic
1bf2ddac4d
Cleanup
...
Move static variable declaration out of the loop
Remove redundant boolean argument from applyDrawableProperties()
Improve HeightCullCallback class formatting
5 years ago
Bret Curtis
ed970f4d17
Apply suggestion to components/terrain/terraingrid.hpp
5 years ago
Bret Curtis
756ec7117b
make mGrid (and friends) private again, create accessor method to return bool of mGrid.empty()
5 years ago
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.
5 years ago
Bret Curtis
407fbe320e
cleanup and use C++ version of FLT_MAX
5 years ago
bzzt
ed20d869b4
waterculling for both terrain
5 years ago
Bret Curtis
a4d1068d1a
Merge branch '13' into 'master'
...
terrainshadowclusterculling
See merge request OpenMW/openmw!141
5 years ago
Bret Curtis
8a8107e837
as it says; revert vismask and uncomplicate openmw
5 years ago
fredzio
39a55318b0
Remove unused variable
5 years ago
Andrei Kortunov
a68d9aed4c
Fix issues, found by CoverityScan
5 years ago
Andrei Kortunov
84979fa8b7
Move VisMask to components
5 years ago
Andrei Kortunov
f4291ea948
Fix intersector usage (bug #5283 )
5 years ago
Andrei Kortunov
eec82f676a
Merge pull request #2602 from elsid/clang_tidy
...
Fix clang-tidy issues
5 years ago
Andrei Kortunov
5daf602256
Fix iterator usage when destroying cell borders (bug #5218 )
5 years ago
bzzt
480302d634
terrainclusterculling
5 years ago
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
5 years ago
Andrei Kortunov
af41e9acc1
Initialize variables to avoid undefined values
5 years ago
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.
5 years ago
elsid
751accad0f
Remove unused field QuadTreeBuilder::mLodFactor
5 years ago
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
6 years ago
bzzt
e4ba6ecf15
Do not store a LOD callback in the every QuadTreeNode
6 years ago
bzzt
a61c0aaee1
Do not load height data to the qued tree since we do not need it now
6 years ago
bzzt
ebcf8ca062
Do not store a ViewDataMap in the every QuadTreeNode
6 years ago
bzzt
cb6d27fb12
Use the custom LineSegmentIntersector for QuadTree to simplify traversal
...
code
6 years ago
bzzt
ce4e8be9ac
Move traverse methods to the QuadTreeNode
6 years ago
Andrei Kortunov
1da012f6ee
Optimize blendmap generation
6 years ago
elsid
4500f01efd
Remove unused field
6 years ago
bzzt
391f6faffb
Remove unused defaultViewer / defaultViewPoint
6 years ago
bzzt
e908790584
Inherit the view point from main camera for water RTT cameras
6 years ago
Andrei Kortunov
489e5c6cce
Store preloaded terrain view in the main thread
6 years ago
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)
6 years ago
bzzt
c8d2107b80
Do not store Viewer reference in the ViewData
6 years ago
Bret Curtis
1e9eac568f
Merge pull request #2249 from akortunov/cache
...
Implement generic caching system
6 years ago
Capostrophic
786f3e5fc3
Remove unused and unfinished blendmap packing feature
6 years ago
Andrei Kortunov
0e1f5f68b6
Do not allow different threads to compile the same composite map
6 years ago
Andrei Kortunov
cad45e96ac
Remove redundant mCompile set - we do not use data from it anyway
6 years ago
bzzt
c2986b3bd7
Do not block the loading thread while compiling composite maps in the
...
draw thread
6 years ago
Bret Curtis
b819690e82
Merge pull request #2264 from akortunov/optimize_terrain
...
Delete composite map layers in the background thread
6 years ago
bzzt
aa5a071aef
Delete composite map layers in the background thread
6 years ago
Bret Curtis
d56733149c
Merge pull request #2201 from akortunov/optimize_terrain
...
Optimize terrain
6 years ago
bzzt
6029ed4ecc
Reject empty quad tree nodes at the cell level without land data
6 years ago
bzzt
36fa51b6ad
Fix bounding box calculation for terrain shapes
6 years ago
bzzt
e131e6699c
Match vertex colors data type to source
6 years ago
Andrei Kortunov
2ed05a5195
Implement generic caching system
6 years ago
Andrei Kortunov
12f9184d00
Allow to interrupt terrain preloading
6 years ago
bzzt
e0cf460ba3
Do not load terrain beyond the viewing distance
6 years ago
Andrei Kortunov
a6fd077537
Render nearby default cells if the Distant Terrain is disabled
6 years ago