
Welcome to GLYPH's C++ wrapper for the LightWave SDK!
-----------------------------------------------------

Release date:  May/28/2000

Plugin Classes Supported to date:
LWPShader
LWPImageFilter
LWPPixelFilter
LWPDisplace
LWPMeshEdit

Compilers Tested to date:
Intel:
	Visual C++ 6.0 - works great
	Visual C++ 5.0 - use of Queues / Stacks is slightly restricted
Alpha:
	Visual C++ 6.0 - works great
SGI:
	MIPSpro - doesn't work

-----------------------------------------------------

News
----

May/28/2000

Major overhaul of Interface classes.  Gearing up towards XPanels.
Internal changes overall, gearing up towards supporting L6 SDK.

It now expects to have the LW5.6 SDK in a directory named "lwsdk5_6",
that is accessible from the includes directories of the compiler.
For instance, the following include directive should include plug.h
from the LW5.6 SDK:

#include <lwsdk5_6/include/plug.h>

Similarly, when L6 support is added, it will expect to have the L6 SDK in
a directory named "lwsdk6".  This is to avoid filename conflicts between
the two SDKs.


April/14/2000

I've added Quaternions.


Mar/23/2000

The previous release had some old files still in it.  This has been
fixed.


Feb/19/2000

THE DIRECTORY STRUCTURE HAS CHANGED!!!
THE NAMING CONVENTION HAS CHANGED!!!

Since my plugin wrapper project is merging with Bryan Ewert's LWClass
project, all wrapper-related source is now contained in a folder called
"LWClass".

Also, the filenames of plugin-related source files have changed.  For
example, "shader.cpp" is now "LWPShader.cpp", etc.  This makes it easier
to tell what goes with what.  The names of the plugin-related classes
have also changed to have the prefix "LWP".  The non-plugin-related
LightWave classes have the prefix "CLightWave".  Classes that are not
LightWave specific, such as Stacks and Queues, have neither prefix.

The idea here is that you can use the CLightWave classes in external
applications to perform operations on LightWave files.  You can also use
the classes with neither prefix in any application.  The LWP classes are
meant to embody functionality that is only available from within
LightWave plugins.  The LWP classes make use of the CLightWave classes to
promote code reuse.

NOTE: The demo Visual C++ projects expect the LWClass folder to be in a
folder in the Include path, i.e. you could just stick the LWClass folder
in the "Microsoft Visual Studio\VC98\Include" folder, or you could leave
it in the Wrapper folder and add the Wrapper folder to the Include path.


Usage
-----

Make sure you read the disclaimer at the bottom of this document!

I've included a Visual C++ 6.0 workspace so some of you can get started
right away!  This workspace should also work under VC 5.  The wrapper
should, in theory, compile under other C++ compilers and on other
platforms.  If you get it to do so, e-mail your project file or
settings or whatever to y82s1@unb.ca.  I'll be sure and add them to
future releases.

You'll need the LightWave SDK to use this.  The LightWave SDK source
files will have to be in your Includes path for your compiler.  Also,
you may need to remove and re-add the "serv_w.obj" and "server.lib"
files from the demo projects, since they may be in a different
directory on your machine.

Basically, there's a demo project called "DemoShaders" which contains
three example shaders.  When you want to make your own shaders, simply
make a new Win32 DLL Project in the workspace and call it whatever,
then Copy the guts of the DemoShaders project into your project.  Then
replace DemoShaders.cpp and DemoShaders.hpp with Whatever.cpp and
Whatever.hpp, which will presumably be in the Whatever directory.  Go
ahead and base your plugins off the examples.  That's why they're there.

There is another project called "WrapperDemos", which contains demos
for all supported plugin types (except Modeler types).

The "ObjectDemos" project demonstrates using a displacement map to read
geometry for use with a pixel filter.

The "ModelerDemos" project demonstrates a modeler MeshEdit plugin.

The "wrapper" project is just a container for all the files.  Don't try
to compile it!  It won't create anything.

e-mail any questions to y82s1@unb.ca

See yah!

- GLYPH


