Release Notes
Summary:
This is primarily a bug fix release, and just one bug at that.
Objects that have had been mirrored using the mirror tool will now reflect/refract
correctly. There have been some minor improvements to the message/progress
windows as well.
Changes:
1) Objects that have been mirrored using the Max mirror tool will now
reflect / refract correctly (thanx Christer...if it was a snake, I'd be
dead...several times.)
2) Message Window changes: Resizeable; Highlighting text and
copying it to the clipboard using ctrl-c works correctly now; Added Clear
and Copy buttons (only Clear works); Never launched during a net render;
New color scheme (blurbeta blue); reports toon ray count.
3) Progress dialog will no longer force Max to the foreground (if max
isn't currently the active application, the progress dialog will not be
created.)
Known Issues / Bugs:
1) The Raytrace material and texture sometimes show mesh lines when
antialiasing. This usually occurs where an object reflects itself.
2) Visualize in Render doesn't work with Dual Pipe or self-reflective
objects yet.
3) Space subdivision, memory, and time stats not displayed in message
window yet.
4) Message window doesn't receive Windows messages (eg. you can't move
it) while rendering is taking place.
5) Key brackets don't display properly in new acceleration sub-dialogs.
6) Ink&Paint ink lines still don't reflect/refract properly again.
Well...it worked in one build at least. This one's weird because
it SHOULD be working.
The next release of the engine will contain an addendum to the current documentation as provided with Max in the box that covers the changes to the UI and feature set more thoroughly.
Changes:
1) The Manual Acceleration interface has changed in the Global Parameters
Dialog. Acceleration mode is now a drop down list. To change
modes, simply turn on manual acceleration and select the desired accelerator.
To access the accelerator's settings, hit the button labeled "..." to the
right of the acceleration mode drop down list. This was one of several
precursor steps to the introduction of pluggable acceleration.
2) Replaced the cumbersome stat filled progress dialog boxes with a
simple dialog. Stats will be displayed in the message window instead.
3) Added a message window. With RayFX headed towards more cutting
edge, and diverse applications, a way of giving lots of text based feedback
to the user was required. This still needs a bit of work, but is
functional.
4) Added a visualize in render mode. This actually renders the
voxel trees themselves.
New Global Parameters
MessageWindow - Toggles the display of the new Message Window.
If this is enabled, the message window will appear as soon as Max begins
to render a frame (when the render progress and VFB dialogs appear.)
The raytracer is then in idle mode until it receives a request to trace
a ray. At this point, setup will commence as before, with extended
information displayed in the message window. Once the frame has completed
rendering, the message window will display various ray count statistics.
Visualize in Render - Activates the DebugTrace pipeline in the raytracer. This causes the raytracer to render the acceleration structure itself (only in reflections and refractions, the scanline renderer doesn't do this.) Single Pipe (bounded and unbounded) are supported, but Dual Pipe currently doesn't work. Also, some standard rendering features are automatically disabled when in this mode (like atmospherics.)
Render Objects - Only active when Visualize in Render is on. This enables or suppresses the rendering of the objects in the scene, in case you just want to see the voxel structure itself.
Opacity - Controls the opacity of the voxel boundaries when Visualize in Render is enabled. For really dense lattices, you may need to decrease this value.
Known Issues / Bugs:
1) The Raytrace material and texture sometimes show mesh lines when
antialiasing. This usually occurs where an object reflects itself.
2) Meshes that have been mirrored in their creation history may not
reflect/refract properly.
3) Visualize in Render doesn't work with Dual Pipe or self-reflective
objects yet.
4) Space subdivision and memory stats not displayed in message window
yet.
5) Message window doesn't receive Windows messages (eg. you can't move
it) while rendering is taking place.
6) Key brackets don't display properly in new acceleration sub-dialogs.
7) Ray counts displayed even if no trace requests were received (eg.
no raytraced materials visible in render.) A simple 'No trace request
received.' message would be adequate here.
8) Ink&Paint ink lines don't reflect/refract properly again.
Well...it worked in one build at least. This one's weird because
it SHOULD be working.
Changes:
1) Corrected numerous bugs in the IntersectObject code that caused
self reflection and refraction to misbehave...badly. The number of
symptoms is too long to list, suffice to say, if you had a problem with
the last build, it's probably gone.
Known Issues / Bugs:
1) The Raytrace material and texture sometime show mesh lines when
antialiasing. This usually occurs where an object reflects itself.
Changes:
1) Replaced the FaceInVoxel function with a very fast, definitive test.
This has resulted not only in much more predictable behaviour in the accelerators,
but in an overall speed increase and reduction in memory footprint.
As a side benefit the accelerators digest the scene much faster now, reducing
setup time pretty substantially. This is a HUGE internal change.
2) Fixed a bug in the Global Parameters dialog box that was preventing the Max Depth and Balance spinners from being set correctly.
3) Increased the Max Depth clamping to 8 on all accelerators, since things are really behaving well now.
4) Implemented a DebugTrace pipeline that actually renders the voxel structure in reflections and refractions, but had to pull it at the last minute. Next round.
5) Got the OcclusionTrace function working to allow transparent object shadows.
6) Added light gathering API's, new TraceReflectedRay and TraceRefractedRay functions, the Adaptive Geodesic Hemispherical Patch Sampler, comprehensive ray type tagging and discrimination, Luminaire identification and sample space proximity detection schtuff for the Advanced Material.
Known Issues / Bugs:
1) The unbounded Single Pipe is still iffy. This is a focus of
the next major release. The unbounded single pipe is rapidly taking
over as the fastest accelerator of the lot...and a derivation of it (the
Adaptive Nested UGrid) will eventually replace all the current accelerators.
Summary:
Shadow api's were fleshed out; memory footprint reduced by 30%-70%;
performance increase across the board (speed increased by 10% to as much
as 200% on very large datasets).
Changes:
1) Enhanced the OcclusionTrace functions to make them useful.
No impact on currently distributed plugins (eg. Raytrace Material).
The changes here are too numerous to mention individually. Essentially,
the api's that shipped with max 3.x where incomplete.
2) Removed the RayFXBox3 (voxel bounding box) from the Voxel class. This removed 24 bytes from the storage of any voxel, and reduced the size of an empty voxel from 38 bytes to 14. This affects both Single and Dual pipes for all RayFX end applications. Symptoms of problems would include dropped faces (holes where there shouldn't be.) The change was straight forward, so no difficulty is anticipated.
3) Precalculate face bounding boxes during initialization, then toss at the end of init. These things were being generated repeatedly, so this saves some cpu time during setup. The only problem this could cause is a crash during setup, or a small memory leak. This affects all RayFX applications. Again, this is a straight forward change with little chance for problems to occur.
4) Improved the accuracy of the Dual Pipe scene voxel tree. This results in slightly longer setup times, but is well worth it. The scene tree is highly responsive to increases in division count. If you have thousands of objects, for the scene tree, try: balance: 10.0, Max Depth: 2, Max Divisions: 20-25. If you have a couple hundred Mb free, try setting Max Divisions: 30. If you do this, keep the Balance on the Object Trees to 5.0 or less, to keep their memory use under control.
5) Removed miscellaneous variables from the voxel trees, resulting in additional memory usage reduction.
6) All voxel trees now use nonuniform dimensioning. Previously, voxels lattices (uniform grids) were always divided the same number of times along each axis, regardless of the excentricity of the overall shape of the lattice. This could and did lead to ellongated or squished voxels. This is inefficient. The goal now is to maintain (nearly) cubic voxels. If the lattice is ellongated, there will be more voxels along that axis. A cylinder that would previously generate a 4x4x4 lattice (64 voxels) now generates a 1x1x4 lattice (4 voxels). This obviously reduces memory storage, but also reduces render time since fewer voxels have to be traversed (in general). Setup time is reduced as well. This one was a big winner across the board.
7) Acceleration defaults changed slightly to take advantage of our reduced memory footprint.
8) Acceleration control clampings have been raised. This was a result of the fact that most machines here at Blur now have from 512Mb to 1Gb of RAM, so I assume this is the case in other production environments...the memory usage reductions help as well of course. Be careful with these settings. If you have less than 100Mb free, I don't recommend setting Max Divisions higher than 15-20:
Balance - increased from 5.0 to 10.0 (higher values mean denser
lattices...eg. more divisions, less depth.)
Max Divisions - increased from 15 to 30.
Max Depth - increased from 3 to 8.
Known Issues / Bugs:
1) Single Pipe-bounding volumes disabled has a bizarre antialiasing
bug. In shadows, it shows as a real ragged, crappy looking edge.
In raytraced reflections and refractions, the reflective object will have
its mesh showing (you'll know it if you see it.) This is caused by
finding an errant ray/face intersection. Fixing this is of the highest
priority.
2) The occlusion tracer doesn't support transparency at the moment.
This will likely be implemented as a separate trace function, to keep the
opaque occlusion tracer as fast as possible. This is also a high
priority, and the reason why the shadow plugins are version 0.9 instead
of ver. 1.0