RayFX Raytracing Engine

Beta Version 5.03

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.


Beta Version 5.02
Summary:
Some cosmetic changes to the Global Parameters Dialog, introduction of the Visualize in Render option to aid in acceleration setup, and to make developing new accelerators easier.  New message window and simplified setup progress dialog.

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.



Beta Version 5.01
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.



Beta Version 5.00
Summary:
Replaced several critical voxelization functions resulting increased performance, as well as memory footprint and setup time reduction.  Shadow API improvements and extensions added for the Ink&Paint material.  Transparent object shadow support added.  Numerous optimizations and changes to all api's to accomodate the development of the Advanced Material, the nexus of our next generation tools.

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.



Beta Version 4.00

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