# $Id: RELEASENOTES,v 1.12 2004/01/19 20:28:44 wes Exp $ # Version: $Name: OpenRM-1-5-1-RC3 $ # $Revision: 1.12 $ # $Log: RELEASENOTES,v $ # Revision 1.12 2004/01/19 20:28:44 wes # Add version tag. # # Revision 1.11 2004/01/19 20:27:45 wes # more 1.5.1 updates. # # Revision 1.10 2004/01/19 17:09:21 wes # Updated status on rmOctmesh rendering routine. # # Revision 1.9 2004/01/17 04:00:35 wes # Updated releasenotes for 1.5.1 # # Revision 1.8 2003/07/25 21:55:32 wes # More updates for 1.5.0. # # Revision 1.7 2003/07/14 02:18:39 wes # More 1.5.0 updates. # # Revision 1.6 2003/05/05 13:40:17 wes # Update for rmNodeComputeBoundingBox fix. # # Revision 1.5 2003/04/12 19:48:03 wes # Updates for 1.5.0-alpha. # # Revision 1.4 2003/04/05 14:16:16 wes # Updates for 1.5.0-alpha. # # Revision 1.3 2003/02/14 00:14:48 wes # Split RELEASENOTES into two files: RELEASENOTES, for the current version, # and OLD-RELEASENOTES, for previous versions. # # Revision 1.2 2003/02/02 17:50:52 wes # Added bounding boxes to RMprimitives, as a supplement to node-level bboxes. # The RMprimitive level bboxes are needed for the retained-mode CR work. # # Revision 1.1.1.1 2003/01/28 02:15:23 wes # Manual rebuild of rm150 repository. # # Revision 1.17 2003/01/27 05:04:25 wes # Changes to RMpipe API and initialization sequence to unify GLX, WGL and CR # platforms w/o too much disruption to existing apps. # # Revision 1.16 2003/01/20 05:39:44 wes # Rewrote texture state handling code. # # Revision 1.15 2003/01/14 05:28:13 wes # Partial update for 150. # # Revision 1.14 2002/09/22 22:57:24 wes # Updates for v1.4.3 distribution. # # Revision 1.13 2002/06/17 01:13:35 wes # Updates for 1.4.2 # # Revision 1.12 2001/10/14 23:38:03 wes # v1.4.1 updates. # # Revision 1.11 2001/07/15 23:05:56 wes # 1.4.0-FCS releasenotes. # # Revision 1.10 2001/06/03 20:56:20 wes # v140-beta1 # # Revision 1.9 2001/03/31 17:13:47 wes # v1.4.0-alpha-2 checkin # # Revision 1.8 2000/12/04 00:31:22 wes # Added RM_FONT_DINGBATS problem description. # # Revision 1.7 2000/09/02 19:26:13 wes # Updated info re: default button/action mappings for RMdemo programs. # # Revision 1.6 2000/09/02 19:06:39 wes # For rm130 release. # # Revision 1.5 2000/05/17 14:35:01 wes # Partial update for 1.3.0. # # Revision 1.4 2000/04/27 03:13:58 wes # More 1.2.1 updates. # # Revision 1.3 2000/04/22 01:44:23 wes # OpenRM 1.2.1 updates. # # Revision 1.2 2000/04/20 17:43:28 wes # OpenRM 1.2.1 updates. # # Revision 1.1.1.1 2000/02/28 21:29:40 wes # OpenRM 1.2 Checkin # January 2004, v1.5.1 -------------------- New Features and API Changes in v1.5.1 -------------------------------------- 1. Constant-rate, or bounded-rate rendering. Using the new routine rmPipeSetFrameRate(), you can specify a frames-per-second attribute on an RMpipe. The resulting renderings in freely-running applications will occur at regular time intervals, and no frequently than the frames-per- second value specific. There are some limits in terms of performance and accuracy - please refer to the OpenRM Programming Guide for additional details. This capability was tested on Unix/Linux/Win32 and it works well on all platforms. 2. Increased pickable limits. In 1.5.1, the new limits are now: 512K nodes, 128 prims per node. In addition, internal code was rewritten to not build serial structures that would grow in size in proportion to the size of the scene graph. Picking is not performed in nearly constant time, and is no longer related to the size of the scene graph except for the time required to do rendering. 3. Added support for auto-spin mode. Use rmauxSetSpinEnable(RM_TRUE) to enable automatic spinning. Spin mode uses the target set by rmauxSetGeomTransform(). Spin mode enabled for the following RMdemo programs: elev, fpsVis3d, and vis3d. The basic idea is that you can "fling" an object using the RMAUX interactive transformations, and the object will spin on its own. 4. Platform-independent access to the OpenGL context. Now, you will only use the platform-neutral routines rmPipeSetContext and rmPipeGetContext. The routine rmxPipeSetContext was changed changed to rmPipeSetContext (rmx.c). Added a windows version of rmPipeSetContext (rmwin.c). 5. Improved error detection and reporting in rmText. 6. added -p flag to spriteTest demo to allow testing of picking of large numbers of objects. 7. rmvJ3ComputeMeshNormals - added a flipNormalsBool parameter. 8. rmvJ3MeshSurface - added a flipNormalsBool parameter 9. rmvJ3ScatterPoint - added a flipNormalsBool parameter 10. added -flip command line argument to vis3d to enable normal-flipping when generating either a surface mesh (-v 0) or scatter points (-v 8). 11. new demo: fpsVis3d - like vis3d, but only generates a surface mesh. will rotate the object about the y-axis, and generate fps values integrated over 5 second intervals. Can take a command-line argument that specifies desired frames per second. The fps values this program generates were used in testing the accuracy of the constant-rate rendering stuff. 12. New command line argument to the spriteTest program to permit picking, and to report elapsed time. The new argument is "-p" and it will enable picking and picking time measurement and reporting. 13. Implemented shared textures. Now, when you assign an RMtexture as a scene parameter using rmNodeSetSceneTexture, you must not try to delete the RMtexture; rmNodeSetSceneTexture now just copies the RMtexture pointer into the RMnode rather than making a copy of the RMtexture. Attempting to delete an RMtexture that is assigned as a scene parameter to any RMnode will fail. With this change, you can use a single instanced RMtexture at an arbitrary number of scene graph nodes, and there will only be one OpenGL texture object in use. This feature is best considered a bug fix rather than a new feature. 14. Modified the textureTest demo to permit creation of an arbitrary number of textures. Use the "-nt NN" argument to specify the number of textures generated by the program. 15. Support for FreeBSD. Added build targets and mklib script for FreeBSD. Thanks to Igor Pokrovsky for the contribution. 16. Time measurement and manipulation routines. To support constant-rate rendering, we implemented a family of rmTime* routines in the rm/rmtime.c file. These do things like get the current time, time conversions, time object manipulation and implement a high resolution sleep routine. Bugs Fixed in v1.5.1 -------------------- 1. Texture coordinates tweakage in the rmOctmesh rendering function to avoid rendering bugs encountered on nVidia hardware when using GL_LINEAR texture interpolation on 3D textures. We need to take another look at these changes to make sure that (1) they are implemented on all axes of the octmesh, and (2) that things work OK in a variety of resolutions and view angles. 2. Fixed buglet in rmNodeGetSceneLight that would result in a segfault in some circumstances - when requesting an RM_LIGHT* that didn't exist. 3. Octmeshes - added a small epsilon to texture coordinates when rendering octmeshes to fix an OpenGL rendering (nvidia drivers) buglet that appeared when rendering multiple, adjacent octmeshes using the GL_LINEAR texture filtering mode. This buglet was visible in the Chromium demonstration programs. Known Bugs ---------- 1. nVidia drivers. The most recent batch of nVidia drivers - 1.0-53.28 released in Dec 2003 - contain fixes for a number of long standing bugs. With these drivers, offscreen rendering works (it does the right thing and won't crash your X server), and the rm2screen demo will exit cleanly as it should. That's the good news. The bad news is that the 53.28 drivers cause Chromium to crash. Specifically, the psubmit demo crashes. Since the OpenRM+Chromium demo programs use a similar initialization sequence, they too will prematurely die. The workaround is to use the 44.96 nVidia drivers for Chromium, and for Chromium+OpenRM. 2. We have not attempted to test the multibuffered stereo OpenGL context creation code on Windoze platforms. --EOF--