Finally in 2.5 branch :)
Still things to do, but will continue working in here. I won't bother
repeating the commit messages from the last year or so, however I've
written up some technical docs to help Ton/Brecht/etc review and find
their way around the code:
http://wiki.blender.org/index.php/User:Broken/VolumeRenderingDev
That above page has some known issues and todos listed, but I'm still
interested in bug reports.
Credits for this code:
* Matt Ebb
(with thanks to Red Cartel/ProMotion Studios)
* Raul Fernandez Hernandez (Farsthary) for patches:
o Light cache based multiple scattering approximation
o Initial voxeldata texture code
o Depth Cutoff threshold
* Andre Susano Pinto for BVH range lookup addition
* Trilinear interpolation adapted from pbrt
* Tricubic interpolation from libtricubic
* Exposed Tex.use_nodes, Tex.nodetree, MTex.which_output in RNA
* Added node controls to texture buttons (Use Nodes and Use Output)
* Made new texture outputs have unique names by default, though unique names still aren't required.
Note: The preview window in the texture buttons only takes which_output into account when in "material" mode, and in the material half of "both" mode; the plain texture display ignores the user's output choice.
This is because ED_preview_draw draws a Tex* and not an MTex* -- still some work to do here.
* data reorganisation - uses own values now instead of reusing surface material properties (i.e. an individual density value, rather than reusing alpha) Files saved with the old system won't load up the same after this.
* improved defaults and ui
* Transparency is now it's own panel, with a boolean toggle
+ enum for z/ray transparency (following mockup made by
William). Also had to change DNA flags for this.
* Disabled radiosity a bit more in render engine, it still had
some effects like auto autosmooth.
* Make some sliders in material buttons percentages in RNA.
* Some other small tweaks in layout and naming.
* Moved the brush texture settings to MTex/TextureSlot. The mapping settings now show up in the texture panel, pretty much like they do for textures used with materials.
TODO:
* Tiled mode should not show Z size setting
* Add a locked mode so that texture size can be changed uniformly like in 2.4x
Integration is still very rough around the edges and WIP, but it works, and can render smoke (using new Smoke format in Voxel Data texture) --> http://vimeo.com/6030983
More to come, but this makes things much easier to work on for me :)
Various fixes for painting, sculpting and particle edit, still
much to be done...
* Move RNA paint and sculpt structs into rna_sculpt_paint.c,
* Added Particle Edit RNA.
* Some tweaks to existing Paint RNA.
* Put texture paint and particle edit object in context.
* Fix some errors in the brush layout, properly doing None
checks, fixing some wrong property identifiers.
* Added tool enum for texture paint and particle edit in panels.
* Allow editing brush textures in the texture buttons, still with
a stupid toggle, ideas for how to make the connection better are
welcome.
Patch by Alfredo de Greef with high quality image texture filters.
This adds 3 new filters:
* SAT: Summed Area Tables. This is like mipmaps, but using somewhat
more memory avoids some artifacts.
* EWA: Ellipitical Weighted Average, anisotropic filter.
* FELINE: Fast elliptical lines for anisotropic texture mapping.
The one change I made to this was to try to fix an alpha/premul
problem, hopefully I didn't break anything, it looks compatible
with the existing filter now for me.
* World and Lamp previews now working here too.
* Experiment with list template, showing only icons. Unfortunately
texture icon render crashes combined with preview render so it
shows all icons the same.
* Influence panels updated, with slider for each option. The values
are still linked though, will fix that later.
* Image texture controls a bit more complete, still WIP.
* Color ramp back.
this works for the calling operators from python and using the RNA api.
bpy.ops.CONSOLE_exec() is now bpy.ops.console.exec()
eg.
split.itemO("PARTICLE_OT_editable_set", text="Free Edit") becomes... split.itemO("particle.editable_set", text="Free Edit")
For now any operator thats called checks if its missing _OT_ and assumes its python syntax and converts it before doing the lookup.
bpy.ops is a python class in release/ui/bpy_ops.py which does the fake submodules and conversion, the C operator api is at bpy.__ops__
personally Id still rather rename C id-names not to contain the _OT_ text which would avoid the conversion, its called a lot since the UI has to convert the operators.
* Some changes to make lamp and world textures editing work.
You may have to click on another texture slot once before
being able to add a texture, and the layout is messy. Added
this so lightenv project isn't blocked by this being missing.
* Adding a new material slot now doesn't create a new material
anymore, to avoid creating unused materials.
* Tiny changes to scene/object buttons.
* Texture -> renamed 'no rgb' to 'rgb to intensity' (btw it's not just for
image textures )
* Render -> stamp closed by default - not taking effect, because saved in
.B.blend. How do we fix this?
* Material -> removed 'Buffer Bias' dependency - it's for receiving shadows,
not casting them
* Material -> Ray Shadow bias renamed 'Auto Ray bias' - switches between an
automatically calculated value vs the specified value
* Fix poll() callback changes in recent commit, note that these have
to work with pinned context too.
* Hide header for context panels in py layout.
* Don't jump back when collapsing a panel, allow the view to be
over some empty space until you scroll back.
* Fix follow context icon, order had to be reversed in icon file.
* ID template now has icon as part of browse button instead of
outside the buttons.
* Fixed some Bugs from Commit 21458.
* Show Preview Render only when there is an active id block.
* Some Code Cleanup (especially in polls). Please try to keep it clean ;-)
"moving the ID browser into its own panel. Eventually these panels should loose their headers to distinguish them from other, normal panels. Also a few other fixes for bones and armature panels."
* Fix context.cloth, was not being set correct.
* Fix errors with context pinning, scripts should
not assume context.object to be there.
* Always show preview even if e.g. the material is not
set, to keep ID buttons from jumping while you're
using them.
* Close some material/texture panels by default.
* Update material buttons to use more diffuse/specular variables.
* Don't show texture mapping/influence when the texture is pinned.
* Small visual tweak for sequencer header menus.
* Added more material buttons by William. Thanks.
I made some minor adjustments and added Specular Shader Model RNA.
* Code cleanup and some consistency tweaks of button files.
Notes: Preview render now only shows up when there is an active world, material, texture or lamp.
* Made sure initial panels with ID Datablocks are shown, even when no block is active.
* Context now allows pinning a datablock, independent of
selection.
* Initial ID browse buttons for most buttons tabs.
* Browsing from world to texture now displays world textures
again, but is a bit of a hack, not sure there is a right
way to do this.
* There's a button to switch between active materials and
textures now, only temporary though.
* There's some code to put context part in own region,
disabled still because it doesn't work that well yet.
* Added panels with dummy preview template.
* Added constraints panel for bones next to objects, though it
doesn't work that well yet, the operators and code need to be
changed so they don't assume it is one or the other in/out
of posemode.
* Added some graying out in the scene and world buttons.