Scalar alpha?


#1

What’s the recommended conversion to get scalar alpha from Krakatoa? Currently we get RGB, which makes sense if we’re going to actually use it, but when we want a scalar, we’re just doing a REC 709 luma conversion, but that feels wrong.


#2

I can’t think of anywhere we do that, but I suspect we would average the alpha values. Classy.


#3

For the 3ds max VFB you have to convert to scalar. I guess I can work backwards from there… It’s clear that an absorption color of (0,0,1) produces a different alpha than (1,0,0), so there’s something more than averaging going on.


#4

The Absorption channel (for better or for worse) is used in conjunction with the Color channel to determine the alpha value. When no absorption is present, the extinction coefficient (which is related to alpha by an integral along the camera ray) is: [density, density, density]. When an absorption value is present the extinction coefficient is: [density * (color.r + absorption.r), density * (color.g + absorption.g), density * (color.b + absorption.b)].

In retrospect, this connection with Color is somewhat irritating, but alas this is how it works.

For your tests you would need to have particles with Color: (0,0,0), and Absorption: (0,0,1) which would make the alpha render as (0,0,1); assuming sufficient Density.

PS. I just took a look at the code that converts to a 3ds Max bitmap and it is definitely averaging.


#5

Ah, forgot about the Color, I just did a teapot+PRT Volume and it pulled the wirecolor.