Thoughts on making Cycles into a spectral renderer

yes its rust,no i made new spectrum nodes of n and k of iron oxide.
https://refractiveindex.info/?shelf=main&book=Fe3O4&page=Querry

i guess these are sample values of beginning rust

Ah I see. Interesting. Doesn’t look like rust at all that way… It does look like kinda dirty / blemished iron though

that’s not quite rust. That’s this substance:


which is kinda related to rust but not quite it. That said it would often cooccur with actual iron I think, so it’s not wrong to put it there. In fact that render looks pretty natural to me
1 Like

Fe3O4 mixed with Fe2O3

1 Like

I tried to go for a four way Iron (pure), Magnetite, Hematite, Rust

Really wish the spectral node grouping bug was fixed. Then this could be made a whole lot simpler. Right now it’s a rather big mess to mix and mask that many complex IoR materials haha

Also the rust might not have the right basic IoR 'cause I couldn’t find any statements on that which weren’t actually about hematite.

Oh and I combined hematite’s ordinary and extraordinary beams (if I understood right), going for a 50/50 mix 'cause non-polarized. So really I’m mixing four complex IoR materials and one reflectance spectrum based material:

I definitely could make this cleaner still but didn’t feel like it right now

If you want to have a closer look at this mess, it’s here:

5 Likes

I could not found nk for red iron oxide,but found the spectral reflectance curve of red iron oxide.

I’m already using that (although the result I found was much darker. Perhaps there is some variation)

Specifically the version I found was actually pigment-grade Iron Oxide. So literally rust-color because it’s rust as color. It was part of the library of spectra I linked above

And because that’s tabulated I get the exact stuff and don’t have to guess based on a chart

I have seen a equation, where you can get the IOR values from reflectance data

Would this work with just F0 reflectance data alone? Or would you need multiple angles of measurement?
'cause this is only F0 reflectance data, more or less. (Technically it’s a mix because multiple bounces at various angles on rough surface)

I guess yes ,these are R0 from spectrophotometer.

Just did a quick approximate version assuming a (nonsensical) k of 0
Looks pretty convincing so that’s good. Not sure how I might get a reasonable take on k though. It seems like transparent stuff has ks near 0 but solid stuff like this tends to have much higher ks

But giving it any (uniform) k greater than 0 quickly desaturates the result. This is at 0.5

and at 1

The correct version surely is pretty dependent on wavelength

1 Like

yes,the k value is the extinction coefficient for absorption.

Yeah I’m aware thanks :slight_smile:

Just not sure how to get reasonable k values from just R0 spectra

Do you have more data like absorbtance in your data base?then you can calc the k value too.

nope just reflectance

Hm,then i guess the equation makes only sence for dielectrics with k=0,without k data you cant get the exact conductor IOR.

btw,in theory if you have albedo maps,then you can calc the IOR from every pixel,at least from dielectrics?!
This way you could make a automatic IOR from the albedo maps.

err,no they are diffuse color of whiteness not reflectance.

Since there now is a way to convert arbitrary diffuse reflectance spectra into complex IOR spectra (at least ones where k=0), I tried comparing a regular glossy shader with a complex IOR version. There are some weird aspects here which I’m not quite sure about but here you go:

regular glossy shader (sharp reflections):


cIOR shader (sharp reflections):

Diff:

One thing that’s quite interesting is that the surrounding tiles seem to react to it surprisingly differently. Not enough to make a visible difference, but enough to strongly affect the noise (this is with the same seed)

Another is the big discrepancy in the red channel and also sizeable difference in the green channel in some spots. I wonder if this is somehow also related to the spectral upsampling. Would be somewhat weird though, as both of these materials rely on the upsampled spectra.

The other thing that’s very clearly visible is the difference at the rim where the complex IoR shader goes to white, indicating absolute reflections. I find that this weirdly has a double effect. On one hand, it feels like the object fits more into the scene rather than being “on top of” it, and on the other it gives a slight but appreciable difference to the contours which, I think, oddly adds contrast even though it means the contours become a fixed color rather than which ever color the texture happens to have.

The equation for dielectric R0 to n is even more simple.and i guess the equation above with the k gives wrong result.especially for the n value without k.
formf0ior

That’s what I’ve been using

A new build is available on GraphicAll with the Filmic view transform added back. Note that it’s only available when the “sRGB Display” display device is selected.

5 Likes