aboutsummaryrefslogtreecommitdiff
path: root/Gem/gem.release_notes.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Gem/gem.release_notes.txt')
-rw-r--r--Gem/gem.release_notes.txt1018
1 files changed, 1018 insertions, 0 deletions
diff --git a/Gem/gem.release_notes.txt b/Gem/gem.release_notes.txt
new file mode 100644
index 0000000..c3e5077
--- /dev/null
+++ b/Gem/gem.release_notes.txt
@@ -0,0 +1,1018 @@
+GEM ONLINE DOCUMENTATION CHAPTER 5: RELEASE NOTES
+
+---------------------------------------------------------------
+---------------------------- 0.91 -----------------------------
+this is the first release for 3 years, codename 'tigital'
+it includes many changes, so probably i have forgotten most...
+
+openGL runtime checks: GEM now uses GLEW to detect openGL-features
+ at runtime this allows you to use all the cool features of
+ your brand-new graphics card with the same binary as you
+ used for your old gfx-card...cool
+
+w32-installer: there is now a w32 installer (based on NSIS) to
+ ease the installation of GEM on windows.
+
+single vs dual context: GEM uses a dual context approach to establish
+ a valid openGL-context at startup;
+ you can now turn this OFF by setting the environmental
+ variable "GEM_SINGLE_CONTEXT=1"
+ this should allow you to work if GEM crashes otherwise
+
+SIMD: better MMX/SSE2 handling
+
+pixes: fiducial tracking, artoolkit,
+ multitexture, texture sharing
+ recording streams of images into movies,
+ better movie reading support, better video in support,
+ more sophisticated pix_buffer handling
+ shared memory objects
+
+text: allow unicode characters
+ use vera.ttf as default font instead of the
+ copyrighted arial.ttf
+ allow to override the default font with the environment
+ variable "GEM_DEFAULT_FONT"
+
+
+bugfixes: like always we have removed (and introduced) numerous
+ bugs, so all in all GEM should now run more stable
+ for an incomplete list of fixed bug see the bug-tracker
+ at http://sourceforge.net/projects/pd-gem
+
+openGL: generally use openGL-2.0 (if available)
+ vertex/fragment shaders (GLSL and ARB/NV)
+ framebuffers
+
+
+deletion:
+ MarkEX has been removed from GEM and is now available as
+ a separate library;
+ hardware-interfacing objects like [gemorb] and [gemtablet]
+ have been removed
+
+
+
+
+---------------------------- 0.90 -----------------------------
+this is the same as 0.888
+just a naming issue
+
+---------------------------------------------------------------
+---------------------------- 0.888 ----------------------------
+
+this has taken a long time (2 years...)
+
+development is now done by several people:
+ chris clepper
+ günter geiger
+ daniel heckenberg
+ james tittle
+ IOhannes m zmölnig <zmoelnig@iem.at>
+günter has removed himself from the splash-screen, but he still contributes stuff
+
+supported platforms: windows (XP,2000,...), linux, and (tadah:) macOS-X(>10.2)
+irix-support seems to be broken, but i cannot prove it
+
+architecture: up till now, the rendering-tree was statically built when rendering was
+ turned on, so you couldn't add objects dynamically and editing was painful.
+ now, Gem utilizes the normal pd-messaging system all the time: you can disable
+ parts of the rendering tree with [spigot], render sub-trees multiple times with
+ [t a a] and put objects into the gem-tree on the fly.
+
+documentation: added help for (almost ?) all Gem-objects (excluding openGL-wrappers)
+ new reference-patches are now working out of the box (not the old "abstract" way)
+ added a small pdf-tutorial
+
+
+openGL: GEM features now a full openGL-wrapper (supporting openGL-1.2)
+ you can use any openGL-command like "glNormal3f" by creating a pd-object like
+ [GEMglNormal3f] (note the "GEM"-prefix); this should be very powerful,
+ however most of the objects are not (yet) tested.
+ if you intend to use them and think they don't work,
+ send me a bug report for the objects you need;
+ i will try to fix them gradually.
+ there will be not much help in GEM, since you might consult any openGL-reference
+
+text: we now use FTGL instead of GLTT (which is still available at compile time)
+ for freetype-rendering. this is supported on all 3 platforms,
+ looks better (at all sizes!) and allows the new [textextruded]
+
+geos: tube, curve3d, rubber, ripple, slideSquares, newWave
+
+manips: polygon_smooth for anti-aliasing of single objects
+ [camera]
+
+controls: the output of [gemmouse] can now be normalized (by giving the maxVal for x/y as
+ arguments: [gemmouse 1 1] will output coordinates between 0..1, no matter what
+ dimensions the screen has.
+
+particles: now the underlying libparticle-engine can be used more directly.
+ velocity-domains (like [part_velcone]) are deprecated and [part_velocity]
+ should be used instead (allowing on-the-fly domain-switching)
+ there are objects that allow to influence single particles
+ (like [part_vertex])
+ most interesting: with [part_render] and [part_info] you can now use any
+ geo as particles (e.g: .obj-models) not only points/lines as before.
+
+texturing: [pix_texture] and [pix_texture2] has merged. so [pix_texture] will texture
+ textures of any size (even non-power-of-2) and it will use hw-support if available
+ (at least on macOS and on linux if the gfx-card supports it
+ (at least nvidia does so))
+
+pixes: lots of new objects (too much to enumerate them here)
+ we now support 3 different colorspaces: RGBA, YUV, Greyscale
+ YUV is new and allows processing of coloured-images with far less memory/CPU
+ than RGBA (factor 2) but without alpha.
+ lots of pix-processing on apple-computers is ALTIVEC-enhanced (faster by numbers!)
+ SIMD-enhancements for PCs (MMX/SSE2) is yet to come...
+ as the new colorspace has been pushed, also a lot of objects has received
+ greyscale-support
+ the TV-class has been deprecated and is now part of pix_* again
+ lot's of color-space converters (most of them not available as objects)
+ the "pix_fx"-stuff is now built into all pix-objects
+
+video: on mac-OS the [pix_video] object supports all cameras that are supported by the OS
+ on windows there is now support for DirectShow,
+ which makes new (usb/ieee1394) cameras work most probably
+ on linux there is some prelaminary(!) support for ieee1394 devices.
+ the v4l-support is now multi-threaded which speeds up the whole thing significantly
+
+film-formats:
+ windows: AVI; there is also some QUICKTIME-support
+ (needs the quicktime-sdk at compile time and quicktime installed on execution time),
+ but this crashes sometimes (haven't found out when).
+ it should enable "a lot" of file-formats (MPEG, MOV)
+ macOS: quicktime serves your needs
+ linux: support for libavifile, libmpeg3 (or libmpeg1 but libmpeg3 is preferred),
+ libquicktime (or libquicktime4linux; doesn't matter) and ffmpeg.
+
+codecs: macOS: everything that is supported by your system should work fine
+ win: all codecs installed on your machine should work
+ (if another program can play a avi-file, Gem should be able to do so too)
+ linux: depends on how you compiled Gem. libmpegX will decode mpegs,
+ libquicktime will (most likely) decode quicktime-files with non-proprietary codecs,
+ libavifile decodes a lot of formats (avi, quicktime, divx, asf,...)
+ and you can utilize windows-codecs (.dll-files; if you have them ;-))
+ which enables you to play-back proprietary codecs!
+
+bug-fixes: probably lots of, but most of them seem to linger around for a while now.
+
+
+
+---------------------------------------------------------------
+---------------------------- 0.87 -----------------------------
+Added much documentation
+
+Added [gemkeyboard] and [gemkeyname] for keyboard-interaction in the GEM-window. However, Windows and Linux versions do not give the same results...
+
+Added Red/Green stereo
+Cleaned up the stereo-thing. we can switch between the different stereo-modes (including no-stereo) while rendering
+
+You can set the title of the GEM-window with the "title"-message. Up till now only one symbol is allowed.
+Added "fullscreen" mode
+Fixed "border" under linux
+"cursor" is now available on Windoze
+
+readded "externals" with additional libraries to close up with the windows version::
+Added pix_movie for Linux (mpeg2+quicktime-support)
+Added pix_film, which is in fact like pix_movie but does not write the pix-buf directly into a texture
+Fixed the model
+Added the stupid "teapot"
+Added a pix_write that let's you capture the current screen into a file (TIFF/JPEG)
+Added pix_hsv2rgb, pix_rgb2hsv (colour-space converters)
+Added pix_blob (center of gravity:: colour detection)
+Added pix_curves, pix_histo
+Added pix_set, pix_dump
+Added pix_pix2sig~, pix_sig2pix~
+
+Started a new class "tv" for pix-operations that change over time: like tv_movement (formerly: pix_movement), tv_biquad, tv_rtx; but i am not really happy with this...
+
+Started a new pix_fx class for inserting pix-FX. there is not much about it, but you can now bend the image.data pointer to wherever you like (including size-changes, format-changes) it will be bent back in the postrender()-thing
+
+Started to import classes from effecTV (by Fukuchi Kentarou): pix_aging, pix_puzzle; most of his FX are real crap, but some are ok and it's easy to import them
+Made a pix_rgba
+
+
+---------------------------------------------------------------
+---------------------------0.84-5 -----------------------------
+Bugfixes for gemwin "cursor" message (cursor [1|0])
+Removed "externals" with additional libraries, they are separated now
+Added a "freq" and "mode" message to Linux video object, you can watch
+ TV now ...
+It is possible to add the display to the create command for X windows,
+ whole initialization stuff is moved into the create method,
+ so you can look at the patches without having succesfully generated
+ an OpenGl context.
+Made the pix_video and pix_movie into real base classes of OS specific
+ classes. The OS spezific classes for Windows and SGI have to be fixed ..
+
+
+---------------------------------------------------------------
+--------------------------0.84a -----------------------------
+text2d: added a message "alias", which toggles between antialiases
+ and standard fonts. Usage "alias 1" or "alias 0"
+
+gemwin: additional message cursor, which hides the cursor in
+ GEM windows
+
+
+
+
+---------------------------------------------------------------
+---------------------------- 0.84 -----------------------------
+Fixed a bug where delete [] was called instead of delete. This
+could explain a lot of random crashes.
+
+Fixed camera message routing.
+
+---------------------------------------------------------------
+---------------------------- 0.84 -----------------------------
+I long time ago, I changed the behavior for gemhead, so that
+matrices where automatically restored, etc. However, this
+broke the camera object. Use the view message to gemwin
+instead.
+
+Fixed a bug in GemMan. If you didn't use "border 0" and you
+requested a window size with "dimen # #", then the window
+size was likely to be wrong. This is now fixed.
+
+Fixed a bug in the view message to gemwin. There was an offset
+which should not have occured. You might need to change your
+view messages to account for it. Just subtract 4 from any
+Z values.
+
+There are some examples for pix_snap in
+ examples/gemAdvanced/gemPixSnap.pd - Single buffered example
+ examples/gemAdvanced/gemPixSnap2.pd - Double buffered example
+Keep in mind that pix_snap is a fairly slow operation...I also fixed
+a nasty memory bug which could easily cause crashes.
+
+I added Miller Puckette's pix_video for linux into the
+code base.
+
+If you load a movie in pix_movie with an open message, the
+object will output the number of frames to the right output. This
+will not work if you have a "pix_movie homer.avi" for your object
+since the output message cannot get processed correctly at
+startup.
+
+The disk object has an inlet on the rightmost side for the
+inner radius...turning the disk into a ring. If the inner
+radius value is just 0., then the disk is just a circle.
+
+Fog can be turned on in gemwin. Look at
+ examples/gemAdvanced/gemFog.pd
+for examples. The various control messages are documented
+in the gemwin.pd help patch.
+
+These next objects are thanks to hannes - mailto:zmoelnig@iem.mhsg.ac.at
+---------------------------
+Added OpenGL material objects -
+ ambient, ambientRGB, diffuse, diffuseRGB, emission,
+ emissionRGB, shininess, specular, specularRGB
+ They provide much greater control over the color of objects.
+Look at
+ examples/gemLighting/gem5.materials.pd
+for examples.
+
+Guenter found a bug in the ortho object. It is now fixed. The
+ortho object has the same general unit size as the normal
+perspective matrix. Look at
+ examples/gemAdvanced/gemOrtho.pd
+for how to use the object.
+
+---------------------------------------------------------------
+---------------------------- 0.83 -----------------------------
+Added another outlet to counter. When the counter reaches
+the "count to" value, the right outlet will send a bang. The
+bang happens after the left inlet sends its float.
+
+Fixed a dumb bug in pix_2grey. It didn't calculate the
+number of pixels correctly.
+
+Adding some comments to the FAQ that pix_draw is almost
+always slower than pix_texture on PCs. Basically, graphics
+accelerators do not accelerate glDrawPixels().
+
+Added rectangle and cylinder.
+
+Cleaned up the text objects (text3d, etc). Should display
+text a bit better and manage memory more intelligently.
+
+These next objects are thanks to hannes - mailto:zmoelnig@iem.mhsg.ac.at
+---------------------------
+Added pix_rectangle - creates a rectangle in a pix
+Added pix_a_2grey - only changes the pixel to grey based
+on the alpha component. See the help page and the example
+in manual/gem_pix/gemAlphaGrey.pd
+
+---------------------------------------------------------------
+---------------------------- 0.82 -----------------------------
+Free-view sterescopic rendering is possible. If you send
+'createStereo' message to the gemwin instead of a 'create'
+message, then your rendering area will be split in two. Send a
+'stereoSep float' message to set the stereo seperation. Send
+a 'stereoFoc float' message to set the focal distance. See the
+example patch gem_advanced/gemStereo.pd patch for an example.
+
+'color' message was registered twice in gemwin. The second should
+have been a 'perspec' message, for perspective. This also fixes
+the error which pd-0.29 gives about GEM now.
+
+primTri is a new object. It is a triangle primtive. Unlike the
+normal triangle object, it has 6 inlets. The first three inlets
+are for setting the vertex positions. The last three inlets
+are for setting the color at each vertex. The color can
+be either RGB or RGBA values. Look at gem_advanced/gemPrimTri.pd
+for an example.
+
+The particle objects are now frame rate independent. If you needed
+them to run at a certain speed, you can send a multiplier into
+part_head with the message 'speed float'. Run the fountain
+at 60fps to see how smooth it is. The particles still default
+to 20fps, which is GEM's default. You can slow down the particle
+systems or speed them up by sending a different speed value
+into the part_head.
+
+Thanks to Guenter for making the sgi image loader 64-bit compliant.
+
+Received new Gnu makefiles for Linux from Guenter.
+
+new particle objects - These all have help files. See
+gem_particles/gem6.target.pd for how the target objects work.
+ part_damp - apply a damping force to the particles
+ part_targetcolor - Change color of the particles toward
+ the specified color.
+ part_targetsize - Change size of the particles toward
+ the specified size.
+
+Added some help files, mainly for the particle objects.
+
+Updated the FAQ.
+
+---------------------------------------------------------------
+---------------------------- 0.81 -----------------------------
+On WinNT, you can remove the window border. Send a 'border 0' message
+to gemwin to remove it, or a 'border 1' to put it back. The default
+includes the border.
+
+Fixed some bugs when in single buffer mode and in the pix_snap
+object.
+
+A bunch more help documentation is done. This includes reference pages
+and the html manual pages.
+
+The inlets for alternate and counter were backwards.
+
+Integrated unix event handling into the code base.
+
+Fixed other random bugs.
+
+---------------------------------------------------------------
+---------------------------- 0.80 -----------------------------
+A real manual has been started! This means that the doc directory
+will not be as important. The release notes will still be here and
+few of the other doc files, but hopefully most people will just be
+able to use the on-line manual. Look at gem/manual/index.html
+to get started.
+
+pix_movie has been added. It automatically does the texture mapping
+so you don't need to use pix_texture. This also means that you can't
+process the pix image. This will change in the future, but I wanted
+to get the object out and have people hammer on it. Also, only
+certain objects can texture the movie data correctly. They are square,
+triangle, circle, and cube. Cone and sphere will have a black region
+if the movie isn't a power of two (most movies are 320x160 or something).
+This will be fixed in the future. See gem_pix/gemMovie.pd for an example
+
+hsv2rgb and rgb2hsv have been added.
+
+There is no ambient lighting in the default case. If you want
+to have ambient lighting, send a message "ambient r g b" to gemwin.
+
+On WinNT, if you hit Ctrl + r in the GEM window, then rendering
+will stop. This does not go through the normal Pd interface, so it can
+be used if you accidentally create a patch which takes so much processing
+that you cannot turn it off because the patch UI is unresponsive.
+
+Fixed a really bad bug in the text rendering objects.
+
+Various other random bugs.
+
+---------------------------------------------------------------
+---------------------------- 0.79 -----------------------------
+The example patches have been organized a little bit. There is
+now a collection of directories which are installed with GEM.
+Eventually, they will be fleshed out a lot more (I hope), but for
+the time being, at least there is some order to them.
+
+The model and multimodel objects accept a "rescale 0" or "rescale 1"
+message. In previous versions, the model objects would resize your
+model to fit within the unit cube (all vertices where within -1 to 1).
+This made it dificult to coordinate diferent model files together,
+because they would all be resized by diferent factors. Now, if you
+send a "rescale 0" message into model or multimodel, it will not
+do resizing for any _SUBSEQUENT_ loading. In other words, if you
+have already loaded in a model, and you send a "rescale 0", the
+currently loaded model (or models) will not change. Look at the
+example patch gem_advanced/gemModelRescale.pd for how this works.
+The left model chain is much larger and a scaleXYZ object with a
+value of .1 is needed to even get the model into the viewport.
+The model and multimodel objects default to "rescale 1" so that it
+doesn't break any existing patches.
+
+The middle and right buttons work in gemtablet now. The outlets
+are all pretty close together now, so until you can resize objects,
+it will be difficult to select the correct outlet. Look in
+examples/gemTablet.pd for all of the outlets.
+
+I have upgraded to Visual C++ 6.0. I doubt that the GEM library
+is backwards compatible for people who are writing their own
+libraries. Sorry, but the IDE is a little less painful in 6.0.
+
+I removed the position inlet from the light object. If you want
+to move/rotate a world_light/light, then just put a translate
+or rotate object into the chain. It was broken before, but now
+there is no reason for the position inlet.
+
+light and world_light accept a "debug" message with a value of
+1 or 0. Look at the gemLightSphere.pd patch for an example.
+It was too hard to figure out where the light is, and this turns on
+a sphere for the light object (since it is a point light), and
+a cone for the world_light object (since it is a directional
+light). The world_light is NOT a spot light, even though
+its icon is a cone. The icons are the color of the light.
+
+MarkEx has been merged into GEM. I was tired of maintaining
+two libraries. Also, people didn't seem to be downloading
+MarkEx, and there are a lot of good objects in there, IMHO.
+
+The camera object is finally useable. It has an inlet for the
+translation and rotation vectors. Anyone who was using it
+before is now broken, but the change was very necessary.
+
+gemwin can accept a perspective message. This will set up the
+viewing paramaters for the window. You need to pass in 6 floats
+with the "perspective" message, for the left, right, bottom,
+top, front, and back. The defaults are -1., 1., -1., 1., 1., 20.
+If you send a reset message to gemwin, it will reset the perspective
+values as well.
+
+The big change in this release is a particle system. It is based
+on code from David McAllister. There are many new object, all
+of which interact in certain ways. One design issue is that
+there are far too many controls and variables to be able to
+expose directly in GEM. People who want to get complete control
+over all aspects of the particle system are going to need to
+write their own externals. However, most people should be fine with
+the particle objects. The new objects are:
+
+CREATION
+--------
+part_head - The start of a particle group
+part_color - Set the range of colors for the new particles
+part_size - Set the size of new particles
+part_velsphere - Set the velocity based on a sphere distribution
+ You need 4 args - xvel, yvel, zvel, and radius
+part_velcone - Set the velocity based on a cone distribution
+
+part_source - Generate particles
+
+MANIP
+-----
+part_follow - Particles will follow each other like a snake
+part_gravity - Have the particles accelerate in a direction
+part_killold - Remove particles past a certain age
+part_killslow - Remove particles below a certain speed
+part_orbitpoint - Orbit the particles around a specified point
+
+part_draw - Apply the actions and render the particles. Accepts a
+ message "draw line" or "draw point" to change the drawing style.
+
+Look in the example files to get some idea how to use the particle
+objects. Notice that you still need a gemhead starting off the
+chain, but after that, you just use the part_* objects. Regular
+GEM manips like rotate, translateXYZ, and scale will affect the
+particles. In general, you start with part_head, then modify
+the particle parameters with the creation objects like part_color
+and part_velocity. Then use part_source to actual generate the
+particles. Next in the chain, use the manip objects to control
+the particles behavior. When you actually want to display the
+particles, use part_draw. Make sure that you remove particles as
+well. The best method is probably with part_killold. If you
+don't remove particles, then you will eventually not be able to
+add any new ones (the default number of particles at once is
+1000, set by part_head). You can also slow down the rate of the
+particle generation with the part_source object.
+
+---------------------------------------------------------------
+---------------------------- 0.78 -----------------------------
+If you don't want GEM to take control of the tablet if it finds
+one, set the environment variable GEM_NO_TABLET to the
+value "1" (no quotes of course). There will be a print out if
+GEM finds the environment variable.
+
+I added a few more setup access function so that people who
+use "-lib gem" or "-lib GEM" will work correctly.
+
+Lighting will now work under single buffer mode, but you have
+to destroy then create the graphics window to change the mode. This
+will not work with the GEM_SINGLE_CONTEXT variable.
+
+pix_data is a new object. It outputs color information from a pix.
+ The first inlet accepts a bang to trigger it.
+ The second inlet accepts a gem list (probably from pix_image)
+ The third inlet is the x position (between 0 and 1)
+ The fourth inlet is the y position (between 0 and 1)
+ The first outlet is the gem list
+ The second outlet is the color (an RGB list)
+ The third outlet is the gray scale value (a float)
+ See the example patches gemPixDataSimple.pd and gemPixDataComplex.pd
+for possible use.
+
+Fixed a pretty bad bug in the SGI image loading. Basically, unless
+the image was RGBA, it was going to core dump. Also, the orientation
+was wrong.
+
+---------------------------------------------------------------
+---------------------------- 0.77 -----------------------------
+GEM is now under the Gnu Public License. This should not affect
+any one. I also cleaned up the license information for the AuxLibs.
+All of the license and usage information can be found in
+GEM.LICENSE.TERMS
+
+GEM has a new home - http://www.danks.org/mark/GEM
+
+gemorb - a new object to interface with the SpaceTec SpaceOrb360.
+It is a 6DoF ball with 6 buttons that connects to your serial port.
+It is a very cool device, and is relatively cheap ($50 US). If gemorb
+is able to connect, it will print out a message, or an error if there
+is a problem. John Stone wrote the library.
+
+There is a particle system with a number of new objects. The system
+uses a library by David McAllister.
+ps I haven't had time to bring all of the objects online. particle
+is the only object right now. It just creates a fountain.
+
+accumrotate was added - three inlets to control the rotation. Each
+time a new value is sent in, it increases the rotation. Sending
+'reset' to the leftmost inlet sets the rotation matrix to
+identity (ie, it resets it to no rotation).
+
+rotateXYZ was added - three inlets to control the rotation. Order
+is X rotation, then Y, then Z.
+
+The tablet cleanup is a little better now on WinNT. There are still
+some bugs, like it doesn't return to normal mouse usage after GEM exits.
+However, the DLL is being released correctly...I just need to reset
+to the default state somehow.
+
+Cone and sphere have changed behavior as of 0.77. The middle inlet
+is now the size and the right inlet is the number of slices.
+
+depth used to be sending '1' would turn on depth testing, but this
+was conceptually wrong. It should be 1 to turn on the depth
+object (which would disable depth testing). This is now the
+current behavior.
+
+ortho was added. It changes the viewing from perspective to
+orthogonal. The size is the size of the window with (0, 0)
+being the lower left corner. I made this object for creating
+a background the size of the window, but you can probably
+find other uses for it.
+
+There is a matrix class for those who are writing objects.
+It is in src/Base/Matrix.
+
+---------------------------------------------------------------
+---------------------------- 0.76 -----------------------------
+Fixed a bug in spline-path. I wasn't doing the knot logic
+correctly. Thanks to Patrick Rost for finding this.
+
+A bunch of internal changes to get GEM working with Pd 0.22
+All instances of A_INT went away and the inlets and outlets are
+created in the correct "logical" order now.
+
+---------------------------------------------------------------
+---------------------------- 0.75 -----------------------------
+You can resize the window under WinNT and the viewport will change
+to reflect the new size.
+
+Also, the correct aspect ratio is maintained no matter what the
+width/height ratio is for the GEM window. The ratio is
+x:y -> (width/height):1. This is currently only under WinNT.
+
+gemmouse and gemtablet are new objects. They currently only
+work in WinNT. You should be able to create the object in
+the Irix/Linux versions, but you won't get any output. See
+gemmouse.pd and gemtablet.pd for examples.
+gemmouse outputs the current mouse position and button up/down
+for the GEM window.
+gemtablet outputs the current pen position, pressure, orientation,
+and pen up/down, with the GEM window mapped to the tablet. If
+GEM can connect to your tablet, a message will be printed at startup.
+If you don't see a message at startup from GEM about connecting to
+the tablet, then gemtablet will not output any values. You must
+have the wintab32.dll library installed. Your tablet's installation
+should do this.
+
+Added a bunch of utility functions (spline, bias functions, etc).
+
+linear_path and spline_path are new objects. If you give them
+an array, then they will generate a point from an index. linear_path
+will linearly interpolate between points. spline_path uses the
+points as knots for a curve. See gemSplinePath.pd and
+gemLinearPath.pd for examples.
+
+Added __declspec declarations for Windows. This should
+make it easy for people to use GEM as a dll.
+
+---------------------------------------------------------------
+---------------------------- 0.74 -----------------------------
+I replaced the images in the example directory with JPGs. They
+are alot smaller. However, in gemMoveImages.pd, you can see
+the effect that the compression has. Look at the red dancer. All
+of the "black" should be alpha masked out, yet there are little
+bits which get all jaggy.
+
+Got gltt-1.8 Looks like it fixes a bunch of bugs.
+
+Finally put an alpha test into the alpha object. This means that
+if the alpha of a pixel == 0., then it won't be put written into
+the frame buffer. Look at the example file gemMoveImages.pd for
+an example of this. Notice that the dancer is texture mapped to
+a sphere, yet you can always see her correctly. You can disable
+this behavior by sending a 'test 0' to the alpha object.
+
+Oh boy, were my texture coordinates off. Unknown to me, my reference
+image (dancer.tif) was actually upside down. This meant that all
+of the texture coordinates in the Geos objects were compensating
+for the rotation. Sorry if this messes anyone up, but it is now
+correct for all of the geos.
+
+I also now load in images in OpenGL format. This means that
+data[0][0] == lower-left corner. This shouldn't have any effect
+on anyone unless you are doing position sensitive image processing.
+
+Fixed the orientation problem when using pix_draw.
+
+imageVert handles gray8 pixes
+
+Fixed a problem if pix_multiimage loaded in images that were different
+formats or sizes.
+
+GEM supports search paths! Basically, GEM will look for auxiliary
+files (images, models, fonts, etc.) from whatever directory the
+patch is in (unless you use an absolute path name with '/').
+
+---------------------------------------------------------------
+---------------------------- 0.73 -----------------------------
+Fixed profiling on Unix
+
+Added text2d, text3d, textoutline. The text objects will render
+a truetype font (I have provided a couple fonts in gem/examples).
+text2d renders a flat bitmap...no rotation or Z movement. text3d is
+full polygonal text, so you can translate and rotate. textoutline
+is also polygonal, it is just a vectored outline.
+ PS text2d has some problems...
+
+JPEG and SGI image file formats are supported! Depending on the number
+of color components, GEM will automatically convert them to grayscale
+or RGBA (just like TIFF files).
+
+pix_video is working slightly on WinNT. There are still some
+serious problems, so consider this version a complete pre-alpha. I'm
+releasing a version now to find out if it even works on other systems.
+I am using a Connectix QuickCam2.
+
+Shifted all of the auxilary libraries into a common directory. Considering
+that I'm currently using 6 outside packages, it is just easier.
+
+---------------------------------------------------------------
+---------------------------- 0.72 -----------------------------
+
+Did a bunch of cleaning so that the Linux compile is happier (and easier).
+This involved getting rid of some warning messages and changing
+the makefiles slightly.
+
+The strange core dump on WinNT went away...
+
+All of the code and extra files are under source code control (CVS).
+You can just ignore the CVS directories. Eventually, I will try to keep
+them out of the release build.
+
+Added profiling. If you send 'profile 1' to gemwin, then normal profiling
+is turned on (GEM displays the number of milliseconds per frame). If you
+send 'profile 2', then images will not be cached (ie, the pixes will always
+be processed). If you send 'profile 0', then profiling is turned off.
+
+pix_multiply multiplies the color components of two images together.
+It doesn't modify the alpha channel.
+
+Optimized pix code.
+
+Because Miller is removing the INT type, I have slowly been moving it
+out of the code. If any objects have stopped working, please let me know.
+I redid the construction macros in CPPExtern to reflect this change.
+If you have made any new GEM objects, you will probably need to
+change to the new macro format.
+
+Most of the dual input pix objects will process gray8 and RGBA data
+gracefully.
+
+---------------------------------------------------------------
+---------------------------- 0.71 -----------------------------
+
+Guenter got GEM working under Linux! The biggest impact is that I
+have changed all of the #ifdef __sgi to #ifdef _UNIX_ If specific versions
+of Un*x need certain things, then they can be #ifdef'ed with __sgi,
+or LINUX, or whatever.
+
+Fixed a bug in polygon and curve. I'm not sure why it ever worked on
+the SGI...
+
+All pix objects accept a 0 or 1 to turn on and off their processing.
+The 0 or 1 should just be sent to the first inlet.
+
+The inlets were backwards for colorRGB.
+
+Fixed a bug in turning on and off texture mapping in pix_texture.
+
+GemMan::initGem is now called from Gem_setup. There seems to be a problem
+with Linux creating the dummy static class to initialize GEM.
+
+Changes pix_texture so that it deal with OpenGL 1.1, GL_EXT_texture_obj,
+and base OpenGL 1.0 I think that every OS has the texture_obj
+extension, but just in case, I also have the OpenGL 1.0 technique of display
+lists.
+
+Removed some spurious print outs.
+
+I looked into using GL_BGRA_EXT for images on Windows. It is faster
+in the software version, but my Intergraph card doesn't support it.
+It only makes a difference for OpenGL in software...and texture
+download time isn't the primary problem then. With a 512x512 image
+using glDrawPixels in software, I got 6 frames/sec with RGBA and 7
+frames/sec with BGRA_EXT. Older SGIs like ABGR_EXT, but the newer machines
+want RGBA. Looks like I'm going to stick with RGBA for a while.
+
+You can now load in Gray8 and RGBA images and they will retain their
+format. Before, everything was slammed into an RGBA image, with A == 255.
+This means that you can have alpha masks on images, etc. The only pix
+object which can currently handle a gray8 is pix_mask. All of the other
+pixes throw errors if they get a gray8. This will slowly be fixed.
+
+Added some new functions to GemPixUtil (from a paper by Alvy Ray Smith).
+They should speed things up. Currently, only pix_composite is using them.
+
+The color channels of pixels should be gotten by the const ints that
+are in GemPixUtil (for instance, chRed, chGreen, etc). Using hard coded
+offsets like 0 or 2 for red and blue is asking for trouble.
+
+gemheads no longer push and pop the entire matrix state when renderGL is
+called. This should be faster (push/pop is slow on some platforms). Also,
+all objects are required to "reset" the OpenGL state when they are done,
+so it shouldn't be neccessary.
+
+Strangeness: There is an unreferenced memory exception on WinNT when you
+quit Pd. However, it only happens if you use pix_image. It doesn't
+happen while you are using Pd, only when you quit...
+
+---------------------------------------------------------------
+---------------------------- 0.70 -----------------------------
+
+All geos can now accept a size argument (they default to 1.0)
+
+I cleaned up the texture coordinate mapping. The order was slightly
+random before. The order is more logical now; it is counterclockwise
+starting at 0, 0. If you use pix_coordinate any where, you will need
+to fix the values.
+
+Fixed a bug in translateXYZ. The inlets where backwards.
+
+You can now move the GEM window under NT. NT doesn't automatically
+take care of the basic window functions unless you pass the messages
+through (unlike X Windows).
+
+Texture mapping can be turned on and off by sending a 0 or 1 to pix_texture
+
+Texture mapping defaults to GL_LINEAR. Send a quality message to pix_texture
+to change this. A "quality 0" means GL_NEAREST, "quality 1" means GL_LINEAR.
+
+---------------------------------------------------------------
+---------------------------- 0.69 -----------------------------
+
+Fixed a bunch of bugs in imageVert.
+
+Cleaned up some lingering problems in various objects (the open message to
+pix_multiimage didn't work as advertised for instance).
+
+Setting window color is now dynamic.
+
+multimodel now exists. Works just like pix_multiimage, only it reads in
+Alias/Wavefront files. It also has a caching mechanism.
+
+---------------------------------------------------------------
+---------------------------- 0.68 -----------------------------
+
+fixed pix_2grey so it uses real color weights, instead of just averaging
+the three colors.
+
+pix_image now works the same way as pix_multiimage. If you load in an
+image which another pix_image has already loaded, they will share the
+image. This means that if you create a bunch of dummy pix_image
+objects, you can send an open message to pix_images which have a gemhead
+connected to them and get instantaneous image changes.
+
+Found a MAJOR bug in the NT version of pix_texture. Basically, if you
+used it, the program would core dump.
+
+Found another bug in square. It involved texture mapping and texture
+coordinates (mainly when you don't designate them).
+
+Changed the default values for scaleXYZ (to 1, 1, 1) and translateXYZ
+(to 0, 0, 0)
+
+---------------------------------------------------------------
+---------------------------- 0.67 -----------------------------
+
+Forgot to add the arguments for the scale object. This has been fixed.
+
+Added translateXYZ, scaleXYZ, and colorRGB. These create three inlets
+which you can modify, instead of having to mess with vector messages.
+
+Fixed a bug in pix_image and pix_multiimage (or more, an unacceptable
+response to user error). Basically, if you started rendering without
+an image being loaded (or if an image failed to load, then you were
+_VERY_ likely to core dump. A check has been added, so this shouldn't
+be a problem anymore.
+
+pix_multiimage HAS CHANGED! It accepts up to four arguments:
+
+filename, number : will load the image files from 0 up to AND INCLUDING
+the number
+
+filename, lownum, highnum : will load the image files from the lownum up
+to AND INCLUDING the highnum
+
+filename, lownum, highnum, skiprate : will load the image files from
+the low num up to AND INCLUDING the highnum, but incrementing the counter
+by the skiprate, not by one.
+
+No matter how many images are loaded, you can change which image is
+displayed by sending a number. The number must be between 0 and the
+number of images which were loaded (notice that this number may not be
+the highnum!) If you try to display an image out of range, you will
+get an error.
+
+pix_multiimage now uses a shared cache. Basically, if you give two
+pix_multiimage objects the EXACT same values (filename, base number,
+top number and skip number), then they will use the same collection of
+images. This will save massive amounts of memory if there is any
+commonality between pix_multiimages.
+
+pix_flip - see help file
+
+---------------------------------------------------------------
+---------------------------- 0.66 -----------------------------
+
+Finished the port to NT (mainly had to get images working).
+
+Made pix_colormatrix - This is really good for things like saturation,
+hue rotate, etc. I will eventually include a bunch of matrices to do
+cool stuff. Check out Paul Haeberli's paper on color matrices at
+http://www.sgi.com/grafica/index.html
+
+I removed pix_color. It was a hold over from earlier days and I
+don't think that anyone (including myself) is using it any more.
+
+I got a title bar onto the graphics window, but you still can't move it
+around. I am not certain why this is the case, but I'll keep looking.
+
+I made general speed ups to most of the pix objects. Mainly, I have
+been removing GetPixel() and SetPixel() functions (they have a lot
+of overhead). I will continue to use Get/SetPixel() while I'm developing
+because they make things easy to deal with, but as objects get finished,
+I will remove them.
+
+Some of the manipulators (color, rotate, and translate) accept arguments.
+For instance, if you do color 1 0 0, it will automatically set the
+color to red. The objects try to be intelligent about their arguments.
+For instance, if color receives three args, it sets RGB, but if it
+gets 4, it sets RGBA. If rotate or translate get 3 args, then they just
+set the vector, but if they get 4, then they set both the vector and
+the value.
+
+---------------------------------------------------------------
+---------------------------- 0.65 -----------------------------
+
+GEM works under NT! I got the port working last night. I had to make some
+major changes to the underlying classes (specifically CPPExtern) because
+MS VisC++ puts the vtable pointer in the first four bytes...no matter what.
+This is a different behavior than SGI's compiler (and I think that it requires
+more work for MS VisC++'s compiler). While it was a pain to change things, it
+is good in the long run. The C++ standard doesn't say where the vtable is
+located, so this would have bitten me at some point.
+
+---------------------------------------------------------------
+---------------------------- 0.64 -----------------------------
+
+Because MS VisC++ really wants files to end in .cpp (how stupid...),
+I renamed all of the C++ files.
+
+I looked into making all of the pixes be float, instead of unsigned char. This
+would give increased flexibility because we could use negative numbers, not
+worry about wrap around on the unsigned char, etc. In running performance
+tests on an SGI O2, the performance difference is fairly great. If GEM
+was only an image processing program (ie, PhotoShop), then I would definetely
+have pixes be floats. However, since GEM is meant for real-time, I will
+continue to use unsigned chars to represent pixels.
+
+For the tech heads...I used to generate the rendering by creating a
+linked list of the GEM objects. The problem was that objects like
+separator weren't possible because it wasn't a true DAG. That is now
+fixed so that tree/leaf graphs are possible.
+
+Made render_trigger so you can know exactly when the rendering is occuring.
+
+Made pix_multiimage! Just give it a file with a * (like myfiles*.tif) and an
+integer for a range (the number of images).
+
+Made pix_invert, separator
+
+---------------------------------------------------------------
+---------------------------- 0.63 -----------------------------
+
+The src directory has been made into a tree.
+
+Made pix_add and pix_subtract
+Added a scale object
+
+---------------------------------------------------------------
+---------------------------- 0.62 -----------------------------
+
+A dummy glxContext is created at startup. What this means is that
+in the constructors of objects, OpenGL calls can be made, display
+lists can be constructed, etc. Eventually, I would like to have a
+single window which is always in existance that can change between
+single and double buffering, but that may be a little while.
+
+I put Sam Leffler's tiff library back in. All image files must be in
+TIFF format again. Basically, I think that Win NT would have trouble
+making SGI .rgb files, while anyone can make TIFF formats. Currently
+there is some code bloat because libtiff does more than just read in a
+TIFF file.
+
+The pix_coordinate object allows users to set the S,T texture coordinates
+for geos. For instance, by giving pix_coordinate 4 S,T pairs, the texture
+coordinates for a square can be changed on the fly. Not all of the geos
+can support this ability right now (currently only square, triangle, and
+polygon, but this will change in the near future).
+
+A FAQ has been started, but there really aren't any questions in it yet.
+As people think of them, please let me know and I'll add them.
+
+---------------------------------------------------------------
+---------------------------- 0.61 -----------------------------
+
+Cocoon html help files for developers have been created.
+
+GEM now uses an internally generated DAG for rendering. This
+removes a serious bug where by objects could still try to reference
+dangling pointers. GEM objects act like the tidle objects do
+from a users point of view. Even if you break a connection
+in a GEM chain, the GEM objects will continue to work. This
+means that it is safe to edit patches while a GEM chain is
+running. To rebuild the GEM patch, rendering must be turned
+off and then back on (just like the tilde objects).
+
+Using the td library from Evans & Sutherland by Nate Robbins to display
+Alias/Wavefront files (.obj). It also takes care of image
+loading, although it is only .rgb. If people complain enough,
+then I may return to the Sam's libTiff library, but it is so
+big that the td library is better. The td library can also be
+compiled on Windows (or else I wouldn't have used it). The new
+object is called model (although it may change its name some day).
+
+There is a new object which maps the color of a pix to the Z of
+a polygon. It is isn't overly useful right now, but it is a cool
+demo. It is called imageVert.
+
+---------------------------------------------------------------
+---------------------------- 0.60 -----------------------------
+
+Major changes to the internals of GEM. gemwin is now only
+an access point to the window manager, instead of actually
+being the window manager. This should make it easier to have
+multiple graphics windows.
+
+While I was getting the O2 video camera to work, I seem to
+have broken the Indycam object...
+
+---------------------------------------------------------------
+---------------------------- 0.50 -----------------------------
+
+Made the port from Max over to Pd. Redesigned the class
+heirarchy somewhat.
+