Commit Graph

225 Commits (0.7.0)

Author SHA1 Message Date
scrawl c00532d82d Add LightStateCache to avoid redundantly setting the same gl_Light
Normally, osg::State would do this for us (via lastAppliedAttribute), but since we're using a custom StateAttribute to apply all lights at once, we have to track ourselves.

Further reduction of GL calls in a typical scene by ~2%
8 years ago
scrawl 4d4dc1b9c1 Add specialized DisableLight state attribute for more efficient undoing of light state
Seems to reduce # of GL calls by 10-15% in a typical scene.
8 years ago
scrawl a1069dce3c Change UnrefQueue to accept osg::Referenced instead of osg::Object 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 767eba941f Speed up finding of attachment node by using the cached nodeMap 8 years ago
scrawl a76d693627 Speed up ControllerVisitor by skipping sub graphs that have no ChildrenRequiringUpdateTraversal() 8 years ago
scrawl 30b101b175 Fix build error in OSG_USE_FLOAT_MATRIX=OFF mode due to a double implicit conversion to double (pun doubly intended) 8 years ago
scrawl 84a92e665c Improve performance in RigGeometry by optimizing for the most common case of identity geomToSkelMatrix 8 years ago
scrawl 53e4db8a8f Add dummy serializer for CameraRelativeTransform to allow serializing content of Sky Root 8 years ago
scrawl 34deb6e7b1 Add 'showSceneGraph' command to export the scene or a particular object to .osgt for debugging purposes 8 years ago
scrawl eae35af13d Check if the bounding box changed before calling dirtyBound() 8 years ago
scrawl cca75499ee Clear the Skeleton's bone cache when a node is added/removed (Fixes #3663) 8 years ago
scrawl c0faeea938 RigGeometry check if mesh has normals (Fixes #3667) 8 years ago
MiroslavR 11565b5966 Make actors with non-portable lights in inventory glow (Closes #2042, #3338) 8 years ago
scrawl 513e1da8a3 Remove unneeded casts 8 years ago
Aesylwinn 5753f52b47 Move water mesh + simple state generation to components library. 9 years ago
scrawl 8f62ea2e80 Fix for "RigGeometry rendering with no skeleton" errors 9 years ago
scrawl d5f497c47d Pass the node path instead of the node visitor 9 years ago
scrawl 6fa95e72c5 Pass the traversal number instead of the node visitor 9 years ago
scrawl 824cd3be22 Do not set _boundingBoxComputed which is no longer used 9 years ago
Aesylwinn b83f522ecd Changes to color scheme, slight change to drag indicator,
change tooltip description.
9 years ago
Aesylwinn 1781aaaa27 Drag indicator. 9 years ago
Aesylwinn 32ba5bf8b8 Initial pathgrid editting, support for selection and movement. 9 years ago
scrawl 17a0353a85 Fix forward declaration mismatch 9 years ago
Aesylwinn 14ae232938 Remove now unnecessary factory class.
It was originally used for storing normals, but that functionality
was removed.
9 years ago
Aesylwinn b11f5b2717 Make edges differently colored. 9 years ago
Aesylwinn 0eb863d8fc Change color to blue to match the pathgrid visibility selector in the
editor and slightly increase the scaling.
9 years ago
Aesylwinn 7f0cc6e583 Add a color gradiant to pathgrid nodes to make them less of an eyesore. 9 years ago
Aesylwinn 3d26ff08c4 Get rid of lighting. 9 years ago
Aesylwinn d141672b53 Pathgrid geometry creator 9 years ago
scrawl 2f8be401cc Add the unref work items to the front of the workqueue (Bug #3273)
Ensures that memory still gets freed even if the workqueue is overloaded.
9 years ago
scrawl 8052225460 Remove leftover call to setTexCoordArrayList 9 years ago
scrawl cc0afe901f Store a pointer to tangents array to avoid potential type casting issue 9 years ago
scrawl d1f6169889 Add special handling of RigGeometry tangents in ShaderVisitor 9 years ago
scrawl 95e80e7eff RigGeometry: don't directly modify the primitive set list
This is to ensure that an element buffer object will be assigned to the primitive sets if necessary.
9 years ago
scrawl c73ec71123 Revert "Store the RigGeometry's source vertices and normals directly"
This reverts commit 7a347e3483.
9 years ago
scrawl 60c8c4fdda Revert "Animate tangents in RigGeometry"
This reverts commit 9cf963b751.
9 years ago
scrawl 9cf963b751 Animate tangents in RigGeometry 9 years ago
scrawl 7a347e3483 Store the RigGeometry's source vertices and normals directly 9 years ago
scrawl d986b1a48b Add comment 9 years ago
scrawl 1abb77f8a1 Cleanup 9 years ago
scrawl 9f03982e0b Use a dedicated VBO for RigGeometry's vertices and normals
The VBO used by the source geometry's arrays may be unintentionally shared with other RigGeometries.

The vertices and normals are the only attributes that are modified at all, so using a dedicated VBO for these should improve performance further.
9 years ago
scrawl 50b8260a39 Disable VBOs in RigGeometry while investigating a crash possibly related to commit cda8a88f0d 9 years ago
scrawl 4eb090a8d0 Set the RigGeometry vertex buffer object usage to GL_DYNAMIC_DRAW 9 years ago
scrawl 174dd82894 Manually apply the osg::Light state
Reduce the amount of virtual function calls. Don't use the osg::Light's lightNum. Don't set spotlight state that we're not using (yet).
9 years ago
scrawl 58e0e8bd4e Enable vertex buffer objects in RigGeometry 9 years ago
scrawl f898bf493f Don't use Geodes 9 years ago
scrawl 137dde7cf8 Include cleanup 9 years ago
scrawl 0df975a4d7 Properly detach nodes in CopyRigVisitor (Fixes #3234) 9 years ago
scrawl 563807ee53 Share the StateSet used to invert front face 9 years ago
scrawl 8791063110 Fix "RigGeometry rendering with no skeleton" warnings in rare cases 9 years ago
scrawl 1e5b4bea0a Don't create an unnecessary osg::Group when copying over a rig 9 years ago
scrawl 90a99991d1 Use empty() instead of !size() 9 years ago
scrawl 3e854a84a2 Slightly more efficient applying of light state 9 years ago
scrawl f93b7ec943 Fix light state issue
GLSL does not respect gl_Disable(GL_LIGHTX), so we have to set unused lights to zero.

Sadly, this change makes the applying of the modelView matrix less efficient. So far I couldn't find a better solution, osg's state tracker keeps getting in the way. :(
9 years ago
scrawl 9376811213 Vertex lighting shader 9 years ago
scrawl c4d38bb42d Fix clang analyzer warnings 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
Marc Zinnschlag da6dcfc49e Merge remote-tracking branch 'scrawl/resource' 9 years ago
scrawl afe533e670 Accept a const Object in UnrefQueue 9 years ago
scrawl 40a6e05e17 Use a deque instead of vector in UnrefQueue 9 years ago
scrawl d11c2864df Introduce UnrefQueue to handle the deleting of no longer needed objects in the background thread 9 years ago
scrawl 84f01b7527 Remove unneeded forward declaration 9 years ago
scrawl b7e69cbc64 Refactor WorkQueue, merge WorkTicket and WorkItem
Allow the caller to hold on to the WorkItem. This makes it possible for a derived WorkItem to store the result of the work within the WorkItem itself.
9 years ago
scrawl e02f35264f Work around OSG 3.2 not respecting the DEEP_COPY_CALLBACK flag (Fixes #3183) 9 years ago
scrawl 8360cccce7 Don't clone Drawable UpdateCallbacks twice
The Drawable copy constructor takes care of that already.
9 years ago
scrawl aec8c38461 Move observer_ptr include where it belongs 9 years ago
Tobias Kortkamp 0659687bfb Some fixes for building on FreeBSD 9 years ago
scrawl 458a305bff OpenCS: add lighting mask 9 years ago
scrawl e1c7165bfb Fix bounds calculation for addLight to a transform node 9 years ago
scrawl 93cc08a09c Lighting fix for LightListCallbacks attached to a Transform node 9 years ago
scrawl 3089aeccc4 Factor out SceneUtil::addLight 9 years ago
scrawl 438b30d6f0 Move configureLight to a separate file 9 years ago
scrawl daa94cc50e Fix cppcheck warnings 9 years ago
scrawl 0597c8fd9c Pass a Vec4f by reference 9 years ago
scrawl 624809c8dc Minor fix for error handling in skeleton.cpp 9 years ago
scrawl e39f49a88f OSG extensions namespace fixes 9 years ago
scrawl c60f4ba7bd Make RigGeometry bone references case-insensitive (Fixes #3058) 9 years ago
scrawl 258f7a2b42 LightController fixes 9 years ago
scrawl 4a9b37aa53 Fix copy constructor issue 9 years ago
scrawl c442af09c5 Write more documentation for the lighting system 9 years ago
scrawl 8e9571d155 Double buffer the light StateAttributes and StateSets
Fixes a race condition where the position of a light could jump a frame ahead.
9 years ago
scrawl 1f8ee9b8d1 StateSetUpdater: use the frameNumber
More robust in case a node is updated twice in the same frame (e.g. because it has multiple parents).
9 years ago
scrawl eb458bf9c8 Fix inactive RigGeometry not rendering correctly 9 years ago
scrawl 1b77428c59 Use const reference, thanks ace13 9 years ago
scrawl 94e8560bf8 RigGeometry: do not allocate new NodePath every frame 9 years ago
scrawl 6d5aa272fc RigGeometry: do not update the geomToSkelMatrix more than once per frame 9 years ago
scrawl 75a464f7ec Fix a typo 9 years ago
scrawl fc7456e0a1 Explicitely opt for float matrices in performance critical places 9 years ago
scrawl 62169a7039 Use a single-precision PositionAttitudeTransform in speed critical places 9 years ago
scrawl 3bd2aaddea Adjust PulseSlow light controller (Fixes #1963) 9 years ago
scrawl 21e25f4756 Use the traversalNumber as frame number 9 years ago
scrawl 054c3eb24e Do not deep copy PrimitiveSets when build with OSG 3.5 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 35459f20d5 Refactor lighting mask 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 1200ff9186 RigGeometry: fix incorrect bounding box in the first frame
The default computeBound() was overriding the manually set bounding box.
9 years ago
scrawl 0210b87ffc Revert "Fix LightSource crash"
This reverts commit f336c6db87.

Root cause should be fixed in next commit.
9 years ago