VGFXOpenGL

 

 

.: VGFXOpenGL v.1.0 - Specification (Updated: 06.10.2009) :.
- Target Platforms
  • Windows XP
  • Windows Vista
  • Windows 7



- Hardware Acceleration
  • Hardware accelerated via OpenGL
  • Based on OpenGL 1.X (fixed function pipeline)
  • Requires 3D cards with NVidia or ATI/AMD chip
  • Supports all display resolutions
  • Allows selection of different display refresh rates (Hz)
  • Supports 32 bit color, 24 bit depth and 8 bit stencil buffers
  • Double buffering for color buffer
OpenGL
- Texturing
  • Bilinear, bilinear mipmapped and trilinear mipmapped texture filtering
  • 2x, 4x, 8x and 16x anisotropic texture filtering
  • Multitexturing using texture combiner like addition, subtraction and multiplication
  • Smart and easy-to-handle texture system which avoids reloading of texture data
  • Texture linking/unlinking to/from different 3D scenes
  • Offscreen rendering (render-to-texture) using framebuffer objects (FBO) capable
    to perform mipmapping, multisampling and fast blitting of FBO attachments
  • Support for packed depth-stencil FBO texture attachments (shared buffer)
  • Support for non-power-of-two (NPOT) framebuffer and texture dimensions
  • Support for pBuffers
  • Hardware accelerated mipmap generation
  • Environment/sphere mapping
  • Support for S3 Texture Compression (S3TC) methods DXT1, DXT3 and DXT5
  • Compressed texture files (e.g. JPG) can be uncompressed to disk in order
    to make following application starts faster
  • DOT3 bump mapping using normal maps, normalization cube maps and TBN matrices
    to convert light vectors from world to tangent space. To generate the normal maps
    from common RGB images, the "NVidia Normal Map Filter" plug-in for Adobe Photoshop
    or the "Height Field to Normal Map" plug-in for Paint.NET could be used

NVidia Normal Map Filter



- Scene Graph and Object Management
  • Advanced object system which consists of a linear and a hierarchical (tree based)
    scene and object representation
  • The hierarchical representation allows fast recursive view frustum culling and
    furnishs the base for rapid rendering and quick collision detection
  • Object clipping against the view frustum by clipping each object's oriented bounding box
    (OBB) generated by a fast gaussian point distribution algorithm. The OBB allows much more
    accurate clipping because it fits better to the source object than an axis-aligned bounding
    box (AABB). Each object holds an OBB which is the merge result of the children OBBs

    If a node's OBB is outside the view frustum there is no need to perform further culling
    tests on the children nodes. In this case the parent node and its complete subtree
    is not further processed.

    If an OBB was tested against one of the six view frustum planes and the result indicates
    that the OBB lies on the positive side, the plane is deactivated for all the descendants
    since they must also lie on the positive side due to the hierarchical representation.
    This reduces the amount of OBB vs frustum plane tests and increases performance
  • Light sources can be defined in the world to illuminate only a subtree of the scene graph
    by placing the light sources at desired positions in the tree. Running the application in the
    "developer mode" enables a (WinAPI based) tree view window besides the main window
    which represents the scene graph and includes icons for geometric data, cameras, target
    spot lights, point lights, directional lights, grouping dummy objects and particle systems.
    Also informations about the render state (RS) and the collision handling (CH) are displayed
Scene Graph Example
  • Each object holds a local transformation matrix which represents its own local
    position/rotation/scale and a world transformation matrix which represents its
    position/rotation/scale in the world. In combination with the scene graph
    manager this makes it possible to move/rotate/scale/delete whole worlds
    and object groups by just changing the values of a single matrix and
    calling the scene graph manager to recursively update the subtree.

    This is automatically done by the smart scene graph manager who reduces the update
    time for multiple changed objects by determining the minimal object group that has to
    be updated. For example if geometric data has changed in a subtree of a parent node
    but also geometric data of the parent has changed it would be a waste of performance
    to first update the modified nodes in the subtree and then the parent node
  • The smart scene graph manager is also responsible for receiving and evaluating the
    current animation state for each object that is updated when recursively going
    down the scene tree
  • Supporting the Vertex Buffer Objects (VBO) to store vertex, texture, normal and
    face descriptor data in fast video memory. If VBOs are not supported the
    old vertex arrays will be used
  • Smart and easy object loading and handling
  • Fast front-to-back z-sorting on opaque objects with quicksort to exploit the depth buffer
  • Easy object linking/unlinking to/from different unlimited scenes
  • Easy state changes of objects during runtime (e.g. collision relevance, visibility)
  • Recursive cloning of objects with only one function call
  • Easy integration of special render functions (e.g. particle systems) into the scene graph
  • Unlimited LOD object system reduces polygon count of faraway objects.
    To generate the low polygon meshes NVidia's MeLODy tool is used which can
    simplify objects/surfaces with color and texture using Quadric Error Metrics
    based on Michael Garlands paper. MeLODy also creates high quality normal
    maps that make a low-poly model look like a high-poly model
