[Bf-committers] Volume Rendering Updates

Aurel W. aurel.w at gmail.com
Fri Jan 28 09:47:39 CET 2011


On 27 January 2011 22:59, Matt Ebb <matt at mke3.net> wrote:
> First, let me clarify, you are talking about the existing light cache
> functionality inside blender right, not anything new you've coded?
Yes, basically the light cache, but "radiance cache" is just the
proper term, to what it is. I currently have a separate radiance cache
for single and multiple scattering and build on top of this some
artistic control, like blending between both caches and scaling single
and multiple scattering radiance independently in a post process. More
advanced radiance caching, as for e.g. in [Jarosz08] would be nice at
some point, but also hard to do. I guess the trivial method, which I
have implemented is a better starting point for now.

> To be clear, it doesn't just cache per object, it caches independently
> per object instance in the render - if you've got multiple instances
> you want them to be lit differently. I suppose it may be an acceptable
> limitation if you want to bake and save lighting that it doesn't work
> with instances, but it's not too elegant.
Yeah, that was also an issue, why I had no idea how to do this
elegant. I guess it really should work for instances, tho it would be
possible to just create copies, but then things start to get
confusing.


> Some alternatives could be:
> a) baking radiance to a format that can be loaded back up in the voxel
> data texture and rendered using that. That would at least reduce and
> make clearer any non-standard behaviour like not being able to share
> materials among objects, since it would then be explicit.
Hm, I haven't thought of this, just baking to a texture and then doing
volume ray casting without shading. That would work, but I also don't
know if it is the best workflow. Another side effect is, that this
would only work for the current isotropic radiance cache, but rules
out any anisotropic caching, which could be implemented in the future.

> b) perhaps you have an option to bake selected objects, and their
> shaded grids get saved to a nominated folder, by name. Once it's
> flagged as being baked (perhaps stored in the material), in a
> pre-process per frame, the renderer looks in that folder for the right
> files per object/objectinstance and loads up the data directly into
> each objectinstance's light cache before rendering if the bake files
> exist. If they don't exist, the light cache can remain null, and then
> either get cached per frame as is done now, or left un-shaded, or
> whatever.
I guess this would be the most practical approach,... so I would just
create files per object instance with an auto generated filename in
the same directory, as the blendfile. And create those in a baking
render pass.

> I would also recommend that any kind of baking be done consistently
> with other types of baking in blender, using the existing render
> baking interface. It shouldn't have to introduce yet another
> UI/workflow.
That's the main thing I am concerned with. So to keep this consistent,
I would need to introduce a new bake mode, "volume radiance"? And a
special bake render pass for volumes, which then shades selected
objects, saves the caches to those files and sets a flag in the
material/object.

I will try to come up with something, after I have finished multiple scattering.

aurel


More information about the Bf-committers mailing list