- ### 6.5 Changes November 4, 2000 This is a list of the changes in the LightWave® 6.5 patch that affect the SDK. In most cases, the changes won't require you to rewrite or recompile your existing code. The most significant exception is for variant parameters, which have been updated to support parameters modulated by textures. `lwenvel.h` Definitions of variant parameters have been moved to a new header, lwvparm.h. `lwfilter.h` New buffers (`LWBUF_REFL_RED`, `LWBUF_REFL_GREEN` and `LWBUF_REFL_BLUE`) have been added to the list of buffers available to image filters and pixel filters. These contain the RGB levels for reflections calculated by raytracing and environment mapping. `lwimage.h` `LWIMAGELIST_GLOBAL` (Image List) has been incremented to "LW Image List 3". Added LWImageList functions: `hasAlpha`, `alpha`, `alphaSpot`, `evaluate`. `lwio.h` Added File I/O type `LWIO_BINARY_IFF`. This type supports 4-byte chunk sizes for block reading and writing of IFF files. `lwmeshedt.h` `LWMESHEDIT_VERSION` (MeshDataEdit) has been incremented to 4. Added MeshEditOp functions `pointVPGet`, `pointVEval`, `pntVPMap`. These are for per-polygon vertex mapping. The second argument to `initUV` is now float * rather than float[2] so that `initUV` can be used to initialize per-polygon UVs. `lwmeshes.h` Added vertex map types for color vmaps: `LWVMAP_RGB` and `LWVMAP_RGBA`. Added LWMeshInfo function `pntVPGet` for per-polygon vertex mapping. `lwobjimp.h` `LWOBJECTIMPORT_VERSION` (ObjectLoader) has been incremented to 3. Added LWObjectImport function `vmapPDV` for per-polygon vertex mapping. The second argument to `pivot` and the third argument to `vmapVal` are now const. `lwrender.h` New `illuminate` special item types `LWITEM_RADIOSITY` and `LWITEM_CAUSTICS` allow callers of `illuminate` to get information about global illumination at a spot. `LWOBJECTINFO_GLOBAL` (Object Info) has been incremented to "LW Object Info 3". The texture IDs of the displacement and clip maps of each object can now be obtained using the new `dispMap` and `clipMap` Object Info functions. `LWINTERFACEINFO_GLOBAL` (Interface Info) has been incremented to "LW Interface Info 2" New Interface Info function `schemaPos` returns the positions of items in schematic viewports. (Use the new `SchematicPosition` command to set them.) New Interface Info field `dynaUpdate` contains Layout's Dynamic Update setting, which can be `LWDYNUP_OFF`, `LWDYNUP_DELAYED` or `LWDYNUP_INTERACTIVE`. Added a Time Info global that returns the frame and time for the image currently being rendered. `lwserver.h` ServerUserName has been replaced by ServerTagInfo, which among other things allows plug-ins to specify how they should be added to LightWave®'s menu system. `lwshelf.h` New LWShelfFuncs function `addNamedPreset`. `lwsurf.h` `LWSURFACEFUNCS_GLOBAL` (Surface Functions) incremented to "Surface Functions 2". Added surface channel `SURF_VCOL` for color vertex maps. Added Surface Functions routines `getColorVMap` and `setColorVMap`. `lwtexture.h` `LWTEXTURE_VERSION` (ProceduralTextureHandler) has been incremented to 5. Texture class plug-ins can now return RGBA levels, in support of which added LWTextureAccess field `txRGBA[4]`, LWTextureHandler flag `LWTEXF_SELF_COLOR` and LWTextureAccess flag `LWTXEF_COLOR`. `lwtxtr.h` New LWTxtrParamDesc flag `LWGF_AUTOSIZE` for gradient textures that can automatically adjust their min and max. `lwtxtred.h` `LWTXTREDFUNCS_GLOBAL` (Texture Editor) has been incremented to "Texture Editor 2". New callback type `LW_GradAutoSizeFunc` for gradient autosizing. New Texture Editor functions for supporting multiselection (`selectAdd`, `selectRem`, `selectClr`, `selectFirst`, `selectNext`) and automatic ranges for gradient textures (`setGradientAutoSize`). `lwvparm.h` New header (variant parameters were formerly defined in lwenvel.h). Added `LWVPDT` texture data types. Added arguments (texture context, event callback, plug-in name and userdata) to the LWVParmFuncs `create` function. Added a micropolygon argument to `getVal` for texture evaluation. New functions `getState`, `setState`, `editTex`, `initMP`, `getEnv` and `getTex`. `getState` and `setState` replace the `hasEnv` and `setEnvState` functions, which have been removed. The new functions support textures in addition to envelopes. `lwxpanel.h` Added `XpENABLE` hint (XPanels). Commands: Layout `SaveSceneCopy` and `SaveObjectCopy` save a copy of the scene or the object in a file with a new name without affecting the current name in Layout. `PreviousSibling` and `NextSibling` allow easy navigation among a set of items that share the same parent. `AddEnvelope` and `RemoveEnvelope` allow plug-ins and scripts to "press the E button" for a Layout parameter. Each command takes a channel name as its argument (the same names that appear when channels are expanded in the Scene Editor). By passing `AutoConfirm` an argument greater than zero, plug-ins and scripts can use this command to automatically respond affirmatively to all confirmation requesters before commands are issued to clear items, etc. This feature should be used with care, and it should be turned off by passing it a zero before control is returned to the user. `EditPlugins` opens the new dialog for displaying, adding, and deleting servers. `SaveObject` and `SaveTransformed` now accept a filename argument. `CommandInput` now accepts a command argument. `MaskPosition` allows plug-ins and scripts to set exact pixel values for the left, top, width, and height of the camera mask. One potential use is to create scene files for portions of a frame which can be rendered separately and then perfectly recombined by summing the resulting images (assuming the mask color is black). `SchematicPosition` sets the X and Y of the current item's schematic node. This and the `schemaPos` function added to the Interface Info global allow plug-ins to arrange items in Schematic viewports. `Antialiasing` takes an argument from 0 to 4, as in scene files. Other new commands:
      TopView              CacheRadiosity           RayTraceShadows
      BottomView           CacheCaustics            RayTraceReflection
      BackView             EnableVolumetricLights   RayTraceRefraction
      FrontView            RadiosityTolerance       MorphTarget
      RightView            EnhancedAA               IncludeLight
      LeftView             FogType                  ExcludeLight
      SchematicView        FogMinDistance           PolygonEdgeColor
      CenterItem           FogMaxDistance           CacheShadowMap
      FitAll               FogMinAmount             MaskColor
      FitSelected          FogMaxAmount             LightIntensityTool
      ShowSafeAreas        FogColor                 EnableVIPER
      ShowFieldChart       AddPartigon
Commands: Modeler The `revert` command reloads an existing object file. Miscellaneous When items are moved, rotated, or scaled, using either the mouse or the numeric fields, the appropriate position, rotation, or scale commands are now added to the command history, which in turn generates events for master plug-ins. The `newTime` callbacks of shaders, volumetrics, and pixel filters are now called only after all geometry has been finalized. This fixes a problem that occurs when plug-ins of one of those classes depend on the results of displacement plug-ins. There can now be any number of custom object plug-ins per object, and they are added using a server pane rather than a popup. RGB and alpha image savers are now recorded in scene files by name rather than by index, preventing problems caused by different machines having different saver lists. Image saver indices in existing scene files will continue to work as before. When the `newTime` functions of shaders, environment plug-ins, volumetric plug-ins and lights, pixel filters, custom object and displacement plug-ins are called, inverse kinematics have already been computed. Therefore, the Item Info `param` function now simply returns existing vectors in such cases (assuming the time argument matches the current time), allowing those plug-ins to properly account for IK. When a subpatch object is being deformed and its Subdivision Order is later than the deformation, the interior patch points are no longer deformed. In particular, the `evaluate` functions of displacement plug-ins will no longer be called for the patch points.