MeLODy MeLODy



- Intersection Testing
  • The hierarchical (tree based) scene representation allows fast recursive intersection tests
  • Further each object owns a seperate OBB-tree which is automatically and recursively
    generated during the loading process. Given a triangular mesh with corresponding
    oriented bounding box, the mesh can be split into two submeshes. The algorithm
    splits the mesh by a plane orthogonal to the longest axis of the OBB. This splitting
    plane is calculated by using the median value of the projections of each face center
    onto the longest axis as plane-center and the longest axis as plane-normal.
    The faces are then partitioned based on the side on which their centers lie
OBB Tree - Recursion Level 0 OBB Tree - Recursion Level 1 OBB Tree - Recursion Level 2 OBB Tree - Recursion Level 3 OBB Tree - Recursion Level 4 OBB Tree - Recursion Level 5
  • The final OBB-tree is among other things used to reduce the time required to test if a gun
    shot (line segment) intersects a triangle of an enemie mesh with let's say 10.000 triangles.
    If the gun shot intersects a root node of an OBB-tree he is further tested recursively
    against the descendants in the OBB-tree until a test fails, a leaf node is reached
    or a threshold (maximum tree depth/minimum triangles per leaf node) is exceeded.
    So it is not necessary to test the gun shot for intersection against all of the 10k
    triangles which would dramatically decrease performance. Instead the line segment
    is only tested against a few triangles contained in some leaf nodes of the OBB-tree
Wireframe Wireframe Wireframe Wireframe Wireframe Wireframe
  • For collision detection purposes it is possible to make intersection tests between moving
    OBBs, OBB-trees and triangles. Again the hierarchical (tree based) scene representation
    allows fast recursive collision tests. Two OBB-trees are tested for intersection using
    double recursion. Then (optional) intersection tests between the triangles in the
    intersecting leaf nodes of both OBB-trees can be performed
Intersection Statistic
  • All tests can also be done with the terrain system and its hierarchical representation



- Terrain System
  • Advanced heightmap terrain generation system based on the paper Real-Time Generation
    of Continuous Levels of Detail for Height Fields
    by Stefan Roettger. A very powerful
    terrain rendering approach which was also used in commercial game titles like
    the blockbuster Aquanox by Massive Development
  • Allows rendering of very large terrains (e.g. 1.050.625 vertices or 2.097.152 triangles) at
    very high frame rates with great surface approximation also on low-cost graphic cards
LOD rendered terrain LOD rendered terrain
  • Static or dynamic terrain lighting
  • 4x Multitexturing with detail textures
  • View frustum culling of the quadtree via OBB clipping
  • Smooth geomorphing eliminates popping between LODs
  • Unlimited spherical and cubic volumetric fog regions. Overlapping fog regions possible
    through additive fog coordinate calculation. Volumetric fog regions are calculated
    automatically for simple spherical volumes (with core and fade-out-hull) as well
    as for more complex cubic volumes (with cubic core and cubic fade-out-hull)



- Fog Simulation
  • Region aligned volumetric fog for Vertex Arrays and VBO. More informations about
    volumetric fog in the section "Terrain System"
  • Fragment depth fog for more realistic atmospheres
Volumetric Fog Volumetric Fog Volumetric Fog Volumetric Fog Volumetric Fog
Volumetric Fog Volumetric Fog Volumetric Fog Volumetric Fog Volumetric Fog



- Animation Engine
  • Character bone animations using object hierarchies
  • Linear position interpolation
  • Smooth hermite spline position interpolation with full support of the parameters bias,
    tension and continuity (full compatible with the TCB Position controller available in
    3dsmax/gmax and the 3DS format)
  • Linear rotation interpolation using quaternion math
  • Smooth bezier spline rotation interpolation using quaternion math with full
    support of the parameters bias, tension and continuity (full compatible with
    the TCB Rotation controller available in 3dsmax/gmax and the 3DS format)



- Particle System
  • Comprehensive and easy to handle particle system
  • Smart particle memory management with auto replace and resize
  • Random particle textures possible
  • Particle color fade out
  • Particle morphing (size enlarge or reduce)
  • Particle gravitation and path manipulation
  • Origin and direction vector randomization in 3D
  • Constant or random particle lifetime
  • Dynamic speed control
  • Particles can be rendered as billboards, with static face direction or with random rotation
  • One and two sided particles for rotating particles (e.g. leaves)
  • Pre initialization of particle positions possible
  • Pre initialized particle positions can be saved twice to make it possible to transform
    (rotate/move) the complete particle system. This is useful for special effects
    like muzzle flashes which need to follow the current gun orientation
  • Easy texture loading/deletion to/from particle slots
  • Easy integration into object engine and z-sorting



