The SceniX scene management engine is an established solution in its seventh release as a cross-platform, object-oriented programming solution for software developers to quickly create interactive OpenGL applications having the highest degree of interactive performance and realism. Unlike most scene graphs, SceniX was designed around shader usage and renderer independence for applications requiring high image quality and the flexibility to share shaders via CgFX. SceniX also includes mature support for interactive ray tracing using OptiX, and the RTFx ray tracing effect interchange format.

The SceniX engine quietly powers many of the most demanding 3D graphics applications in use today, and is freely available for incorporation within your OpenGL and/or ray tracing applications on either Windows or Linux.

Images courtesy of Realtime Technology AG (RTT) and Autodesk.

SceniX 7.3 Now Available

Download

Changes/Improvements in SceniX v7.3.9.3.0

  • WRLLoader added support of ccw flag in IndexedFaceSet.
  • Optimized CombineTraverser.
  • Improved accuracy of boundingSphere calculation of two spheres.
  • Corrected copy behaviour of Primitive nodes with IndexSets.
  • Corrected normals initialization and normalization inside the WRLLoader for primitives with primitive restart index.
  • Fixed get/setStackSize() assertions and updated their documentation.
  • Updated OptiX to verison 2.5.1. (Please see the "Known Issues" above.)
  • Added support for GL_EXT_transform_feedback, and renamed current wrappers to explicitly indicate it's using NV_transform_feedback.
  • Fixed OBJLoader crash on faces with and without texcoord indices inside a current group. (Not actually supporting that, just not crashing.)
  • Changed OBJLoader to always load provided texture coordinates although an assigned material didn't need them.
  • Fixed a user clip plane rendering corruption when using CgFX shaders.
  • Added support for GL_EXT_texture_filter_anisotropic into TextureAttributeItem with (set|get)MaxAnisotropy()
  • FLTLoader CgFX shader profile update to modern capabilities.
  • Replacing the low end arbvp1 and arbfp1 profiles with "latest".
  • Cg update to version 3.1.0012.
  • Fixed loading of Cg shaders inside OpenFlight files .
  • Added RendererGLFSQ interfaces which allow to set a sampler by OpenGL texture ID.
  • (Allows easier handling of RTBufferGLTexture texture IDs.)
  • Matched the color calculations inside the built-in ray tracing programs more to the OpenGL specs. Updated "Using RTFx.pdf".
  • Added RTcontext wrapper functions to support missing OptiX debugging features.
  • Fixed Scene::setBackImage() assignment.
  • Added RenderOption "Light Model Two Side".
  • Example usage inside the Viewer "View" menu.
  • Corrected the feature_shape custom object example.
  • Made the Trafo::getInverse() implementation much more robust.
  • Inversion was failing for very small scaled matrices.
  • Added sceneAmbientColor as SceniX-provided variable inside built-in ray tracing programs to allow matching the OpenGL rendering.
  • Fixed NVSG saver and loader parameter names (front|back)IndexOfRefraction
  • Added Texture2DMultisample[Array] support to RenderTargetGLFBO.
  • Cg 3.1 introduced sampler2DMS[Array] support.
  • Added GL_ARB_debug_output support.
  • Added geometry shader test to SXT test suite.
  • Added a geometry shader .cgfx example to the media/effects library.
  • Added support for 64-bit OptiX programs.
  • Pre-requisite for higher out-of GPU memory paging amounts.
  • PTX bitness must match the application bitness now!
  • Added GLUTMinimal_HUD example to the samples.
  • Corrected vertex and texture coordinate generation inside the DefaultScene used in the QtAmbientOcclusion, QtForwardShadowMapping, and QtProfileComonShadow examples.
  • Added support for VRML built-in objects Cone, Cylinder, and Sphere to WRLLoader with model-space size dependent subdivisions.
  • Changed Box to subdivide individual faces as well to capture per vertex lighting better.
  • Subdivision settings can be controlled with an environment variable
  • Defaults are NVSG_WRL_SUBDIVISIONS = 12 36 90 2 4 8, which mean:
    • Minimum, default at radius 1.0, and maximum subdivisions for a full circle of a sphere, cylinder, cone tessellation depending on their radii and heights.
    • Minimum, default at size 1.0, and maximum subdivisions for a Box depending on its size vector.
  • Fixed a crash on removing a child from a Switch node.
  • Added bail-out in RayIntersectTraverser when encountering a singular world to model transform on the transform stack which can't be picked.
  • Corrected NBFSaver to store ClipPlanes correctly.
  • Fixed an OpenGL lighting cache state mismatch.
  • Implemented full support for OpenFlight Degree Of Freedom (DOF) node into
  • FLTLoader to support DOF local coordinate system transformations.
  • Fixed streaming textures when using a Switch node.
  • Lifted some overlay agressive assertions in the nvmath library.
  • Fixed a texture release issue with observers when destroing objects.
  • Fixed an OpenGL blend state cache mismatch when switching between CgFX and the fixed function pipeline.
  • Fixed clearStateSets() crash when removing last StateSet and Drawable.
  • Performance improvements of OpenGL buffer resource allocations.
  • Fixed storing of VertexBuffers of an AnimatedVertexAttributeSet in *.nvsg
  • Memory requirement optimizations.

