# Universal 3D Sample Software
Release Notes

### Gold Update Version 1.2.852.0
21 Dec 2006

## Contents

- Introduction
- Requirements
- Installation
- Organization
- Updates
- Known Issues

## Introduction

These are the release notes for the Universal 3D (U3D) Sample Software for Microsoft Windows* and Red Hat Enterprise Linux* platforms. This software release implements the 3rd edition of Ecma International's ECMA-363 Universal 3D File Format Standard. The specification is available publicly from the ECMA website. This software is only sample software and is intended to provide a starting point for ISVs to develop U3D applications (it has received only limited validation and testing). It includes a few usage examples for software developers which are not complete or polished applications. The intention is to allow other companies to innovate and develop solutions appropriate for different target user groups. Refer to the Known Issues section for a list of any known deviations from the specification, unimplemented functionality and issues that may be encountered with this software.

Detailed information on building and working with the U3D Sample Software can be found in the main documentation.

The license agreement is located in the License.txt file in this directory. Included software that is governed by other licenses are identified in the LicensesAdditional.txt file also located in this directory.

## Requirements

### Hardware

- x86 32-bit system with 3D accelerator. No 3D software-based renderer is currently provided.
  - Usage of a modern 3D accelerator is recommended.
  - It is highly recommended that the most recent, stable display drivers are installed that are available.
- 160 MB hard-drive space to hold the final unzipped package and build system tools.
  - 626 MB of additional hard-drive space are recommended for compiling various configurations of the U3D Sample Software.

### Software

- Win32
  - Microsoft* Win32 OS, such as Windows XP* or Windows 2000* with DirectX* 7 and/or OpenGL* installed.
    - It is recommended to always use the latest version of DirectX*.
  - Microsoft Visual Studio .NET 2003* if recompiling the U3D Sample Software is desired.
- Linux
  - Red Hat Enterprise Linux 3 (kernel 2.4.21-20)
  - GCC version 3.2.3 to build the U3D Sample Software libraries.
- Web browser to view HTML documentation.
- Intel® C++ Compiler 9.0 and 9.1 for Windows* and Linux* can be used to build the U3D Sample Software.
- Intel® Integrated Performance Primitives (Intel® IPP) usage is recommended for an additional automatic run-time performance improvement.

  Additional requirements for compilation of the software are defined in the main documentation.

## Installation

There is no installer for the U3D Sample Software, so installation is as basic as unzipping the U3D package.

Note: If the software is going to be recompiled, it is currently necessary to place it in a directory with a path that contains no SPACE characters. For example, "`C:\Software\U3D`" is a compatible path while "`C:\Documents and Settings\jdoe\My Documents\U3D`" is not and results in build system failures. In addition, there are several additional steps to perform detailed in the main documentation.

## Organization

Files in this distribution are organized in the following manner:

Path | Description
`Art` | Artwork used by the Doxygen* automatic HTML generation system.
`Bin` | Binary files that are a duplicate of the generated files located in `Source\RTL\Build` or `Source\Build\U3D` (debug and release, including map files) when the U3D DLs are compiled.
`Docs` | Documentation including this file, license information and a compressed HTML file version of the main documentation.
`Docs\Doxygen` | Scripts and setup for the Doxygen* automatic HTML generation system. Also contains the loose HTML main documentation files.
`Docs\IntermediateFormat` | Documentation on the format of Intermediate Data Text Format (IDTF) files that are understood by the U3D `IDTFConverter` example application..
`Docs\Templates` | Documentation templates.
`Include` | Header files for SDK-style usage that are duplicated from `Source\RTL\Component\Include`, `Source\RTL\Kernel\Include` and `Source\RTL\Platform\Include`.
`Lib` | Libraries files for SDK-style usage that are duplicated from the generated files placed in `Source\RTL\Build`.
`Source` | Source code and files for compiling the U3D run-time libraries.
`Source\Config` | Configuration files used by the build system.
`Source\RTL` | Source code for the U3D run-time libraries.
`Source\RTL\Component` | Source code for the main components.
`Source\RTL\Dependencies` | Source code for miscellaneous third-party modules and libraries that are used.
`Source\RTL\Kernel` | Source code for the component system and common data types.
`Source\RTL\Platform` | Source code for the main platform abstraction layer.
`Source\Samples\BaseMeshConverter` | Converts mesh in u3d files to alternative representation (see NewBaseMesh sample)
`Source\Samples\Data` | Example U3D files.
`Source\Samples\HelloWorld` | Example U3D exporter application that creates a simple hard-coded scene using a single source code module.
`Source\Samples\IntermediateFormat` | Example Intermediate Data Text Format (IDTF) to U3D format file converter application. Also includes an example Discreet* 3ds max* 7 plug-in IDTF exporter.
`Source\Samples\IntermediateFormat\TestScenes` | Example IDTF files.
`Source\Samples\NewBaseMesh` | U3D RTL extension plugin example that provides alternative representation of the mesh geometry.
`Source\Samples\NURBS` | U3D RTL extension plugin that adds NURBS geometry resource type to RTL with exporting/importing capabilities. Can be used both stand-alone and as IFXCOM plug-in. NURBS tesselation is not implemented.
`Source\Samples\QrtzPlayer` | Example U3D file player application for Mac OS* X
`Source\Samples\SamplePlayer` | Example U3D file player application for Microsoft Windows*.
`Source\Samples\SampleViewerQrtz` | Example viewer for Mac OS* X
`Source\Samples\SampleViewerWin32` | Example viewer for Microsoft Windows*.
`Source\Samples\SampleViewerX` | Example viewer for X Window System.
`Source\Samples\SceneHelpers` | Example U3D helper/utility code.
`Source\Samples\TextureModifier` | Example extension texture modifier plug-in.
`Source\Samples\TrueType` | Example U3D application that creates a Glyph 2D modifier by setting up glyphs that represent a string using various TrueType fonts.
`Source\Samples\u3dparser` | U3D parser tool makes a text dump of U3D binary file in XML format
`Source\Samples\winXPlayer` | Example U3D file player application for Linux*.
`Source\Templates` | Templates for plug-in dynamic libraries, interfaces, components and project configuration files.
`Source\Tools\BuildSystem` | Build system used to perform command-line based compiles and also scripts to generate Microsoft Visual Studio .NET 2003* solution and project files.

## Updates

This section describes the updates and changes that have been made to significant releases of the software. Note: After the build version for each release, the U3D file version generated by it is provided in parenthesis.

- 1.2.852.0 `(0x00000100)`

