[Bf-cycles] Volume Refraction shader
Mircea Kitsune
mirceakitsune at gmail.com
Sun Feb 5 23:45:46 CET 2017
This is something I've been wanting to get to the developers to for a
while. It's a feature I hoped to use on several occasions, but
unfortunately it doesn't exist nor seems to be in any official plans as
of yet. Please consider a solution if possible. Thank you.
Suggestion request: Implementing a volume refraction shader. Either by
allowing the existing Refraction BSDF to work on the Volume material
output, or by defining a new Volume Refraction shader if that is a
better approach.
Suggested functionality: When a ray passes through a volume affected by
this shader, its trajectory is bent, just like Glass BSDF or Refraction
BSDF does for surfaces. Optionally, an IOR value may let users define
the probability and / or angle at which rays have their course modified,
whereas a Roughness value adjusts how blurry the view gets through such
a volume... the two ideally operate in an independent way so that
refraction and blur can work without one another.
Purpose 1: The most important practical use of this shader is proper
heat haze, emulating the air deformations we see above hot ovens / jet
engines / roads during summer days. As a workaround, this is already
possible to do with render nodes, by rendering your volume as a black &
white mask on a different render pass then plugging it into the Vector
input of a Displace node through which the main render is passed.
However this is just a workaround that so happens to work: It leads to
quality loss due to smudging and stretching the render result, causes
empty spaces if the transformation of the mask warps near an edge, is
much less realistic compared to the ray actually traveling a different
trajectory, and might ultimately be slower depending on what
calculations are implied.
Purpose 2: This would allow a greater level of detail for objects such
as crystals, diamonds, gems, ice crystals, and other types of rough
glass. You can already design realistic crystals in Cycles, by
customizing the IOR and Roughness of a Glass BSDF or Refraction BSDF,
causing different spots to refract or blur in different amounts. However
you can't differentiate such spots volumetrically inside the crystal
itself, and can't create rough blurry strands or inner glass pieces that
have a different refraction angle from others. This can of course be
worked around by adding smaller meshes inside the main crystal and
giving them different materials, but this technique will cause sharp
edges and is less correct and flexible compared to volumes in many cases.
More information about the Bf-cycles
mailing list