Changes/Improvements in SceniX v7.2.9.2.0

  • Improved render performance.
  • A SceniX Viewer crash on line picking after processing the CombineTraverser has been fixed.
  • The UnifyTraverser, when applied only to vertices, did not correctly report if geometry actually has changed. This has been fixed.
  • A viewer crash on a default StateSet traversal has been fixed.
  • Normals generation applied to a Drawable did not consider multi-referenced vertex attributes. This has been fixed.
  • If a transform node was placed under a switch node, the transform was not applied during ray tracing resulting in wrong-positioned geometry. This has been fixed.
  • The ray tracer issued an assertion failure when processing unsupported primitive types. This has been fixed.
  • A LightingAttribute which disables lighting corrupted the rendering output for subsequent geometries. This has been fixed.
  • Fixed inconsistent primitive index returned by the RayIntersectTraverser.
  • Fixed combining of line primitives.
  • The VRML importer interpreted animations not starting at time 0 incorrectly. This has been fixed.
  • Fixed the VRML Box size vector conversion to vertex coordinates. Axis aligned coordinate values needed to be half of the size extends.
  • The time required for loading models into the viewer has been substantially improved.
  • Fixed an issue with MapElement::pickMap returning incorrect results.
  • Fixed an issue with MapList::pickMap returning a reversed order of maps.
  • Fixed an issue with the RayIntersectTraverser returning a wrong intersection distance when transforms contained scaling.
  • Fixed an occasional crash on tangent space calculation that was caused by using the wrong attribute index for tangent coordinate lookup.
  • Polygon offset was not working for filled polygons. This has been fixed.
  • Occasional crashes while optimizing a loaded model have been fixed.
  • Several corruptions after optimizing have been fixed.
  • Fixed an issue with the loadTextureHost convenience function using a wrong search path.
  • Face culling was not correctly enabled when applying a FaceAttribute. This has been fixed.
  • Surface material colors randomly changed instead of using a default material if no StateSet was explicitly applied to the surface. This has been fixed.
  • An issue with missing polygons after vertex animation when using display lists has been fixed.
  • Constructing an NxN matrix from an MxM matrix, with N>M, left matrix entries uninitialized. This has been fixed.
  • Reduced memory footprint of loaded scenes.
  • The NVSG importer failed to read quoted object names containing spaces. This has been fixed.
  • Improved debug runtime performance with memory leak detection enabled.
  • COLLADA loader generated CgFX shaders' spotlight cutoff angle corrected inside the rasterizer.
  • COLLADA loader profile_COMMON.rtfx corrected to apply the spotlight exponent inside the ray tracer.
  • Added QtForwardShadowMapping example demonstrating multi-pass SceneRenderer implementation with a single light, casting a shadow into a constructed scene.
  • Added QtProfileCommonShadow example demonstrating multi-pass SceneRenderer implementation with multiple colored lights using render to Texture2DArray layers, CgFX shader replacement inside a scene based on the COLLADA profile_COMMON material definition, migrating existing material parameters, casting shadows into a loaded scene.
  • Fixed a corruption with size culling enabled. Scene objects that covered more screen space units than specified by the size factor, were unexpectedly culled away.

Changes/Improvements in SceniX v7.1.9.1.0

  • Fixed an unintentional disconnection of the vieport camera after switching to stereoscopic diplay mode. The defect was reproducible with the SceniX Viewer.
  • Fixed VRML-import of spot lights. The cutoff angle was inadvertently scaled to half of the specified angle.
  • Fixed an application crash root-caused by a GL state stack corruption. The crash was reproducible with the feature_buffer test.
  • Fixed a display corruption root-caused by emissive and specular colors mixed up by the internal render framework.
  • Fixed a corruption with combining fixed functionality and CgFX passes. The GL state set by the CgFX pass was not reset prior to the fixed functionality render pass.
  • Fixed a corruption with the sample_intersection test caused by non-matching z-buffer depths used between first and second render pass.
  • Added a new MFC-based sample (MFCMinimal) to showcase intergration with an MFC application framework.
  • Fix size of temporary debug value arrays for RTVariableNxMT<N,M,T>::set() and ::get() functions. Previous code only allocated N instead of N*M data elements which resulted in memory corruption and crashes in debug mode.
  • More performance optimizations due to elimination of CPU overhead.
  • Fixed COLLADA import of texture images specified by a network server path(e.g. \\server\img.png).
  • Fixed a flaw inside the DAELoader texture attribute cache and the texture image cache which led to inconsistencies with texture target assignments, which in turn resulted in image upload failures.
  • Fixed an issue with texture file names in an CgFxEffect not being correctly reset when a new texture not created from a file but from memory was re-assigned to the CgFxEffect.
  • Fixed a crash on rendering after an LOD node was removed from the scene tree.
  • Culling operations for the MatrixCamera have been accelerated by many times over.
  • The shader builder used for OpenFlight import did not correctly recognize uniforms named world, worldI, worldT, and worldIT, which in turn resultedin display corruptions if these particular names were used.
  • MapLists were not considered for rendering by the SceneRenderer API first introduced with SceniX 7. This has been fixed now.
  • Added support for the CG_SAMPLERBUF sampler type. Samplers of that particular type were not considered a sampler by the SceniX API before.
  • The ShadowCasting property of a LightSource was not considered by the ray tracer. This has been fixed now.
  • Converting primitives of type PRIMITIVE_TRIANGLES to PRIMITIVE_TRIANGLE_STRIP has been accelerated by an order of magnitude.
  • Re-enabled saving of HDR textures to a file. This was inadvertently disabled by the previous release.
  • Ray tracing performance has been distinctly improved through a more effective use of OpenGL interoperability.
  • Fixed a failing validation of a PointSpriteEnable state assignment inside a CgFX. The GL_ARB_point_sprite was mistakenly indicated as not availableinside the SceniX framework.
  • For the SceniX Linux packages the help files are provided as html again. The previous version just shipped with compiled help.

