OGLE Development History ========================= Mon Jun 17 22:53:19 MDT 2002 [Removed data shadow due to texture coordinate repeat-at-edge: (<30 minutes)] Added GL_TEXTURE_WRAP_*, GL_CLAMP in oparen.c. (Also set MIN filter to use mag_filter, No obvious visible change.) It's possible that the texture coordinates are >1 very slightly. Thu Nov 8 13:40:52 MST 2001 [Replace OgleWidget static variable and functions: (est 2 weeks, compl 1 day)] Removed OGLE_WIDGET_P. Added ow_parent member to to dataview and colormap. Changed prototypes for owStatusStringRemote, owDataViewAddRemote, owUpdateRemote. Consolidated "-dv" source layer into dataview drawing source layer. Sun Nov 4 13:59:37 2001 [Dataviews (e.g. Vector Field); selected_var=-1 coredump: 2 hours] Used selected_var instead of dci_offset to compute magnitude. Got rid of dataValueUnitary function. Sun Oct 28 23:49:42 2001 [data; selected_var semantics inconsistent: 1 day] selected_var=-1 now indicates "vector magnitude of the vector starting at dci_offset". Got rid of redundant and dangerous (in multi-threaded case) var_selected member of DataS Fri Sep 14 2001 [fixed multi-field rendering bugs: 4 hours] Three buggy behaviors ended up having the same cause. Multi-field compositing algorithm was wrong. This caused mylti-field images to look wrong, and caused occasional divide-by-zero which, I guess, generated floating-point exceptions that slowed the machine. On an SGI, FPE does not cause the process to halt; it just yields (apparently) inf which, when cast into an integer, becomes the largest positive value the int type can represent. Solution: use correct composite algorithm, using pre-multiplied alpha scheme which gets converted to non-pre-multiplied colors at the end. Thu Sep 6 2001 [fixed Failed Texture Manager Malloc (on SGI): (long time)] Exceeded 32-bit addressing range, i.e. used more than 2 gigabytes of user memory in a single process. Compiling with "-64" fixed the problem. Wed Sep 5 2001 [Use stderr for all verbose reporting: (1 day; done)] send verbose messages only to stderr. stdout can now be used for something more useful. new, single log file is called "ogle.log" Wed Aug 22 2001 [Volume not centered: (1 day, done)] The volume was not perfectly centered. Required altering the data and subset bounding boxes and the coordinate scheme of each of the dataviews. Thu Apr 12 2001 [Allow toggling of linear filtering (0.5 day, done)] OpenGL allows for a linear magnification filter for textures. This improves image quality especially for stride>1 situations, but it might slow the rendering, especially on machines whose graphics hardware lacks interpolation. Thu Apr 12 2001 [Rotation transformation within command file: (0.5 days, done)] The command file supported translation and scaling but not rotation. It makes sense to provide rotation as Euler angles. Additionally, those Euler angles are now displayed on the GUI, as are the scales. Also added "snap" to integer Euler angles. Tue Apr 17 2001 [Background color command line args: (1 hour, done)] The bg_color args seem to be handled incorrectly for the case where only two colors are specified, intending to set the top and bottom only. Wed Apr 18 21:17:25 MDT 2001 [Double buffer image write: (0.5 day, done)] Writing image series with double buffering wrote the /previous/ image instead of the current. Fix entailed using glReadBuffer. Fixed single/double buffer toggle at runtime. Changed semantics of "-single" command line option to disallow "double" at runtime. Fixed stereoscopic background color problem. Fixed various stereoscopic mode bugs. Apr 23 MDT 2001 [Unreadable data file ramifications: (2 hours, done)] When the script file listed a data file that Ogle could not read, the data.num went to zero, and subsequent calls to dataSubsetAdjust resulted in zero subset size. The new behaviour allows Ogle to temporarily ignore the missing data file and resume with the properly sized subset. I implemented this by setting the data.num elements to negative values instead of zero. This caused changes throughout the code, primarily in "subset" but also in oparen. Wed Apr 25 20:47:19 MDT 2001 [Added translation spinners: 2 hours, done] Also improved some GLUI reaction time for Euler angles Added "snap" feature to translation aspects of orient. Wed May 02 14:35:07 MDT 2001 [Change subset "max" semantics: (2 hours, done)] subset "max" had the same semantics as "num", which differed from the "min" semantics. This violated the principle of least surprise. Since the change was subtle it is possible that some leftovers remain. Mon May 7 12:01:29 MDT 2001 [Added getrlimit and setrlimit: (1 hour, unfinished)] Because of the resource limit problems encountered earlier, and to avoid requiring the user to use "limit" to set the resource limits, "main" now calls "rlimitMaximize" to try to set heap and stack limits to the hard limit values. The routine seems to work, almost. The problem is that the machines I use sometimes report weird values for the maximum, and setting the value to "RLIM_INFINITY" never seems to work. Another option could be to use ulimit(2). [Translation text widget: (0.5 days, done)] The translation is now available on the GUI as a text field to accompany the "arrow" translation widgets. Tue May 22 11:42:02 MDT 2001 [Added comment to PPM image file: 0.5 hours, done] PPM image file now contains a comment line including the data volume filename (the first one), the script filename, the index within the script filename of the current data set, and the total number of entries in the script. 2001 may 25 [Stride and Opacity Renderer Dimming: (4 hours, done)] See ALPHA_GAMMA in oparen.c Fri Jun 1 12:55:51 MDT 2001 [oparen subset white plane: (2 hours, done )] Opacity renderer had one opaque white plane when subset min is even and max is even, when stride is 2. Problem was with dataSubsetMax, which I rewrote to solve the problem. It's possible that this problem could return, depending on other possible subtle semantics mismatches between dataSubsetMin, dataSubsetMax and dataSubsetCount. Basically, the texture build and the renderer need to agree on the number of planes. The code used to establish indexing is not identical in those two routines. I should possibly change this. Wed Jul 11 13:00:18 MDT 2001 [Rename VolRenOglWidgetS to OgleWidgetS: (2 hours, done)] The name "VolRenOglWidgetS" was an obsolete artifact.