Commit Graph

117 Commits (30e6821d818932797ff9cba22863bcb38857b71a)

Author SHA1 Message Date
Alexei Kotov ccd36e9413 Support light fade settings in legacy lighting method
This doesn't change launcher descriptions because the launcher settings are going to be omitted
7 months ago
Alexei Kotov 71c1b536b4 Discard culled lights specifically for post-processing light buffer 7 months ago
Alexei Kotov c92d016e43 Don't sort scene light list by camera distance if the limit isn't reached and PP doesn't need it
Also don't clip it to the single UBO scene light limit if the lighting method isn't actually single UBO
7 months ago
Alexei Kotov 916706c6c1 Make object light lists (mostly) view-independent
Remove frustum culling
Sort lights by object proximity
Restore multiple camera rendering optimization
7 months ago
Alexei Kotov debc37d93a Fade out specularity according to light fade settings as well 7 months ago
AnyOldName3 a761e417f1 Accept that it's too much work to defer light manager creation in the CS and instead use something akin to the old approach 10 months ago
AnyOldName3 36a75cdb29 Get the GLExtensions instance when a context is created 10 months ago
Alexei Kotov 820fc068d1 Support point specular lighting (#6188)
Fix passing light specular colors with shader lighting methods (with help from wazabear)
1 year ago
elsid 08902371b4
Use settings values for Shaders settings 1 year ago
jvoisin 3cbf1dc042 First pass with include-what-you-use 2 years ago
elsid 063fff7fa4
Fix and prevent -Wextra-semi warning 2 years ago
clang-format-bot ddb0522bbf
Apply clang-format to code base 2 years ago
Evil Eye 2222b47e3d Make Settings::Manager::getString return a reference 2 years ago
glassmancody.info 1f2d9f2280 don't recycle statesets for light cullcallback for now 2 years ago
psi29a b551e69b6f #5534 remove OSG 3.4 support and require at least 3.6.5 support 2 years ago
psi29a bb9884c024 Merge branch 'split_stringops' into 'master'
Split components/misc/stringops.hpp into multiple headers

See merge request OpenMW/openmw!2233
2 years ago
glassmancody.info c513ec7824 null check 2 years ago
glassmancody.info 2cea4f3172 stop excessive allocations with lightmanager callback 2 years ago
elsid f99ed6f1db
Split components/misc/stringops.hpp into multiple headers
Replace all ciEqual overloads with one having std::string_view as argument.
2 years ago
elsid 9ac3bb753e
Move declaration private static member variables of LightManager to .cpp
There is no need to expose them to other translation units.
3 years ago
elsid 4211cf1c24
Use uniform indent and apply openmw naming policy 3 years ago
glassmancody.info 8146b05c92 pass only lights with visible geometry 3 years ago
glassmancody.info 327b8ecdcb pass sorted lights to light postprocess light buffers 3 years ago
cody glassman 30a64ee82a move to world space, fix bug with uniform size updates 3 years ago
cody glassman 0cb63ca4e6 experimental point light bindings 3 years ago
Alexei Dobrohotov 142b6fdf2f Fix double precision bound issues in std::max/std::clamp 3 years ago
glassmancody.info 750514cda2 simply lightmanager and fix racey behavior 3 years ago
Bo Svensson 1960e976e2
refactors stringops.hpp (#3192)
With this PR we refactor `StringUtils::replaceAll` to accept `string_view` as suggested in a code comment. In addition, while we are touching this rebuild happy file, we slim it down a bit by moving a few sparingly used functions elsewhere.
3 years ago
Bo Svensson 1979ee1491
refactors hashed std::map (#3199)
We currently apply a strange algorithm to `LightManager::mStateSetCache`. For some reason this algorithm inserts hashed keys into `std::map` in a way that fails to handle hash collisions and exhibits worse lookup complexity than `std::unordered_map`. With this PR we just use `std::unordered_map` here.
3 years ago
Bo Svensson cd4d76f8c5
discard off-screen lights (#3120)
Currently, we run culling tests against all lights in the scene during LightListCallback::pushLightState. We can avoid most of these tests by removing off-screen lights at an earlier stage. We should benchmark the cumulative time spent within LightListCallback::pushLightState before and after this PR.
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 aaf7b423d6
adds a replacement for osg::NodeCallback (#3144)
* nodecallback.hpp

* lightmanager.hpp

* lightmanager.cpp

* lightmanager.hpp

* nodecallback.hpp

* nodecallback.hpp

* [ci skip]

* lightmanager.hpp

* nodecallback.hpp

* nodecallback.hpp

* lightmanager.cpp

* lightmanager.cpp

* nodecallback.hpp

* [ci skip]

* [ci skip]

* controller.cpp

* [ci skip]

* osgacontroller.cpp

* keyframe.hpp

* controller.hpp

* keyframe.hpp

* [ci skip]

* keyframe.hpp

* animation.hpp

* [ci skip]

* weaponanimation.cpp

* nodecallback.hpp
3 years ago
Bo Svensson 8358418555
set the correct program link parameters (#3110)
* shadermanager.hpp setProgramTemplate

* shadermanager.hpp

* shadermanager.cpp setProgramTemplate

* shadervisitor.hpp setProgramTemplate

* shadervisitor.cpp setProgramTemplate

* scenemanager.cpp setProgramTemplate

* scenemanager.hpp setProgramTemplate

* renderingmanager.cpp

* groundcover.cpp setProgramTemplate

* groundcover.hpp

* groundcover.cpp

* shadervisitor.cpp

* util.cpp

* lightmanager.cpp

* scenemanager.cpp

* scenemanager.hpp

* lightmanager.cpp

* lightmanager.cpp

* lightmanager.cpp

* scenemanager.hpp [ci skip]

* water.cpp

* groundcover.cpp

* shadermanager.hpp
3 years ago
Bret Curtis 8d86d90782 remove whitespace 3 years ago
Bo Svensson 179f91276a
lightmanager.cpp (#3121) 3 years ago
glassmancody.info 1e52ca2b64 properly initialize light settings 3 years ago
jvoisin 7f4f2c042e Use sizeof(GLfloat) instead of sizeof(GL_FLOAT)
GL_FLOAT is an enum, with the value 0x1406, while GLFloat is the actual type.
Source: https://www.khronos.org/opengl/wiki/OpenGL_Type
4 years ago
elsid d4f28ac979
Avoid resetting buffer object when configuring light buffer layout
Otherwise this casues RaceSelectionPreview to have no light until first change.
4 years ago
Andrei Kortunov 11c57978b6 Fix crashes on exit in the LightManager (bug #6044) 4 years ago
Andrei Kortunov c54ef55ebb Revert "Replace raw pointer by observer_ptr to avoid dangling pointer dereferencing"
This reverts commit 5373cf1cd5.
4 years ago
elsid d520b440aa
Copy LightBuffer data into a new object when changing layout
Before this change LightBuffer copy constructor copied only mData pointer into
a new object. Then memcpy was applied to an overlapping source and destination
that is UB.

Replace configureLayout function by a special constructor. That copies all
mData values and a pointer to a buffer object into a newly allocated object.
4 years ago
elsid 5373cf1cd5
Replace raw pointer by observer_ptr to avoid dangling pointer dereferencing
When game exit is requests when initial loading screen is active LightManager
can be destructed in the main thread before LightManagerStateAttribute::apply
is completed by different thread. Given that it uses raw pointer at some point
it becomes dangling because object is destructed this leads to UB and eventual
SIGSEGV.
4 years ago
glassmancody.info 9f314d1d6f Fix ToggleBorders 4 years ago
Bret Curtis 50d6cd2a34
Merge pull request #3070 from akortunov/coverity
Fix an another portion of Coverity warnings
4 years ago
Andrei Kortunov 7d5c5f8a24 Do not assign negative values to unsigned variables 4 years ago
Andrei Kortunov 987b231fdd Fix an another portion of Coverity warnings 4 years ago
psi29a d0883f9a0d Merge branch 'light_settings_tweak' into 'master'
Lighting patch

Closes #5957 and #5959

See merge request OpenMW/openmw!752
4 years ago
glassmancody.info 16856d45c5 Lighting Patch
Fixes build errors with older OSG builds and some issues with 'shared' layout.
Bring back ambient in inventory through lightmodel instead of sun ambient, mirrors scene ambient/sunlight relationship.
Forces shaders when certain lighting methods are enabled and finalize settings.
Correctly override sun for localmap.
4 years ago
Andrei Kortunov 0c7ddd3938 Remove redundant qualifiers 4 years ago
Andrei Kortunov bce6effe95 Fix uninitialized variables in the LightManager 4 years ago