- Added MacOS support for Core, Exporting and Importing functionality
- Added MacOS rendering functionality and simple player for MacOS
- Added NURBS modifier extension sample, which includes importing, exporting functionality according U3D spec and simple tesselator
- Added U3D parser sample with bitencoder and bitdecoder functionality, which creates a dump of U3D files in text XML format
- Added NewBaseMesh extension sample, which shows how to use extensibility for new geometry representation
- Added BaseMeshConverter sample, which shows how to write U3D files with compressed base mesh block
- Added big-endian platfroms support
- Added test system with unit tests
- Fixed extensibility issue with wrong position of New Object Type Block in the U3D stream if extension generator is used
- Code changed to compile with Microsoft Visual Studio 2005 compiler
- Code changed to build on 64-bit platforms
- Made minor code clean-up in bones functionality
- Changed encoding field in project option files from "windows-1252" to "utf-8"
- Improved robustness of IFXPackWeights class functionality to avoid possible read overruns
- Improved IPPReallocate function for large scenes
- Fixed reading of transformation matrix in IDTFConverter
- Improving calculation accuracy in CLODAuthor functionality
- Predicates functionality moved from Glyph folder to Dependencies folder
- IDTFConverter now configures IFXAuthorCLODCompiler not to generate CLOD updates if only base mesh should be written
- IFXSetDefaultLocale function added to the Platfrom project

- 1.2.723.0 `(0x00000100)`
  - Added support for minor version number.
  - Added units scaling factor support to IDTFConverter.
  - Improved handling of glyph and shading modifier attributes. Old files were generated with shading modifier attribute equals 0. Such files will not be shaded in current version of U3D RTLs.
  - Improved bones animation support.
  - Improved units scaling factor support.
  - Improved Glyph billboarding. Now billboarded Glyph can be applied to animated nodes.
  - Fixed initial displacement and rotation issues in bones functionality.
  - Fixed rotation and displacement for bind pose in bones functionality.
  - Fixed depth buffer wrong initialization in OpenGL* renderer on Linux*.
  - Fixed issue when Sample Player does not show "File | Open" dialog window after "File | Load from URL" dialog window was used.
  - Fixed minimal project rebuild from Cygwin* command-line shell.
  - Fixed issue with switching between DirectX* renderers on release build.
  - Fixed issue when file with textures loaded after another file with textures might not be shown properly in Sample Player.
  - Fixed IFXMatrix4x4::Invert method.
  - Fixed handling of default view and light resources when view and light node in file refer to them.
  - Point and Line sets now can be encoded without normals.
  - Corrected normal vertex attribute handling, added normal check to ShaderLitTexture and MeshCompiler.
  - Fixed issue with exporting transform matrices in IDTFExporter.
  - Fixed export of scenes with models that have complex bones in IDTFExporter.
  - Fixed problem with texture layers in IDTFExporter.
- 1.2.639.0 `(0x00000000)`
  - Second U3D Sample Software open source release.
  - Improved build system to produce Microsoft Visual Studio .NET 2003* solution and project files that contain only relative paths.
  - Improved build system to use consistent code generation settings for static and dynamic libraries.
  - Added exclude normals mode to IDTFConverter.
  - Fixed possible issue with floating point overflow during encoding of CLOD, Line Set and Point Set objects if large position values are used.
  - Fixed memory leak in `CIFXLoadManager` when FileReferenceBlock is handled.
  - Fixed Bone Weight Modifier encoding crash if number of bone weights less when number of positions in author mesh.
  - Fixed lineset and pointset encoding crash on U3D files without normals.
  - Fixed multi-dimension texture coordinates handling issue in `CIFXMeshCompiler::PreviewCompile` method.
  - Fixed issue with texture coordinates generation in debug mode.
  - Fixed crash in SamplePlayer during switching of views after appending third file.
  - Fixed possible data misinterpretation during `CIFXMesh` transfer.
  - Fixed setting of bind pose matrix for each bone. Previously it was not set properly from values read from file.
  - Fixed issue with optimization of BitStream project by GCC compiler.
  - Fixed camera panning in `U3DViewer`.
  - Fixed quaternion rotations interpretation in IDTFConverter.
  - Resolved conflict of the perspective selection definitions with screen position definitions.
  - Improved external plug-ins support by adding `IFXModifierBaseDecoder` functionality to CorePluginStatic project.
  - `CIFXString` type replaced with `IFXString` type.
- 1.2.555.0 `(0x00000000)`
  - Improved and updated native extensibility support.
    - Added support for `RESOURCE` and `TEXTURE` modifier chain's types.
    - Added support of arbitrary order of multiple continuation blocks.
    - Added extension texture modifier sample.
    - Added 'dummy' modifier functionality, which is used in case if decoder and/or encoder for external modifier aren't present.
    - Removed external DIDs duplication.
    - Updated source code templates.
  - Added rendering functionality and sample viewer for Linux*. Note: `libX11.so` `libGL.so` shared libraries should be installed.
  - Added support of Units Scaling Factor. Interfaces affected: `IFXEncoderX, IFXDecoderX, IFXBitStreamX, IFXAnimationModifier, IFXCoreServices, IFXMotionMixer, IFXNameMap`.
  - Added internet streaming functionality based on socket API for Microsoft Windows* and Linux*. HTTP and FTP connections are supported. For FTP user and password can be specified or anonymous connection can be used. Note: FTP server should support passive mode. Note: `ws2_32.dll` should be installed on Windows* systems (included to Windows* XP by default).
  - Internal color representation was changed from `U32` to `IFXVector4` in geometry objects, encoders and decoders.
  - Support for Intel® IPP was enabled on Linux*.
  - Added case functionality to `IFXString` for Linux.
  - Fixed problem with texture resource continuation blocks.
  - Fixed Unicode support on Windows and Linux.
  - Fixed in-place scrubbing in `CIFXAuthorGeomCompiler::Compile` method in case of small faces.
  - cpuid functionality in `IFXOSUtilities.cpp` now works on Linux.
  - Fixed bug in `CIFXStdioWriteBuffer` and `CIFXStdioReadBuffer` components when file is attempted to be closed again.
  - Fixed memory leak in `ContractionRecorder::reOrderIndeces`.
  - Fixed memory leaks in external texture reference functionality.
  - Fixed memory leak in texture modifier encoder if more than one shading list is used by modifier.
  - Fixed memory leak in `CIFXBoneWeightsModifier` component.
  - Removed all usages of `IFXString::LengthU8()` method which does not return error code and it was marked as depricated.
  - Removed conversion to multi-byte string in `CIFXHashMap::HashFunction` method.
  - Removed unused `CIFXTexturePriorityManager` component.
  - GCC compiler options were changed for debugging and performance optimization.
  - Reworked `IFXString::ToString` to use optional radix.
  - Definition of `I8` was changed from signed char to char in `IFXDataTypes.h` to reduce the number of explicit convertions from `I8*` to `char*` due to compiler warnings.
  - Improved build system to track source code modifications in order to avoid unnecessary rebuild.
  - The declaration of all methods in component's interfaces changed to use `IFXAPI` call type.
  - `IFXAuthorFaceUpdate2` renamed to `IFXAuthorFaceUpdate`.
  - `IFXAuthorVertexUpdate2` renamed to `IFXAuthorVertexUpdate`.
  - `CID_IFXSceneGraphCuller` component is created in the `CIFXView::GetCullingSubsytem` method now and used only if it is needed.
  - Improved error handling in `CIFXMeshCompiler::PreviewCompile` method.
  - Removal of all textures from render system was moved from `CIFXTextureObject` component's destructor to `CIFXRenderDevice` component's destructor.
  - All warnings reported by GCC compiler were removed.
