Release Notes
Summary:
Primarily a bug fix release. The IntersectObject code was busted
and it had devastating results on the Raytrace material and texture.
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