diff options
Diffstat (limited to 'Gem/gem.release_notes.txt')
-rw-r--r-- | Gem/gem.release_notes.txt | 1018 |
1 files changed, 0 insertions, 1018 deletions
diff --git a/Gem/gem.release_notes.txt b/Gem/gem.release_notes.txt deleted file mode 100644 index c3e5077..0000000 --- a/Gem/gem.release_notes.txt +++ /dev/null @@ -1,1018 +0,0 @@ -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. - |