SceniX v7 marks another stable release of the NVIDIA Scene Management Engine with these new features:

  • Revised handling of SceniX C++ core objects to unify instantiation, access control, and automated lifetime control.
  • Introduced new Renderer framework to support renderer pipelines for multi-pass rendering and post processing.
  • Simplifies integration with application frameworks and provides utility classes for Qt and wxWidgets.
  • Completely revised Qt-based cross-platform SceniX Viewer showcases cross-renderer capabilities of SceniX.
  • Incorporates an OpenGL-based real time renderer and an NVIDIA OptiX based ray tracer.
  • The SceniX render processing framework has been greatly improved to minimize CPU overhead. This goes along with a remarkable performance improvement of the built-in real time renderer.
  • New Primitive class introduced to add support for more recent primitive types in a more generic way.
  • Per-object TraversalMask introduced to support conditional traversal of individual tree objects. TraversalMasks affect nodes and geometries.
  • New generic Buffer class introduced to store vertex and index data. GL-specific variants supplied to allow for efficient streaming buffer support in conjunction with the VertexAttributeSet and Primitive core classes.

Version 6 enables existing and new SceniX applications to now quickly take advantage of:

  • Tessellation programs for dynamically updating surfaces on DirectX 11compatible hardware such as NVIDIA's new "Fermi" GPU architecture
  • Cg Runtime Version 3 support for the latest in shading possibilities and Tessellation.
  • New PrimitiveSet classes for Bezier Patches, QuadPatches, and TriPatches with Tessellation support
  • Traversers for converting between Triangles & Quads to QuadPatches4x4 & TriPatches4
  • Improved Interactive Ray Tracing, now using OptiX 2.1 with optimizations for Fermi class GPUs
  • Continued improvements in performance, flexibility and fidelity

New features introduced with SceniX 5:

  • Faster Performance - twice as many frames per second in many cases than version 4
  • Custom Culling - based on screen size
  • New Samples - for using PhysX, HDR processing, and wxWidgets with SceniX
  • Cg 2.2.001* support - enabling the latest rendering capabilities, performance gains, and optimal profiles for the latest NVIDIA GPUs
  • .3DS format support
  • Distributed GPU Rendering - enabling scene size to scale across Quadro Plex GPUs
  • MetaSL support - for leveraging shaders created within mental mill®.
  • 10-bit/component color support - for superior image quality on compatible hardware
  • Stencil Buffer support - enabling stencil buffer operations to occur per drawable object

SceniX has proven to be a reliable underpinning for applications serving markets needing to analyze 3D data, make decisions, and convey design in real-time, such as Styling, Visualization, Retail, and Broadcast Graphics. The engine is extensively documented and provides a comprehensive set of classes that are easily combined and extended to create custom, GPU-centric graphics applications. SceniX also includes a sample viewer application and numerous tutorials, with source code, to learn how to use SceniX features quickly and effectively. A complete list of SceniX capabilities and system requirements is available here.

SDK Sample Content

Within NVIDIA SceniX you will find numerous sample applications, including the SceniX Viewer which demonstrates nearly all the possibilities of the SDK. SceniX capabilities can be examined within the SceniX Viewer by exploring scenes imported from COLLADA, OBJ, VRML, 3DS or OpenFlight formats. Also included are samples for interactive ray tracing and integrating physics, audio, stereo, skinning, animation playback, frame-based rendering, and cluster rendering.

Subscribe to our Developer RSS feed or follow nvidiadeveloper on Twitter for the latest news about OptiX or other applicaiton acceleration engines.