- 1.2.488.0 `(0x00000000)`
  - Added Native Extensibility feature. Extensible profile is now supported.
  - Fixed memory consumption issue during exporting. Mesh Group is not generated now. Removed outdated `RenderableCache` functionality.
  - Fixed issue when client application must create a fully constructed Texture Object if the texture will be saved as an external texture reference, including allocating a buffer of the proper size.
- 1.1.456.0 `(0x00000000)`
  - Improved code portability. Lots of code changes were made for compatibility with GCC compiler and Intel® C++ Compiler. Many changes were made to remove compiler warnings. Lots of platform specific code moved to the Platform project.
  - Updated and reworked Platform project to support Linux*.
  - Moved Memory files from Platform project. The Memory project is now considered as cross-platform.
  - Updated IFXString functionality to support Unicode on Linux*.
  - Build system reworked to support Linux* and multiple compilers.
  - Updated ApplyTransformToNode and GetSubgraphBound methods of CIFXNode class to support multiple parents.
  - Updated SamplePlayer. The track bar has been removed and a toolbar has been added. Added options to edit menu.
  - Added view and file reference export options to IDTFConverter.
- 1.0.303.0 `(0x00000000)`
  - First U3D Sample Software open source release.
  - Updated and improved the documentation. Added more descriptive usage data. Added the beginnings of a Frequently Asked Questions (FAQ) page. Updated build information for the latest state of the example applications. Merged various independent documents into the main documentation.
  - Author CLOD generation/compilation and encoding implementation has been improved to handle very small models with near-zero-area. The geometry scrubbing step still automatically defaults to removing triangles with near-zero-area and truly zero-area to make the implementation more robust. However, if it is known that there are truly no zero-area triangles in the model resource this scrubbing aspect can be disabled and the CLOD generation and later encoding should handle the model successfully. Command-line support for controlling this process has been added to the IDTF converter with the `-removezerofaces` and `-zerofacetolerance` options.
  - Added full line set and point set support for skeletons. Additionally, the animation modifier was updated to add support for line set and point set bones hierarchies.
  - Modifiers that depend upon the transform set data element, such as the animation and CLOD modifiers, can now be added to the model resource modifier chain. However, the CLOD modifier must have the screen space error metric disabled because of another dependency on the view size data element that is not met in the model resourse modifier chain.
  - Added a new example exporting application called `HelloWorld.exe` that creates a simple hard-coded scene which is directly exported to a U3D file called `output.u3d` in the current or active directory. This example is contained in a single source code file.
  - Added new example application called `TrueType.exe` that demonstrates how to create a Glyph 2D modifier by setting up glyphs that represent a string by using various TrueType fonts. At run-time to simplify the code, this example depends upon the `shading.u3d` example U3D file which it currently locates by using the `U3D_SOURCE` environment variable to load it from the `Source\Samples\TrueType` directory.
  - Example Discreet* 3ds max* IDTF exporter has been improved to support resource sharing for all types of resources. Texture blending mode now better reflects the result shown in Discreet* 3ds max*. Absolute texture paths are only included in IDTF files if they are valid on the system being used.
  - Added new scene debugging option to the example player that allows the current view resource's background clear color to be changed.
  - Example player allows the node transforms associated with individual models to be manipulated by right-clicking on them with the mouse dragging the model. Keyboard modifier keys such as `ALT`, `CTRL` and `SHIFT` can be used also at the same time.
  - Redesigned the child node functionality of the `IFXNode` interface in conjunction with an improved multiple-parent implementation. This allows a single scene graph node hierarchy to have more than one node which has a parent node that in turn has a child that is also parented to the root node. Added or changed the following functions: `AddChild`, `GetChildNR`, `GetNumberOfChildren`, `GetNumberOfParents`, `GetParentNR`, `RemoveChild` and `RemoveParent`. Removed the following functions: `GetFirstChildNR`, `GetParentNRByIndex`, `GetPreviousSibling`, `GetSiblingNextNR`, `SetFirstChild`, `SetNextSibling`, and `SetPreviousSibling`.
  - Improved `IFXViewResource` interface's root node handling so that it uses the associated node palette entry id. Changed the `SetRootNode` function, added `GetRootNode` and removed `GetRootNodeNR`.
  - Improved the `IFXAuthorCLODCompressionParams2` structure. Removed the `2` from its name. Changed the default quality factors to use `IFX_DEFAULT_QUALITY_FACTOR` instead of the misleading magic number 100.Improved quality factor documentation (also in the `IFXMarkerX` interface).
  - Renamed most `.xml` project configuration files so that they match the actual names of the directories that contain the associated source code compiled by them.
  - Renamed `STextureSourceInfo::m_encoding` to `STextureSourceInfo::m_imageType`.
  - Renamed the data element ids called `DID_IFXMeshGroup` and `DID_IFXMeshGroupBounds` to `DID_IFXRenderableGroup` and `DID_IFXRenderableGroupBounds`.
  - Removed the data element ids called `DID_IFXShaderSet`, `DID_IFXLineSetGroupBounds`, `DID_IFXEdgeGroup` and `DID_IFXEdgeGroupBounds`.
  - Renamed the Shader Set to Shader List as described in the specification.
  - Eliminated unnecessary `IFXCoreServices::GetImageCodec` function.
  - Improved the Glyph 2D modifier's billboarding feature. When billboarding is enabled, glyphs are now dynamically reoriented using the current view node's transform so that the glyphs are parallel to the view projection plane. This occurs as part of the `IFXView::RenderView` implementation in the `CIFXView` component which uses the `IFXGlyph2DModifier` interface's newly added `SetViewTransform` function.
  - Eliminated the unnecessary extra Glyph 2D modifier shading technique and the associated `IFXGlyph2DModifier::SetGlyphShaderSet` function. The proper way to shade the geometry generated by the Glyph 2D modifier is by using the Shading modifier.
  - Reorganized and moved source code located in the following previous directories: `Source\RTL\Component\CLOD`, `Source\RTL\Component\ChangeManager`, `Source\RTL\Component\Generators\Primitives`, `Source\RTL\Component\Generators\UVGenerator`, `Source\RTL\Component\ImageCodecU`, `Source\RTL\Component\Octree` and `Source\RTL\Component\TextureManager`. Also changed the expected location of the following previous directories to the `Source\RTL\Dependencies` area: `Source\RTL\Component\Include\DX` and `Source\RTL\Component\Include\GL`.
  - Removed legacy `IFXString::GetRaw` function. Use the existing `IFXString::ConvertToRawU8` function.
  - Removed legacy `IFXUserPropertyList` interface and the related `IFXNode` interface's `GetUserPropertyList` and `SetUserPropertyList` functions.
  - Removed unused `IFXPalette::CompactPalette` function.
  - Removed legacy `IFXSimple.h` header file.
  - Removed unused `SetCameraName`, `ResetPalettes`, `CleanPalette` functions of `U3DSceneUtilities` class.
  - Removed a couple of unused parameters from `U3DSceneUtilities::SetMaterialResource` function.
  - Shading modifier was fixed to use the U3D specification's shading attributes (9.7.5.3) at run-time and work properly with other shading modifiers in the modifier chain.
  - Modifier chain now correctly invalidates data elements in the resulting output data packet when the same type of data element is invalidated earlier in the chain. This results in observers of the modifier chain's output data packet to be notified when changes of interest occur. Before this fix, it was discovered for example, that when an animation modifier was applied to a child node's grand parent, the child node's transform was not being updated and thus was not appearing to be animated as part of the grand parent's subgraph.
  - Externally referenced texture image handling has been improved to resize an image to match the size defined in the texture declaration block if the external image does not match what is expected.
  - When multiple file URLs are included in an external texture file reference block and the first is not found, an error notification is no longer posted prior to the next file being tested.
  - All model nodes now properly animate when scenes that contain animation are loaded using non-atomic mode. Previously, some model nodes failed to animate and were disconnected from their associated motions.
  - Fixed uninitialized data member in `IFXAuthorGeomCompilerParams` constructor.
  - Fixed rendering exception that occurred if all textures were not found.
  - Fixed the Write Manager to use and respect the `IFXEXPORT_LIGHTS` export option flags, and also added the missing `IFXEXPORT_VIEWS` export option flag.
  - Quantization constants used for Line and Point Set encoding have been updated to match those constants used for Author CLOD Mesh. This results in the quality factor settings for them behaving similarly.
  - Player creates a default view node to use and render with when one is not available in a loaded U3D file, which is allowed in U3D files since there is no requirement for there to be any view nodes present.
  - IDTF converter's handling of view resource root nodes was improved.
  - Added more geometry compression parameters to the IDTF converter.
  - Corrected additional memory and resource leaks that were identified.
  - Updated IDTF format documentation related to shading modifiers, animation modifiers and motion resources.
  - Additional example IDTF files were added and some existing ones were updated.
