Commit Graph

599 Commits (master)

Author SHA1 Message Date
Andrei Kortunov 7e2bda459b Check if there are textures in FlipController to avoid division by zero (bug #4614) 6 years ago
Andrei Kortunov 1452684d9e Use new logging system for components 6 years ago
Andrei Kortunov 7d6e3673e0 Implement advanced logging system (feature #4581) 6 years ago
Capostrophic 85208eff7f Revert untextured shapes rendering changes 6 years ago
Capostrophic bda23c6ad6 Fix nodemask 6 years ago
Capostrophic a1e3b2e586 Don't render NiTriShapes without NiTexturingProperty (bug #4483) 6 years ago
Andrei Kortunov 469bb29621 Do not try to handle shape controllers as node controllers 7 years ago
Andrei Kortunov 7e0df01c83 Do not optimize animated shapes (bug #3950) 7 years ago
Andrei Kortunov 2fada94879 Improve MRK NiStringExtraData handling (bug #4419) 7 years ago
tri4ng1e d4d1703bcf
Some PVS-Studio and cppcheck fixes
cppcheck:
[apps/esmtool/record.cpp:697]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[apps/esmtool/record.cpp:1126]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[apps/esmtool/record.cpp:1138]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[apps/niftest/niftest.cpp:36]: (performance) Function parameter 'filename' should be passed by reference.
[apps/niftest/niftest.cpp:41]: (performance) Function parameter 'filename' should be passed by reference.
[apps/opencs/model/prefs/boolsetting.cpp:25]: (warning) Possible leak in public function. The pointer 'mWidget' is not deallocated before it is allocated.
[apps/opencs/model/prefs/shortcuteventhandler.cpp:52]: (warning) Return value of std::remove() ignored. Elements remain in container.
[apps/openmw/mwstate/quicksavemanager.cpp:5]: (performance) Variable 'mSaveName' is assigned in constructor body. Consider performing initialization in initialization list.

PVS-Studio:
apps/opencs/model/filter/parser.cpp  582  warn  V560 A part of conditional expression is always true: allowPredefined.
apps/opencs/view/world/referencecreator.cpp  67  warn  V547 Expression '!errors.empty()' is always false.
apps/opencs/view/world/referencecreator.cpp  74  warn  V547 Expression '!errors.empty()' is always false.
apps/opencs/view/doc/loader.cpp  170  warn  V560 A part of conditional expression is always true: !completed.
apps/opencs/view/doc/loader.cpp  170  warn  V560 A part of conditional expression is always true: !error.empty().
apps/opencs/model/tools/pathgridcheck.cpp  32  err  V517 The use of 'if (A) {...} else if (A) {...}' pattern was detected. There is a probability of logical error presence. Check lines: 32, 34.
apps/opencs/model/world/refidadapterimp.cpp  1376  err  V547 Expression 'subColIndex < 3' is always true.

apps/openmw/mwgui/widgets.hpp  318  warn  V703 It is odd that the 'mEnableRepeat' field in derived class 'MWScrollBar' overwrites field in base class 'ScrollBar'. Check lines: widgets.hpp:318, MyGUI_ScrollBar.h:179.
apps/openmw/mwgui/widgets.hpp  319  warn  V703 It is odd that the 'mRepeatTriggerTime' field in derived class 'MWScrollBar' overwrites field in base class 'ScrollBar'. Check lines: widgets.hpp:319, MyGUI_ScrollBar.h:180.
apps/openmw/mwgui/widgets.hpp  320  warn  V703 It is odd that the 'mRepeatStepTime' field in derived class 'MWScrollBar' overwrites field in base class 'ScrollBar'. Check lines: widgets.hpp:320, MyGUI_ScrollBar.h:181
apps/openmw/mwmechanics/actors.cpp  1425  warn  V547 Expression '!detected' is always true.
apps/openmw/mwmechanics/character.cpp  2155  err  V547 Expression 'mode == 0' is always true.
apps/openmw/mwmechanics/character.cpp  1192  warn  V592 The expression was enclosed by parentheses twice: ((expression)). One pair of parentheses is unnecessary or misprint is present.
apps/openmw/mwmechanics/character.cpp  521  warn  V560 A part of conditional expression is always true: (idle == mIdleState).
apps/openmw/mwmechanics/pathfinding.cpp  317  err  V547 Expression 'mPath.size() >= 2' is always true.
apps/openmw/mwscript/interpretercontext.cpp  409  warn  V560 A part of conditional expression is always false: rank > 9.
apps/openmw/mwgui/windowbase.cpp  28  warn  V560 A part of conditional expression is always true: !visible.
apps/openmw/mwgui/journalwindow.cpp  561  warn  V547 Expression '!mAllQuests' is always false.
apps/openmw/mwgui/referenceinterface.cpp  18  warn  V571 Recurring check. The '!mPtr.isEmpty()' condition was already verified in line 16.
apps/openmw/mwworld/scene.cpp  463  warn  V547 Expression 'adjustPlayerPos' is always true.
apps/openmw/mwworld/worldimp.cpp  409  err  V766 An item with the same key '"sCompanionShare"' has already been added.
apps/openmw/mwworld/cellstore.cpp  691  warn  V519 The 'state.mWaterLevel' variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 689, 691.
apps/openmw/mwworld/weather.cpp  1125  warn  V519 The 'mResult.mParticleEffect' variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 1123, 1125.
apps/openmw/mwworld/weather.cpp  1137  warn  V519 The 'mResult.mParticleEffect' variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 1135, 1137.

apps/wizard/unshield/unshieldworker.cpp  475  warn  V728 An excessive check can be simplified. The '(A && B) || (!A && !B)' expression is equivalent to the 'bool(A) == bool(B)' expression.
apps/wizard/installationpage.cpp  163  warn  V735 Possibly an incorrect HTML. The "</p" closing tag was encountered, while the "</span" tag was expected.

components/fontloader/fontloader.cpp  427  err  V547 Expression 'i == 1' is always true.
components/nifosg/nifloader.cpp  282  warn  V519 The 'created' variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 278, 282.
components/esm/loadregn.cpp  119  err  V586 The 'clear' function is called twice for deallocation of the same resource. Check lines: 112, 119.
components/esm/cellref.cpp  178  warn  V581 The conditional expressions of the 'if' statements situated alongside each other are identical. Check lines: 175, 178.
components/esmterrain/storage.cpp  235  warn  V560 A part of conditional expression is always true: colStart == 0.
components/esmterrain/storage.cpp  237  warn  V560 A part of conditional expression is always true: rowStart == 0.
7 years ago
scrawl c920f95d1e
Don't incorrectly discard root node transformation (Fixes #4272) 7 years ago
scrawl 03554b2f4b Fix some style issues flagged by cppcheck 7 years ago
scrawl 5d524a6a10 Add custom version of MorphGeometry replacing osgAnimation
Double buffering, custom bounding box and the update in the cull visitor (instead of update) are now all handled internally rather than needing hacks and/or callbacks.
7 years ago
scrawl 209e139aa8 Move double buffering implementation inside RigGeometry
The double buffering is an implementation detail so it should be handled as such, rather than mandating the scene graph to be structured in a certain way.

Override accept(NodeVisitor&) instead of using callbacks.
7 years ago
scrawl 45f7563a55 Revert "Revert "Check for a Geometry node when attaching bodyparts""
Issue with shaders has been fixed with b9931fb71c

This reverts commit a1e3fb7604.
7 years ago
scrawl a1e3fb7604 Revert "Check for a Geometry node when attaching bodyparts"
This reverts commit 3fc8634206.
7 years ago
scrawl 3fc8634206 Check for a Geometry node when attaching bodyparts (Fixes #3957) 7 years ago
scrawl bc82c6a35d Use white color if told to use nonexisting vertexcolors (Fixes #3833) 7 years ago
scrawl 5d2fe5e887 Implement lightmode/vertmode of NiVertexColorProperty 7 years ago
scrawl 40dc1dd6f5 Fix checking a variable before it's assigned (Bug #3950) 8 years ago
Bret Curtis d785344fad purge all instances of <boost/shared_ptr.hpp>, clean up unused headers 8 years ago
Bret Curtis 07f75e1104 replace boost::shared_ptr in extern and components 8 years ago
scrawl 45d9e38616 Fix check for default material 8 years ago
Allofich ff3e307059 Pass parameters by const reference 8 years ago
scrawl 29556a1802 More consistent wording of errors/warnings
A Warning indicates a potential problem in the content file(s) that the user told OpenMW to load. E.g. this might cause an object to not display at all or as intended, however the rest of the game will run fine.

An Error, however, is more likely to be a bug with the engine itself - it means that basic assumptions have been violated and the engine might not run correctly anymore.

The above mostly applies to errors/warnings during game-play; startup issues are handled differently: when a file is completely invalid/corrupted to the point that the engine can not start, that might cause messages that are worded as Error due to the severity of the issue but are not necessarily the engine's fault.

Hopefully, being a little more consistent here will alleviate confusion among users as to when a log message should be reported and to whom.
8 years ago
scrawl 1402e0b872 Don't optimize billboard nodes (Fixes #3774) 8 years ago
scrawl 9b27ec4945 Remove redundant and ambiguous NiNode::makeBone()
Ambiguous because a skeleton can have multiple skinned meshes, with their own bone weights/bind matrix each.
8 years ago
scrawl aba3c471a9 nifloader: fix setting of dataVariance for non-controlled bones and refactor the code 8 years ago
scrawl 4e5a1e6123 nifloader: improve setting of DataVariance 8 years ago
scrawl 6e996bf2a3 Create TriShapes with an identity transform as a Group 8 years ago
scrawl 6e5d9efa93 Remove NifLoader::optimize, to be replaced with something better 8 years ago
scrawl c45013c983 Fix particle systems not being rendered in their first frame 8 years ago
scrawl aa8459b5c7 Revert "Remove redundant allocations for NIF meshes"
This reverts commit a7c5beb7c5.

Conflicts:
	components/nif/data.cpp
	components/nifbullet/bulletnifloader.cpp
	components/nifosg/nifloader.cpp
8 years ago
scrawl 6a37909ee7 Revert "Fix race conditions caused by Array <-> GLBufferObject interactions (Bug #3580)"
This reverts commit 115e563a7a.
8 years ago
scrawl 892d1b162d nifloader: ignore nodes named 'bounding box' (Fixes #3650) 8 years ago
scrawl 4d53ab6c32 nifloader: attempt to remove redundant root node when a Skeleton is added 8 years ago
scrawl 2a42c4781e nifloader: override animflags instead of accumulating them 8 years ago
scrawl 0187f2ce4c nifloader: combine animFlags and particleFlags (Bug #2100) 8 years ago
scrawl bccfd6cef8 nifloader: handle textures with no image that are later assigned in a FlipController
As found in vurt's trees (Bug #2100)
8 years ago
scrawl 33e654f94d Add explicit handling of most commonly used nodes to NodeVisitors to avoid excessive virtual function calls 8 years ago
scrawl f3045331f1 Fix regression in handling of NiZBufferProperty 8 years ago
scrawl 851f61ac82 Always assign osg::Material when a material controller is used 8 years ago
scrawl 9180089a3b Add sharing for more State Attributes, most notably BlendFunc and AlphaFunc, to improve the state tracking in osg::State and reduce the number of GL calls 8 years ago
scrawl 960d4a96c3 Reduce the number of osg::Material state by setting the default state on the graph root 8 years ago
scrawl e399e10607 Add missing lock in shareMaterial 8 years ago
scrawl 115e563a7a Fix race conditions caused by Array <-> GLBufferObject interactions (Bug #3580)
The first part of the fix is to assign VBO/EBO's upon loading the array in the Nif reader. This avoids triggering the 'addVertexBufferObjectIfRequired' code path in osg::Geometry which has the race condition when two threads add the same Array at the same time. Essentially, we want the Arrays to be 'const' when they come out of the Nif reader.

The second part of the fix is to make sure not to create empty arrays in the Nif reader (importantly, not assigning a VBO to the empty array). This empty array would be deleted when the NIFFile is cleaned up, and the detachment of the VBO assigned to it (which is still in use by other arrays) would cause threading issues.

This rare crash bug was first introduced with commit a7c5beb7c5. When using OSG dev version 3.5 the crashes were a little more prevalent, because 'addVertexBufferObjectIfRequired' in osg::Geometry is now used even when VBO's are disabled (as part of the VAO support changes).
8 years ago
scrawl aafff1deb6 Fix memory leak 8 years ago
MiroslavR 99bcf47167 Implement NiSphericalCollider (Closes #3644) 8 years ago
Allofich 6ec37b5cfb Fix shadowing warnings 8 years ago
scrawl cd4b182091 Merge pull request #1051 from Allofich/textures
Use spell effect particle textures
8 years ago
Allofich a8e9f2df67 Cleanup 8 years ago
Allofich be96ff1fd1 Remove redundant parameter 8 years ago
scrawl 8f5347b79b Update comment, osgAnimation::RigGeometry is no longer used 8 years ago
Allofich a033ba3bd2 Override spell textures by NiTexturingProperty 8 years ago
scrawl a5da3a269e Fix shadowing warnings 8 years ago
scrawl 341e3846c0 Use initial particle state to compute the initial bounding box (Fixes #3500) 8 years ago
scrawl 513e1da8a3 Remove unneeded casts 8 years ago
scrawl 33d27a2285 Use ref_ptr 8 years ago
MiroslavR 721fa28c1e Fix assertion failure with NiTextureEffect missing source texture 9 years ago
MiroslavR 9c6739f1b3 Fix doubled particle spawn range 9 years ago
MiroslavR 2a987b6857 Do not skip inactive keyframe controllers (Bug #1942) 9 years ago
scrawl 62018e802b Minor fix to particle system AutoPlay flag handling
The previous commit broke some magic effects (e.g. shield). The controller's emit start/stop times should control the emitter, while the absence of the ParticleSystem's autoplay flag should freeze the whole particle system if no valid controller source gets assigned. This revised version works for both the Shield effect and the "dagoth ur death sparkles" effect.
9 years ago
scrawl 7202072196 Freeze particle systems on construction if the AutoPlay flag is missing 9 years ago
scrawl 0c08f705c5 Make the ParticleSystemController freeze the particle system instead of the emitter (Bug #3390) 9 years ago
scrawl e30bb31a79 Handle the particle node's AutoPlay flag (Bug #3390) 9 years ago
scrawl bc36269617 When a controller is present more than once in the same keyframe file, pick the first one (Fixes #2719) 9 years ago
scrawl aae43dbff5 Set the MorphGeometry vertex buffer object usage to GL_DYNAMIC_DRAW 9 years ago
scrawl 84b8da7a09 Share the osg::Material on drawables
Reduces the number of GL calls / frame by ~4%.
9 years ago
scrawl abcfe9bcee Don't add empty text key objects 9 years ago
scrawl 02d23564dc Include cleanup 9 years ago
scrawl f898bf493f Don't use Geodes 9 years ago
scrawl 82b792f808 Eliminate dynamic_cast in BillboardCallback 9 years ago
scrawl dd2fbfc0a2 Fix windows build 9 years ago
scrawl 6e7c6fdd7e Implement NiTexturingProperty::DecalTexture 9 years ago
scrawl 30d06bfe0e Add comment 9 years ago
scrawl 64636bd85a Improve error reporting 9 years ago
scrawl cdccf03228 Fix mismatched delete 9 years ago
scrawl 5f4ace1bc2 Implement support for sphere map NiTextureEffects (Fixes #1827) 9 years ago
scrawl 90a99991d1 Use empty() instead of !size() 9 years ago
scrawl 8bd16e4d5a Don't compute the world matrix multiple times 9 years ago
scrawl 055d35a2b0 Revert "Warn about particle emitters that have multiple parent node paths"
Not working correctly because osg won't ignore camera nodes.

This reverts commit 1667c807be.
9 years ago
scrawl 1667c807be Warn about particle emitters that have multiple parent node paths 9 years ago
scrawl 8f81df2bd3 Cleanup 9 years ago
scrawl e647ee5424 Support RGB and RGBA embedded textures in NIF files (Fixes #2295) 9 years ago
scrawl 606758d72f NifLoader: create the BumpTexture slot, but don't use it yet 9 years ago
scrawl 4cd4131da9 NifLoader: assign a name to created textures
This name will tell the shader visitor how to handle that texture.
9 years ago
scrawl 50e92c8136 NifLoader: move texture property handling to a separate function 9 years ago
scrawl acf44fd9e5 NifLoader: handleTextureControllers outside of the NumTextures loop 9 years ago
scrawl 5824619a95 Clean up includes 9 years ago
scrawl 8b596dfcbe Remove support for OSG 3.2
Since commit e8662bea31, we're using OSG functionality that contains an unfixed crash bug in version 3.2. The bug is fixed in version 3.4 (OSG commit 6351e5020371b0b72b300088a5c6772f58379b84)
9 years ago
scrawl be6ea3d607 Account for UV coordinate flip in UVController (Fixes #3203) 9 years ago
scrawl 9f729667fb Remove debug output 9 years ago
scrawl 9e53e12c70 More renaming of TextureManager -> ImageManager 9 years ago
scrawl f99f403dda Rename TextureManager to ImageManager 9 years ago
scrawl 6ef848b7c5 Remove TextureManager::getTexture2D
Instead use getImage and let the caller create the Texture. Sharing of textures is then handled in post by the SharedStateManager.

This is closer to what the OSG serializer does.

Streamlines the TextureManager and will make it easier to multithread.
9 years ago
scrawl 5b972ee777 Move texture filtering settings to SceneManager
Practical benefits:

- Filter settings are now applied to native OSG format models. These models do not use TextureManager::getTexture2D since the model itself specifies a Texture.
- The GUI render manager will be able to use its own separate textures, making it easier to turn off filtering for them.
9 years ago
scrawl 2eda495f89 Build fix for OSG 3.2 9 years ago
scrawl 06ed20abf8 Use the initial pose of a MorphGeometry for object placement (Fixes #3136) 9 years ago
scrawl 6b48acaf0e Don't optimize TriShapes with controllers (Fixes #3143) 9 years ago
scrawl daa94cc50e Fix cppcheck warnings 9 years ago
scrawl 723c392a73 NifLoader: fall back to the first UV set when encountering invalid UV set references 9 years ago
scrawl 0731595c2b Wrap a Texture2D in a ref_ptr 9 years ago
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.
9 years ago
scrawl 64424e7262 Move keyframe loading out of SceneManager to new KeyframeManager 9 years ago
scrawl e3d3380c8c Remove return value for in-place toLowerStr 9 years ago
scrawl 1d5af3c9c8 Remove unneeded cast 9 years ago
scrawl e39f49a88f OSG extensions namespace fixes 9 years ago
scrawl a29aef14f1 Eliminate a dynamic_cast in ParticleSystemController 9 years ago
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.
9 years ago
scrawl c9d710f334 Use a typedef to avoid conditional compiling 9 years ago
Alexander "Ace" Olofsson cfcbd20d99 Let's put it as a MSVC-only fix for now 9 years ago
Alexander "Ace" Olofsson e42f4999bd Quick fix for building on MSVC 9 years ago
scrawl e5ec4fe042 Add const specifier 9 years ago
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.
9 years ago
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.
9 years ago
scrawl 38510a56c2 GeomMorpherController: do not dirty the MorphGeometry unless necessary 9 years ago
scrawl 0d49c7fa51 GeomMorpherController: fix double update of MorphGeometry 9 years ago
scrawl 28b20428b9 Remove dynamic_cast in GeomMorpherController 9 years ago
scrawl fc7456e0a1 Explicitely opt for float matrices in performance critical places 9 years ago
scrawl 36e91617c9 Revert "NifOsg::Emitter: ignore psToWorld scale"
This reverts commit 7c16630874.

Fixes #3022
9 years ago
scrawl 9b96fcc224 Set the particle scaleReferenceFrame to local space 9 years ago
scrawl 21e25f4756 Use the traversalNumber as frame number 9 years ago
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.
9 years ago
scrawl 0965a9059d Handle NiLODNode using osg::LOD (Fixes #3008) 9 years ago
scrawl 1edcb219a7 Leak fix 9 years ago
scrawl fc93dc6195 Remove a stray method declaration 9 years ago
scrawl 0409e5a043 Use OSG_VERSION_GREATER_EQUAL / LESS_THAN rather than MIN_VERSION_REQUIRED (cosmetic change) 9 years ago
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.
9 years ago
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.
9 years ago
scrawl 64abdbabe3 Small refactor of controllers handling, print warning messages for unhandled controllers 9 years ago
scrawl 35f5be680b Support for NiVisController on trishape nodes 9 years ago
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.
9 years ago
scrawl 8e69c80bf6 Add framenumber checks in various cull callbacks, so we don't update more than once per frame when multiple cameras are used 9 years ago
scrawl 76fb68a9c0 Handle particle systems that don't have emitters
Fixes a crash in the Magic Diversity mod.
9 years ago
scrawl 16b8ef3164 Don't use a shared Material in MaterialColorController 10 years ago
scrawl de479e35c8 Fix AlphaController affecting all instances of the StateSet 10 years ago
Arthur Moore 2d93a6f6cb Be more verbose when dealing with unhandled nif texture properties 10 years ago
scrawl ac1f64b559 Fix StencilProperty front face mixup (Fixes #2802) 10 years ago
scrawl 24ae1d5ace Fix some issues found by coverity 10 years ago
scrawl bf9c62fa42 Fix for some coverity scan defects 10 years ago
scrawl 7a5f220ac5 GlowTexture keeps the alpha channel from the previous texture stage 10 years ago
scrawl 39539603bf Re-enable a warning message 10 years ago
scrawl a7c5beb7c5 Remove redundant allocations for NIF meshes 10 years ago
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.
10 years ago
scrawl 934166a853 Ignore the alpha value for particle materials (Bug #2699) 10 years ago
scrawl d7a4a9fd66 Create NIF root nodes as Group instead of Transform when possible 10 years ago
scrawl b79ab1a3b8 Fix InverseWorldMatrix bug introduced by last commit 10 years ago
scrawl ec25f1da95 Fix ParticleSystem bug introduced by last commit 10 years ago
scrawl ad46ff7a98 Remove redundant Transform nodes for TriShapes/ParticleSystems with an identity transform 10 years ago
scrawl ab597f672e State the filename in NIF loader warning messages 10 years ago
scrawl 6a788c3462 Minor cleanup 10 years ago
scrawl a5b72a358b Prune empty nodes in RemoveDrawableVisitor
Gets rid of 28 useless transform nodes in base_anim.1st.nif.
10 years ago
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.
10 years ago
scrawl 8d6620b074 Assign an initial bounding box to particle systems 10 years ago
scrawl b5099324d1 Enable ParticleSystem's FreezeOnCull, big speed-up in Vivec 10 years ago
scrawl 93ee11c5e7 Fix particlesystem nested RenderBin issue (Bug #2631) 10 years ago
scrawl 347c9b57b8 Copy constructor signature fix 10 years ago
scrawl 5edf457ab7 Build fix 10 years ago
scrawl 0a411cbd7c Enable particle lighting 10 years ago
scrawl d8d43f94b9 Fix a typo 10 years ago
scrawl 01944c33f5 Basic water rendering 10 years ago
scrawl 0f8f19958a NifLoader: Fix empty StateSets being created in some cases 10 years ago
scrawl 261ed1f4e5 Revert "Enable culling for particle emitters & programs"
This reverts commit 8b206e0aed.
10 years ago
scrawl 3dcb167066 Map rendering 10 years ago
scrawl da24e298ee Fix -Wreorder warnings 10 years ago
scrawl 604580d75d Move toMatrix to Nif::Node 10 years ago
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.
10 years ago
scrawl 372a54bbc7 Dead code removal 10 years ago
scrawl 09742d5b95 Animation playback works, no movement accumulation yet 10 years ago
scrawl cd7808fc11 Cleanup in preparation for animation port
Scrapped previous idea for multiple animation sources, better approach incoming.
10 years ago
scrawl 148c041a43 Nif loader cleanup - forcing a skeleton is no longer needed 10 years ago
scrawl 1a19cd3607 Some cleanup 10 years ago
scrawl 28643660d3 Change triangle indices to unsigned 10 years ago
scrawl 10644544ab Dead code removal 10 years ago
scrawl eaa4316ff8 Move skinning code to SceneUtil 10 years ago
scrawl 9246a668b9 Skeleton update fix 10 years ago
scrawl bd88758962 Use the new skinning system in OpenMW 10 years ago
scrawl 111e3eb6db Slightly improve bounding box for skinned meshes 10 years ago
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.
10 years ago
scrawl 167ae600c5 Implement gravity decay (previously unknown float) 10 years ago
scrawl edc5cad79e Port Animation::addEffect 10 years ago
scrawl c334a76a6f Fix skinning bug 10 years ago
scrawl f7da979669 Add FrameSwitch (geometry "double buffering") for efficient updates of RigGeometry & MorphGeometry 10 years ago
scrawl c516e897ee Move Controller base classes to SceneUtil, add visitor to assign ControllerSources 10 years ago
scrawl de2c85e0f8 Port nifloader to the more efficient StateSetController 10 years ago
scrawl a0b43f426e Avoid setting DYNAMIC DataVariance on StateSets 10 years ago
scrawl 591a35b8d7 *very* early version of the LightManager 10 years ago
scrawl 433e29f297 MorphGeometry optimizations: static bounding box and vertices updated during cull traversal 10 years ago
scrawl 8b206e0aed Enable culling for particle emitters & programs
Big speedup, though might cause timing inconsistencies that we should fix at some point.
10 years ago
scrawl 0b77ae43a4 Minor optimization for particle emitters 10 years ago
scrawl 74c56556cc More fixes for scaled particle systems 10 years ago
scrawl 1eafecd30c Add magic factor as in vanilla MW to gravity affector (Bug #2147) 10 years ago
scrawl 304d7e544f Optimize RigGeometry to update skinning in CullCallback 10 years ago
scrawl e5e1013c51 TextKeys attached to root node as user data, add .kf loading to scenemanager 10 years ago
scrawl 31adaf2495 Use simulationTime instead of referenceTime 10 years ago
scrawl 12f27123f2 Billboard scaling fix and culling bug fix 10 years ago
scrawl 9975ec1678 Missing clone function 10 years ago
scrawl 6183926732 Particle fix 10 years ago
scrawl 173887c2d9 AlphaController copy fix 10 years ago
scrawl bb32c761df *very* early texture manager, need a lot more thought to design this properly 10 years ago
scrawl 322fcdc2d3 Transform world space particles when attaching to a node 10 years ago
scrawl 961aba5e2b Revert part of e91d9d0903 10 years ago
scrawl ac2612926e Disable unRefImageDataAfterApply 10 years ago
scrawl e91d9d0903 Fix for behaviour of scaled particle nodes
Not sure if used in vanilla assets so may be low priority, but couldn't help looking into this.
10 years ago
scrawl c10c146ad1 Skeleton based bounding box callback for RigGeometry (Bug #455) 10 years ago
scrawl 60f288195f Fix for copy construction of particle system templates 10 years ago
scrawl 99c9907ff3 Fix emitter/particlesystem scene graph order problems 10 years ago
scrawl caa93f767b Skip creating meshes for hidden nodes with no VisControllers
There's quite a bit of garbage in base_anim.nif, so this change should result in a much leaner scene graph.
10 years ago
scrawl e938fa4a9d Implement extrapolation mode in ControllerFunction (Bug #1871) 10 years ago
scrawl 96d51f0bb7 NiParticleRotation seems to be unused 10 years ago
scrawl 46cbec9a4a Add skinning auto-detection in nifosg loader 10 years ago
scrawl 60ede8dede Stop warning about NiFogProperty (unused in MW) 10 years ago
scrawl 6d9deaa386 Implement planar collider for particles (Fixes #2149) 10 years ago
scrawl c179977f20 Fix quaternion rotation order 10 years ago
scrawl 20866b44f7 FlipController fix, DetailTexture & DarkTexture tested 10 years ago
scrawl b072e803ce Use correct ambient/diffuse default values when no NiMaterialProperty exists 10 years ago
scrawl 9ee99a751c Stop warning about NiDitherProperty, ignore NiShadeProperty (unused) 10 years ago
scrawl 9141a8d801 Fully implement NiStencilProperty (Feature #1057) 10 years ago
scrawl baa152328a Crash fix 10 years ago
scrawl 376f0f3ac1 Small cleanup 10 years ago
scrawl 018115601a Move particle emitter/affector handling to separate functions 10 years ago
scrawl 36ad40827b Move parent node attachment out of nifloader 10 years ago
scrawl ff9e2b03a0 Hide NIF loader details in the implementation file 10 years ago
scrawl 5a582e7eb7 Reintroduce showMarkers flag 10 years ago
scrawl 6d85444d26 Add text key loading 10 years ago
scrawl 6219a7bbfc Add .kf loader 10 years ago
scrawl 9242e6d256 Avoid copying keyframes in controller instances 10 years ago
scrawl 2db5df77f0 Change rotation/scale workaround in preparation for loading .kf controllers 10 years ago
scrawl 15f9c1ddcf NiBSPArrayController works 10 years ago
scrawl 71782462b7 Subclass ParticleSystem to support limit on the number of particles 10 years ago
scrawl 2e11642273 Fix BillboardNode overriding scale 10 years ago
scrawl a9aee389c0 Emitters attached to correct node, a bit ugly 10 years ago
scrawl 32bb202290 Implement BillboardNode 10 years ago
scrawl d486cde330 Fix broken VisControllers 10 years ago
scrawl 4957ceeb1d Refactor controllers, now part of the scene graph as UpdateCallbacks
Practical benefits:
- The controller update is now run automatically
- Creating an instance of a scene graph should now work properly using the defined copy constructors
10 years ago
scrawl af27a10b0c OpenCS: preliminary port of PreviewWidget to OSG 10 years ago
scrawl ab3c28eb96 Use template function for interpolation 10 years ago
scrawl 00ab474188 More work on copy constructors 10 years ago
scrawl f8422c3ed4 Particles mostly completed, still need to attach emitters to the correct node and handle NiBSPArrayController 10 years ago
scrawl 79c2138e53 Port ResourceHelpers to new VFS 10 years ago
scrawl f843e12538 Add world space particle systems, will need more changes when emitters are added 10 years ago
scrawl 510375aa63 Add virtual file system (VFS) replacing the low level parts of the old resource system 10 years ago
scrawl 8d64f2081e Add particle system state loading 10 years ago
scrawl 2a92fb57f7 Add FlipController 10 years ago
scrawl 6c8613ae35 Add DarkTexture and DetailTexture 10 years ago
scrawl c54ee16748 Add AlphaController and MaterialColorController 10 years ago
scrawl 3839d6f777 Simplify controller classes 10 years ago
scrawl 74dfb23e7b Handle material properties in trishapeToGeometry 10 years ago
scrawl 8e01d8cb19 Add OSG nifloader, currently supports geometry, materials, basic texturing, skinning, morphing, and most controllers. 10 years ago