When using the GeoVolume modifier and Absorption, my objects are all using their color as the the absorption color. Which means they cast complimentary shadows. I think if no Absorption Channel is present it should just use the monochromatic old method. Or get it from the filter color.
There are 3 relevant interactions in volume rendering: Absorption, Scattering, and Emission.
Krakatoa derives these values using a combination of 4 different data channels: Density, Color(Scattering), Absorption, and Emission(Not currently exposed)
Krakatoa subscribes to the single scattering portion of the volume rendering equation, using where for each particle:
Absorption kills (absorbs), proportional to the Density, some incoming light at a particle from the particles behind it, plus the environment.
Scattering kills (scatters away from the eye), proportional to the Density, some incoming light at a particle from the particles behind it, plus the environment.
Scattering increases (scatters from a light path directly from a light, into the eye direction) outgoing light proportional to the Density at a particle.
Emission increases some light towards the eye by the emission value specified in the particle.
Traditional Krakatoa would set the Absorption = White - Color, such that the overall extinction of light (Absorption + Out Scattering) was equal for all wavelengths, producing black shadows. This is also what happens when Use Absorption is turned off when rendering voxels.
The complimentary shadows effect you are seeing is occurring because the only component of extinction that is non-zero is the Scattering component since the missing Absorption channel is initialized to 0.
Our future plans for dealing with this include using the material Filter Color, perhaps setting streams with no Absorption information to use the Color compliment, or allowing KCMs to be applied to all particle inputs instead of just PRT Loaders.
But shouldn’t the default be that if no absorption channel exists, initialize it to the complement of the scatter color? Or 1.0? I see where zero would make a lot of sense, except that it’s almost certainly going to give you an unwanted result. A red object will have a green self-occlusion/shadow halo around itself and a green shadow, which seems undesirable.