I will go ahead and post this although I am not sure that it will completely satisfy all points of your question. I found this to be an interesting question that allowed me to learn some new things as I researched it, so thank you for that.
I found the currently supported attributes for smoke and fire to be located at lines 1114-1120 of blender_session.cpp as a result of finding the commit from earlier this year where official support for velocity
was added. Heat
was added at roughly the same time, in this commit. You can see also in the 2.78 Cycles release notes here that official support was added for heat
and velocity
.
I was not aware that they could also be seen in /addons/cycles/kernel/kernel_types
.
The description for the heat attribute (from the commit where it was added) in cycles reads as follows:
Similar to velocity, it was kind of supported by the mesh manager but
was missing a code in BlenderSession to get actual values.
In Cycles Heat is an attribute which goes from -1 to 1, where -1 is
the coldest ever temperature, 1 is the hottest ever one.
Now to your main points(I'll do my best):
are all voxel data always available in the smoke domain or is that
determined by the flow type of the flow object ?
It appears that the data is there, but perhaps only to a certain degree, if you will. Smoke in cycles cannot become fire simply by accessing the appropriate attributes. That part would of course be determined by the flow type. To represent this, I did a test. In the following image, there are three domains that each share an identical material. The flow object in each domain is a plane, with flow type set as the text before it states. Note that here, I added the velocity
attribute to flame
to get the result I did with smoke. It is not clear to me exactly how velocity
intended to be used, so forgive any inaccuracies in the material. I will edit and correct if I discover an error in the setup.
This is the node setup for the domain:
Click to enlarge
could you explain a bit more how these voxel data / simulation fields
can be used in the set up of the smoke domain material
According to the manual, flame
is the density of any fire in the domain. Of course, we can see that flame is the emission, and where we get the light for our fire.
density
is the density of the smoke. This is a scalar value.
color
is the color given to the smoke in the domain. Color and vector outputs give the same result, while factor gives an average of the channels.
The last two, heat
and velocity
are fairly undocumented as far as I have found. The only example of usage for heat I found was in a report on the tracker of all places. I have replicated that example here in the node setups posted. The only "official" explanation of them that I have found is what is in the commit where velocity
was added for 2.78, as noted above.
the Smoke Domain Materials I have seen so far only use density, flame
and color for building the material. What could be the use of these
other fields ? Could you maybe give an example ?
Certainly. Here is one using both the heat
and velocity
attributes:
Click to enlarge
The below (low sample) image is the result of the preceding node setup. Instead of using color
for the smoke here, I instead used velocity
, and it turns out nicely. Heat
is used to drive emission along with flame
.
I have enjoyed learning as I have researched this,and I hope that this is helpful, and that perhaps I have answered at least some points of your question well enough.
Edit:
Here is the .blend file containing the domain materials shown above.