NVSGSDK v2.1.1.7 ---------------- Installation: ------------- Windows: * Start the setup.exe file and follow the setup instructions. * Normally the setup creates a new environment variable on your machine, NVSGSDKHOME, which points to the NVSG SDK root directory. (e.g. c:\Program Files\NVIDIA Corporation\nvsgsdk) Linux: * Requirements: Check the NVSG Website for the appropriate package to match your gcc and libc version. * In docs/gcc-spec.txt you can see the g++ configuration options. You can use these to configure and build your g++ if you experience any problems or incompabilities. * gcc 3.4 and 4.0 users: (especially Fedora Core 3 users) Check the configuration of your compiler by running "g++ -v". If it was not configured with "--enable-libstdcxx-allocator=mt" you have to include "force_mtalloc.h" before any other header in your application and the samples. You can either include it manually with "#include force_mtalloc.h" at the very top of your main source file or invoke g++ with the "-include" parameter to have it automatically included first. (When building the samples and using our supplied Makefiles, you do not have to edit anything. Simply export NVSG_CPP_EXTRAFLAGS="-include force_mtalloc.h" in the shell before invoking make.) * Please read RenderArea.txt for information related to GUI framework and window and context handling. Then look at those samples in src/samples that suit your requirements best. Sample Viewer (Win32 only): -------------- NVIDIA provides a viewer application (ViewerVR.exe), which you can use to familiarize yourself with some of the capabilities of NVSG. The viewer application is located at nvsgsdk\bin\Release\ViewerVR.exe Sample files that you can load into the viewer are located at nvsgsdk\media\scenes Mouse control ------------- Orbit - left mouse button Pan - middle mouse button Dolly - left + middle mouse button Tips for the viewer: -------------------- * Smoothing Feature In some scenes the models do not look smooth. To adjust the smoothness, click the Smoothing icon in the toolbar and then enter an angle in the dialog box. The value specifies which crease angles in the geometry to smooth. (The smoothing icon is located near the middle of the top toolbar; use the cursor tooltips to identify the "Smooth Geometry" icon) * Rotation Points You can define the rotation point. Right click the window and select "Set Rotation Point" from the popup, then click the point on the geometry to designate as the rotation center. For more information see the Sample Viewer description in the nvsgsdk.chm file. Using the NVSGSDK: ------------------ * Before starting, you should decide what GUI framework (MFC, Qt, native win32 or X-Windows, ...) you are going to use in conjunction with NVSG. Then consult RenderArea.txt to learn how to create your RenderArea accordingly. * You can find documentation in the directory nvsgsdk\docs. * If you want to write your own viewer, see the tutorial in the Help documentation. [Fundamental Concepts of the NVSGSDK -> "Creating a New NVSG Project"] The related source code is located in the directory nvsgsdk\src\samples\SimpleViewer. * You can also find additional tutorials in the src directory. After you build the tutorials, the executables are located in the directories nvsgsdk\bin\Release and nvsgsdk\bin\Debug. * When making OpenGL calls directly, always use our capital-letter GL*() WGL*() wrapper functions. (include nvgl/nvgl.h) Known Issues: ------------- * When having objects with vertex shaders or fragment shaders that change positions of vertices or depths of fragments, it is recommended to switch off occlusion culling. If occlusiong culling is not switched off in those cases, it might result in corrupted images. ---------------------------- History ---------------------------- Changes/Improvements in NVSG v2.1.1.7 ------------------------------------- * Fixed: Picking was broken for models built of very small faces * Fixed: ChangeCurDir - now it can handle empty paths * Fixed: Internal texture format mapping causing unnecessary precision loss for userType = LUMINANCE and dataType = unsigned short (16-bit) * Fixed: The first jit pass always was rendered non-jittered * Fixed: Crash on smooth geometry * Fixed: Deleting VBOs on wrong context confused our cache for buffer bindings. The application needs to ensure the right context to be established before any OpenGL calls. Added some debug code helping detect binding issues. * Fixed: Implementation of Object::isEquivalent and CGIProgram::isEquivalent * Fixed: BlendFunc caches (BlendFunc and BlendFuncSeparate are targeting the same caches) * Fixed: Consider BlendFuncSeparate state assignment for transparency evaluation. * Fixed: Picking for objects transformed with a scaling > 1. * Fixed: Wrong caching of texture parameter. * Fixed: Crash after opening the material editor and then closing the viewer * Fixed: Problem with thread switches and glContext inconsistencies: made the former global glContext pointer thread specific data (TLS) (NOTE: currently WIN32 only; need to do this for Linux as well!) * Fixed: Undefined depth states after rendering objects with a non-default DepthAttribute to the overlay. * Fixed: switching HWFSAA from a level != OFF to a different level != OFF. * Fixed: Enabled HWFSAA switching without recompiling shaders * Fixed: Problem in effect light tracking * Fixed: Wrong amount of bytes allocated during mipmap creation for 3D images * Fixed: Wrong function pointer setup for nbf version 11 * Fixed: State inconsistencies with transparent geometries: + BlendAttribute were reset to wrong settings for the transparent pass + Effect passes that specify a DepthMask corrupted our strategy of having depth writes disabled in the transparent pass * Fixed: crash on writing LOD node with zero ranges * Fixed: DLInfo now derives from GLDALData instead of DALData. This enables us to do necessary context switching on deletion using AutoGLContext. * Fixed: Several problems regarding 3D textures * Fixed: Support for DDS floating point images * Fixed: A memory leak on a SearchTraverser object in the material editor * Fixed: An unhandled exception in GeoNode::validateIncarnation(): must assure that a Stateset for a geometry is not NULL (which is legal) before calling getIncarnation() on it * Fixed: TextureImage: filtering: corrected position of destination texel in source space * Fixed: Corrected CullCode determination with viewing region in one half of the view frustum * Fixed: Equivalence test of Billboard and clarified its documentation * Fixed: Prevent release of images with an F_IMAGE_STREAM. * Fixed: StateSetUnifyTraverser: corrected handling of unified StateAttributes in a StatePass. * Fixed: GroupEliminateTraverser: don't eliminate Groups with clip planes. * Fixed: GeoNodeCombineTraverser: made combination of GeoNodes survive Groups holding multiple equal (same pointer) GeoNodes to combine. * Fixed: ref/unref leak in PrimitiveSetCombineTraverser. * Fixed: Missing initializations on Billboard default constructor * Fixed: Dialog that pops up directly after loading a scene asking if you want to optimize so that it never appears behind the viewer window. * Enabled mipmap creation and uploads for floating point textures * Changed the HDR car paint shaders' envmap sampler to use mipmap filtering by default * Removed never used default parameter includeTransparent from RenderTraverser::render() API * Added DevStudio 2005 support * Enhanced our render interrupt mechanism to work more effectively. * Introduced GLBlendFuncSeparate wrapper * Added some convenient trace macros to output matrices, spheres, and vectors. * Ported thread specific GLContext to linux using pthread API * Introduced lib entry point nvsgLibInit (used for pthread_key creation) * Added a GLGenTextureCache overload expecting an additional valid GL texture name and a target. The passed texture name will be taken instead of generating a new one using glGenTextures. * Improved resetting of effect lights * Re-introduced API to enable the user to pass mipmaps * Moved VBOInfoXXX structures to nvgl namespace to be publicly accessible for users. * Made some previously internal DAL structures public to allow e.g. for creating OpenGL texture handles outside the GLTraverser and attach them to a TextureAttribute (used e.g. with multi-pass pbuffer rendering to texture) * Updated glext.h for GL_EXT_framebuffer_object * Added support for luminance images * Made some changes to Linux context attachment code, to have it work as on Windows already * Material editor changes: + Remove blend attribute when setting material to opaque + Added combo box elements to display and modify current source and dest blend functions + Removed texture type functionality + Added buttons to generate texture coords of desired type (or clear them) for all geometry using the state attribute + Check and inform the user if texture coords are missing somewhere when loading texture images + Do not auto generate coords anymore on load * Extended screen-aligned Billboards to use an upVector for better orientation control. * Added maximalNumberOfVertices to PrimitiveSetCombineTraverser to limit combination of PrimitiveSets. * AnalyzeTraverser: Added detection of combinable GeoNodes * Added NormalizeTraverser to normalize all normals in a scene. * Extended AnalyzeTraverser to detect null-normals * Added GeoNodeUnifyTraverser. * Added VertexAttributeSetUnifyTraverser. * Added a new render technique: RT_UNLIT for really fast rendering (shadow maps, wireframe,...) * Added code to detect combinable PrimitiveSets (like Lines, LineStrips, Points, QuadMeshes, Quads, QuadStrips, Triangles, TriFans, and TriStrips) to AnalyzeTraverser. * Changed the wording of an entry in the Optimizer dialog to better describe the operation. * Enabled optimized compiling in debug build for TextureImage.cpp to speed up texture loading in debug mode. * Introduced stack of scale factors instead of a single factor in FrustumCullTraverser and RayIntersectTraverser. That way even a zero-scale does not kill everything! * Locked lighting to be disabled when face mode is locked to lines or points. * Added face mode overwrite handling/locking to GLContext, GLTraverser, and MCADViewer/OverwriteDlg. * Introduced overwrite of two-sided lighting (RenderTraverser/GLTraverser) with locking (GLContext) and UI (MCADViewer/OverwriteDlg). * Added optional parameter "cameraRelative" to Camera::orbit() to select if the axis to rotate around is camera relative or world relative (similar to what Camera::rotate() already provides). * Introduced preApply() and postApply() to allow easier traverser writing * Extended tweakable file dialogs to work with texture loader plug-ins * Added new tutorial - This tutorial demonstrates how to use an FBO approach instead of PBuffers. * Introduced a DepthAttribute to control depth states per object * Introduced additional FaceModes to specify with a FaceAttribute * Introduced additional CullFlags to specify for a Node * Introduced FaceCulling override to RenderTraverser * Introduced TwoSidedLighting override to RenderTraverser * Enhancement: Nodes can now be specified to be rendered on top (in overlay) * Changed interface of SpotLight on cutoff angle from degree to radian * Extended TrackballCameraManipulator and TrackballTransformManipulator to restrict * orbiting/rotation and panning on the x or y axis. Changes/Improvements in NVSG v2.1.0.9 ------------------------------------- * Added PBufferMirrorViewer sample source code * Fixed: Error in effect light tracking * Fixed: Highlight pixel stitching through geometries between highlight and camera. * Fixed: Added disabling/enabling back face culling for HighlightEdges * Fixed: Corrected problem with consecutive geometries with color material on * Fixed: Culling problem with Transform/Billboard * Fixed: Unifying StateAttributes didn't do anything => corrected * Fixed: Render lists need to be recreated on changing the transparency technique * Fixed: GLContext::LightingAttributes copy constructor * Fixed: "Splatter effect" when using independent primitives and VBOs * Fixed: GLEndList() GL_OUT_OF_MEMORY problem * Fixed: Problems in mipmap generation code * Fixed: several minor bugs in NVSGSaver * Fixed: State inconsistencies with transparent geometries * Fixes: Volume textures handling - fixed texture mirror routines to handle 3d textures correctly - added luminance support * Fixed: DDS handling - fixed support for DDS floating point images - added support for luminance images - handle compressed images * Fixed: Linux context attachment code (RenderArea) * Fixed: ChangeCurDir can handle empty paths Changes/Improvements in NVSG v2.1.0.6 ------------------------------------- * Introduced new function pickMap() to MapList, MapObject, MapElement, MapArray, and MapMatrix to pick a map at a given raster coordinate. * Introduced short-cut behaviour on incarnation and bounding sphere handling * Fixed: Problems with billboard updates * Extended CgFxEffect pass interface and made it more multithread safe * Exported the Incarnation interface * Viewer: Improved material editor - transparency handling and texture coordinate generation * Added header "force_mtalloc.h" that can be used on Linux gcc 3.4 and 4.0 platforms to enforce usage of the correct std::allocator. This also fixes reported crashes with Fedora Core 3 and likely other distributions. * Added scene loading capability to glutViewer sample. * Fixed: NVSGSaver: correct output of names with spaces * Fixed: NVSGLoader: read correct end of FramedAnimation: } instead of ] * Fixed: Wrong AnimatedQuads::isEquivalent test * Fixed: RenderTraverser recovers safely from a scaling by zero * Fixed: Cull stack handling with LightSources * Fixed: Shadows were wrong due to some not initialized variables in GLContext. * Fixed: Stereo - reverse eye handling and automatic eye distance calculation * Fixed: Geometry with an effect applied disappears after re-initialization of the Renderer (e.g. due to changing HW-FSAA settings) * Fixed: Context inconsistency due to usage of 'wgl'-functions instead of the 'WGL' counterparts inside GLWinRenderArea::determinePixelFormat. * Fixed: Tutorials - fixed/added amd64 configurations and added 64-bit glut32 (lib&dll) used for our glutViewer * Fixed: Behavior of WGLAttachContext for context that were not created by NVSG * Fixed: Vanishing textures when runing two traversers (2 GL contexts) on the same tree, with one traverser having textured rendering off. * Fixed: Corruption with mixed opaque and transparent passes defined in a single CgFX technique and GLDepthMask settings while rendering the transparent list. * Fixed: GL state corruption after interrupting rendering geometry with an effect applied * Fixed: Added missing cleanup of dangling cached geometry DAL handles after associated data was freed within GLTraverser::setGeometryCacheTechnique. * Fixed: CGIParameter derived classes did not override the isEquivalent function but re-define a new function instead. As a consequence, calling isEquivalent from a pointer to base class only hits the base class implementation of isEquivalent for particular objects. Changes/Improvements in NVSG v2.1.0.5 beta ------------------------------------------ * Introduced bitmap maps to be used for menu handling and text support (viewport relative) * Implemented interruptibility of the render loop * Introduce TextureLoader plug-in * Added OpenEXR support (sample code) * Added half support * Optimized RenderList handling (performance) * MipMap creation controlled by actual MinFilter settings used (potentially saves texture memory) * Includes updated Cg-runtime which fixes corrupt ordering of effect parameters * Fixed: Not considered half-typed effect parameters * Fixed: Crash on cloning StateSet * Fixed: Crash after dragging new material to stripped geometry * Fixed: Broken picking with orthographic cameras * Fixed: Crash on specifying an invalid texture file * Fixed: Broken highlighting followed by application crash * Fixed: Wrong decompose and introduced matrix interface * Fixed: Rotation point problem after "View All" Changes/Improvements in NVSG v2.1.0.3 alpha ------------------------------------------- * Migration to Cg 1.4 for shader integration * Added sorted blended transparency feature * Implemented shadow mapping feature * Fixed: Textures visible in shaded mode * Fixed: Display corruption when using vertex colors * Fixed: Broken fixed-function texture mapping with older-version (<1.4) nbf files * Fixed: StateVariant and StatePass handling missing in SearchTraverser * Fixed: Crash after removing a child from a Switch if the child was the last child and active * Fixed: SearchTraverser does not consider inactive children * Fixed: Crash on texture image upload after re-initialization of the renderer * Fixed: Loading of LZW compressed TIFFs failed * Fixed: Wrong alpha values with non-spec TIFFs * Fixed: Effect lights will not be switched off when running out of scope * Fixed: NBFLoader claims to much memory * Fixed: Performance regression with a huge amount of RenderElements * Fixed: Switch::replaceChild does not preserve active settings Changes/Improvements in NVSG v1.0.11.6 -------------------------------------- * Fixed: NBFLoader related file mapping errors * Fixed: LUMINANC_ALPHA-format .rgb image load failure * Fixed: Upload failure with wrong-scaled .dds 2D images Changes/Improvements in NVSG v1.0.11.5 -------------------------------------- * Updated EULA * Fixed: TexGen - work OpenGL conform * Fixed: AA lines (wireframe mode) * Fixed: NBF loader – handle triangles without faces * Fixed: Matrix3f * Fixed: Save system memory by loading the same texture only once * Fixed: Search Traverser searches through every tree object (not only throught active once) * Fixed: Switch child management (add / remove children) * Fixed: NVB loader handles multitextured objects correctly Changes/Improvements in NVSG v1.0.11.4 -------------------------------------- * Linux 64 support * Added mirror transform handling. * Added support for png & gif and fixed color index formats * Added texgen support * Enabled jpeg, tiff and png for amd64 * Fixed: Resizing the RenderArea can lead to a crash when no valid camera is available * Fixed: Scene - Added missing methods: removeCamera() and removeCameraAnimation() * Fixed: RayIntersectTraverser - Added missing back-face culling access methods * Fixed: multi-sample-buffer code for application controlled FSAA * Fixed: Removed an obsolete assert that crashed during loading a .nvsg file * Fixed: Class PBuffer is only meant to be used internally as a small helper class. Moved the header from the include to the implementation directory so the user of the SDK can't use/see it and also removed Doxygen documentation for this class. * Fixed: TextureAttribute::getNumberOfItems() was misused for looping through the contained TexturAttributeItems. GetFirstItem() and getNextItem() is the way to go (e.g. so we do not crash if we do not start with texture unit 0) * Fixed: TextureAttributeItem::setFileName did not unreferenced the old Texture object. This caused the assertion '(m_lookupRequired==false)==(m_texture!=NULL)' to fire on TextureAttributeItem::isLookupRequired. * Fixed: Using the occlusion cull traverser lead to wrong rendering. Changes/Improvements in NVSG v1.0.11.3 -------------------------------------- * Updated cg/cgfx libs and devil libs * Improved locking performance. Introduced fast locks through critical sections. * Introduced custom __ASSERT define to replace the standard assert macro. For _WIN32 this simply maps to assert. * Introduced Matnnf::invert(). * Introduced virtual bool Traverser::preTraverseDrawable that replaces and generalized GLTraverser::drawingAllowed. NOTE: This helps in rendering custom defined Drawables. * Made Scene::setRootNode more robust with respect to addRef/removeRef on arguments. * Removed 'dead-end-optimizations' from WRLLoader. Those things are wrong there and belong into an optimizing traverser. * Relaxed some assertions. * Improved Group::replaceChild(): addRef/removeRef on child to remove to prevent inadvertently deleting the child to add. * Introduced usage preTraverseTransform() to FrustumCullTraverser to handle scale factor logging correctly. * Beta 1.9 build for Linux * Introduced object locking on Linux * Introduced GetModulePath for linux * Fixed: Linux release build of WRLLoader * Fixed: SimpleViewer build * Fixed: Texture upload for linux; was broken for level-0 only texture images * Fixed: Linux entry point fix * Fixed: File mapping for NBFsaver. Got SIBBUS for mappings larger than the file size. * Fixed: NVSG saver - saving empty fields * Fixed: setTextureSizeLimit() - new it is correctly set * Fixed: Copy constructor for ISWMRSync. The default copy constructor simply copied the pointer to the locking object, which resulted in shared lock objects * Fixed: A bunch of copy constructors did not call base class. * Fixed: Removed reference to no longer existing RenderMode.h * Fixed: Quatf normalization. * Fixed: Cleaned up with ambiguous function pointers in GLFunctions; naming now corresponds that of OpenGL 1.4. * Fixed: Crash on GL_VERSION < 1.3. Extensions that became part of GL_VERSION >= 1.3 were not properly initialized for GL_VERSION < 1.3. * Fixed: Corrected a bunch of bugs caused by beginEdit/endEdit. * Fixed: Some traversal inconsistencies; * Fixed: Added normalization of Spotlight direction and Directed Light direction. * Fixed: Added missing GLTexGenfv(). * Fixed: Protected usage on m_scene in renderScene(). * Fixed: Moved call to GLClearColor() and GLClear() from GLTraverser::doApply() to GLWinRenderArea::renderScene() to ease deriving a multi-pass GLTraverserEx. * Fixed: Corrected CondenseTraverser to handle Quads and Triangles only. * Fixed: Calling getBoundingSphere() only on valid high light object. * Fixed: Now maxElement() returns the maximal absolute value of an Vecnf for correct adjustments on non-identical scaling, * Fixed: GLTraverser has to enable/disable GL_NORMALIZE on Transforms with scaling factors differing from 1.0. * Fixed: WRLLoader Switch handling: whichChoice greater or equal to the number of children means no choice. * Fixed: Wrong end condition of loop in Group::getIndex(). * Fixed: Correctly read multi-strings with WRLLoader. * Fixed: Clear the current cull tree only if a ViewState exists * Fixed: NVBLoader: normalizing incoming Quatf. Changes/Improvements in NVSG v1.0.11.2 -------------------------------------- * Added missing GeoNode::replaceDrawable * Fixed: LightSource::setDirection() - added missing normalization * Fixed: NVSGLoader/Saver - added support for 3- and 4-dimensional colors. * Fixed: Support of GL_COLOR_MATERIAL. Whenever a GeoSet holds colors or secondaryColors, GL_COLOR_MATERIAL is enabled, otherwise it's disabled. * Fixed: Added a workaround for CgFX runtime bug #128714: Calling CgFXSetDevice twice always returns success. * Fixed: using the same name for equal object types (nvsg file format) * Fixed: VRML long line parsing * Fixed: corrected handling scale factors in FrustumCullTraverser * Fixed: NVSGLoader crash after loading caused by writing wrong default StateSet * Fixed: Picking worked wrong under some special circumstances Changes/Improvements in NVSG v1.0.11.1 -------------------------------------- * Fixed: Trafo - fixes center handling on getMatrix/getInverse; * Fixed: Vecnf - normalizing only on non-null Vecnf; * Fixed: GeoNode::getStateSets: did not copy anything to out vector * Fixed: Switch::getActive: crash when copying to vector of capacity 0 Changes/Improvements in NVSG v1.0.11.0 -------------------------------------- * Introduced Scene::overrideStateSet. * Renamed globalStates to defaultStateSet. * Added get/setTextureSizeLimits() to RenderTraverser and GLTraverser. (Use linear/bilinear/trilinear filter on scaling a Texture.) * TextureAttributeItem: can accept a "no Texture" attribute * GLTraverser: modified so it can handle an empty TextureAttributeItem * Reintroduced explicit Mat44f operator*( const Mat44f &m0, const Mat44f &m1 ), because it is slightly more efficient than the template-based version. * Changed WRLLoader from using FramedAnimation to using LinearInterpolatedAnimation. * Changed app traverser handling: no longer use dirty flags. One needs to derive from our AppTraverser class so highlighting, animation, camera clipping planes, etc work as desired. RenderArea uses exactly one AppTraverser per frame. * Added transparent texture support (textures with alpha channel) * Added owner handling of texture attribute items * Changed texture types: removed all the unsupported types. Now we only support TT_DIFFUSE and TT_TRANSPARENT * Changed the LOD level handling to make it conform to other scene graphs. * Introduced Device Abstraction Link to link device dependent data to device independent data * Fixed: GL texture cleanup * Fixed: RenderArea::renderScene. Must not override ViewState's camera from an invalid CameraManipulator * Fixed: Crash occurs when running out of pbuffers. * Fixed: SimpleCamera::getOrientation() * Fixed: Removed incorrect conversion of LUMINANCE textures to RGB. * Fixed: Decomposing of non-rotating Quatf; wrong test in NVBLoader. * Fixed: Correctly attach an already loaded texture to TextureAttributeItem. * Fixed: Use Quatf-lerping (instead of Vec4f-lerping) when making OrientationInterpolators compatible (in terms of key/value size). * Fixed: Removed wrong cgfx-related statement from StateSet::containsTransparentMaterial. * Fixed: Quatf.h: need to normalize cross product in constructor. * Fixed: LOD-Reference problem. Changes/Improvements in NVSG v1.0.11.0 beta 1.4 ----------------------------------------------- * Added API to GeoSet and Topologies to optionally append/replace data at a specified position * Introduced optional configuration of the NVSG runtime library to run safe in a multithreaded environment. Use nvsgInitialize(true) for 'runInMultithreadedEnvironment'. * Restricted the use of endEdit as follows: * One must not call endEdit with a pointer to const. Fortunately, the compiler will complain about this. * One must not access the pointer to a non-const passed to endEdit after the endEdit call. * Removed glXX overloads that generated the 'bypassing gl caching' compiler warning. * made StateSet::getAttribute less defensive to avoid hidden programmer's errors * Introduced new DrawableUnifyTraverser * CuboidViewer: disable culling because we don't have a custom CullTraverser. * Changed interface of Triangles and Quads: from const vector & getFaces() const to const Face3/4 * getFaces() const * Added new function in Group: replaceChild() * Changed interface or Mat33f::decompose() and Mat44f::decompose() to determine, among other things, a single Quaternion instead of three rotation angles. * New optimizing traverser: GeoNodeUnifyTraverser. * New optimizing traverser: TransformUnifyTraverser. * Sample Viewer: Added some user interface for: * DrawableUnifyTraverser * TransformUnifyTraverser * GeoNodeUnifyTraverser * Correctly refresh the material editor after applying the state set unify traverser. * Fixed: FSAA was turned off when switching to another camera manipulator * Fixed: "View-All-Undo" forgets rotation point. * Fixed: "Set Home Position" forgets rotation point * Fixed: Scene can only be created as a constant object * Fixed: ViewState can only be created as a constant object. * Fixed management of ownerships * Default cpy ctor of Drawables and StateAttributes copied owners (or parents), which was wrong. The fix was to implement their own cpy ctors. * Cpy ctor of GeoNode and StateSet did not handle ownership of containing geometries with respect to StateAttributes. * Fixed Plane3f * Fixed ParallelCamera * Fixed some deadlocks after enabling locking for Scene and ViewState, which previously was off by mistake. * Fixed StateSet::removeAttribute: call endEdit() _before_ removeRef() ! * Fixed WRLLoader - animation handling (beginEdit/endEdit) on Viewpoint. * Fixed WRLLoader - resolved problems on loading more than one file with the same loader incarnation. * Fixed: corrected logic in Vecnf::operator== and Matnnf::operator==. * Fix on WRLLoader: removed incorrect removeRef() on previously created scene. * Fixed StateSetUnifying: * GeoNode::replaceStateSet: added remove/addOwner * StateSet: corrected operator== * StateSetUnifyTraverser: use GeoNode::replaceStateSet, added some assertions. * Fix in NVBLoader: corrected wrong usage of getChild() * Fixed Copy Constructor of FramedAnimation. Changes/Improvements in NVSG v1.0.11.0 beta 1.3 ----------------------------------------------- * Changed management of parent/child relationship for Group/Node * Introduced new API GeoNode::replaceStateSet * Made initialization of global/static API data more robust with regard to concurrent usage * Completely removed the NVIDIA GL API caching related code * Use #pragma init_seg only on Windows platforms. The gcc, for example, is not aware of this #pragma. * Recovered independence of RCObject_AutoPtr class from NVSG's locking strategy * Fixed memory layout for NBF structures after the NBFTransform::center member has been added * Changed packing of NBF structures to 1 to force compile-time asserts to fire on inconsistencies * Ported samples to WindowsXP-AMD64 * Corrected cleanup after file load. * Added validation to getBoundingSphere(). * Removed Camera::zoomToNode(), which can be replaced by Camera::zoom(pNode->getBoundingSphere). * Corrected handling of FaceAttribute. * Introduced nvmath::Sphere3f. Made nvmath::BoundingSphere inherit from Sphere3f. Made BoundingSphere a purely internal object. * Removed redundant member functions Camera::setTranslation(). Was identical to Camera::setPosition(). * Renamed RenderMode to FaceAttribute. * BugFix in CullCode tree constructions: CC_IN has to put a CC_IN element in the CullCode tree instead of a NULL. * Stripped RenderMode down; Moved line and point informations to RenderTraverser. * Removed polygon mode from RenderMode. This is a state that's now globally handled by the RenderTraverser. * Reworked Traverser/ConstTraverser and on-object creation. * Introduced template Matnnf as a public base of Mat33f and Mat44f. * API-Redesign on Vec2f, Vec3f, Vec4f. * Adapt samples to new NVSG object and traverser model. * ModelViewTraverser: minor fix on Camera handling. * API-Redesign on Traversers: removed ConstTraverser. * Added missing getOrientation() methods fro cameras, lights * Added missing access methods for parent/owner handling. (StateSet, StateAttributes, Nodes) * Added Trafo member for positioning light sources. Changed the interface slightly and added missing access methods. * Added version tagging and cleaned up project settings Changes/Improvements in NVSG v1.0.11.0 beta 1.2 ----------------------------------------------- * Put all nvsg global data into a custom segment .nvsg and use a #pragma init_seg to force manual initialization of this data. An application achieves initialization/termination of that data through the new API nvsg::nvsgInitialize and nvsg::nvsgTerminate. With this we can avoid these annoying dumps of pseudo memory leaks we otherwise get when mfc terminates before nvsg terminates. * Added getNumberOfParents() for groups * Made GLTraverser members m_effect and m_resetStateAttribute accessible for derived classes * Disabled GLCall Cache * Added convenience direction and orientation access methods for lights * Added Quatf * Vec3f operator * Extended PlugIn interface with file filter support * Add getOrientation() in camera classes * Added getOwner for StateSets * Added replaceStateSet() in GeoNodes Changes/Improvements in NVSG v1.0.11.0 beta 1.1 ----------------------------------------------- * Added app traverser cascading support. * Added support for multistage culling. * Added new class nvmath::Plane3f. * Added setIdentity to Trafo, Transform, and AnimatedTransform. * Added support of rotation center to Transform and Trafo; adjusted Mat44f. * Added support of borderColor, min/magFilter, and wrapMode on TextureAttributeItem * Quatf: added new constructor: rotation from one Vec3f to an other. * nvsg.dll: removed all dependencies into MFC dlls * New optimizing traverser: IdentityToGroupTraverser. * Introduced first version of StateSetUnifyTraverser. * Enforce 8-byte alignment for NBF data * Replaced isEquivalent() from CgFx, Material, RenderMode, StateAttribute, and TextureAttribute; Introduced (global) ar eOfSameType() instead. * Some function renamings for clarification: Trafo, Transform: getTrafo() -> getMatrix() Camera, JitterCamera, SimpleCamera, StereoCamera: getTrafo() -> getWorldToViewMatrix() getInverse() -> getViewToWorldMatrix() LightSource: getTrafo() -> getTransformationMatrix() SkinnedTriangles: getTrafo() -> getMatrix() setTrafo() -> setMatrix() * Changed API: TextureAttributeItem::getfileName() -> getFileName() TextureAttributeItem::setfileName() -> setFileName() * Clamping SFColor elements to [0.0f,1.0f]. * Made Group an instantiable class. * Added OcclusionCullTraverser. * Changed our field of view handling from half the vertical viewing angle to the full vertical viewing angle. * Introduced object reuse to WRLLoader. * Changed interface of Path from index to pointer based. * Fixed some UNICODE related string problems * Fixed: crash on empty StateSet * Fixed: saver did not consider color dimension for primary and secondary colors * Fixed: corrected loading of AnimatedTriangles/AnimatedQuads. * Fixed: correct initialization of animation frame in AnimatedTransform. * Fixed: correctly interpreting a LOD and a Switch. * Fixed: WRLLoader: memory leak on empty Group, LOD, and Switch. * Fixed: GLTraverser handles up to only eight lights. * Fixed: memory leak on reading a Transform without any children. * Fixed: CullData: BugFix on balancing a CullData tree. * Fixed: The root of a vrml file is a Switch, not a Transform!. * Fixed: removed wrong removeRef() in interpretSFNode upon encountering an Interpolator. * Fixed: CullTraverser::handleGroup() must use the pointer to the children in the nodeCullMap, not the pointer to the Group!. * Fix memory leak in NVSGLoader: call removeRef() of objects upon encountering objects with the same name. Changes/Improvements in NVSG v1.0.10.0 -------------------------------------- * This is the first official release of the NVSGSDK * Added several new tutorials * Added support for interpolated animation * Added HDR support * Added support for texture wrap modes and texture border color * Made NVSG aware of non-CgFX aware hardware * Improved older tutorials * Improved culling support * API has been changed to make the interface more clear and consistent * Traverser, Object, and NBF Saver handling have been changed to make it easier to integrate custom objects * Sample Viewer now handles camera window size in cluster mode * Cluster tutorials now use the latest camera interface * Changed namespace handling to resolve problems (using directive) * Fixed some VRML problems (degenerated triangles, quads, infinite loop ...) * Fixed Walk/Fly manipulator problem (vertical sync on) * Fixed the FileSave dialog in the Sample Viewer application * Fixed wrong storage requirements in Switch/LOD * Fixed transform node traversal * Fixed a problem in the OIT code * Fixed corrupted Clip planes (non auto clip planes + view all) * Fixed Switch: setActive and setInactive * Fixed transparency bug by drawing affected objects on first (opaque) pass only * Fixed IntersecTraverser problems (Picking/Selecting) * Fixed CondenseTraverser bug (produced degenerated faces) * Fixed memory leak in NVSGLoader Changes/Improvements in NVSG v0.10 beta 1.0 ------------------------------------------- * Quads and QuadStrips have been added as new primitives * Implemented a new traverser that triangulates Quads to Triangles and QuadStrips to TriStrips * Implemented a traverser to convert a framed animation into an interpolated animation * Implemented a flight camera manipulator allowing for 'fly throughs' * Implemented support for NBF version 1.0; discontinued support for older NBF versions * Added a new callback approach for improved error handling in loader/saver plug-ins * Exception safeness has been improved for loader plug-ins * Fixed incorrect Switch and LOD node handling in NBF saver plug-in * Fixed crash inside NBF loader plug-in, which occurred after an effect failed to load * Fixed saving of NBF and NVSG files while FSAA or stereo is enabled * Improved Picking * Minor bug fixes and improvements Changes/Improvements in NVSG v0.10 alpha 1.1 ------------------------------------------- * Fixed missing invalidation of the animation frame cache for animated light sources and skinned animations * Revised some of the supplied media files Changes/Improvements in NVSG v0.10 alpha 1.0 ------------------------------------------- * Introduced support of the new NVSG Binary File Format (NBF) * Added support for interpolated animations * Improved camera manipulator interface * Implemented a walk manipulator allowing for 'walk throughs' * Changed some interfaces such as GeoSet, Animation, and Scene. The new versions are incompatible with prior versions, but this affects only use of the older loader and saver plug-ins, and will be detected automatically through version control. * Minor bug fixes and improvements Changes/Improvements in NVSG v0.9 alpha 1.6 ------------------------------------------- * Multithread safeness at the object level * Moved NVSG runtime into a DLL, eliminating static linking * Added triangle strip generator * Added support for the latest Cg/CgFX 1.2 runtime * Changed render area handling to be more window-manager independent (see tutorials) * Fixed upside down bug. In some cases you needed to recreate your NVSG files! * Fixed culling bug. In some cases we culled too much geometry. * Geometry cache strategies are now switchable at runtime (VBO, DL, uncached) * Improved the animation tutorial (thread synchronization) * Solved naming conflicts in the Plug-In interface * Improved the feature set of the Cluster Viewer (FSAA, caching, render modes, ...) * Several minor internal bug fixes and improvements Changes/Improvements in NVSG v0.9 alpha 1.5 ------------------------------------------- * Cache improvements * Added Bounding box highlighting (selection/viewing mode via ESC key) * Added OpenGL Server Objects (Multiview) * Condensed the traverser interface * Improved cluster viewer (FSAA, rendermodes, syncing, ....) * DualView bug fix * Added luminant dds texture support * Fixed sync bug: shaded/nonshaded objects * Fixed problem with shaders on textured objects * Cube map fix * Fixed view state handling (nvsg load problem) * Fixed frustum culling in cluster mode * Fixed rotation point bug * Several minor bug fixes Changes/Improvements in NVSG v0.9 alpha 1.4 ------------------------------------------- * Automated the build process * Setup Changes/Improvements in NVSG v0.9 alpha 1.3 ------------------------------------------- * VRML Loader (We do not support every VRML feature yet) * Latest CgfX API support * Multitexturing * Cluster stereo support * Optimize traverser * TriStrip support * Improved smooth traverser * Improved material handling (Editor) * Several bug fixes Features in NVSG v0.10 alpha 1.1: -------------------------------- * Platform: Windows32 / OpenGL * CgFX v1.2 integration * DLL-Interface for file load/save - user can simply write and add own file loaders and savers * File importer * NBF (NVSG binary file format v0.1.0) * NVB (exported via plug-in from 3D Studio Max) * NVSG (ASCII) * WRL (VRML 2.0) * File Exporter * NBF (NVSG binary file format v0.1.0) * NVSG (ASCII) * Textures * File formats * DDS * JPG * TGA * BMP * TIF * RGB * GIF * PNG * 128 bit DDS * Textures can have any rectangle size format (NVIDIA extension) * Multitexture support * Animation * Camera animation * Skinn/Bone animation * Object animation (e.g. Lights) * Material-Editor: map CgFX on Geometry, Drag & Drop (DemoViewer) * Software FSAA implemented – various implementations: * Accumulation buffer * Read pixels * Pbuffers * Transparency – various implementations: * Stippled * Blended transparency (dual-pass) * Order independent transparency – various implementations: * PBuffers * Textures * Rendermodes * Points * Wireframe * Shaded * Textured * Effected * LOD Handling * Stereo support * Picking / Selecting (Ray Intersection) * Tree searching * Cluster aware * Tree locking (single writer / multiple readers) * SDK documentation for the users – currently our developer documentation but tech writers will start improving this * Supported geometry types * Indexed triangle sets * Camera manipulators * Trackball manipulator * Cameras * Orthographic camera * Perspective camera * Stereo camera * “Demo Scene Viewer” that shows the features we are currently supporting * Tutorials * Simple Scene Viewer * Simple framelock viewer / server for clusters * Simple loading tutorial * Simple animation tutorial * Frustum culling * Different render paths * VBO * Displaylists * Vertex Array Have fun!