History
-------
05/28/2000 - Now expects SDK to be found in a "lwsdk5_6" directory.
             Some internal changes, getting ready to support L6 SDK.
			 Added noise.h and noise.cpp, mostly borrowed from the Shades project.
			 Removed a lot of overhead in Shader.
05/10/2000 - Fixed up the Interface classes a lot.
04/14/2000 - Added quaternion.h.
             Added a lot of code to matrix.h, including determinant() and adjoint().
             Added documentation of conventions for point.h and matrix.h.
04/13/2000 - Cleaned up VectorT, PointT, ColorT.  Added TripleT superclass for code reuse.
             More prominent use of enums for array indeces to reduce confusion.
			 Split point.h into point.h, matrix.h, weefloat.h.
			 Cleaned up defs.h; moved some code around.
04/09/2000 - Fixed a memory leak in LWPObject.
04/08/2000 - Fixed version checking.  Now asks for LW5.5 handlers.
04/07/2000 - Fixed 3D random function.  Now much more random, and a wee bit faster!
04/04/2000 - Fixed several bugs in the LWPShader::shade function, mainly ambient handling.
03/23/2000 - Added lots of (undocumented) handy code to MeshEdit.
02/29/2000 - Made code somewhat more ANSI-compliant.
02/07/2000 - Added automagic CUT / PASTE functionality to Interfaces,
             using ctrl-c / ctrl-v.
02/06/2000 - Starting to integrate Bryan Ewert's LWClass code.
             Thanks Bryan!!!
02/03/2000 - Fixed bug that caused interfaces to sometimes be extra wide.
01/27/2000 - Fixed templates to work with VisualC++5.x
01/21/2000 - Major bug fixed in Queue.
01/19/2000 - Changed server record registration to be platform independant.
01/18/2000 - Fixed some more bugs in Shader.
01/15/2000 - Templatized Point, Vector, Color, and Matrix.
             Fixed a bug in Queue.
01/06/2000 - Fixed more bugs wrt multithreading and rayShade.
01/04/2000 - Cleaned up a lot of garbage in the Shader code.
01/03/2000 - Added MeshEdit (modeler) wrapper.
12/28/1999 - Added Displacement map wrapper.
             Added Lwob, which wraps the ObjectAccess stuff.
12/20/1999 - Added ImageFilter wrapper.
           - Fixed Illumination / RayTracing recursion problems.
12/19/1999 - Added PixelFilter wrapper.
12/16/1999 - First public release.  Shader supported.


Known Bugs
----------
01/17/2000 - There is a problem compiling it under the SGI C++ compiler.
             It seems the only LightWave-compatible compiler on the SGI
             is not fully C++ compliant.  This will take some thought.
01/06/2000 - Using anything fancy in a Shader (like raytracing) won't work
             on Dual Processor systems.  This cannot be fixed under LW5.6.
01/01/2000 - There is very little documentation :)


Credits
-------
Bryan Ewert - for letting me integrate his LWClass code into the project.

Graphics Gems - some of the quaternion code is based on Graphics Gems code.
                Specific routines are credited to the original authors.

The Shades Project - for the noise code that I stole :)

Graham Fyffe - That's me! :)

Everybody Who Sends Bug Reports - thanks!


----------------------------
DISTRIBUTION AND USAGE NOTES
----------------------------
You may use and / or modify this stuff for your own plug-ins, or for
commercial plug-ins, provided you thank me (Graham Fyffe) and Bryan
(Bryan Ewert) somewhere in the "about" menu or in the documentation.

You may redistribute this stuff as long as it's in the original,
unmodified zip file.  If you'd like something added, or something
changed, please e-mail me at y82s1@unb.ca with the details.  I'm trying
to keep this thing more or less open-source, but I don't want multiple
versions of it floating around out there.

----------
DISCLAIMER
----------
THERE IS NO WARRANTEE, EXPRESSED OR IMPLIED, ON THIS SOFTWARE.  USE IT
AT YOUR OWN RISK.  NO OFFICIAL SUPPORT IS PROVIDED WITH THIS PRODUCT.
Report bugs or problems to y82s1@unb.ca, but i can't make any promises.




