### 9.0 Changes April 29th, 2006 This is a list of the changes in the LightWave® 9.0 release that affect the SDK. `lwcamera.h` The CameraHandler provides direct pixel cordinates and matrix functions to the Lightwave® Layout camera. `lwnodes.h` Node based image / procedural / gradient handling. `lwxpanel.h` A single line height dThumbnail control option `THUM_SNGL` has been added. dThumbnail border control options `THUM_BORDER_NONE, THUM_BORDER_UP, THUMBORDER_DOWN` have been added. `lwvparm.h` Envelope creation and deletion event notifications weren't always being sent. They are now. An envelope group rename event notification `LWVPEC_RENAME` has been added. The naming of vector type envelopes can now be controlled by flags. `lwdisplce.h` A new flag `LWDMF_AFTERMORPH` has been added to allow displacement plugins to be evaluated after morph. That is before the subdivision has been applied when subdivision order is "after morph". A new flag `LWDMF_NEED_NORMALS` has been added to allow displacement plugins to signal the need for normals, which will be stored in the new "wNorm" member of LWDisplacementAccess. A new member `wNorm` has been added to the LWDisplacementAccess data structure. "wNorm" will only be initialized with valid numbers if the flag LWDMF_NEED_NORMALS is specified by the plugin. `lwrender.h` The camera info global version has been incremented to 4. A `LWCAMF_USECAMTYPE` flag has been added to indicate that a non-classical camera type is being used for the camera. An `evaluateRay` function has been added to allow plug-ins to determine the ray properties for non-classical camera types during rendering. Query functions have been added to allow plug-ins to determine the state of a camera's global-redirection settings. The item info global version has been incremented to 4. Item info has gained new functions in relation to the improved align to path. New rayTrace function added. New Illumination function added. The object info global version has been incremented to 7. Functions have been added to the object info global to retrieve the displacement map and bump displacement order. The viewport info global version has been incremeneted to 2. The viewport info global can now return the projection and modelview OpenGL matrices for a viewport. Function have also been added to project world coordinates to a viewport, and unproject viewport pixel positions to world coordinates. A function has been added to the viewport info global to return the view level of a viewport. `lwvolume.h` The volumetrics class version has been incremented to 5. The volumetric access structure has been expanded to include the current pixel position and the current ray recursion level. `lwpolygon.h` The `LWGPTF_SUBD` flag has been added, to mark the polytype as creating a subdivision surface. An "edge_idx" parameter has been added to the lineTo function. In case a polygon is drawn, the parameter should specify the edge index starting from the edge between the vertices (n-1, 0) as edge with index 0. Polygon type plugins have to be recompiled for LW9. `lwmtutil.h` Complete support for cross-platform multithreading has been added. See the Multithreading Utilities page for complete details. `lwmeshedt.h` Added a `typeFlags` field to the `EDPolygonInfo` structure, which contains the polygon type flags (`LWGPTF_*`) of the polygon type. `lwcustobj.h` Added the `LWCOFL_PICKING` flag value to the custom object access, to distinguish selection evaluation passes from drawing evaluation passes. added the `LWCSYS_VIEWPORT` coordinate system for custom object drawing. `lwhost.h` Added new file types: `LWFTYPE_NODES` `LWFTYPE_SOUNDS` `LWFTYPE_DYNAMICS` `LWFTYPE_RIGS` `LWFTYPE_INSTALL` `lwimage.h` The image utility global version number has been incremented to 2. Functions have been added to the image utility global to get and set pixels in any type from a pixmap. A function has been added to the image utility global to retrieve the color index map for `LWIMTYP_INDEX8` pixmaps. `lwmeshes.h` A function has been added to the meshinfo structure to get the polytype flags of a polygon. Meshinfo functions have been added to get polygon and vertex normals. Iterator functions have been added to meshinfo to iterate over the polygons or points of a mesh. Commands: Layout A new command `ApplyServerByItemID` has been added to allow adding plugins by specifying the item id it should be applied to directly, without having to select the item first. New commands `PathAlignMaxLookSteps` and `PathAlignReliableDist` have been added to support the updated align to path controller. New commands `DisplacementMapOrder` and `BumpDisplacementOrder` have been added to set the displacement order of the displacement map and bump displacement. Added the `UseGlobalResolution`, `UseGlobalMask` and `UseGlobalBlur` commands to set the state of a selected camera's global-redirection flags. Added the following global versions of the camera-specific commands to allow a plug-in to directly alter the settings of the scene's global camera: `GlobalFrameSize` `GlobalResolutionMultiplier` `GlobalPixelAspect` `GlobalApertureHeight` `GlobalMotionBlur` `GlobalParticleBlur` `GlobalBlurLength` `GlobalMaskPosition` Added the `HardwareShadingMethod` command to set the hardware shading method to be used in the viewports. Currently available shading methods: `MultitextureShaders` `GLSLShaders` Added the `HardwareGeometryAccelerationMethod` command to set the hardware geometry acceleration method to be used in the viewports. Currently available shading methods: `Streaming` `Buffered(VBO)` Miscellaneous The AnimUV, Camera and Nodes plug-in classes have been added to the support list of the LScript Object's server() method. These plug-in classes are represented in the script's environment by the following pre-defined values: SERVER_ANIMUV_H, SERVER_ANIMUV_I SERVER_CAMERA_H, SERVER_CAMERA_I SERVER_NODE_H, SERVER_NODE_I Clarified that texture contexts should not be destroyed while a texture using it still exists. The preprocessor symbol `_WIN32` used when compiling the server library and plugins on the Microsoft Windows platform has been replaced by `_MSWIN`. This avoids some confusion when compiling for 64bit systems.