VMD 1.4 Development Goals

  • Port VMD to Windows 95/98/NT (Primary Goal).
  • Eliminate bugs in the OpenGL versions of VMD.
  • Increase performance of VMD on all platforms.
  • Support new haptic feedback 3-D interaction devices

VMD 1.4 Development Status

  • VMD 1.4 final release (January 7, 2000)
    • Reduction in idle CPU usage, VMD no longer runs the graphics hardware continuously, it only redraws when it deems necessary.
    • Eliminated unused Mouse management code.
    • Fixed a memory leak in ReadPDB.C that was leaving an extra unused timestep allocated for each molecule loaded.
    • Fixed many small one-time memory leaks here and there after running twenty or thirty purify sessions.
    • Added a Purify switch to the configure script to make purify'd builds.
    • Fixed utilities.C so it will compile on some RedHat 6.1 systems
    • Fixed PR 71, OpenGLDisplayDevice.C was incorrectly getting an OpenGL window with an Alpha plane, as opposed to requesting a 16-bit Z-buffer which is what it actually wanted. Probably a typo or cut-paste error.
    • Tremendous speed improvements for "same residue as" atom selections, using a hash-table-based binned acceleration data structure. The new code is 20 to 100 times faster.
    • Moved and merged the distance-based bond search code from ReadPDB.C and ReadGRO.C into new BondSearch.[Ch] files. The bond search code will now be shared by all of the file readers etc.
    • Released beta 4, which has almost everything implemented, missing only a few minor tweaks before final release barring any new bug reports.
  • VMD 1.4 Beta 4 (12/22/99)
    • Mesa versions of VMD are now built using Mesa 3.1
    • Tremendous speed improvements for "within" atom selections, using a grid-based spatial decomposition. The speed of distance based selections are now 50 to 100 times faster.
    • Some minimal support for Gromos96 ascii trajectories, working on support for binary trajectories still.
    • Updated Unix configure script and Win32 build settings for new files.
    • New MouseMode->MoveAtoms feature works much better than before, especially for rotations.
    • Trimmed contents of Light, LightList, and Displayable classes.
    • Rotations of Displayables are now done using quaternions.
    • New Quaternion class Quat.[Ch]
    • Changed Displayable to use a single float for scaling instead of a vector or matrix.
    • Eliminated unused functions for setting transformation matrices
    • Changed the centering and global translation matrices to vectors.
    • Eliminated TransMethod and related code from Displayables and their derivatives.
    • VMDtitle is now unregistered when it goes away.
    • Fixed PR 51, VMD interface to Babel, and multi-structure PDB files.
    • Fixed PR 69, vmd_measure_minmax() possible crashes.
    • Fixed PR 70, Graphics molecules were missing their unique names
    • New code to support reading Multi-structure PDB files, which in turn fixes problems with loading XYZ files that contain many frames.
    • Sent a bug report to Sun Microsystems about their WS6 pre-release compilers on Solaris x86.
    • Compiled and tested with Sun WS6 x86 early access compilers.
    • Eliminated unnecessary scene constructors in several classes.
    • Ported VMD to HPUX 11.0 with both Mesa and OpenGL build support.
    • Fixed PR 57, New support for reading Charmm style DCD files.
    • Released beta 3. Going on vacation for 11 days.... Will answer VMD emails when time allows while out of town.
  • VMD 1.4 Beta 3 (11/18/99)
    • Added transparent surface support to the Raster3D file exporter.
    • Increased the default max recursion depth for Tachyon renders, since people are already running well past the previous limit of 5... The transparent surfaces eat into the recursion depth pretty darn fast.
    • New implementation of transparency for the OpenGL version of VMD, using polygon stippling to implement screen-door transparency. It is crude, but it works, and is very fast compared to other higher quality techniques. We'll eventually implement some other forms of transparency using more sophisticated alpha blending etc, but this will require more significant work and may be non-trivial.
    • New sphereRes sizing factor used in PSDisplayDevice matches the resolution of the OpenGL spheres pretty well for the same res value.
    • Fixed memory leaks in the PSDisplayDevice, hopefully for good.
    • Fixed missing "Print" command on the atom info popup menu.
    • Tested MSMS 2.4.1 with VMD on the Alpha platform and found that the Alpha versions of MSMS fail to accept socket connections. Filed PR 66, and contacted MSMS author. Working on a fix with MSMS author.
    • Tested MSMS 2.5.0 with VMD and found that it does not work correctly due to a bug in the MSMS socket interface. Filed as PR 65. MSMS author will have a new rev of MSMS soon that fixes its socket interface.
    • Fixed a bug in the Tachyon renderer export code, was inverting the correct values for "opacity" from VMD's "alpha". In VMD, "alpha" and "opacity" mean the same thing.
    • Updated other pieces of code with VMD_FILENAME_MAX to avoid problems such as the one that caused PR 61 on HPUX.
    • Fixed PR 63 (Surf rep crashes when using an atomsel)
    • Fixed PR 61 (Surf rep crashes on HPUX)
  • VMD 1.4 Beta 2 (11/09/99)
    • Improvements to the Tachyon renderer, now does transparent surfaces much better than it did previously.
    • New IMD sockets code yields a tremendous speed increase over previous versions. VMD's messages are now concatenated into a single block, and sent all at once, theoretically fitting into a single ethernet packet in most cases. This has yielded vastly improved interactive MD performance.
    • Several updates to make_distrib script, and to the way the VMD source tree is packaged locally, which greatly improves the build/release process over the old system.
    • Several improvements to the Postscript renderer in VMD, now generates much smaller files, runs faster, and supports more geometric primitives than it did previously.
    • Fixed a problem with AtomParser.y on AIX4
    • Updated the make_distrib script to work on HPUX.
    • Fixed the bugs in the input fields on the Win32 version of VMD. One of the bugs was a problem with FLTK itself, and can only be fixed by disabling a piece of code in FLTK, the other bugs were due to slight differences in the handling of text input fields in FLTK compared to the handling in XForms.
    • Filed, analyzed, and fixed Bug PR 52 reported by Dorina with coloring by molecule.
    • Updated OpenGLDisplayDevice X11 colormap code, Solaris wasn't the only OS that required AllocNone for truecolor visuals.
    • Improved the comments and layout of the configure script's user modifiable sections.
    • Eliminated the need for the old PHANTASTIC #defines.
    • Cut out dead code and configurations from the configure script.
    • Major updates to the documentation to allow creation of PDF file versions. Also updated the makefile to be more slick. Will need more work before final release.
    • Fixed a bug in Amber PARM/CRD reading which was crashing the windows version of VMD.
    • Updates to the VMD user documentation.
    • Massive const correctness improvements throughout the code.
    • Finally fixed a bug which prevented the Solaris builds from running when compiled by Sun C/C++ 5.x with -compat=5 instead of -compat=4, was a problem with the unput() macro in the AtomLexer code, uses same fix as the original GCC builds of VMD on Sun.
    • Improved speed of "same residue" selections, particularly for big systems.
    • Improved speed of "within" atom selections, particularly for big systems.
    • Fixed a bug in ColorList when matching Raster3D colors with VMD colors.
    • Fixed bugs in Radiance scene exports.
    • Improved the quality of Raster3D scene exporting and reading.
    • Eliminated "user add menu" and associated functions, since the popup menus are going away. This functionality is now better provided through the use of Tk for user provided GUI elements.
    • Eliminated more popup menu items which duplicate functionality in the main forms interface.
    • First successfull multi-screen version of VMD based on significant changes to OpenGLDisplayDevice, allows the VMD GUI and the graphics window to be on different screens. This is tremendously useful for doing projector based presentations.
    • First step towards eliminating the popup menus, disabled all of the menu items and submenus for which there are already form-based equivalents.
    • New multisample antialiasing additions, the code now goes for 8 samples per pixel, by default, and will fall back to 4 if not available. Also changed the visual request code to beg for 24-bit color, as some SGIs were messing up on us.
    • Merged the MoleculeFile* code into its respective Read* code, less files better compilation, etc.
    • Prevent Grasp files from attempting to load on little-endian machines.
    • Cleaned up the global namespace, renamed most of the vector math functions.
    • Successfull build and minimal test of fully up-to-date AIX4 build using hardware OpenGL.
    • Fixes for recent AIX 4.3 revisions and compilers. (including a workaround for a problem with inclusion of unistd.h when compiling with xlC)
    • Flattened MoleculeFile* classes down a level, more efficient, better organization.
    • Improved the Surf interface code, as well as several efficiency improvements to DrawMolSurface().
    • Lots of const correctness improvements in utility functions throughout VMD.
    • Various code cleanup in the tracker, and Cave code.
    • Updates to the VMD User Guide to cover previously undocumented VMD environment variables, and command line switches.
    • Various improvements to the new tracker code. Will now read the .vmdsensors file from the VMD installation directory if one is not found in the user's home directory.
    • New VMDCAVEMEM environment variable can be used to override the default 80 megabyte shared memory arena size used by VMD, for viewing large molecules with several hundred thousand atoms, this needs to be 200-500MB. Since the arena is allocated only once, you have to be sure that your allocation size is sufficient for everything you'll be loading into VMD when in the CAVE.
    • Several updates to the VMD CAVE code for NCSA to use it as a standard demo.
    • Released VMD 1.4 Beta 1 on both unix and windows platforms.
  • VMD 1.4 Beta 1 (9/30/99)
    • Updated doc files for beta 1 release.
    • Minor fix to fltk_ui.C to space the graphics form buttons better.
    • Fixed OSF1 configure options for non-testing builds (use gcc, not cxx).
    • Eliminated unnecesary MolList member variable from AtomSel class.
    • Fixed a bug in the MSMSInterface code /wrt sizeof() on write calls.
    • New VMD benchmarking system half-complete, using same tests as the 1.1 benchmark.
    • Generated test cases for VMD PR3, PR12 etc.
    • Fixed some unfixed Mouse.C code to use vmdGlobal struct display.
    • Fixed minor bug in CmdMol.C ("mol fix" command logging).
    • Updated contents of the VMD installation guide.
    • Rewrote the NameList template to use a real hash table rather than as a raw list with linear search, for all lookups. Large molecular systems with 200,000+ atoms now load more than 20 times faster.
    • Updated many files to match the const char * change in NameList.h
    • Changed the NameList template. The name() lookup function now returns const char * references rather than char * references to names. Also eliminated the "maxlen" parameters, as these seem appear to be unnecessary. (the maxlen parm was only used in UIText, and there are better ways of doing that anyway.)
    • Updated comments in FileRenderList.C and improved GUI listbox contents for POVRay 3.x export.
    • Eliminated the old POVRayDisplayDevice.[Ch] files, as there is no point in supporting out-of-date versions of that software any more.
    • Implemented automated nightly run of cvs2html to produce logs of recent VMD changes in the CVS revision control system etc.
    • Enabled Anonymous CVS registration page for people that want to be able to get code updates via CVS snapshots.
    • Decomissioned old VMD RCS tree structure, now using CVS full-time.
    • More user guide documentation updates for Interactive MD features.
    • Bug fixes to CmdIMD.C CmdMol.C Global.* MoleculeList.[Ch] P_UIVR.C SimFormsObj.C, which improve Interactive MD stability and operation.
    • Updated the VMD README for upcoming beta releases.
    • Updated the new ReadDCD.C with bug fixes.
    • Updated documentation makefile significantly, for building from CVS checkouts instead of the old way.
    • Fixed installation guide latex problem.
    • Continued progress on moving to CVS from RCS for VMD revision control.
    • Integrated the new ReadDCD.[Ch] and CoorDCD.[Ch] files which support on-the-fly byte swapping of reverse endianism DCD files. This will allow DCD files from a Linux cluster to be read by an SGI/Sun, and vice versa. Intel and Alpha run little endian, Sparc, MIPS, and PowerPC all run big endian. The new code autodetects when you read a reverse endianism file. The code will NOT fix byte orders that aren't simply big or little endian, if they are some other weird byte ordering, the code will still refuse to load the DCD file.
    • Fixed various MSVC compiler warnings in the new Tracker and IMD code.
    • Eliminated the Alpha Shapes code from VMD on a more permanent basis, pulling out all of the related ifdefs etc. The alpha shapes library use in the older revs of VMD is now long dead, and although the authors claim to want to bring it back to life eventually, by the time they do the existing code in VMD won't be useful anymore anyway.
    • Updated the new tracker code to get rid of some recent bugs.
    • Updated documentation for interactive molecular dynamics features, and removed MDComm and related documentation.
    • Eliminated all of the old Tracker code from the configure script, and from VMD source tree areas.
    • Fixed unprotected IMD headers that were causing problems on the Windows builds of VMD.
    • Changed both the Unix and Windows builds of VMD to use the new P_ Tracker code instead of the old code.
    • Added first joystick oriented code to new tracker system.
    • Fixed a const correctness bug in Stride.C
    • Added multiple output image file format options to tachyon so that the Collaboratory demos run faster (no need for outboard format conversion programs now..)
    • Documented the new tracker code.
    • Committed the new tracker code as the default, and removed the old tracker code from the configure script.
    • Started the process of removing all of the old MDComm code from VMD.
    • Made a tag revision checkin on all source files before we remove all of the old MDComm code from VMD.
    • Numerous updates to the VMD documentation for version 1.4, especially documentation for new Tracker system and new MDComm replacement code.
    • Fixed bug in the online VMD help reported by Daniel Barsky, the "logfile" command was incorrectly documented.
    • Added a new "VMDIMD" option to the configure script, which enables or disables the new interactive molecular dynamics code.
    • Updates to the interactive MD code to fix various bugs and improve communication rate with NAMD. The IMD code is now almost far enough along that the old MDComm code can be permanently retired.
    • Fixed bugs in DrawForce.C which caused force arrows to disappear from view under certain cases, when using with either the mouse or 3-D trackers such as the haptic device.
    • Fixed bugs in the DisplayDevice code for 3-D picking. The old code didn't behave well when used with a true 3-D spatial tracker or haptic device, the new code performs in a way consistent with intuition.
    • Updated the configure script AIX4 flags for compiling VMD to use hardware accelerated OpenGL, needed to add a new maxmem flag in order for correct optimization to take place.
    • Updates to the forms_ui.fd GUI description file in order to get it ready for significant changes that will require the use of the XForms "fdesign" program or the FLTK "fluid" program.
    • Updates to the VMD sockets code used in interconnecting VMD and NAMD for interactive MD simulations.
    • Numerous updates to the new tracker code, especially the GUI portions of the code. This code is very nearly ready to replace the old tracker system.
  • VMD 1.4 Alpha 5 (8/17/99)
    • Updated the XForms OpenGL window startup code to make things look a little nicer when the VMD graphics window first opens.
    • Built core VMD code on MacOS-X Server, although we have not built it with Mesa yet. We'll be trying one of the several Mesa builds for MacOS-X at some point, to see if we can go farther with this.
    • Updated the configure script and several source files in order to build new AIX4 versions of VMD now that various template problems have been fixed in the source code. VMD now builds correctly using the IBM xlC compiler again.
    • Implemented new code in Global.C to help VMD use less CPU time when it is idle. The new code causes VMD to sleep for a millisecond whenever it runs through VMDupdate() and vmdGlobal.DisplayUpdate is false, or when VMD is running using a text-only display. With the new code, VMD uses significantly less CPU when the command "display update off" is entered.
    • VMD was originally written on SGI machines that had various rendering bugs in their display hardware. One such bug is a well documented (and quite promiscuous) problem with glFog() when the fog mode is set to GL_LINEAR. Linear fog was apparently implemented incorrectly at the outset, and many of the early framebuffers from SGI, Sun, and other vendors have hardware bugs that make GL_LINEAR fog MUCH harsher than it should be. The workarounds for this problem don't fit well into VMD, and they still don't solve it to the degree that would provide identical output on any two machines. So, I've changed the OpenGL code in VMD to use exponential fog rather than linear fog. This should fix depth cueing so that it works well on most hardware, both old and new, and the results should look basically the same on any two given machines.
    • New code in VMD for implementing antialiasing on high end systems which support multisample rendering. This is an SGI OpenGL extension found on high end systems including RealityEngine, RealityEngine2, VTX, and InfiniteReality. The multisample rendering hardware allows VMD to antialias the scene with no modifications to the display loops, and in a single rendering pass, with virtually no loss in rendering performance. The new code defaults to requesting a GLX visual capable of doing 4 samples per pixel. When VMD fails to acquire such a visual it prints a notice that multisample antialiasing is unavailable. This code is only active on builds that find the appropriate #define in the OpenGL include files. It will automatically detect and use multisampling when available.
    • New code in VMD for implementing backface culling, which can provide a rendering speedup of up to 2x when applied to scenes with very complex space-filling representations, particularly on machines with minimal hardware acceleration (particulary fill-rate limited hardware). Has little effect on high end rendering machines. New GUI and Tcl commands complete the feature. Will be enabled on all future builds using OpenGL. We are not planning on implementing this feature in the GL version presently, since we are phasing out that version of VMD.
  • VMD 1.4 Alpha 4 (8/9/99)
    • Added Windows mouse cursor setting code, and code to handle the case where another application has reset the cursor, so VMD tracks the cursor on entry into the graphics window, and resets the mouse cursor to what VMD needs it to be.
    • Added window resize event handling code for Windows.
    • Custom hack to Rapp to allow us to get higher force application rates, by ignoring the return code on the force application command. Rapp no longer waits for the return code to be sent before continuing, so it blocks for a much much shorter period of time.
    • New tracker / haptic code that works with the old MDComm communications system. Can apply and feel forces in real-time now.
    • Rewrote the resolution calculation code in TachyonDisplayDevice since it assumed various things that aren't true in VMD, which lead to incorrectly sized rendered images. Also added the -mediumshade command line flag by default, which generates images which look much more similar to VMD's appearance (i.e. no shadows)
    • Made some simple optimizations to intensively used methods in BaseMolecule.C in order to improve performance of VMD.
    • The ResizeArray template needs to get rid of the find() method since some compilers instantiate it whether its apropriate or not, thus causing problems with struct foobar == struct foobar2 type errors...
    • Updated compiler flags for Alpha's using cxx
    • Rewrote MSMSInterface.C to use iostreams instead of fprintf for its user feedback messages and categorized them appropriately.
    • Updated the MSMSInteface.[Ch] files to clean up some dead code, eliminate a new compilation difficulty on certain HP compilers, and organize things a bit better.
    • Trackers can now pick different molecules arbitrarily, rather than grabbing all of them at once, they can pick whatever they are close to. This required updates to the Picking code as well.
    • New tracker code fixes bug in usage of VRPN on devices with many sensors. New code to apply arbitrary rotational offsets to trackers.
    • Fixed AtomParser.y to build on Alpha using cxx as well as gcc.
  • VMD 1.4 Alpha 3 (7/27/99)
    • Timed the execution of various stages of loading PDB files in MoleculeFilePDB.C to determine where bottlenecks exist in the current code. It appears that adding atoms to the various NameLists is the most time consuming part of the code, which is not what we had expected to find out. I/O accounts for about 5%, bond search another 5%, and NameList operations account for approximately 90%. Before the final release of VMD 1.4, we will likely be heavily revising the NameList template in order to dramatically raise performance when loading huge PDB files.
    • Reverted a couple of tiny changes to startup.h and Global.C that had temporarily broken the ability to use the -dispdev text startup flags correctly. The changes were needed while doing some debugging on Windows, but are no longer needed now.
    • Made small modifications to the popup.tcl script used by VMD to query for filenames and such when the user clicks their "save config" button on the popup menu. This was necessary so that we could eliminate the old undocumented "feedback" code, and replace with something slightly more organized.
    • Rewrote popup.tcl temporarily until we have a chance to replace the old feedback code with something else that can do file browsing nicely.
    • Eliminated numerous stale defines from the configure script and some matching ifdefs from utilities.C and MSMSInterface.C
    • Reorganization of all of the VMD templates to help increase code efficiency, elimination of multiplicity of identical instantiations, and generally bring the code closer to where it should be for the new compilers. Eliminates the need to use several deprecated (or soon to be) compiler and linker flags on Sun, SGI, etc. Helped decrease executable size by another 100-200K on some platforms.
    • Fixed a bug in MolAtom.C when reading in matrices into the new version of the Matrix4 class. Matrices were getting transposed when they shouldn't have been.
    • Updated the VMD Unix startup script with new code for environment variables needed by VMD 1.4 alpha 3 and later versions. Also cleaned up some of the existing structure.
    • Fixed several bugs in the OpenGLDisplayDevice.C code pertaining to the placement of the graphics window at program startup.
    • Eliminated more global variables, and moved a whole group of items originally in startup.C into the vmdGlobal structure.
    • new code that fully replaces the previous configList based startup configuration code.
    • Updated hershey font rendering code to compile for GL as well.
    • Fixes to the GL display code and the CaveTracker to match recent changes to the Matrix4 class.
    • Eliminated all of the currently dead/unused/historic-only code from GLRenderer.[Ch] PSDisplayDevice.C, VrmlDisplayDevice.[Ch] and related files.
    • Dropped support for GL builds on AIX3 and the NPGL library.
    • Paul made numerous improvements to the his new P_* tracker code.
    • Improved const correctness of utilities.[Ch]
    • Updated the VMD benchmark scripts to match changes in the VMD commands available. Now prompts for input in the VMD command window rather than a separate GUI window.
    • Replaced old code in DrawMolItem.C that used to use a text command to draw unbonded atoms as a '.' or an 'x', with new code that actually draws points. This yields much much higher performance, especially since the new font code is more complex than the old code was. May wish to redesign the point primitives so they can accept a size parameter.
    • Improved const correctness of various tracker/UI routines.
    • Updated TrackerList code so the Cave tracker works even when VMD is built without VRPN or UNC. (although this is still the older version of this code, not the new "Phantastic" version that Paul is working on).
    • Minor bug fixes to FormsObj.C for Windows and FLTK.
    • Minor bug fixes to fltk_ui.C for Windows.
    • Extensive cleanup of Matrix4 class and related code in VMD, eliminated unnecessary code, rewrote the matrix4 class to use higher performance code constructs.
    • Misc source file cleanup across the board.
    • Eliminated RCS log lines from all source files, and updated the make_distrib script to skip the awk code that used to rewrite the source files, distributions build faster now too. RCS logs will always be available via 'rlog' or via 'cvs log' when we finish moving to using CVS.
    • Added new "Phantastic" tracker code into main source tree, this code will eventually supercede the existing code, as it provides support for haptic feedback devices, and several tracker paradigms that could not easily be retrofitted into the old system. This code will provide the necessary functionality for implementing real-time force feedback for interactive MD simulations.
    • Fixed SymbolTable.C for new standard C++ function pointer syntax and semantics. (C++ and C function ptrs are no longer freely interchangeable, it is illegal to mismatch them)
    • Numerous updates to the configure script and to various source files related to the wholesale elimination of libg++, associated error handling functions etc.
    • Changes to AtomSel.C MolInfo.C for new regex code.
    • Replaced the GNU libg++ Regex class and rx library with PCRE and our own JRegex regex wrapper class. PCRE is a "Perl Compatable Regular Expressions" library, is more portable than the GNU stuff (less hackage needed) and has a less restrictive license agreement.
    • Replaced the GNU libg++ String class with our own homegrown JString class written by Justin. JString is 40 times smaller than the GNU String class because it only provides the functionality we're actually using in VMD.
    • Experimented with replacing the GNU libg++ string class with the STL string class, and our own JString class. We've successfully compiled and run VMD using our JString class, but there are still a few buglets to eliminate. Once we replace GString with JString, VMD should compile on the new fully standards compliant C++ compilers which previously did not work for VMD.
    • Eliminated RemoteList class since it is no longer needed for next generation MDComm code.
    • Integrated and tested Charles Schwieter's font code changes, but can't commit them to the tree until later.
    • Finally fixed some long standing instances of very poor C/C++ constructs and syntax in numerous include files where it was necessary to use forward declarations, and in some other places where the "struct" keyword was used to declare classes (with fully public everything). The new code is _much_ better.
    • Made progress on further cleanup of global namespace.
    • Eliminated dangerous custom hacked "extern xxx foo" declarations in many VMD source files, and replaced them with actual include directives for the appropriate files. This caused some difficulty when renaming a few variables, although strangely enough the linker let some of these problems get by unnoticed. Its things like this that make you not trust your compiler and linker...
    • Eliminated improper use of errno in ReadPARM.C as well as improper include of sys/errno.h and unnecessary related ifdefs.
    • Succesfully tested the current version of the code with MDComm and the current version of NAMD2. So far the IRIX5 build of VMD works fine with the IRIX64 build of NAMD2 which was the test configuration. Have not tested on other platforms.
    • Collapsed many global variables down into a single global structure, makes it much easier to identify references to these globals, and eliminates most global namespace usage as far as variables go. This change affected most source files...
    • Beginning of major reworking of the VMD Tracker code to facilitate interactive MD with haptic feedback. Updated UIVR.[Ch] Tool.[Ch] GrabTool.h MoveTool.h PointerTool.C RotateTool.h TransTool.h TugTool.h Eliminated the old VButton* VRegion* and DLinkList* files from current VMD builds, as the functionality will be replaced by newly designed code.
    • Updates to Windows VMD code to improve the likelihood of hardware acceleration in the VMD OpenGL window by choosing the Windows Pixel Format more carefully.
    • Windows version of VMD now supports Stereoscopic display modes on machines with sufficient hardware. Tested on an HP Kayak XW using CrystalEyes glasses.
    • Updated TrackerList.h VRPNTracker.[Ch] with quaternion code, and with some general cleaning.
  • VMD 1.4 Alpha 2 (6/18/99)
    • Updated numerous files so that builds on DEC/Compaq Alpha no longer generate alignment faults at runtime. The fix is a short-term solution to the problem which should allow us to release Alpha binaries of VMD finally. In the long term, the display commands code will have to be rewritten from scratch, since the problem is one of design, not just implementation. The fixes bump the storage addresses of 64-bit objects (in this case pointers/longs...) objects so that they align on even 8-byte boundaries, thus eliminating alignment faults. The code is still experimental, and is only enabled when building on the Alpha platform. Updated: DisplayDevice.C Displayable.C FileRenderer.C OpenGLRenderer.C PSDisplayDevice.C STLDisplayDevice.C TokenDisplayDevice.C
    • Significant clean up of OpenGLDisplayDevice.C, so that a future alpha release can combine the Win32 and Unix code together in a single file finally.
    • MSVC builds code the major and minor revision of the binary into the executables themselves, also increased default stacksize reservation.
    • Updated to FLTK version 1.0.4 for builds of VMD 1.4.
    • Eliminated compiler MSVC Level 3 compiler warnings and improved floating point consistency of operations in the following files: TclCommands.C AnimateFormsObj.C ColorFormsObj.C DisplayFormsObj.C MoleculeFileEDM.C MoleculeFileGraph.C MoleculeFileGrasp.C MoleculeFileMDLMol.C MoleculeFilePDB.C MoleculeFileRaster3D.C MoleculeGraphics.C MolInfo.C Mouse.C OpenGLRenderer.C PickModeCenter.C PickModeMolLabel.C PickModeQuery.C POV3DisplayDevice.C POVDisplayDevice.C PSDisplayDevice.C R3dDisplayDevice.C RadianceDisplayDevice.C ReadPDB.C ReadPSF.C TrackerFormsObj.C VMDTitle.C TachyonDisplayDevice.C startup.C Surf.C SnapshotDisplayDevice.C PointerTool.C RayShadeDisplayDevice.C
    • Further consolidation of machine dependent codes which were previously spread out throughout the VMD source. Also eliminated lots of redundant include directives in various source files.
    • Cleaned up last remaining references to some ancient UITk code.
    • Eliminated IRIX4 ifdefs, we don't care about IRIX4 anymore.
    • Cleaned unused state variables in OpenGLRenderer.C and PSDisplayDevice.C
    • Migrated machine dependent console I/O code from UIText.C to utilities.C for easier porting.
    • Eliminated duplicated functionality inherent in the Timer.[Ch] class, no longer used by VMD. All code now uses the time_of_day() function in utilities.C since it is much smaller, and provides the exact same functionality that the Timer.[Ch] code was previously used for.
    • Cleaned up name collisions between Animate.h enums and Windows. Used to have to #undef things that came from including windows.h, now it works fine with no hacks.
    • Further cleanup of platform dependent code all over the place. replaced most direct calls to platform dependent file/directory routines with vmd-provided portable functions. Also added new Windows user identification code. Cleaned up namespace somewhat as well. Updated files: Surf.C BabelConvert.C startup.C VMDDir.[Ch] utilities.C RemoteFormsObj.C ReadDCD.C CoorFile.C CommandQueue.C utilities.h Remote.C CmdRemote.C
    • Major rewrite of large parts of Surf.C to make it work correctly on Windows.
    • Updated win32vmdstart.c to handle setup of Babel environment.
    • Better decision logic for temporary directories on Windows in startup.C
    • Updated configure script for new source files VMDDir.[Ch]
    • Update VMDtempDir() in Global.C as well as the Babel code in startup.C so that the Windows version works correctly.
    • Many many fixes made to BabelConvert.C and a custom build of Babel itself so that it can properly handle long filenames (which VMD cannot live without....). Also implemented two new files VMDDir.[Ch] which contain opendir()/readdir()/closedir() type functionality for Windows, as well as Unix for portability.
    • Changed VMDTitle.C and VrmlDisplayDevice.C so that there's no special case code for Windows anymore.
    • Fixed time_of_day() routine in utilities.C so that the Animate form works completely correctly on Windows.
    • Eliminated needless ifdefs in UIText.C for Windows/Unix, since they can share more code now.
    • Fixed several small GUI bugs in the Animate form with FLTK.
    • Windows version of VMD now reads DCD files of proper endianism, will not auto-convert yet however.
    • A major rewrite of large sections of ReadDCD.[Ch] to make it work on Windows, and to make it more portable in general. Also required changes to CoorDCD.[Ch]. This version still doesn't handle reading DCD files of reversed endianism, but its a major leap forward.
    • Fixed bugs in AtomRep.[Ch] so that the MSMS menu item doesn't show up in VMD builds that have MSMS disabled, was previously showing up anyway, even though the code was disabled. This was important for the Windows VMD, since there's no MSMS for Windows.
    • Changed windows startup code to quote the filename/path of the Stride binary to prevent problems with directory names that contain spaces.
    • Added Stride.[Ch] to Windows project files and such.
    • Updated vmd.bat and win32vmdstart.c for new STRIDE_BIN variables.
    • Eliminated unused local variable in Stride.C
    • New code for invoking Stride, runs much much faster, and will work correctly on Windows. (Stride.C and Stride.h) Updated configure script and startup script.
    • Several fixes to the configure script for compiling using gcc/g++ on Alpha systems running Tru64 Unix.
    • Fixes to the librx rx.h header file when compiling using gcc/g++ on Alpha based systems running Tru64 Unix.
    • Fixed the "mol pdbload" command since RCSB has reorganized the layout of the PDB download site in a new and incompatible way.
    • Changed Global.C and startup.h so that it is possible to create VMD builds with text, GUI, but no graphics. This is mainly useful for debugging purposes.
    • Updated release notes with Winsock2 and OpenGL 1.1 download/install requirement for Win95 users. Essential for running VMD on Win95.
    • Fixed the Render form so that clicking the "list" button opens the file browser on FLTK builds of VMD.
    • Fixed the labels on the mol load buttons in FilesFormsObj.C, FLTK doesn't do labels the same way XForms did, so the code had to be changed to make some strings static. (XForms did a strdup() on the strings internally)
    • Updated the FLTK code in FormsObj.C that gets/sets form positions.
    • Made 1999 VMD User Survey Report available via WWW.
    • Updated 1.4a1 release notes web pages
  • VMD 1.4 Alpha 1 (5/19/99)
    • Released VMD 1.4a1 for the Windows platforms only, no Unix version will be released until the Beta stage.
    • Built a WinZip self extracting installable archive using the files generated by InstallShield.
    • Built a special "first level program loader" that starts the main VMD executable correctly, sets up the environment so it will work when it is installed by the InstallShield generated installers. This takes the place of the vmd.bat batch file used in testing, which was a derivative of the "vmd" C shell script on Unix.
    • First version of VMD 1.4a1 Windows Installer scripts/program
    • Made a cheesy VMD splash screen for the Windows installer.
    • Updated VMD builds to use FLTK version 1.0.3
    • Added keyboard event handling to Win32OpenGLDisplayDevice.C
    • First version of Win32OpenGLDisplayDevice.C that handles mouse events in the OpenGL window. Does not handle keypress events yet, but very very soon.
    • Fixed the event handling loops in FormsObj.C so that FLTK builds and GL builds now use the same event loop, and the XFORMS OpenGL builds are the only exceptional case. This should lead to having working event handling in the Windows VMD OpenGL window.
    • Updated MSVC project files to enable the FLTK GUI.
    • Changed FormsObj.C to include string.h instead of strings.h on Windows builds.
    • Measure.[Ch] function measure_error(): renamed parameter "errno" to "errnum" in several spots to prevent serious troubles conflicting with the system macro of the same name on multithreaded Windows builds.
    • Updated Timer.C with new code for Windows, gives better timer precision resulting in a much more attractive title screen among other things.
    • Eliminated unused code from the NameList template, removed functionality which is not actually used in VMD. This saves a noticable amount of executable code size (since its a template). This also eliminates a fair amount of overhead from the process of loading new molecules which is important when working with large molecular systems.
    • Added another round of improved window event handling to the Windows OpenGL display device code.
    • Fixed a recently introduced bug in AtomColor.C with a premature delete..
    • Changed some delete's to be conditionally compiled out of the Windows builds of AtomRep.C, and AtomColor.C due to intermittent crashes they cause when they try to delete a null object, or when they try to delete a stack allocated variable. This code will definitely need further revision.
    • Found problem in NameList template when adding new names to the end of a list on the Windows build. Applied a first rev fix, but need to perform much more extensive checking.
    • Fixed several bugs in OpenGL state initialization for the Windows builds of VMD.
    • Successfully built a non-debug version of VMD on Windows after making several corrections to the project files.
    • Updated the MSVC 6.x project files to use the same library directory structure as is used in the Unix versions of VMD. The Win32 builds now use the regular VMD "lib" hierarchy just like the Unix builds.
    • Upgraded the Win32 build of VMD to use Tcl/Tk/TclX 8.0.4. This also allows the Windows and Unix versions to share the same startup files now.
    • Fixed AtomLexerWin32.C and AtomLexer.l to prevent otherwise serious runtime problems with the Win32 compiled scanner code.
    • Changed color by beta, charge, mass, position, and occupancy to get their data directly from mol->atom rather than doing an atom selection, in file AtomColor.C
    • Updated VMD user guide documentation with corrected Babel version information and web links.
    • Changed all uses of free() on Tcl allocated data to use ckfree() which operates correctly regardless of how the Tcl libraries were compiled. This is a critical issue for Win32 since ckfree() is basically what is used internally, and may be implemented with GlobalFree() instead of free(), causing crashes when they are mismatched. By using ckfree() we are using the matching call to whatever the Tcl library used internally.
    • Fixed Scene.C to prevent accidental scaling by 0 when scaling with the mouse.
    • Fixed username() function in utilties.C to correctly call stringdup() instead of returning a constant string for the windows version, was causing various things to crash the win32 build of VMD when trying to free this memory.
    • WOOHOO!!! The VMD OpenGL window runs correctly on Windows, with full double buffering, 24-bit color, and hardware acceleration. What a beautiful sight to see the VMD title spinning on a windows box.
    • A huge number of changes to OpenGLDisplayDevice.C so that X windows and Win32 code could take advantage of the same basic structures, much cleaner layout than before. Still needs lots of cleanup work.
    • Numerous fixes to OpenGLDisplayDevice.h for Win32 builds.
    • Fixes to OpenGLRenderer.h for Win32 builds.
    • Eliminated rint(), erf() and erfc() from VMD's atom selection language since support for these is very system dependent, and they are not widely supported and had to be disabled on some platforms anyway. If need be, these can be added back in some other time.
    • Removed annmm atom selection language functionality from AtomSel.C
    • Eliminated dead code in PSDisplayDevice.C and STLDisplayDevice.C
    • Improved consistency of floating point operations across the board.
    • Fixed a serious residue counting bug in AtomColor.C
    • Eliminated all Windows MSVC Level 3 compiler warnings for: ArtDisplayDevice.C, AtomColor.C, AtomRep.C, AtomSel.C, BaseMolecule.C, CmdAnimate.C, CmdColor.C, CmdDisplay.C, CmdTool.C, CmdTracker.C, CmdTrans.C, CmdUtil.C, CoorCRD.C CoorCRD.h, CoorDCD.C, CoorDCD.h, DispCmds.C, Displayable.C, DisplayDevice.C, DrawForce.C, DrawMolItem.C, DrawMolItem2.C, DrawPatch.C, FileRenderer.C, Matrix4.C, Stage.h, TclGraphics.C, TextTracker.C, Timer.C, Timestep.C, TransTool.C, TugTool.C, utilities.C, UIVR.C, VRegion.C, VRegionList.C, VrmlDisplayDevice.C
    • Eliminated all Windows MSVC Level 2 compiler warnings for: AtomRep.C, Axes.C, BaseMolecule.C, CmdTool.C, CmdUtil.C, ColorList.C, DisplayDevice.C, DrawForce.C, DrawMolItem.C, DrawMolItem2.C, DrawMolecule.C, GrabTool.C, LightList.C, Measure.C, MoleculeFileEDM.C, MoleculeFileMDLMol.C, MoleculeGraphics.C, Mouse.C, MoveTool.C, PointerTool.C, R3dDisplayDevice.C, RotateTool.C, ToolControl.C, Tracker.C, TransTool.C, TugTool.C UIVR.C, VMDTitle.C
    • Eliminated all Windows MSVC compiler warnings for
    • Fixed several mismatched class/struct declarations in SymbolTable.h and ParseTree.h
    • Regenerated DrawMolItemSolventPoints.data such that it doesn't generate 5,000 Level 2 Warnings when compiled with MSVC for Windows.
    • Updated Windows project/workspace files with latest changes.
    • Eliminated extra calls to VMDgetEnvironment()
    • Eliminated "-?" and "-init" startup flags, VMDreadInit() function.
    • Eliminated ConfigList class and related functions, added a few items to VMDgetEnvironment() to support needed features, and updated the configure script..
    • Eliminated the use of the ".vmd_init" startup configuration file. Configuration is done entirely in the VMD startup or through environment variables now.
    • Eliminated some static data in Timestep.
    • Fixed coloring by occupancy bugs in trajectory playback.
    • Eliminated some data from Timestep class, moved to Molatom.
    • Removed several unused member variables from BaseMolecule class.
    • Fixed anachronistic C++ constructs in SymbolTable and ParseTree code.
    • New compiler flags to allow VMD to build correctly with Sun C/C++ 5.0
    • Eliminated the "feedback" tcl command, which was undocumented.
    • Added "sleep" command internal to VMD using vmd_sleep() code.
    • Preparations to begin VMD 1.4 development tasks after the final release of VMD 1.3.

    Please email any questions to vmd@ks.uiuc.edu.