- 0.9.215.1`(0x00000000)`
  - Bone count (9.6.1.1.6.1) as now written as zero if no `IFXSkeleton` object is available for all model resources (meshes, line sets and point sets). In previous releases, if no `IFXSkeleton` object was available, no bone count was written. Note: The existence of this defect means that all U3D importing implementations will need to now be backwards compatible and support the reading of model resource declaration blocks that end immediately prior to the bone count. This can be detected by first checking if any bytes remain to be read from the block before reading the bone count. If there is, then proceed with reading as normal. If there is not, then consider the bone count to be zero and jump to the next block. The importing implementation in the U3D Sample Software Gold release already handles this situation via another technique related to how the `CIFXBitStream` component is implemented.
  - Eliminated the 32-bit overflow due to large quantization factors that can result in vertex positions being significantly distorted and the quality of a model being severely impacted.
  - When encoding motion tracks, the client specified quality level is now used instead of zero. This results in vastly improve animations.
  - Fixed a memory buffer overrun in the `CIFXView::RenderView` function that can occur when the number of shaders used by the scene exceeds the allocated quantity.
  - Removed private functionality from the `IFXViewResource` interface that was needed by the `CIFXView` component. The associated implementation was migrated to the `CIFXView` component where it belongs.
  - Fixed the `IFXQuaternion::ComputeAngleAxis` function to prevent a possible floating point exception.
- 0.9.214.0 `(0x00000000)`
  - Support for nodes with multiple parents has improved, however more work is still required. The known issues section describes where support is not yet complete and about the existing behavior, as well as limitations that exist.
  - Vertex colors are now correct when encoding diffuse colors at lower quality level settings and they are not in the range 0.0 to 1.0. Resolved by adding clamping to the `IFXVector4` class `GetRBBA` and `GetBGRA` functions.
  - Due to adjusting the contents of the static libraries, `IFXExportingStatic.lib` and `IFXSchedulingStatic.lib` have been removed and it is no longer necessary to link to them.
  - User-defined progress callback function is now serviced and called periodically during CLOD mesh creation and serialization. This feature can be used by clients to update a visual progress bar or meter during the exporting process.
  - `IFXLight::Enable` function was changed to allow the light node's instance index to be identified.
  - `IFXLightSet::GetLight` function was changed to also hand back the light node's instance index associated with the specified light index.
  - Device or screen-space independent viewport coordinates are now supported by view nodes and used during rendering if enabled by the `IFXView` interface's new functions called `GetAttributes` and `SetAttributes`. The interface's `GetViewport` and `SetViewport` functions have been changed to now work with floating point rectangles defined by the `IFXF32Rect` structure.
  - `IFXViewResource` interface's `SetRootNode` function was updated to allow the root node's instance index to be specified and `GetRootNodeNR` was updated to hand back the root node instance index. The node instance index identifies exactly what scene graph is used when the view is rendered.
  - 2D glyph modifier source code references using the "3D" naming have been corrected. The following related changes were done: `IFX3DGlyphCommands` was renamed to `IFXGlyph2DCommands`, and `IFX3DGlyphGenerator` was renamed to `IFXGlyph3DGenerator`.
  - The following private 2D glyph headers were relocated to the `RTL\Component\Generators\Glyph2D` directory: `IFXContour.h`, `IFXContour.h`, `IFXContourExtruder.h`, `IFXContourGenerator.h`, `IFXContourTessellator.h` and `IFXGlyph3DGenerator.h`. In addition, some unused parameters were removed from some of the glyph command related functionality.
  - Fixed `IFXDevice` interface support for multiple parents and view node instances used during rendering. The `IFXDevice` interface now fully manages an array of views plus instance indices with the addition of the following functions: `AppendView`, `GetView`, `GetViewCount` and `RemoveLastView`. Removed the `IFXDevice::Render` function's instance parameter, as well as the `GetFirstView` and `SetFirstView` functions. Also removed the `GetNextView` and `SetNextView` functions from the `IFXView` interface.
  - Made numerous Scheduler related code clean-ups and legacy functionality removal. Replaced unneeded status and idle tasks with a much more flexible callback task that clients can use that's implemented by the `CIFXTaskCallback` module.
  - Finished the `IFXNotificationManager::SubmitError` function implementation and clarified usage documentation.
  - Created a new notification type named `IFXNotificationId_UnknownBlockSkipped` to allow the Load Manager to notify clients when files contain unrecognized blocks.
  - Added to the player a Notification Manager demonstration of how to handle Scheduler task failures and the ability to determine if unrecognized block types are present in the files that are loaded.
  - Parameter added to the `IFXNode::Pick` function to define the subgraph instance in which picking is performed.
  - BGR image format support has be added back to the `IFXTextureObject` interface. The `IFXTextureObject::Format` enumeration now has `IFXTEXTUREMAP_FORMAT_BGR24` and `IFXTEXTUREMAP_FORMAT_BGRA32` defined.
  - When an animation modifier has no motions specified, the default motion is used. This results in the initial skeleton bones positions and orientations being used for rendering of a model resource, if it has a bones hierarchy or skeleton defined, as well as some associated bones weights defined in the modifier chain by a Bones Weight modifier.
  - Fixed rendering of view node backdrops and overlays. The run-time also describes these as view layers.
  - Visual results of scenes rendered after non-atomic mode loading match those achieved with atomic loading.
  - Fixed `CArrayList` template so that an element could actually be accessed without using the internal data members, by using the existing [] operator as designed.
  - Updated wildcard functionality in the `wcmatch` module to support UNICODE. Also added to the `IFXString` class a `Match` function.
  - Made an initial attempt to make file header name inclusion case match the actual file names and visa versa.
  - Support for optimized memory functionality included with Intel® Integrated Performance Primitives (Intel® IPP) was enabled. If the dynamic libraries for Intel® IPP are in the common search path, they will be used automatically.
  - Player has improved exception catching and provides notification of such an error when it is encountered.
  - Example player better manages the control bar used for making manual CLOD resolution updates to an active object with an attached CLOD modifier. The active object is selected by right-clicking on it in the viewport.
  - Converter now has support for CLOD, glyph 2D and subdivision modifiers in IDTF. Support for external texture references was added, as well as view node viewports, backdrops and overlays also.
  - Converter allows texture encoding to be fully configured from IDTF and uses the new texture object API.
  - Converter's default geometry quality setting is now 300 to demonstrate that compression is performed. Currently, the converter's geometry quality setting is also used for other quality settings such as diffuse color quality.
  - Converter support for the fast specular attribute was removed since it was removed from the specification a long time ago.
  - Modifier chain index is no longer required since it was unused by the converter.
  - Outputting debugging information is functional again in the converter and related memory leaks have been fixed.
  - IDTF format and documentation changes have been made.
  - Additional example IDTF files were added and existing ones were updated.
  - Added an example IDTF file exporter plug-in for Discreet* 3ds max* 5.1. It is in the early stages of development, has received insufficient testing and does not support some common features used in Discreet* 3ds max* and supported by IDTF. In addition, some key features such as resource sharing and unused resource elimination have not been implemented either. The main source code is located in the `Source\Samples\IntermediateFormat\Exporter` directory.
  - Updated IFXCOM coding conventions document.
  - Corrected numerous memory and resource leaks.
