1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-01-15 22:19:54 +00:00
Commit graph

201 commits

Author SHA1 Message Date
scrawl
6b48acaf0e Don't optimize TriShapes with controllers (Fixes #3143) 2016-02-01 21:01:17 +01:00
scrawl
daa94cc50e Fix cppcheck warnings 2016-01-03 20:19:38 +01:00
scrawl
723c392a73 NifLoader: fall back to the first UV set when encountering invalid UV set references 2015-12-17 04:05:39 +01:00
scrawl
0731595c2b Wrap a Texture2D in a ref_ptr 2015-12-17 03:38:38 +01:00
scrawl
31c3324705 Don't assume the emitter node is a Group (Fixes #3082)
This would be a correct assumption by default, but is no longer true when the NifLoader::optimize() function optimizes the graph.
2015-12-17 03:38:26 +01:00
scrawl
64424e7262 Move keyframe loading out of SceneManager to new KeyframeManager 2015-12-13 15:31:07 +01:00
scrawl
e3d3380c8c Remove return value for in-place toLowerStr 2015-12-07 22:43:08 +01:00
scrawl
1d5af3c9c8 Remove unneeded cast 2015-12-06 15:44:27 +01:00
scrawl
e39f49a88f OSG extensions namespace fixes 2015-12-06 15:27:43 +01:00
scrawl
a29aef14f1 Eliminate a dynamic_cast in ParticleSystemController 2015-12-02 14:59:32 +01:00
scrawl
6cf2c35235 Don't rely on the _particles vector implementation details
This will allow compiling OpenMW with an osgParticle optimization to be pushed to OpenMW/osg.
2015-12-02 14:59:32 +01:00
scrawl
c9d710f334 Use a typedef to avoid conditional compiling 2015-12-01 16:18:19 +01:00
Alexander "Ace" Olofsson
cfcbd20d99 Let's put it as a MSVC-only fix for now 2015-12-01 04:19:30 +01:00
Alexander "Ace" Olofsson
e42f4999bd Quick fix for building on MSVC 2015-12-01 04:06:34 +01:00
scrawl
e5ec4fe042 Add const specifier 2015-11-30 21:02:26 +01:00
scrawl
695fcf41c4 Optimize ValueInterpolator / KeyframeController
Cache the current position in the animation track and attempt to reuse it in the next frame.

Decent speed up for the Update phase, about 0.3 ms faster in Balmora.
2015-11-30 20:53:47 +01:00
scrawl
ac366f1603 Fix the rig bounds being updated twice per frame
Unlike what I expected, the osgUtil::UpdateVisitor is set to traverse all children (not only active children). The FrameSwitch was thus traversing both RigGeometries part of the double-buffering scheme, rather than only the one active in the current frame.
2015-11-30 05:42:31 +01:00
scrawl
38510a56c2 GeomMorpherController: do not dirty the MorphGeometry unless necessary 2015-11-22 21:24:00 +01:00
scrawl
0d49c7fa51 GeomMorpherController: fix double update of MorphGeometry 2015-11-22 21:23:46 +01:00
scrawl
28b20428b9 Remove dynamic_cast in GeomMorpherController 2015-11-22 20:33:22 +01:00
scrawl
fc7456e0a1 Explicitely opt for float matrices in performance critical places 2015-11-22 19:54:27 +01:00
scrawl
36e91617c9 Revert "NifOsg::Emitter: ignore psToWorld scale"
This reverts commit 7c16630874.

