Hey folks,
I've been struggling to find a way to blend together many 32 bits exr displacement maps in Maya.
We decided to go with the Overlay blend mode, but Maya doesn't seem to offer any easy way to achieve it (layered texture doesn't seem to work, and is a very fragile node)
So we adapted the Overlay function (see
HERE) to the (-1 , 1) range, and then we tried to recreate it with a network of nodes, but soon it turned out to be too long and tedious for all the textures (20+).
So I quickly wrote a custom Maya node to do the job.
Since my disp maps are using only one channel, the node takes an array of float as an input (the textures) , and outputs one float (my final texture):
blendDisplacement.a_inTextures = mFnAttr.create("inTextures", "inTexs", OM.MFnNumericData.kFloat, 0.0)
mFnAttr.setKeyable(0)
mFnAttr.setWritable(1)
mFnAttr.setArray(1)
blendDisplacement.a_outTexture = mFnAttr.create("outTexture", "outTex", OM.MFnNumericData.kFloat, 0.0)
mFnAttr.setReadable(1)
mFnAttr.setWritable(0)
mFnAttr.setKeyable(0)
Testing the node in the Hypergraph, or rendering with Maya Software I see it works perfectly.
But when I try rendering with VRay i get a // Warning: Unsupported texture blendDisplacement (which is my node).
Same story with MentalRay: i get a // Warning: (Mayatomr.Scene) : output data type "rgba_h" not directly supported by image format iff, conversion performed by mental ray //
Now, I know VRay is a bit picky with textures, but my input is still a compatible file type... and a python float has 53 bits precision (way more than 32).
What is going wrong? And how can I make my node compatible with others render engines?
Any ideas out there?
Thanks!
Enrico