- 0.5.186.0 `(0x00000000)`
  - Changed the file version to zero which is the first edition value that is considered compatibility tested and validated to match the specification (it no longer identifies a testing or development version). No file format encoding changes were made from the Beta release and the `CIFXLoadManager` will still read those equivalent Beta version files.
  - The following functions were depreciated and have been removed from the `IFXModel` interface: `GetNumElements`, `GetNumShaderSets`, `GetShaderSet`, `SetShaderSet`, `GetShaderSetMapping`, `SetShaderSetMapping`, `GetMappingShaderSet` and `SetMappingShaderSet`. They were legacy shading functionality and were superseded by the Shading Modifier with the Alpha release. Shader sets can be associated with models by attaching a Shading Modifier to either the model resource modifier chain or the model node modifier chain as demonstrated by the IDTFConverter. There is an example of one way to obtain a shader set from the model node modifier chain in the `U3DSceneUtilities::SetMaterialResource` function in the `SceneHelpers` sample code.
  - The following functions were depreciated and have been removed from the `IFXGenerator` interface: `GetNumShaderSets`, `GetShaderSet` and `SetShaderSet`. They were legacy shading functionality and have been superseded by the Shading Modifier with the Alpha release.
  - Changes were made to the `IFXMetaDataX` interface. It now has support for meta-data additional attributes that may be defined as part of the Key string. In the interfaces, additional attributes are called subattributes. Some changes were made to accomplish this. To retrieve the encoded key that matches the string written to a bitstream during serialization, the new `GetEncodedKeyX` function must now be used instead of `GetKeyX` (all set functions can still be used to define an encoded key after which parsing and validation is performed). The `IFXMetaDataValueType` enumeration and has been replaced with `IFXMetaDataAttribute` (the old `IFXMETADATATYPE_STRING` enumerator is now called `IFXMETADATAATTRIBUTE_STRING`, and `IFXMETADATATYPE_BINARY` is now called `IFXMETADATAATTRIBUTE_BINARY`). The `GetValueTypeX` function has been replaced by `GetAttributeX`. The following additional functions have been added: `GetEncodedKeyX`, `GetSubattributesCountX`, `GetSubattributeIndex`, `GetSubattributeNameX`, `GetSubattributeValueX`, `SetSubattributeValueX`, `DeleteSubattributeX` and `DeleteAllSubattributes`.
  - Renamed the following interface and structures by removing the "2" suffix: `IFXAuthorFace2`, `IFXAuthorGeomCompilerParams2`, `IFXAuthorMeshScrubParams2` and `IFXAuthorCLODGenParam2`.
  - Removed the rest of basic primitive support that was not previously removed. This includes the following interfaces and supporting classes: `IFXPrimitive`, `IFXPrimitiveGenerator`, `CIFXPrimitiveShape`, `CIFXSpherePrimitive`, `CIFXCylinderPrimitive`, `CIFXConePrimitive`, `CIFXPlanePrimitive` and `CIFXBoxPrimitive`.
  - In the CLOD encoder, forced the encoding of the root bone's parent name to the emptry string if it was not already to match the specification.
  - Removed unneeded `IFXTEXTUREMAP_FORMAT_RENDERER` texture map type.
  - Removed unneeded block type constants from `IFXBlockTypes.h`.
  - Added the ability to fully configure texture continuation block encoding. This was done by modifying the `STextureSourceInfo` structure and adding the following new functions to the `IFXTextureObject` interface: `GetImageType`, `GetContinuationImageCount`, `GetImageCompressionProperties` and `SetImageCompressionProperties`.
  - `IFXAuthorLineSet` and `IFXAuthorPointSet` interfaces no longer require the `SetMeshDesc` function to be explicitly called so that they are more similar in usage to `IFXAuthorMesh`.
  - Renamed defines with prefix `UI_DEFAULT_` in `UIDefaults.h` to instead have the prefix `PALETTE_DEFAULT_`. Moved them to `IFXCoreServices.h` and removed `UIDefaults.h`.
  - Improved stability of author CLOD generation.
  - Added check to prevent divide by zero during normalization.
  - Varous external file reference filter and name collision handling defects were fixed.
  - External texture reference support was improved for both atomic and non-atomic loading.
  - Non-atomic loading now allows better interactive loading behavior by distributing its workload and not processing an entire block when it is becomes available. As in previous releases, the estimated number of millisconds of work performed per file load before yielding can be configured by the `IFXLoadManager` interface.
  - Texture handling during non-atomic loading has been fixed.
  - Some Octree culling fixes were made.
  - Converter support for file references has been added.
  - File reference and collision policy handling have been fixed.
  - Converter model visibility handling has been fixed. Converter's default has been changed to `FRONT`.
  - Converter handling of TGA image indentification field has been fixed.
  - Converter and IDTF format for how resources are references has changed. It is now performed by name.
  - Converter now allows modifiers to be applied to model resources.
  - Converter texture resource configuration has changed and allows more configuration.
  - Fixed spot light angle handling in the `CIFXLightResource` component. It was incorrectly doubling the spot light angle when configuring the `IFXRenderLight` thus resulting in them being rendered too wide.
  - Improved node bounding sphere calculations.
  - Updated dependent libraries used for PNG to version 1.2.7 and for ZLIB to version 1.2.1.
  - Point sets are now rendered by the DirectX* 7 renderer, however the shading used is incorrect.
  - Performance of line and point set encoding and decoding has been improved.
  - Enabled SSE2 or MMX bitstream optimizations to be used in the `CIFXOSHistogramDynamic` class if the processor used supports them.
  - Setup an optimization framework so that the performance of various functions can be improved, such as memory, matrix and image operations. If the dynamic libraries for Intel® Integrated Performance Primitives (Intel® IPP) are in the common search path, they will be used automatically.
  - Example player now allows the CLOD resolution is be adjusted with a control bar for the active object, if it has an attached CLOD modifier. The active object is selected by right-clicking on it in the viewport.
  - More user friendly error reporting has been added to the example player when unsupported or invalid U3D files are loaded.
  - Additional example IDTF files were added and existing ones were updated.
