Converting Cook–Torrance material to radiance (RGB, specularity, roughness) material model?

Hi all,

I have a non-Radiance-friendly material model consisting of 4 maps (diffuse, specular, roughness, and normal), corresponding to a Cook-Torrance GGX implementation, and I want to use its data for Radiance simulations,

Does anyone know a way to do so? Is it theoretically possible?

I might not know enough about material models, the theory behind them, and some of the important differences between them, so I also would be glad to have some good resources to start with.

There is no straightforward way to implement a spatially-varying BRDF in Radiance. It’s easy enough to control a material’s (diffuse) color with a pattern, or it’s surface normal (texture), but the specularity and roughness parameters cannot be tied into any modifiers. You could use a mixfunc to vary the degree of specularity with some effort, but not the roughness. If you have the greater ambition of exactly matching a Cook-Torrance BRDF model, that would be a separate challenge even without the maps.

So, I hate to discourage you, but I don’t think this is possible. The closest you could get is varying reflectance and specularity with a fixed roughness using one of the built-in models, such as Ward-Geisler-Moroder-Duer (plastic) or Ashikhmin-Shirley (Ashik2).


1 Like

There are two issues here. First, the Cook-Torrance model is not implemented in Radiance. Second you want to apply a spatially variant model. As Greg mentioned, this is not really addressed by Radiance. However, depending on how much effort you can dedicate, there may be some approximations:

  1. You can implement the C-T-model as a cal-file and compile it into a data-driven model by bsdf2ttree.

  2. You can use mixpict to switch between surface properties based on pixel information. If you just blend between two (or few) parametrisations of the C-T model, this would allow you to e. g. linearly interpolate between two data-driven representations of the CT-models as an approximation.

I am using the second approach sometimes to simulate an alpha channel, e. g. blending between reflective surfaces and void. One example is the mapped image of a flame here: Views on ancient lighting: Modelling lighting devices and their effects in architecture | Zenodo . Axel Jacob’s brilliant “Radiance Cookbook” has a similar example about transparent textures on pages 27-34.

Best regards, Lars.