Fixes #3022
2015-11-19 22:09:32 +01:00
scrawl
9b96fcc224 Set the particle scaleReferenceFrame to local space 2015-11-19 15:49:42 +01:00
scrawl
21e25f4756 Use the traversalNumber as frame number 2015-11-16 20:03:45 +01:00
scrawl
7c16630874 NifOsg::Emitter: ignore psToWorld scale
Seems wrong to me, but MW appears to do it that way. Without this fix, the light_de_candle_08_64 from http://www.nexusmods.com/morrowind/mods/41654/ has flame particles in the wrong spot.
2015-11-13 00:23:00 +01:00
scrawl
0965a9059d Handle NiLODNode using osg::LOD (Fixes #3008) 2015-11-12 19:52:36 +01:00
scrawl
1edcb219a7 Leak fix 2015-11-11 16:27:17 +01:00
scrawl
fc93dc6195 Remove a stray method declaration 2015-11-11 01:32:31 +01:00
scrawl
0409e5a043 Use OSG_VERSION_GREATER_EQUAL / LESS_THAN rather than MIN_VERSION_REQUIRED (cosmetic change) 2015-11-10 18:28:58 +01:00
scrawl
f1ac408f35 Place Drawables directly in the scene graph when built with OSG 3.4
OSG 3.4 adds the ability to place Drawables directly in the scene graph, without a Geode decorating them. Leveraging this should give a small performance boost, because the redundant Geodes increase culling overhead.

There is still an oustanding issue with the RemoveDrawableVisitor no longer working correctly, because Drawables can have multiple parents.
2015-11-10 18:23:42 +01:00
scrawl
bd8332d2b0 Remove default copyop argument for nodecallback copy constructors
Works around a compiler warning with OSG 3.4:

warning: base class 'class osg::Callback' should be explicitly initialized in the copy constructor [-Wextra]

With no default argument for osg::CopyOp&, the compiler no longer sees the function as a real copy constructor and stops warning about the missing virtual initializations.

We don't care about this warning because there is nothing interesting to initialize in the osg::NodeCallback base anyway.

A proper fix for the warning would require to inserting OSG_VERSION conditional compiling all over the place, that is as long as we are still supporting OSG 3.2.
2015-11-09 18:57:17 +01:00
scrawl
64abdbabe3 Small refactor of controllers handling, print warning messages for unhandled controllers 2015-11-09 17:42:35 +01:00
scrawl
35f5be680b Support for NiVisController on trishape nodes 2015-11-09 17:42:35 +01:00
scrawl
2ee6b41887 Handle NiAlphaProperty on a drawable basis
Removes the RenderBin nesting complication. Also results in leaner StateSets, so the cull phase should be a bit faster.
2015-10-19 15:46:53 +02:00
scrawl
8e69c80bf6 Add framenumber checks in various cull callbacks, so we don't update more than once per frame when multiple cameras are used 2015-09-26 01:21:33 +02:00
scrawl
76fb68a9c0 Handle particle systems that don't have emitters
Fixes a crash in the Magic Diversity mod.
2015-09-07 22:07:09 +02:00
scrawl
16b8ef3164 Don't use a shared Material in MaterialColorController 2015-07-31 00:01:55 +02:00
scrawl
de479e35c8 Fix AlphaController affecting all instances of the StateSet 2015-07-30 23:51:37 +02:00
Arthur Moore
2d93a6f6cb Be more verbose when dealing with unhandled nif texture properties 2015-07-28 18:46:11 -04:00
scrawl
ac1f64b559 Fix StencilProperty front face mixup (Fixes #2802) 2015-07-28 03:20:18 +02:00
scrawl
24ae1d5ace Fix some issues found by coverity 2015-07-11 03:34:08 +02:00
scrawl
bf9c62fa42 Fix for some coverity scan defects 2015-07-02 20:46:34 +02:00
scrawl
7a5f220ac5 GlowTexture keeps the alpha channel from the previous texture stage 2015-06-19 17:43:13 +02:00
scrawl
39539603bf Re-enable a warning message 2015-06-18 03:03:30 +02:00
scrawl
a7c5beb7c5 Remove redundant allocations for NIF meshes 2015-06-18 01:26:45 +02:00
scrawl
81a4a6da6b Make better use of the available texture units (Bug #2702)
Nvidia drivers only support a maximum of 4 fixed function texture units. To resolve this problem, bind texture units in order instead of binding to the NiTexturingProperty::TextureType unit.
2015-06-17 20:43:39 +02:00
scrawl
934166a853 Ignore the alpha value for particle materials (Bug #2699) 2015-06-17 18:04:33 +02:00
scrawl
d7a4a9fd66 Create NIF root nodes as Group instead of Transform when possible 2015-06-15 15:25:45 +02:00
scrawl
b79ab1a3b8 Fix InverseWorldMatrix bug introduced by last commit 2015-06-15 02:22:52 +02:00
scrawl
ec25f1da95 Fix ParticleSystem bug introduced by last commit 2015-06-15 02:17:57 +02:00
scrawl
ad46ff7a98 Remove redundant Transform nodes for TriShapes/ParticleSystems with an identity transform 2015-06-15 02:06:04 +02:00
scrawl
ab597f672e State the filename in NIF loader warning messages 2015-06-15 01:49:46 +02:00
scrawl
6a788c3462 Minor cleanup 2015-06-15 01:29:32 +02:00
scrawl
a5b72a358b Prune empty nodes in RemoveDrawableVisitor
Gets rid of 28 useless transform nodes in base_anim.1st.nif.
2015-06-14 23:56:35 +02:00
scrawl
9e049894e8 Reduce the number of StateSets created for NIF scene graphs
The Material state is now set on the NiTriShape's node rather than the Geode, thus merged with other state like NiTexturingProperties, etc that are typically attached to the NiTriShape.

Effectively cuts in half the number of StatSets for a NIF file, resulting in big speedup (~10%) in the Cull and Draw phases.
2015-06-14 21:22:44 +02:00
scrawl
8d6620b074 Assign an initial bounding box to particle systems 2015-06-11 02:37:49 +02:00
scrawl
b5099324d1 Enable ParticleSystem's FreezeOnCull, big speed-up in Vivec 2015-06-10 20:35:59 +02:00
scrawl
93ee11c5e7 Fix particlesystem nested RenderBin issue (Bug #2631) 2015-06-08 21:21:09 +02:00
scrawl
347c9b57b8 Copy constructor signature fix 2015-06-08 01:59:42 +02:00
scrawl
5edf457ab7 Build fix 2015-06-08 01:13:23 +02:00
scrawl
0a411cbd7c Enable particle lighting 2015-06-07 04:41:55 +02:00
scrawl
d8d43f94b9 Fix a typo 2015-06-05 02:06:13 +02:00
scrawl
01944c33f5 Basic water rendering 2015-06-02 16:35:35 +02:00
scrawl
0f8f19958a NifLoader: Fix empty StateSets being created in some cases 2015-05-30 04:26:00 +02:00
scrawl
261ed1f4e5 Revert "Enable culling for particle emitters & programs"
This reverts commit 8b206e0aed.
2015-05-29 20:31:26 +02:00
scrawl
3dcb167066 Map rendering 2015-05-26 16:40:44 +02:00
scrawl
da24e298ee Fix -Wreorder warnings 2015-05-23 22:44:00 +02:00
scrawl
604580d75d Move toMatrix to Nif::Node 2015-05-07 21:17:15 +02:00
scrawl
63b69db617 Port skeleton based bounding boxes to the new skinning system
Not sure if going to keep this, there's a noticable performance impact.
2015-04-27 15:41:34 +02:00
scrawl
372a54bbc7 Dead code removal 2015-04-25 01:28:01 +02:00
scrawl
09742d5b95 Animation playback works, no movement accumulation yet 2015-04-23 20:41:31 +02:00
scrawl
cd7808fc11 Cleanup in preparation for animation port
Scrapped previous idea for multiple animation sources, better approach incoming.
2015-04-22 23:16:08 +02:00
scrawl
148c041a43 Nif loader cleanup - forcing a skeleton is no longer needed 2015-04-22 19:16:49 +02:00
scrawl
1a19cd3607 Some cleanup 2015-04-22 19:08:56 +02:00
scrawl
28643660d3 Change triangle indices to unsigned 2015-04-21 20:56:16 +02:00
scrawl
10644544ab Dead code removal 2015-04-21 20:31:20 +02:00
scrawl
eaa4316ff8 Move skinning code to SceneUtil 2015-04-21 20:30:48 +02:00
scrawl
9246a668b9 Skeleton update fix 2015-04-21 20:22:32 +02:00
scrawl
bd88758962 Use the new skinning system in OpenMW 2015-04-21 18:54:03 +02:00
scrawl
111e3eb6db Slightly improve bounding box for skinned meshes 2015-04-21 18:29:28 +02:00
scrawl
4ea6d4aa01 Rewrite of skinning code
Goals:
- get rid of the mesh pre-transform (this requires supporting different bind matrices for each mesh)
- bounding box should be relative to the bone the mesh is attached to, ideally we can then get rid of the expensive skeleton-based bounding boxes
- update bone matrices in CullCallback instead of UpdateCallback

Works OK, though the bounding boxes are not correct yet.
2015-04-21 16:02:40 +02:00
scrawl
167ae600c5 Implement gravity decay (previously unknown float) 2015-04-20 00:37:17 +02:00
scrawl
edc5cad79e Port Animation::addEffect 2015-04-19 01:57:52 +02:00
scrawl
c334a76a6f Fix skinning bug 2015-04-15 22:38:43 +02:00
scrawl
f7da979669 Add FrameSwitch (geometry "double buffering") for efficient updates of RigGeometry & MorphGeometry 2015-04-14 18:56:11 +02:00
scrawl
c516e897ee Move Controller base classes to SceneUtil, add visitor to assign ControllerSources 2015-04-14 17:51:46 +02:00
scrawl
de2c85e0f8 Port nifloader to the more efficient StateSetController 2015-04-14 16:41:06 +02:00
scrawl
a0b43f426e Avoid setting DYNAMIC DataVariance on StateSets 2015-04-11 23:01:37 +02:00
scrawl
591a35b8d7 *very* early version of the LightManager 2015-04-10 23:16:17 +02:00
scrawl
433e29f297 MorphGeometry optimizations: static bounding box and vertices updated during cull traversal 2015-04-10 14:35:37 +02:00
scrawl
8b206e0aed Enable culling for particle emitters & programs
Big speedup, though might cause timing inconsistencies that we should fix at some point.
2015-04-09 16:54:25 +02:00
scrawl
0b77ae43a4 Minor optimization for particle emitters 2015-04-09 16:51:57 +02:00
scrawl
74c56556cc More fixes for scaled particle systems 2015-04-05 14:10:31 +02:00
scrawl
1eafecd30c Add magic factor as in vanilla MW to gravity affector (Bug #2147) 2015-04-05 00:03:05 +02:00
scrawl
304d7e544f Optimize RigGeometry to update skinning in CullCallback 2015-04-04 19:19:01 +02:00
scrawl
e5e1013c51 TextKeys attached to root node as user data, add .kf loading to scenemanager 2015-04-02 17:34:44 +02:00
scrawl
31adaf2495 Use simulationTime instead of referenceTime 2015-04-02 17:32:52 +02:00
scrawl
12f27123f2 Billboard scaling fix and culling bug fix 2015-03-30 17:11:27 +02:00
scrawl
9975ec1678 Missing clone function 2015-03-29 19:39:22 +02:00
scrawl
6183926732 Particle fix 2015-03-28 22:21:16 +01:00