- 0.5.176.0 `(0xFF000020)`
  - Changed the default mesh scrubbing parameters so that faces of essentially zero area are removed. This is an important step prior to CLOD generation and encoding.
  - Fixed buffer overrun defect related to PNG handling in the `CIFXImageTools` module.
  - On decode, shading modifier names are now remapped if necessary.
  - Shading modifiers have been fixed so that there is correct data packet, data element management occurring between instances of them in node modifier chains. Previously, shading modifiers managed the data packets incorrectly when the modifiers were applied to different model nodes that used the same model resource, resulting in the incorrect appearance of the same shading used for all of those model nodes.
  - DirectX* 7 and 8 renderers now properly display models that use textures with an alpha channel. Previously, the red and blue channels were reversed.
- 0.5.175.0`(0xFF000020)`
  - Encoder changes were made, so U3D files previously created are not compatible and must be recreated.
  - In `IFXBlockTypes.h`, changed `FileHeader_VersionFirstEdition` to `0` to match the specification. Removed `FileHeader_VersionPreRelease` since it was not needed.
  - Fixed the encoding and decoding of the Texture Continuation block in the `CIFXImageTools` component so that it matches the specification. Previously, a variable number of extra bytes were mistakenly being inserted after the Continuation Image Index and before the Image Data.
  - Support for textures with an alpha channel and other forms of texturing have been fixed in the `CIFXImageTools` component. This is the first release that will encode and save 32-bpp RGBA images. This is done using a single PNG Texture Continuation block. The known issues section describes the current API limitation regarding there not being any way to configure how textures are encoded.
  - Fixed non-ambient lights so that they were not being influenced by ambient light by correcting the `CIFXLightResource` constructor to set the ambient color to black.
  - Fixed light resource decoding defect for non-ambient lights related to the light intensity field. The manner in which the light intensity was being stored prevented several dependent values from being recalculated.
  - Updated the `CIFXMaterialResource` component's behavior to use attribute disabled states and return disabled values for those attributes that are not enabled. Otherwise, if enabled the stored values are returned.
  - Masked out unspecified material resource attributes during encoding and decoding.
  - Fixed material resource decoding so that all attribute values decoded are stored with a valid forth component.
  - Moved the material `Attributes` enumeration into the `IFXMaterialResource` interface to prevent clashes with other similarly named enumerations.
  - Removed legacy `Attributes` enumerators (`DENSITY` and `ELASTICITY`) and `IFXMaterialResource` functions related to physics and collision detection/resolution.
  - Fixed texture decompression defects in the `CIFXImageTools::DecompressBlockQueueToImage` and `CIFXImageTools::EvaluateContinuationFormat` functions.
  - Fixed `IFXString::GetRaw` function to better validate input assumptions.
  - Modified hash function used during CLOD creation to not depend upon vertex positions.
  - Fixed data block resource leaks in the `CIFXWriteManager::PutPalette` function.
  - OpenGL* renderer now properly culls triangles for models when their visibility is set to only back or front facing.
  - Converter support for Alpha Texture Channels in the Shader Lit Texture was added.
  - Converter support for material attributes was added.
  - IDTF format and documentation changes have been made.
  - Additional example IDTF files were added and existing ones were updated.
- 0.5.174.0 `(0xFF00001F)`
  - CLOD modifier has been updated to handle model nodes with multiple parents. Currently, if a different CLOD resolution is appropriate for each instance, the highest of those resolutions is used.
  - Dynamically switching between renderers has been improved, but still requires additional fixes.
  - DirectX* 7 renderer is now functioning and usable again.
  - Addressed /MACHINE linker warning in SceneHelpers project.
