Commit Graph

599 Commits (master)

Author SHA1 Message Date
Petr Mikheev 788a4d32aa Handle DoubleSided and TreeAnim flags in BSLightingShaderProperty. 2 years ago
Petr Mikheev fd90a8c9b4 Hide Nif nodes with name "EditorMarker". 2 years ago
Evil Eye 9728024978 Replace compare with more idiomatic methods 2 years ago
Cody Glassman 6a64f352a4 fix shader compilation 2 years ago
Cody Glassman ac4787aeec shade refactor 2 years ago
Alexei Kotov e15434be94 Disable falloff in BSEffectShader for now 2 years ago
Alexei Kotov 8d3c5c0f05 Unify texture wrapping setup 2 years ago
Alexei Kotov 2de81738c1 Implement the basics of BSEffectShaderProperty 2 years ago
Alexei Kotov 9deed5c03e Propagate dynamic effects to node's immediate children (bug #6550) 2 years ago
Alexei Kotov 99aa90f90c Rewrite NiVertexColorProperty 2 years ago
elsid 843753da14
Remove unused includes 2 years ago
jvoisin 3cbf1dc042 First pass with include-what-you-use 2 years ago
elsid bb8b5e2108
Add META_Node to clang-format StatementMacros 2 years ago
elsid 0688b6de40
Separate record list reading from its state
To make it possible to set record list state independently from reading NIF
file.
2 years ago
elsid c338c1e5d3
Add Nif::FileView as read only interface for Nif::NIFFile
To make sure interface is scoped to what users require.
2 years ago
elsid f2fb3d6de8
Separate NIFFileReader from NIFFile
NIFFile might not always be created from a file or stream containing NIF data.
Basically there are 2 different responsibilities for this class:
1. Read NIF file
2. Provide input for nifosg and bulletnifloader.

