Shaders, if deemed necessary, get attached to the node mentioned by the
top of the requirements stack. Previously an empty stack was incorrectly
assumed to mean no shaders were required, but we found out that was
wrong. We need to put shaders *somewhere*, and the root of the subgraph
we're modifying should be the best place.
With it on, which was always the case before this setting was added,
vanilla content and poorly-made mods will look acceptable, but well-made
mods will have alpha-tested meshes appear to grow and potentially gain a
weird outline as they get further away.
With it off, which replicates the 0.46 behaviour, well-made mods will
look really good, but vanilla content and poorly-made mods will have
alpha-tested meshes shrink as they get further away.
It's been bugging me that this was forced on since 0.47 released, and
I'd hoped to figure out a solution for automatic detection at some point
before 0.48 branched off, but I didn't, so now this is what we're
getting to have Tamriel Rebuilt look right.
Shaders: Hot reload, togglable by lua debug command
See merge request OpenMW/openmw!2238
(cherry picked from commit 4078f19c74)
8d194a16 Shaders: rudimentary hot reloader on shaders
4e7c1c5b Added break when the operation failed
6b38d622 Added lua bindings to toggle hot reload (disabled by default) or to trigger a reload
31d41252 forgot memory include
f78fa989 fixed include, cleaned comments and indentation
fc8838c7 Renamed lua binding, and use action to avoid concurrency issue
aa51d6de Missing chrono include ?
68d06989 Fixed cyclical included check
b6d7293a Removed weird lines that I thought were necessary to please the compiler
9a475b0c fixed blank lines and missing breaks
cdd95f78 replaced empty function body by default
a1c8dc9d C++17 compat ?
7b78bf4b Fix files with different defines weren't added to the hot reload manager
cc9d4364 includes now work when the same shader has different defines
15751c57 Lua debug api doc
3ab0a991 Hot reload done only once every 200 ms, no point in beeing faster
df69fc76 Post processing shaders now use the same lua commands, no more launcher option...
c71f3508 changed overview.rst of post processing
603b30e1 Added some variable names to make it clearer what their function was
baadc06e Merge branch 'master' into 'SHADER_HOT_RELOAD'
decfbc53 Fix threading issues
b14cc673 adds missing decleration
16a4b571 adds missing include
166717d6 Makes sure threads are only stopped once ,and that they will be re-started
25c1f0ca Renamed variable to fix case issue
Do not copy data when it is not needed
See merge request OpenMW/openmw!2277
(cherry picked from commit f42ab6a3e7)
e3ad30a5 Do not copy data when it is not needed
Multiview shaders.
Refactor Frustum management
Rewrite shared shadow map
cull mask should respect stereo
Stereo savegame screencap
LocalMap refactoring
use the vertex buffer hint instead of the display list patch to enable/disable display lists
Character preview fixes
* Adds comments explaining the less-than-obvious aspects.
* Adds comments explaining what to do when adding new stuff.
* Some fixes caused by those comments not historically existing.
* Add a TODO comment to something which may catch fire in the future.
This PR aims to solve `uniform block LightBufferBinding has no binding` messages @glassmancody has reportedly encountered since PR #3110 due to an apparent bug in OSG. While we do have to add a workaround here that adds a bit of clunkiness, #3216 should allow us to clean up these interactions a bit in the future.
With this PR we test out osg's shader define system for a somewhat harmless feature. As we can see, our code becomes more concise and efficient in this case. Most importantly, we no longer create unneeded vertex shader objects.
* avoids creating empty statesets on drawables
Currently, we attempt to skip creating state on drawable nodes when this state matches the default state. This attempt is incomplete because we still create an avoidable empty stateset in the default case.
* renderingmanager.cpp
* nifloader.cpp
* nifloader.cpp
* shadervisitor.cpp