- 0.5.173.0 `(0xFF00001F)`
  - Encoder changes were made, so U3D files previously created are not compatible and must be recreated.
  - Point set generator encoding, decoding and run-time support is provided.
  - Line set generator encoding and decoding now matches the specification.
  - Glyph 2D modifier billboard run-time functionality is implemented.
  - Texture encoding, decoding and run-time support for the PNG format.
  - Updated encoding and decoding of the Shader Lit Texture component to match changes made to the specification and because deviations were found to exist. The `IFXShaderLitTexture` interface provides more functionality than supported by the specification. During normal usage, only the `IFXShaderLitTexture::MATERIAL` and `IFXShaderLitTexture::USEDIFFUSE` flags should be set and the rest of the `IFXShaderLitTexture::Flags` should be clear. These flags are solely provided for debugging models/scenes and for authoring purposes. They are not intended to be saved in U3D files.
  - Reduced the `IFXShaderLitTexure::TextureMode` automatic texture coordinate generation modes to just those supported by the specification.
  - View Resource component encoding and decoding have been updated to match the specification. This means that the settings maintained by the `IFXViewResource` interface related to the color buffer, depth buffer and stencil buffer, for each render pass, are not currently saved in U3D files. When decoding, the default implementation settings are used for these. On the first pass: color buffer clearing is enabled using black; depth buffer testing (compare function used is depth value must be less than or equal to reference value) and writing is enabled; depth buffer clearing is enabled using depth value 1.0; and stencil buffer is disabled. On all other passes: clearing of all buffers is disabled; depth buffer testing and writing is disabled; and the stencil buffer is disabled.
  - Moved the `IFXCLODResource` interface's functionality into the `IFXAuthorCLODResource` interface and then removed the `IFXCLODResource` interface.
  - Renamed the `IFXAuthorMeshMaterial` structure to `IFXAuthorMaterial`.
  - Improved the `IFXAuthorMeshMap` interface and the underlying component's implementation.
  - The `IFXNode` interface's `Pick` function will now allow the node instance to be specified if there are multiple parents.
  - Adjusted the Shader Lit Texture component's default settings to conform to the specification.
  - Load Manager now supports placing modifiers in the model resource modifier chain again. Previously, they could only be placed in the model instance or node modifier chain.
  - The Scene Graph component no longer supports the `IFXMetaData` and `IFXMarker` interfaces because they were not necessary for it. A few of the `IFXMarker` function implementations that served as helpers/utilities were retained and added to the `IFXSceneGraph` interface.
  - Updated the Palette component's implementation so that the private `IFXUniqueModePalette` interface could be removed. Hidden palette functionality is still available and functional, which is useful for creating user interface elements that are not encoded and serialized by the Write Manager.
  - Fully removed all interfaces and component implementations for basic primitives such as spheres and boxes since they were removed from the specification.
  - Removed the legacy `IFXSceneGraph::GetPrimitiveOrientation` and `IFXSceneGraph::SetPrimitiveOrientation` functions which are no longer useful since basic primitives have been removed.
  - Removed the `IFXDeformModifier` and associated component implementation since it is not a part of the specification and accidentally had not been taken out yet.
  - Removed the legacy `IFXModifierParam` interface which was unused and not necessary.
  - Load Manager no longer caches U3D data blocks from files after they are fully decoded to reduce the run-time memory footprint required for importers and players. If this is desired functionality, it can be reenabled by adding the preprocessor define `KEEP_DATA_BLOCKS` to the `IFXImporting.xml` project configuration file or to the `IFXDataBlockQueueX.h` header file.
  - U3D encoding performance was aided by reducing excessive memory reallocations related to arrays that hold normals.
  - Player now allows the culling solution used to be specified.
  - Converter support for point-sets was added.
  - Converter and IDTF format now supports full resource sharing.
  - Converter supports multiple modifier chain types.
  - Converter now correctly uses mesh maps to set up the vertex indices for the bone weight modifier in `ModifierConverter::ConvertBoneWeightModifier`.
  - Converter handling of meta-data has been fixed and improved.
  - IDTF documentation has been updated.
  - Additional example IDTF files were added and existing ones were updated.
  - Eliminated player access violation after converting or displaying a scene graph with multiple parents loaded.
  - Debug assertion due to modifier chain construction no longer occurs when loading U3D files that contain a bones weight modifier.
- 0.4.167.0 `(0xFF00001E)`
  - Encoder changes were made, so U3D files previously created are not compatible and must be recreated.
  - Numerous memory and resource leaks were plugged. Some more still remain.
  - Bounding sphere calculation for nodes which have multiple parents have been improved.
  - Line sets rendering has been fixed. There was previously an encoding problem with them.
  - JPEG file created by the converter now have correct color channel data. Previously, the JPEG textures embedded in U3D files were wrong.
  - AuthorGeomCompiler allows the bCLOD parameter to be FALSE now without failing.
  - `IFXView` interface now allows 1 and 2-point projections to be specified that match the U3D specification, as well as their encoding and decoding. However, rendering of these are not supported.
  - Shader lit texture encoding and decoding now match the U3D specification. However, the defaults are not specified yet in the specification so those may change in the implementation in the future.
  - Fixed encoding of base mesh. Previously progressive was also still being encoded and written.
  - Removed double CLOD compilation. Previously a second compile was done using default parameters.
  - Made numerous author CLOD creation and mesh/vertex map stability improvements.
  - Bitstream improved to better handle static histogram compression edge cases. Previously, encoding a zero value was causing an escape to be written.
  - Quality settings close to 1000 now look fairly similar to results for 1000.
  - `IFXNode::GetNumberOfChildren` fixed to now return success when there are no children.
  - Animation modifier now supports all type of nodes. Previously only model nodes could have an animation modifier attached to them.
  - Texture modifier chain support was added.
  - One of the `IFXView` interface's `Pick` functions now allows the instance to be specified if there are multiple parents.
  - `IFXShaderLitTexture` interface has changed to eliminate legacy functionality no longer needed and to remove enumerators that were not functional.
  - Improvements were made to the `IFXString` class.
  - IDTF documentation has been updated.
  - Additional example IDTF files were added.
- 0.4.151.0
  - Support is now provided for encoding and decoding models that contain both both a base mesh block and progressive CLOD mesh blocks. Minimum resolution can now be any value greater than or equal to minimum resolution and less than or equal to maximum resolution.
  - Additional example IDTF files were added.
- 0.4.150.0
  - Encoder changes were made, so U3D files previously created are not compatible and must be recreated.
  - Corrections made to base CLOD mesh encoding and decoding. Combined use of both base and progressive CLOD meshes in the same model is not functioning yet.
  - Unused empty base blocks are no longer saved during export for models.
  - Debug build preprocessor defines generated by the build system were corrected.
  - Converter multiple textures defect fixed.
  - Converter support for base CLOD meshes added.
  - Additional example IDTF files were added.
- 0.4.149.0
  - Significant encoder changes were made, so U3D files previously created are not compatible and must be recreated.
  - Corrections made to CLOD encoding which was discovered to deviate from the specification in several ways.
  - Load Manager was updated to make priority update blocks optional.
  - Uncompressed profile run-time, encoding and decoding support added.
  - Numerous memory and resource leaks were plugged. Some more still remain.
  - Removed core and importing dynamic library dependency on the exporting dynamic library.
  - Removed legacy `IFXQualityFactor` interface and associated header file. Quality factory defines were moved to `IFXMarkerX.h`.
  - Eliminated unused legacy style palette.
  - Converter shading modifier parsing was fixed.
  - Additional example IDTF files were added.