Remove no longer needed NIFFileMock since the state of NIFFfile can be
initialized independently from reading NIF file.
2 years ago
elsid b39ccbeeef
Remove NIFFile::warn and NIFFile::fail functions
These functions use NIFFile only as context, they are not really a part of
either reading nor state invariant. And they only confuse reader because it's
not immediatelly obvious that no code is executed after fail.
2 years ago
clang-format-bot ddb0522bbf
Apply clang-format to code base 2 years ago
elsid 63b51ead84
Use nv_default shader prefix for unhandled types 2 years ago
Alexei Kotov 7aee22be91 Further controller updates
Correct NiMaterialColorController base class
Load everything in NiGeomMorpherController
Make a guess at how weighted interpolators might be supposed to work like
2 years ago
Alexei Kotov 482de23893 Streamline NiInterpController handling 2 years ago
Project579 a13709c510 Replace implicit convertions from std::filesystem::path to std::string with correctly converting functions. 2 years ago
Project579 e5c417c968 Make sure all paths are passed as std::filesystem::path instead of std::string where possible. 2 years ago
psi29a 5ee4ce1232 Merge branch 'nipixeldata' into 'master'
Support more NiPixelData formats (feature #6945)

Closes #6945

See merge request OpenMW/openmw!2290
2 years ago
Alexei Kotov edbd05a3f7 Support more NiPixelData formats (feature #6945) 2 years ago
elsid cc8c7002ea
Cleanup components includes 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
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
Alexei Kotov 014de72644 Use NiParticleSystemController's color for the initial particle color 2 years ago
Andrei Kortunov c36c28e8f9 Move NIF implementation to cpp files 2 years ago
Project579 02ef9c953e MSVC: Fix all warnings at level 4, upgrade Qt5 to 5.15.2 to also reduce warnings, disabled 5054 warnings due to Qt5's use of deprecated operators in C++20 . 2 years ago
Andrei Kortunov fe785ea788 Don't cast away const when we can avoid it 3 years ago
elsid 2d6e048d88
Fix C4589 msvc warning
Constructor of abstract class 'SceneUtil::KeyframeController' ignores initializer for virtual base class 'osg::Object'
3 years ago
glassmancody.info b09411d396 allow soft particles on meshes and add extra data extensions 3 years ago
Alexei Kotov e673f9fa76 Clean up NIF flags 3 years ago
Alexei Kotov dd758f8fd1 Always update the current matrix in KeyframeController 3 years ago
Alexei Kotov 21f6e2e419 Encapsulate NIF transformations, round 2 (task #6709) 3 years ago
cody glassman 72fdf40e06 better support for particle arrays when spawning at node positions 3 years ago
elsid 4509b05bc8
Use std::make_shared instead of new
make_shared allocates single storage for ref counter and the object.
std::shared_ptr<T>(new T) allocates 2 storages.
3 years ago
psi29a 1ac7eaa6b0 Merge branch 'NiFltAnimationNode' into 'master'
Add NiFltAnimationNode support

Closes #6684

See merge request OpenMW/openmw!1732
3 years ago
Wolfgang Lieff 373776170d refactor for NiFltAnimationNode 3 years ago
Bret Curtis af41560c3f reverse the reverse flag check; set duration to 0.2f which matches openmw to morrowind speed which is measured in 1/5 seconds 3 years ago
Bret Curtis 0db5415976 refactor to use mInternal, support Flag_Reverse and updated changelog/authors.md 3 years ago
Wolfgang Lieff ead73fce31 initial NiFltAnimationNode support 3 years ago
Alexei Dobrohotov eafa66ff40 Don't consider NiCollisionSwitch unoptimizeable 3 years ago
Alexei Dobrohotov c28f997c87 Make NiPlanarCollider finite-size 3 years ago
psi29a 1542a0392c Merge branch 'gloss' into 'master'
Gloss-mapping

Closes #6541

See merge request OpenMW/openmw!1552
3 years ago
Alexei Dobrohotov 54df5031b7 Add XYZ rotation axis order support 3 years ago
Alexei Dobrohotov dd473d06df Implement gloss-mapping (feature #6541) 3 years ago
psi29a b011809056 Merge branch 'master' into 'sort_me_baby_one_more_time'
# Conflicts:
#   components/nif/niffile.cpp
3 years ago
elsid 2a87cf1720
Replace unordered_map by switch statement
Add handling for missing Nif::BSLightingShaderType::ShaderType_SkinTint. Use
string_view instead of string to avoid lifetime issues for returning value.
osg::Object::setUserValue will anyway copy string.
3 years ago
elsid e1fe501013
Use proper type for Record::recType 3 years ago
glassmancody.info 712107de2d nisortadjust support 3 years ago
psi29a 9183fa897e Merge branch 'particle_vertex_palooza' into 'master'
Support vertex emitters (#6592)

Closes #6592

See merge request OpenMW/openmw!1638
3 years ago
glassmancody.info a05e029aa0 search for stencil enabled flag correctly 3 years ago
glassmancody.info 88f02913d5 use vertex emitters on array particle controllers when appropriate 3 years ago
glassmancody.info 8c2c322d92 add stencil to water RTTs, reword some comments 3 years ago
glassmancody.info bbc9c53423 support morrowind stenciling 3 years ago
Alexei Dobrohotov 4521d3987c Fix out of bounds UV set handling 3 years ago
elsid 3f14011087
Support multiple parents for NIF nodes
Choose a parent base on which node is used to iterate over children nodes.
This leads to duplicate handing of child nodes. A node will be handled so many
times how many parents it has.

For example:
p1 p2
 \ /
  c

Will be handled as:
p1 p2
|  |
c  c

If c has children they will be handled X times c is handled.
3 years ago
psi29a d8d7a3b372 Merge branch 'softparticles_patch' into 'master'
Shadervisitor adjustments and Mac OS fix for soft particles

See merge request OpenMW/openmw!1380
3 years ago
Alexei Dobrohotov a64057fb36 Some NIF cleanup
Clean up keyframe controller construction
Make LOD and switch node generation static
Clarify decal map implementation
3 years ago
elsid a665a38aca
Use MurmurHash3_x64_128 for file hash 3 years ago
glassmancody.info 9389cfaa42 mac os driver workaround and shadervisitor fixes 3 years ago
Cody Glassman d85f772269 Depth refactor 3 years ago
Alexei Dobrohotov 50b90a594d Loading and basic handling of BSLightingShaderProperty 3 years ago
psi29a ba0aae06ca Merge branch 'morphyslaw' into 'master'
Morph geometry more like NifSkope (bug #6416)

Closes #6416

See merge request OpenMW/openmw!1389
3 years ago
psi29a 41bd20e358 Merge branch 'bullet_shape_hash' into 'master'
Store BulletShape source file name and content hash

See merge request OpenMW/openmw!1379
3 years ago
Alexei Dobrohotov c7edca559b Morph geometry more like NifSkope (bug #6416) 3 years ago
elsid d7041613ef
Store BulletShape source file name and content hash 3 years ago
Alexei Dobrohotov 9880c43c86 Add specular strength shader parameter 3 years ago
psi29a 5836d0225f Merge branch 'leave_butter_to_soften' into 'master'
Soft Particles (#6128)

See merge request OpenMW/openmw!980
3 years ago
Alexei Dobrohotov 7a0c13fcf8 Make better use of std::clamp 3 years ago
Bo Svensson 356e9d7cf0
refactors osg::Callback virtual inheritance (#3200)
With this PR we refactor `SceneUtil::KeyframeController` not to require `virtual osg::Callback` inheritance. I suppose such `virtual` overhead is not justified here because it negatively impacts many other classes we derive from `osg::Callback`.
3 years ago
glassmancody.info 8c3b00164e soft particles 3 years ago
Bo Svensson 87d52dc1fd
fixes coverity-ci warning 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 2568f119a4
reapplies PR without npe (#3137)
* 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
3 years ago
Andrei Kortunov e109d86489 Revert "avoids creating empty statesets on drawables (#3132)"
This reverts commit 957c25a491.
3 years ago
Bo Svensson 957c25a491
avoids creating empty statesets on drawables (#3132)
* 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
3 years ago
Alexei Dobrohotov 0922d0b105 Clean up text key extraction 3 years ago
Alexei Dobrohotov 956edca524 Don't re-enable specularity w/ material controller for MW models 3 years ago
Alexei Dobrohotov 1fc7cb8191 Don't use FreezeOnCull for any particle system (#4744) 3 years ago
glassmancody.info 09e03fde2e refactor and fix wobbly shores 3 years ago
glassmancody.info 70fac33940 initial reverse-z depth implementation 3 years ago
Alexei Dobrohotov 11694ba87f Correct dark map and detail map alpha handling
Comment texenv usage in NIF loader
3 years ago
AnyOldName3 e42b3bf960 Adapt destination alpha factor for AMD
As discussed in the comment, it's unclear to me whether this is a driver
bug or mandatory behaviour only AMD implement.

Some more context is here:
https://gitlab.com/OpenMW/openmw/-/issues/6119#note_618245903
4 years ago
glassmancody.info 4bbbbb00f6 use particle data for particle system quota 4 years ago
Dobrohotov Alexei 19f0b80983 Improve null root handling 4 years ago
Chris Djali f0cef87cd8
Merge pull request #3069 from akortunov/msvc_warnings
Rework warnings settings
4 years ago
Dobrohotov Alexei 971ba81ed2 Use higher level transformations in UVController 4 years ago
Dobrohotov Alexei 24f4bf9c28 Fix NiUVController UV offset calculations (bug #5995) 4 years ago
Andrei Kortunov 6d351b2bdd Fix MSVC 4706 warnings 4 years ago
Andrei Kortunov 2d869ca9ff Fix node masks signed/unsigned mismatch 4 years ago
Andrei Kortunov 7d5c5f8a24 Do not assign negative values to unsigned variables 4 years ago
fredzio fda639eb57 Remove unused forward declarations 4 years ago
Alexei Dobrohotov 2fdbe9b3f6 Handle BSShader[PP/No]LightingProperty 4 years ago
Dobrohotov Alexei 952b31ac5c NiZBufferProperty: handle depth test flag (bug #5902) 4 years ago
Alexei Dobrohotov 46ec40fa92 Make sure NIFLoader avoids working further with empty geometry 4 years ago
Alexei Dobrohotov 1e6156e04a Turn all NIF records into structs 4 years ago
Alexei Dobrohotov c0b9823372 Read BSShaderProperty and handle NiGeometry properties 4 years ago
Alexei Dobrohotov 42226533d8 Handle BSLODTriShape
Its levels of detail are currently not handled
4 years ago
Alexei Dobrohotov 8fd45d85ec Unify NiGeometry/NiGeometryData handling 4 years ago
Alexei Dobrohotov 8ca324af0a Handle emissive TexEnv creation in one place 4 years ago
Alexei Dobrohotov 5310dd6807 Clean up particle vertex handling 4 years ago
Alexei Dobrohotov 1c83e4936d Read BSShaderTextureSet and NiColorInterpolator
Accept boolean-based and 4D vector-based NiInterpolators in ValueInterpolator constructor
4 years ago
Alexei Dobrohotov db9c174ca8 Make NIF particle node handling more generic 4 years ago
Andrei Kortunov 8084a336b5 Replace zeroes and nulls by nullptrs 4 years ago
AnyOldName3 86fad60c7d Merge branch 'roots' into 'master'
Handle multiple root nodes (bug #5604)

Closes #5604

See merge request OpenMW/openmw!428
4 years ago
Alexei Dobrohotov 5b6377b061 Handle multiple root nodes (bug #5604) 4 years ago
Nelsson Huotari f78a5d795c Separate keyframes logic to provide basis for osgAnimation integration. 4 years ago
Alexei Dobrohotov 8a6d3d1b4f Minor fixes
Fix extra semicolon
Disable collision avoidance if AI is disabled
4 years ago
Evil Eye 94c89e6d5e check ValueTs 4 years ago
Evil Eye d8897c4509 remove inline and use enable_if_t 4 years ago
Evil Eye d8d4351962 fix MSVC2017 builds 4 years ago
Alexei Dobrohotov a46699fb1e Handle NiGeomMorpherController interpolator list 4 years ago
Alexei Dobrohotov f3f5dcb016 Read a few more NIF types
NiFloatInterpolator, NiPoint3Interpolator, NiTransformInterpolator, NiBoolInterpolator
Update a few existing controller records
Update NiSkinInstance
4 years ago
Alexei Dobrohotov c79f509652 Misc NIF loader improvements
Bullet NIF loader cleanup
Collect all extra records of a node
Remove code duplication in geometry type detection in OSG-side NIF loader
4 years ago
Alexei Dobrohotov 53f91a3aa5
Merge pull request #3018 from akortunov/emplace
Use emplace_back instead of push_back
4 years ago
Alexei Dobrohotov 7e521788e9 Try to fix build 4 years ago
Alexei Dobrohotov 4fc5e22e9e NIF fixes and cleanup
Get rid of NodeIndexHolder
Use unsigned 32-bit type for NIF record index
Fix calculation of the number of UV sets
4 years ago
Alexei Dobrohotov 71056c6014 Clean up palettized NiPixelData loading 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
Alexei Dobrohotov 9f08dc9968 Revert "Merge branch 'skinning' into 'master'"
This reverts merge request !327
4 years ago
Alexei Dobrohotov 6be808e301 RigGeometry: convert some pairs to structs 4 years ago
Alexei Dobrohotov 302d8eed27 Clean up Roll- and FlipController implementation 4 years ago
Alexei Dobrohotov 29ccb09da5 Introduce some extended NIF definitions 4 years ago
AnyOldName3 a338e8c561 Actually set the uvSet value
This got lost when uvSet was made into a local variable.
4 years ago
AnyOldName3 b2cb98d30e Fix NiFlipController
NiFlipControllers *always* affect the base texture, even if no base
texture is bound. When no base texture is bound, they default to UV set
zero and to having wrapped UV coordinates, instead of using the settings
for the disabled base texture.
4 years ago
Bret Curtis 05a19f4f93
Merge pull request #2984 from Capostrophic/optimizer
Avoid optimizing animated shapes once again (regression #5565)
4 years ago
Capostrophic aa131262ea Implement quadratic interpolation for scalars and vectors 4 years ago
Capostrophic 35de34c019 Don't clamp GeomMorpherController recovered weight value
Seems that Morrowind doesn't do it.
4 years ago
Capostrophic 8c213cbfb1 Avoid optimizing animated shapes once again (regression #5565) 4 years ago
Capostrophic 3d31d21bc2 Don't encapsulate NIF transformation changes
Currently that causes issues
4 years ago
Capostrophic 46825e8a4d Move NIF record index back to a separate user object
This makes sure it's never erroneously optimized out. NodeIndexHolders don't need to be cloned as their record index is never supposed to be changed.
4 years ago
Capostrophic f93655e803 Encapsulate NIF transform changes in NifOsg::MatrixTransform 4 years ago
Capostrophic ad87289d59 Fix NifOsg::MatrixTransform constructor inheritance 4 years ago
Capostrophic a61267f57d Replace NodeUserData with a custom transform node 4 years ago
Capostrophic 4c9cefefdd Get rid of NifOsg::CollisionSwitch 4 years ago
Bret Curtis 0c2fea8254
Merge pull request #2932 from elsid/replace_open_threads
Replace OpenThreads by std types
5 years ago
Frederic Chardon f268bc13f1 Do not set particle lifetime to 0 (#5472) 5 years ago
elsid 40ad87bc4d
Replace OpenThreads by std types 5 years ago
bzzt lost a hitlab login 26ab176389 profiling
Signed-off-by: Bret Curtis <psi29a@gmail.com>
5 years ago
bzzt lost a hitlab login f12879a04c allow statesetupdater as cullcallback = faster + works in paging
Signed-off-by: Bret Curtis <psi29a@gmail.com>
5 years ago
Capostrophic 7aca18f92b Handle NiLines (feature #5445) 5 years ago
Capostrophic 74a74209ac Allow junk (data-less) NiParticleColorModifiers 5 years ago
Capostrophic 7a9403aeed Remove unnecessary casts 5 years ago