The latest precompiled binary version. New users should download this first.
The latest version(s) of the Blender exporter can be downloaded from here.
The latest version of the 3dsmax exporter can be downloaded from David Baker's website.
The latest version of the Maya (6.5, 7.0, 8.0, 8.5) exporter.
The latest version of the XSI exporter can be downloaded from Michael Gangolf's website.
This is just a quick update to report on development progress. The forum has proven to be quite popular and development of the Blender exporter has been moving at a rapid pace. The latest version is now being checked into SVN regularly. I have updated the link on the right to point to all versions. Blender users should upgrade as soon as possible. Of course please stop by the forums and let us know how to make the exporter even better!
The Maya exporter is also under heavy development. I will make an official release along with the next release of Sunflow, but we already have Sunflow working as a third party renderer and integrating with the Maya render view (special thanks to Fredrik from Mad Crew for these improvements).
Finally, as far as Sunflow itself is concerned things are moving along too. The main focus of the next release will be the new API and a new scene file format that mirrors it exactly. This should simplify exporter writing, but also makes the renderer much more extensible as the janino shader concept can now be applied to all programmable types in Sunflow. The new file format comes in ASCII and binary flavors for efficient exporting/loading of complex scenes. I have also rewritten the bitmap reading/saving portion of Sunflow to support new image formats more easily. I hope to introduce object motion blur in the next release as well as a new progressive rendering mode. Stay tuned!
At the request of many of you, I opened an improved phpbb style forum. It is being hosted here on Sourceforge. Please let me know if you run into any problems. I will keep the old sourceforge forums open for a little while until all the useful information has been transferred.
I have also uploaded a few new images to the gallery. Be sure to check them out!
I just released a new version. This is a small update which fixes a number of minor issues with the last release. The major new features include:
I have also updated the sidebar links for the 3dsmax and Cheetah3D exporters which are making rapid progress.
I have just added the first piece of documentation! Check out the new docs section in the menu. This first tutorial explains how to install Sunflow, creating a batch script for convenient launching and how to install the JDK to get the best performance possible. Thanks to Artur Brinkmann for writing this up. Please drop us a note on the forums if you find any errors or have any suggestions that could improve the tutorial.
Many brand new exporters have appeared as well!
I have gotten great responses from many people about the new release. Thanks to everyone who has e-mailed me and posted on the forums! Stay tuned for more updates and tutorials.
The new version is finally here! Grab it from the download section now!
This release contains many improvements and many aspects of the core have been completely overhauled. Brand new features include:
I have received several questions recently about exporters/plugins for other platforms. If you develop an export solution for any of the major 3d packages (3dsmax, Lightwave, Cinema4D, modo, etc ...) please let me know and it will be listed here as well. Many users are looking forward to these!
I know documentation/tutorials are still lacking. Please be patient as this will be one of the main focuses of the next release. If you are willing to contribute anything in this area, your help will be most welcome. In the meantime, enjoy the new release and please share your renders with us on the forum!
Thanks to Kris Berg from MUX Medialab, we have a brand new logo and website for the new year! I've also updated the gallery with some great new images and animations created with the soon-to-be-released new version.
This page now features a proper Atom feed for all news items. This should help you keep up to date with the latest Sunflow development. Please let me know if your favorite feed reader runs into any problems.
I've just added a couple new features to the Sunflow core. It is now possible to bake lightmaps using Sunflow. This makes it possible to take any object in your scene and render it's shading in UV space. The resulting image can then be applied back to the model as a texture for realtime use. The lightmapping works with any of the image samplers, so you may render them at high quality with the bucket renderer, or get a quick preview with the progressive renderer.
I have also added a new surface type which allows efficient rendering of many millions of particle spheres. I have used this feature in particular to generate some images for the CGSphere.com website. The aggregation images were inspired by the beautifull work of Andy Lomas.
Also of interest, the open source jReality project is making use of Sunflow to provide high quality rendering embedded in their application. The tight level of integration was made possible by the programmable and embeddable design of Sunflow. The developers were even able to add a few new features which I hope to port back into the Sunflow core soon.
Don't forget to stop by the gallery to view the latest images!
Development on the next version is progressing. I have made a number of fairly large changes to the internals of the renderer. This will make several advanced features much easier to include. Instancing is now built into the core. This enables very large scenes to be rendered if they contain many copies of the same object. Sunflow now supports a variety of new primitives including: hair curves, bezier patches, toruses and banchoff surfaces. The core render can also perform tesselation, acceleration structure builds and texture loading on demand instead of as a pre-process. This means that if only a portion of the scene is visible, no time will be wasted on processing unimportant surfaces. Stay tuned for more updates!
A new version has been released which fixes a number of small bugs and adds a few new features and options.
The biggest feature change is to how color spaces are handled. Sunflow assumes linear color data like most renderers, but now offers methods to apply or unapply nonlinear color transforms from this data. At the moment only the sRGB standard curve is handled, more options might be provided in the future. Floating point textures/output images are assumed to be linear while 8 bit images are assumed to be in a non-linear colorspace. Likewise, the default framebuffer assumes your monitor matches the nonlinear sRGB profile curve and corrects the image accordingly for display. The advantage of this change is that the colors you specify during modelling/texturing will correspond to what you see in your rendered image, and the lighting calculations will be done in a correctly linearized colorspace. In older versions, even when specifying a gamma of 2.2, the resulting images could appeared washed out or too light.
You may download the updated release and blender exporter from the downloads section as usual.
I've just uploaded a new version which fixes a few minor bugs and adds include search path support as well as a couple new command line options for convenience. I have made similar small fixes to the Blender exporter, relating to camera aspect ratio and finding the right objects from the scene data (Blender keeps deleted objects around for undo purposes). Get the latest from the download section!
You may also want to check out Hafunui's deviantART page for some cool Sunflow renders. Finally, I've also updated the gallery with a render of the WinOSI test scene done with path tracing and caustic photons.
The new blender export script is now available in the download section. It fixes a couple minor bugs and removes obsolete settings. To add gi or caustics, refer to the example data files. Let me know how its working on the forums!
I have uploaded a new version of the data files. They contain examples of several of the new features in the new release - including a demo of Sunflow as a real-time raytracer.
I have decided to reopen Bug and Feature trackers on the sourceforge page as well as the forums. As Sunflow grows in popularity, it is becoming hard for me to monitor the various forums around the net where Sunflow is being talked about. If you want to post a message or question for me to see, the sourceforge forums are your best bet.
An updated Blender exporter should be available soon. In the meantime the current version should still work for basic geometry and light export.
A new version has just been released. Although I haven't yet completed all the items on the wish list, I have decided to go ahead and release the version in its current state anyway. The main improvements are as follows:
The .sc file format has undergone a few changes though things should be mostly backwards compatible. The example scene files and blender exporters will be updated soon. Enjoy the new release!
Hafunui from the Elysiun forums has put together a nice tutorial on the shaders in the current release. You may also want to check out my article in the new issue of Blenderart Mag which gives an introduction to using Sunflow with Blender.
Here is a quick progress report on the development of the next version. We will be jumping to v0.06 on the next release. I've made some major improvements to the raw speed of the intersection algorithms. Some scenes render up to twice as fast or more. KDTree construction is also being improved and is both faster and produces higher quality trees. I'm also doing a ground-up re-evaluation of all of the major subsystems and their interfaces. Like many programs Sunflow has grown organically over the past few months, and its always good to take a step back and reevaluate things from a performance and extensiblity perspective. I've created a new user interface centered around the possibility to define scenes by scripting. The interface lets you write Java code and compile it on the fly to build your scenes. This is completely backwards compatible with the scene file format via a parse() command. The details of that are taken care of automatically so no programming is required to use the new GUI if you don't want to. The preview windows now support pan/zoom navigation (even while you render).
The next major item to be addressed is the recode of the GI systems inside Sunflow. The current options are either path tracing which is usually too slow except in very simple cases and photons/irradiance caching which suffer from rather complex setup and parameter tweaking. I am hoping to implement something in the spirit of instant radiosity soon.
I've also uploaded a new version of the Blender exporter with a couple bug fixes. Get it from the download section as usual.
Finally, I started a new section in the gallery for images rendered with the work in progress version.
A new version of the blender export script is available in the downloads section. I added basic support for area lights. Only square lights are supported at the moment, although you can scale them any way you want so that shouldn't be a problem. The light power is derived from the color, energy and the global scale factor in the script UI. This is now the prefered method to get area lights in your scene. Meshlights are dangerous because they generate one area light per triangle in the mesh. I will probably remove the support for those in future versions.
New site design! I hope you like it. It should be easier to maintain and more standards compliant. Its based on one of the excellent free templates from Andreas Viklund. Let me know if anything looks strange in your favorite browser.
Michael Gangolf sends word that he is working on a XSI exporter script for Sunflow. You can get the latest version from his website. I also posted a screen capture of his script in action to the gallery.
New version out. Grab it from the download page as usual. Changes in this release include:
New version out. Get it and the blender script from the download page. New features in this release include:
Be carefull, the command line to start Sunflow has changed. Check the README for more information.
A new version is out, grab it from the download page as usual. TGA support has been added as well as a couple other basic GUI enhancements. The Blender exporter has been updated as well. Click here for the latest version. Here is a brief summary of some of the basic Blender exporter features:
Better documentation and tutorials are still in the works. Enjoy the update!
Some updates to the gallery. Credits go to Gaurav Nawani for the beautiful original Blender models. Here is a small update to the Blender exporter which now correctly makes use of the quoting feature.
A new version has just been uploaded, grab it from the download page. This is a minor update: I did some cleanup to the triangle mesh code and the parser to improve interaction with blender. Memory usage should be reduced for large meshes if they don't need normals or uvs. The parser now supports filenames with spaces (use quotes). Sampling efficiency has also been improved for the path tracing engine which should lead to some speedups. As usual, grab the latest blender export script here.
More bugfixes to the blender export script from Robert. Get it here.
New version of the blender export script here. Thanks to Robert again for some quick bug fixes in the original release. I also updated the gallery with a new image. Many thanks to Jotero for making so many cool models available.
I have posted a precompiled binary package for those folks who don't want to mess with the source code. Get it here. I am also making available a simple Blender export script. Thanks to Robert Lindsay for writing most of this. I am not making an official package for this just yet since its very new. Place it in your .blender/scripts folder and restart Blender. The script will let you set a few basic render options and export the geometry to disk. You will most likely need to tweak the exported scenes by hand to get the most out of the software. Better integration to Blender is planned, so keep on checking back here for updates! Feedback is welcome, please use the Sourceforge mail system to reach me.
The new version is finally out! Check the downloads section to get the source and a couple of demo scene files. The new version has a programmable interface for photon mapping (global and caustic maps) as well as customizable global illumination engines. I still have the same irradiance caching code in there (which isn't particularly robust or thread-safe). I added a multi-bounce path tracer which is robust and unbiased but will naturally take much longer to converge to a noise free solution. One of the goals for future releases will be to expand the number of GI algorithms available.
I also plan on improving the kd-tree implementation. The current version works fairly well but the building code is rather slow and uses a lot of memory. The traversal is also unable to correctly handle cases where the ray origin lies on a splitting plane. These issues are relatively easy to solve, so they are high on the todo list for the next version. Enjoy the new release!
Added two new images in the gallery, created by Robert Lindsay and his blender export script. Even though the scene files required some manual tweaking after export, basic materials and meshlights are now supported.
For those of you who are still curious about when the next release will appear, I intend to try and make a release before the end of the year. The main changes that need to happen are the refactoring of the photon mapping and irradiance caching. Both areas need some improvement to work better with multithreading as well as some interface changes to make the individual algorithms more replaceable.
Finally implemented a reasonably fast KD-Tree, mainly inspired by the talks at the RTRT course at Siggraph. The building code is still rather slow, but actual raytracing speed is much faster that my uniform grid in most scenes. KD-Trees are definitely the way to go if you're thinking about acceleration structures for your raytracer. Just make sure you build a properly cost optimized tree.
I have also started implementing a progressive rendering mode, mainly inspired by projects such as Fprime and the “Interaction Trick”. This lets you get a rough idea of what the image will look like without rendering it completely. In the future, the goal is to let the progressive rendering restart automatically if parameters change while only rebuilding the KD-Tree or photon maps as needed. Another important improvement is to sort the refined tiles on the progressive rendering queue by some contrast metric to quickly focus on the high frequency content in the image.
Check the video in the gallery for an example of the progressive mode in action. Keep in mind actual performance is reduced because of the video capture software. The progressive rendering code is also single threaded at the moment.
Added a screenshot in the gallery showing a basic Blender exporter. The image was produced by manually tweaking shaders and sampling rates on the exported file. Thanks to Robert Lindsay for getting this started. I've also updated the features page with what I've changed since the last update.
Added an option to lock the samples taken from an IBL. This leads to banding on the shadows but significantly increases the speed of sampling, allowing more samples to be taken to compensate. I also added a new shiny diffuse shader, shown in the gallery. It can be used to simulate glossy materials.
Implemented an IBL light shader based on the technique described on the PBRT website (link). I also ported the hdr file format loading code to Java, making it possible to use HDR light probes for lighting. There is an example of this in the gallery. Thanks to Ben Spencer for the cute aliens model! :-)
Added an example of motion blur to the gallery. This was inspired by a post on the SplutterFish blog. It shows a rotating tri-color wheel, which produces some interesting rainbow effects as it speeds up before averaging out to gray at top speed. I have only implemented camera motion blur so far. This is the simplest and required very minor changes on top of the depth of field code. Motion blur for moving geometry and lights is more complex, especially when used with caching schemes like photon maps or the irradiance cache. I will leave the implementation of those effects to future versions.
Updated the gallery with an example of depth of field. The new version is still making progress. I have mainly done under-the-hood changes, including refactoring a number of classes and interfaces for simplicity. Sunflow is now multi-threaded which is a welcome addition for the new multi-core processors now becoming available. I have also added programmable multi-pixel image filtering and hilbert bucket scanning for better coherence. The main features left to complete before the release of v0.05 are motion blur, a KD-tree accelerator, and a new global illumination engine (the current irradiance cache code works but is hard to control). Keep checking for updates!
Updated the gallery with an example of a fractal primitive (Menger Sponge), rendered without instantiating any geometry. The new cube-grid primitive uses a simple inside/outside test on each cell in a voxel grid to define arbitrary shapes. I also wrote a simple spherical camera shader to generate environment maps.
Long time without any updates! I thought I would give some sign of life, since I still am adding features to Sunflow despite being busy with a full time job. I have updated the feature list to reflect the state of the current version. I will release a source update as soon as possible, after a few API cleanups. In the mean time here are gallery updates: two renders of some freshly scanned models courtesy of XYZRGB and the Stanford 3D Scanning Repository. These renders are using the full polygon count (7.2 million and 10 million triangles respectively) with a simple ambient occlusion shader.
Here are a couple of the papers which I've implemented since the last update:
New updates to the gallery with the work in progress on version 0.03. The renderer can now adaptively over and under sample the image as needed. This allows to render good quality previews at a fraction of the rendering time it takes for production quality settings. This is controllable much like in Mental Ray or Brazil r/s with two simple parameters that indicate the minimum and maximum sampling spacing. I have also started work on making the renderer completely deterministic. This means that quasi-monte carlo integration is used everywhere. Not a single call is made to Math.random() giving much better convergence, but also predictable results: you get the same picture if you render twice with the same settings. Stay tuned.
Version 0.02.2 has been released! Check out the updated feature page and gallery. This will probably be the last release until after SIGGRAPH. Feel free to contact me if you will be attending the conference as well.
Implemented Irradiance Gradients. Fixed a small problem with the variance calculation for anti-aliasing. Augmented the QMC sequence class to include multi-dimensional sequences. I have made some initial attemps at rendering the Sponza scene with full GI. An interesting problem that I ran into is that many photons tend to get stored on the outside of the model while relatively few make it through the opening at the top that should be illuminating the scene. This means that a fairly substantial number of photons is required to get decent illumination. I am considering adding an importance tracing step to remedy this problem.
First source code release! Grab it from the Downloads section.
Created a number of test scenes for caustics and added QMC photon shooting for better stratification of the photons. The frontend to the renderer now has a simple GUI in addition to the console mode.
Photon mapping and irradiance caching are in place. Updated the gallery.
Added a gallery section with some sample renderings.
Development is progressing along nicely. I have switched from C++ over to Java. This may be surprising to some, but the main motivation is the ease of development. It is much easier to add/change class interfaces and experiment with design in Java. My own benchmarks show that Java is only about 1.5x-2x slower, which in rendering terms is the difference between 1024x768 and 800x600. This is something I am willing to live with for the added flexibility in development. Besides, adding multithreaded and networking features in Java will be much easier due to the completeness of the Java API vs. the cross-platform complexities of C++.
Initial webpage design.