- 0.3.148.0
  - Many encoder changes were made, so U3D files previously created are not compatible and must be recreated.
  - Unicode support was added. There is now an IFXCHAR data type for UTF-16 wide characters. The main format for strings (including IFXString) in the implementation is now UTF-16. Strings are stored exclusively as UTF-8 in U3D formatted data files.
  - Texture encoding, decoding and run-time component support are now implemented to match the specification, with exceptions for the newly added external texture references and PNG support. Removed zlib usage as part of this effort. Known issues are included in the appropriate section below.
  - Skeleton support has been added to `CIFXAuthorCLODResource`.
  - Bones weight modifier has been added.
  - Animation modifier has been added.
  - Newly added meta-data attributes are supported.
  - The `IFXLoadManager` interface's Load`` function now has a world alias parameter.
  - Palette entry name handling is now case-sensitive.
  - Resource palettes now have default entries that match the defaults in the specification.
  - Run-time primitive generators have been mostly isolated into the `IFXShapes` dynamic library that is included in the `Testing` directory.
  - For glyph handling the `CIFXGlyphCommandList` component was added.
  - Discard collision policy used by Load Manager during importing has been fixed.
  - Removed specialized CIFXAnimationModifier factory function that was not necessary for key-frame animation.
  - Created and added cyclic reference count prevention component called `CIFXConnector`.
  - Renamed `IFXBoneWeights` interface to `IFXBoneWeightsModifier`.
  - Moved `IFXBoneWeightsModifier` interface from `IFXSkeleton.h` to `IFXBoneWeightsModifier.h`.
  - Removed unneeded client specific task handling functionality from the `IFXNode` interface.
  - Removed the legacy, unneeded `CIFXCLODResource` component, including the `IFXClassicCLODResource` interface.
  - Improvements made to make scheduling and rendering dynamic libraries optional.
  - Converter support for bones and vertex weights have been added, including the bones weight modifier.
  - Converter support for rigid-body and bones-based animation have been added, including the animation modifier.
  - Converter now supports multiple modifiers.
  - Converter handling of missing input file has been improved.
  - IDTF documentation has been updated.
  - Additional example IDTF files were added.
- 0.2.133.0
  - Encoder changes were made, so U3D files previously created are not compatible and must be recreated.
  - Author line set and renderable line set functionality have been added. Known issues are included in the section below.
  - Converter support for line sets has been added.
  - 2D glyph modifier functionality has been added. Known issues are included in the section below.
  - Rendering of textures has been fixed.
  - General picking and 2D view-based picking have both been fixed for nodes with a single parent. Known issues are included in the section below.
  - Overlay/backdrop view layer functionality was migrated from the view resource's `IFXViewResource` interface to the view node's `IFXView` interface.
  - Primitive generators (box, sphere, cylinder and plane) were moved out of IFXCore into new IFXShapes DL. Two dependencies exist in IFXCore on them but will be removed in a future release. Change done in preparation for making their usage completely optional. No encoding of them is done when writes are performed.
  - Author mesh defect related to normals has been fixed.
  - Player supports object picking by right-clicking in the viewport. Selected object is displayed in one of the bottom status bar fields.
  - Player is now more robust when switching to the next view.
  - Player after opening multiple files no longer requires a switch to the next view to see the newly loaded file rendered.
  - Player saving of multiple appended files has been improved.
  - Player non-atomic file loading functionality can now enabled to allow U3D file loads to be performed asynchronously and decompression to occur gradually.
  - Player utility code that is in common with the converter and our internal test system has been move into the Samples\SceneHelpers directory.
  - Converter support for multiple parents has been added.
  - Converter now properly parses directional lights.
  - Converter now better supports vertex color usage in IDTF files and related random encoding/decoding failures have been fixed.
  - IDTF documentation has been updated. Some changes were made to view nodes, view resources and colors.
  - Additional example IDTF files were added.
- 0.2.118.0
  - Initial Alpha release.

## Known Issues

This section describes the issues that have been identified. Please submit reports of defects and other issues found at the Universal 3D Sample Software project website on Source Forge* (http://sourceforge.net/projects/u3d/) using the online tracking tool.

### Functionality

- U3D DLs
  - Only last Bone Weigh Modifier output is used if 2 Bone Weights Modifiers are attached to one model.
  - File references are considered to be relative to the work directory, not relative to the file which contains them. Please use full paths to a reference in the file or change the work directory.
  - Areas where support for nodes with multiple parents is not complete:
    - Octree culler might not work properly for complex animated scenes with multiple parents hierarchy.
    - Octree module `COctreeNode` should be reworked to handle node instances. `CIFXOctreeCollection::GetSpatials` returns `IFX_E_UNSUPPORTED`. `CIFXOctreeCollection::ResursivelyAddSpatialsToList` is unimplemented.
    - Some functions which work with `IFXSpatial` interface pointers may need to be updated to track spatial/node instances with `IFXSpatialInstance` and `SPATIALINSTANCE_LIST`.
  - Number of light sources visible in some scenes is different depending upon the culling solution used, either View Frustum or Octree-based culling.
  - CLODGenerator will cause an exception to occur and fail to generate a CLOD mesh if the mesh description improperly declares that texture layers exist and there are actually no texture coordinates provided with the author mesh.
  - Single instance of a texture object does not support some channels being internal and other channels being an external texture reference. This is allowed by the specification.
  - Point set shading is not rendered properly by the DirectX* 7 renderer.
  - Configuration of line set and point set rendering is not provided, such as if these scale based on distance from the camera or they are always visible. Currently, they are always displayed regardless of distance from the view and the presentation size is hard-coded.
  - Implementation of the Glyph 2D modifier has some internal extrusion and beveling functionality that will eventually be removed.
  - Some code clean-up activities remain. The largest work includes reducing the multiple layers of wrapping in the bones animation code and reworking the interface API style that is out of sync with the rest of the engine.
  - Not yet implemented:
    - Write Manager mode to not write file references and blocks loaded from file references.
    - Thread-safe component system and threading abstractions.
    - TIFF texture format encoding, decoding and run-time support.
    - Writing and using the optional bounding information for geometry and file references.
    - Rendering of 1 and 2-point projection modes that can be set on the `IFXView` interface.
    - Internet Streaming functionality does not work with proxy.
- Intermediate Data Text Format (IDTF) Converter
  - Depends upon many of the default parameters used by the U3D DLs.
  - Not yet supported:
    - IDTF single line and rest of line comments are not defined.
    - Meta-data binary key/value pairs.
    - JPEG texture support.
    - TIFF texture support.
    - 16-bpp TGA texture support.
    - Quality levels (per-object).
    - Priority levels.
    - Skeleton support for line sets and point sets.
- Intermediate Data Text Format (IDTF) Exporter
  - Work in progress that has received minimal testing and does not support some common features used in Discreet* 3ds max* and supported by IDTF.
  - View resource root node is always the world which is represented as the empty NULL string.
  - Light attenuation is predefined as (1,0,0).
  - Not yet supported:
    - Line sets.
    - Point sets.
    - Meta-data definitions using the user properties available per-object in Discreet* 3ds max*.
    - Texture layer blending modes.
    - Configuration dialog box to provide user control over the exporter. For example, to allow the user to define what types of data are exported and the various quality level settings.
    - Physique*.
    - Bipeds.
- Player
  - Not yet demonstarted:
    - Frame-rate based CLOD metric usage.
    - Debug rendering modes such as vertex or wireframe rendering, and displaying bounding spheres.

### Documentation

- Lots of work to be done. :)

© 1999 - 2006 Intel Corporation. All rights reserved. Intel is a trademark or registered trademark of Intel Corporation or its subsidiaries in the United States and other countries.

* Other names and brands may be claimed as the property of others.