Previously when using light cache, there could be artifacts caused when
voxel points that were sampled outside the volume object's geometry got
interpolated into the rest of the volume. This commit adds a (similar
to a dilate) filter pass after creating the light cache, that fills
these empty areas with the average of their surrounding voxels.
http://mke3.net/blender/devel/rendering/volumetrics/vol_lightcache_filter.jpg
that was preventing light cache from working on some
people's systems (but went just fine on both my windows pc
and mac). I have no idea how the original code even worked
at all, it really shouldn't have.
But fixed now anyway! Thanks a bunch to Zanqdo for patience
in helping me pinpoint this.
This fixes an issue which darkened the render from inside a
volume with sky or premul on. Still need to find a good way to
get an alpha value back into the shader (for compositing etc)
without getting the render distorted by premul.
Replaced 'Sharp' falloff with 'Soft'. This falloff type has
a variable softness, and can get some quite smooth results.
It can be useful to get smooth transitions in density when
you're using particles on a large scale:
http://mke3.net/blender/devel/rendering/volumetrics/pd_falloff_soft.jpg
Also removed 'angular velocity' turbulence source - it
wasn't doing anything useful atm
This was a bit complicated to do, but is working pretty well now, and can make shading significantly faster to render.
This option pre-calculates self-shading information into a
3d voxel grid before rendering, then uses and interpolates
that data during the main rendering phase, rather than
calculating shading for each sample. It's an approximation
and isn't as accurate as getting the lighting directly,
but in many cases it looks very similar and renders much faster.
The voxel grid covers the object's 3D screen-aligned bounding box
so this may not be that useful for large volume regions like a
big range of cloud cover, since you'll need a lot of resolution.
The render time speaks for itself here:
http://mke3.net/blender/devel/rendering/volumetrics/vol_light_cache_interpolation.jpg
The resolution is set in the volume panel - it's the resolution
of one edge of the voxel grid. Keep in mind that the higher the
resolution, the more memory needed, like in fluid sim. The
memory requirements increase with the cube of the edge
resolution so be careful. I might try and add a little memory
calculator thing like fluid sim has there later.
The voxels are interpolated using trilinear interpolation -
here's a comparison image I made during testing:
http://mke3.net/blender/devel/rendering/volumetrics/vol_light_cache_compare.jpg
There might still be a couple of little tweaks I can do to
improve the visual quality, I'll see.
This is on by default, and trades random noise for banding. It jitters
the step size from 75% to 125% of its original amount, and since it
uses the threaded random seeds, shouldn't flicker during animation.
These two images took roughly the same time to render:
http://mke3.net/blender/devel/rendering/volumetrics/vol_stepsize_randomized.jpg
- modified point density so that it returns a more consistent
density with regards to search radius. Previously larger radii
would give much higher density but this is equalised out now.
- Added a new volume material option 'density scale'. This is an
overall scale multiplier for density, allowing you to (for
example) crank down the density to a more desirable range if
you're working at a large physical scale. Volume rendering is
fundamentally scale dependant so this lets you correct to get the
right visual result.
- Also tweaked a few constants, old files won't render exactly
the same, just minor things though.
Additional sculpt mode hotkeys to toggle Smooth stroke (Shift S) and Anchored brush (Shift A) . Menus are updated with hotkeys too. This is a real last minute one, but it was given the ok previously, and I've just had time to commit this for him.
setting the magnification to GL_LINEAR_MIPMAP_NEAREST but that is
only valid for minifaction, should be GL_LINEAR instead. OpenGL
driver should refuse setting this so should be harmless, but better
to fix it anyway.
- Eraser now works in Sequence Editor. Cleaned up the code that handles Sequencer coordinate-conversions so that it should be a bit faster (doesn't need to recalculate offsets+scaling for every point that is made).
- Fixed mistake made in previous commit that made the pressure value (for tablets) an integer instead or a float. This should solve some of the reports of bits of strokes being missed on tablets.
* Debug text drawing didn't disable textures correct leaving
texture state invalid, quite old issue.
* Multitexture materials didn't get enabled correct, recent bug.
Both pointed out by José Ignacio Romero, thanks!
Enable soft body collision clusters by default.
Add option to 'disable collision' button between soft body and rigid body connected by constraint (option was already available between two rigid bodies)
Now it is possible to clean IPO-curves using the call:
icu.clean()
There's an optional value to specify the threshold to use for cleaning.
This just wraps the internal clean_ipo_curve() function.
* Fix for #17808: Can't compile using SunCC - gpencil.c uses DOS line endings.
Added some svn-properties on gpencil files and also keyframing ones that I added, so that this shouldn't be a problem anymore.
* In Node Editor, it is now possible to close an open Grease Pencil panel when there is no node-tree being shown (i.e. after switching between node editing modes)
kept as the original file, but that can't work correct for solving
relative paths once a .blend in another directory is loaded. The
reason it went OK with the apricot tech demo is that the images there
were lib linked into the level file, which still worked.
Now it sets G.sce to the current loaded .blend file. Note that the
python config file path still uses the first loaded .blend file so it
looks in the same location each time.
Also added some NULL pointer checks in the joystick code because it
was crashing there on Mac, there's similar checks in related functions
so I'm assuming this was just a missed case.
Thanks to Lguillaume for helping with this one.
Had to go back to bug: [#17631] PIL_dynlib_get_error_as_string() returns NULL, causes crash
and revert the fix and make some new updates.
function needs to return NULL so fix the functions that were assuming it
always returns a string.
Kent