- Realtime Shadows
  • Realtime shadows that bend, stretch and wrap around other objects or the terrain
  • Non-quadratic search algorithm finds face neighbours offline
  • Linear search algorithm finds mesh silhouette (shadow volume)
  • Special case where the eye position is inside a shadow volume is handled properly by using
    the depth-fail algorithm (Carmack's Reverse) instead of the simpler depth-pass algorithm.
    Therefor additional geometry for shadow volume capping is generated
  • Shadow volumes are treated like normal objects and therefore rendered very fast
    as Vertex Buffer Objects (VBO) or if VBOs are not supported as vertex arrays
  • For static objects with a static light source (e.g. buildings), the shadow volume VBO
    is calculated offline to eliminate the complete online shadow volume generation
  • Shadow mask is rendered in one pass into the stencil buffer (using two-sided
    stencil testing and stencil value wrap extensions)
Realtime Shadows Realtime Shadows Realtime Shadows Realtime Shadows Realtime Shadows
Realtime Shadows Realtime Shadows Realtime Shadows Realtime Shadows Realtime Shadows



- 3DS Loader
  • Fast and entirely self-developed 3DS importer written in C++
  • Processes for all objects, lights, point lights, spot lights and cameras
    the full material, object and keyframer animation block
  • Supports smoothing groups and optimizes vertex, texture and normal array data to
    minimal array sizes to provide lowest video memory usage
  • Mesh data check for vertices with bad #QNAN00 (not a number) values
  • Mesh data check for vertices with corrupted values leading to #INF000 errors
  • Mesh data check for isolated vertices
  • Mesh data check for bad faces which have equal vertices including automatic repair
  • 3DS object hierarchy used/combined with engine scene graph hierarchy
  • 3DS scene can be loaded as subtree of existing nodes in the scene graph
  • Homemade extension to allow loading of unlimited LOD geometry
  • Homemade extension to allow loading of bump mapped objects with normal
    and environment maps



- Anti-Aliasing
  • Application controlled full scene anti-aliasing using hardware
    accelerated High-Resolution-Anti-Aliasing (HRAA)
  • Supported sampling:
    • 2x Samples 2 Taps
    • 4x Samples 4 Taps
    • 6x Samples 6 Taps
    • 8x Samples 8 Taps



- Light Calculation
  • Supporting per-pixel lighting with DOT3 Bumpmapping using normal maps,
    normalization cube maps and TBN matrices to convert world space
    light vectors into tangent space
  • Supporting the dynamic OpenGL lighting model using vertex normals,
    material properties and directional, positional and spot lights
  • Supporting static OpenGL lighting with precalculated vertex colors where
    the light calculations are done for ambient, diffuse and specular lighting
  • Supporting specular reflection computation from eye coordinate
    system origin or parallel to and down the z-axis



- Special Effects
  • Utilizing the FMOD DSP Spectrum Analyzer for perfect camera
    rumble or similar special effects synced to the audio beat
  • High quality hardware accelerated radial blur with 256 and more layers
  • Hardware accelerated blur using texture mipmaps and the texture mipmap bias extension
  • Hardware accelerated glow effects
  • True reflections/mirror effects
  • Particle based effects like fire, smoke, rain, snow or flying leaves
  • Alpha blending for flares, glow, gun shots and other lighting effects
  • Realistic lens flare effects with occlusion test and fade out effect
    when the camera looks directly into the light source
Lensflares Lensflares Lensflares Lensflares Lensflares
Lensflares Lensflares Lensflares Lensflares Lensflares
Lensflares Lensflares Lensflares Lensflares Lensflares
  • Extreme realistic muzzle flash effects for 3D shooter
  • Outstanding dazzling electro schock and laser/plasma gun effects
Special Effect Special Effect Special Effect Special Effect Special Effect
Special Effect Special Effect Special Effect Special Effect Special Effect
Special Effect Special Effect Special Effect Special Effect Special Effect
Special Effect Special Effect Special Effect Special Effect Special Effect
Special Effect Special Effect Special Effect Special Effect Special Effect
Special Effect Special Effect Special Effect Special Effect Special Effect
Special Effect Special Effect Special Effect Special Effect Special Effect
  • Impact effects like particle dust and sparks with physical correct reflection vector



- 3D Sound
  • Utilizing the high-end FMOD sound engine to produce full DOLBY 5.1 3D surround sound



- Font Rendering
  • Internal font class
  • Fast anti-aliased text rendering using OpenGL alpha testing
  • Easy font style loading from different texture sets
  • Leading
  • Kerning
  • Line breaks/text block rendering



- Image Formats
  • Using the outstanding C++ library CxImage by Davide Pizzolato to
    allow texture loading of popular and advanced image file formats
  • Supported formats:
    • JPG (JPEG - the most famous image format worldwide)
    • JP2 (JPEG2000 - best compression format worldwide for photo-like images)
    • PNG (best losless compression format with alpha channel)
    • TGA, TIFF, BMP, GIF, PCX, ICO, WBMP, WMF, ZLIB, MNG, JBIG, PNM, PPM, PGM
  • Homemade highspeed PCX decompression method



- Realtime Statistics
  • Current time
  • Frames per second (fps)
  • Activated features (VBO, VSync, HRAA Samples, Anisotropic Filtering, ...)
  • Cam position and view angle
  • Rendered objects (opaque/transparent, smoothing groups, per-pixel-lightened)
  • Rendered polygons (opaque/transparent)
  • Performed culling tests (against FOV or a single view plane)
  • Current textures online (loaded into system or GPU memory)
  • Memory informations (current allocated memory, highest allocated memory)
  • Active (OpenGL) light sources
  • Intersection tests (tested obbs/triangles, last intersection position/distance, ...)
  • OpenGL renderer, vendor and version



- Camera System
  • Unlimited easy to activate cameras
  • Animations loadable from 3DS files
  • Each camera can be controlled via mouse/keyboard (up/down/forward/strafe/mouse look)



- Rendering Modes
  • Easy realtime switch between different scene visualization modes using F1-F12 keys:
    • [texture]
    • [texture + (object/merged) BoundingBox]
    • [texture + vertex normals]
    • [texture + (object/merged) BoundingBox + vertex normals]
    • [wireframe]
    • [wireframe + (object/merged) BoundingBox]
    • [wireframe + vertex normals]
    • [wireframe + (object/merged) BoundingBox + vertex normals]

    The first screen shot below shows [wireframe] mode.
    The second screen shot shows [wireframe + vertex normals] mode.
    The third one shows [wireframe + (object) BoundingBox] mode.

    The red axis system of each object shows its pivot point, the blue axis system shows the
    object center and the thin red one shows the current object rotation. The white fat boxes
    are the oriented bounding boxes used to clip each object against the view frustum planes
Wireframe Wireframe + Vertex Normals Wireframe + <object>BoundingBox



- Miscelleanous
  • Support for V-sync (vertical synchronization) to avoid screen tearing
  • Tidy windows configuration interface
Windows Dialog Windows Dialog Windows Dialog Windows Dialog Windows Dialog Windows Dialog
  • OpenGL clipplanes for particle based realtime fire/smoke/electro shock
    effects and OpenGL scissor test for 2D related clipping purposes
  • Skybox background rendering
  • Internal gamma correction with adjustment interface
  • Global material RGBA adjustment (brightness)



- Programming, Development and Design
  • Programmed with Microsoft Visual Studio 2010 Ultimate in Visual C++ using all main
    OOP techniques like inheritance, abstract classes, polymorphism, overloading,
    references, templates and access levels
  • Fastest code generated by the VC++ compiler with "Maximize Speed" optimizations,
    deprecated warnings and buffer overflow security check
  • Engine compiled into a static library to make it usable across different projects
  • GMax by Autodesk is utilized which is a free 3D modeling and animation tool based on
    Discreet's award-winning 3ds max. This powerful 3D editor is the best application out
    there for professional 3D modelling and animation
GMax
  • Memory management system and controlling prevents memory leaks
  • Smart application controlling reduces internal CPU usage to nearly 0%
    when the program is minimized or does not have the input focus
  • Compiler warning level 3 is enabled and all warnings are dissolved
    to ensure a clean compiler output with "0 warnings"
  • The whole engine is seperated into over 61 class modules. Each class module consists
    of a header (.h) and a source (.cpp) file to ensure clean and organized source code
Engine files
  • Optional nearly all of the rendering modules (e.g. terrain/lensflare/level/skybox)
    can be controlled by XML script files. The XML parsing and DOM creation is done
    using the Xerces C++ Parser from The Apache XML Project

 

 

VGFXOpenGL on the web
etsnews
VGFXOpenGL was mentioned in the article "The twitchspeed generation - The convergence of synthetic environments, virtual reality and computer games: the tools and the benefits" on ETS-News.com (Military Defence Equipment, Simulation and Training News).

 

 

 

  Visitors since december 2001
  Valid HTML 4.01!   Valid CSS!   Powered by PHP5
Powered by MySQL
 
Visitors currently online  
Page generated in 0.461211 seconds. Your ip is 38.107.179.206
Design and code by venom, VENOM Software.