BUG: Can't set IOR below 1.00

I noticed that I can’t set IOR below 1, for example for gold.

System Info

Rhino 8 SR15 2024-12-17 (Rhino 8, 8.15.24352.13001, Git hash:master @ 08fbca3b330b4f971e71c8b38776f3c82f232b9f)
License type: Educational, build 2024-12-17
License details: Cloud Zoo

Windows 11 (10.0.22631 SR0.0) or greater (Physical RAM: 64GB)
.NET 7.0.11

Computer platform: LAPTOP - Plugged in [100% battery remaining]

Non-hybrid graphics configuration.
Primary display and OpenGL: NVIDIA RTX A3000 12GB Laptop GPU (NVidia) Memory: 11GB, Driver date: 6-10-2024 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 538.78
> Integrated accelerated graphics device with 4 adapter port(s)
- Windows Main Display is laptop’s integrated screen or built-in port
Primary OpenGL: NVIDIA RTX A3000 12GB Laptop GPU (NVidia) Memory: 11GB, Driver date: 6-10-2024 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 538.78
> Integrated accelerated graphics device with 4 adapter port(s)
- Windows Main Display is laptop’s integrated screen or built-in port

Secondary graphics devices.
Intel(R) UHD Graphics (Intel) Memory: 2GB, Driver date: 8-19-2024 (M-D-Y).
> Integrated graphics device with 4 adapter port(s)
- Secondary monitor is laptop’s integrated screen or built-in port

OpenGL Settings
Safe mode: Off
Use accelerated hardware modes: On
GPU Tessellation is: Off
Redraw scene when viewports are exposed: On
Graphics level being used: OpenGL 4.6 (primary GPU’s maximum)

Anti-alias mode: 8x
Mip Map Filtering: Linear
Anisotropic Filtering Mode: High

Vendor Name: NVIDIA Corporation
Render version: 4.6
Shading Language: 4.60 NVIDIA
Driver Date: 6-10-2024
Driver Version: 31.0.15.3878
Maximum Texture size: 32768 x 32768
Z-Buffer depth: 24 bits
Maximum Viewport size: 32768 x 32768
Total Video Memory: 11520 MB

Rhino plugins that do not ship with Rhino
C:\ProgramData\McNeel\Rhinoceros\8.0\Plug-ins\Datasmith Rhino Exporter (d1fdc795-b334-4933-b680-088119cdc6bb)\DatasmithRhino8.rhp “Datasmith Exporter” 5.5.1.0
C:\Users\Czaja\AppData\Roaming\McNeel\Rhinoceros\8.0\Plug-ins\Bella (813de3fb-18eb-405f-bfcd-b0b4d3da91fb)\24.4.0.0\bella_rhino.rhp “Bella” 24.4.0.0
C:\Users\Czaja\Desktop\HDR Light Studio Texture Plugin\HDRLightStudioTexture.rhp “HDRLightStudioTexture”
C:\Users\Czaja\AppData\Roaming\McNeel\Rhinoceros\7.0\Plug-ins\Crayon (39629248-4fa6-47b8-83c7-745a7efea259)\1.2.0.0\Crayon\Crayon.rhp “Crayon” 1.0.0.0
C:\Users\Czaja\AppData\Roaming\McNeel\Rhinoceros\packages\8.0\Crash\1.4.2-beta\Crash.rhp “Crash” 1.4.0.0
C:\Users\Czaja\AppData\Roaming\McNeel\Rhinoceros\packages\8.0\SubstanceImporter\2.0.7\Substance.Win.rhp “SubstanceImporter” 2.0.7.0
C:\Users\Czaja\AppData\Roaming\McNeel\Rhinoceros\packages\8.0\Synapse\0.4.0\SynapseRCP.rhp “SynapseRCP” 0.4.0.0

Rhino plugins that ship with Rhino
C:\Program Files\Rhino 8\Plug-ins\Commands.rhp “Commands” 8.15.24352.13001
C:\Program Files\Rhino 8\Plug-ins\WebBrowser.rhp “WebBrowser”
C:\Program Files\Rhino 8\Plug-ins\rdk.rhp “Renderer Development Kit”
C:\Program Files\Rhino 8\Plug-ins\RhinoScript.rhp “RhinoScript”
C:\Program Files\Rhino 8\Plug-ins\IdleProcessor.rhp “IdleProcessor”
C:\Program Files\Rhino 8\Plug-ins\RhinoRenderCycles.rhp “Rhino Render” 8.15.24352.13001
C:\Program Files\Rhino 8\Plug-ins\rdk_etoui.rhp “RDK_EtoUI” 8.15.24352.13001
C:\Program Files\Rhino 8\Plug-ins\NamedSnapshots.rhp “Snapshots”
C:\Program Files\Rhino 8\Plug-ins\MeshCommands.rhp “MeshCommands” 8.15.24352.13001
C:\Program Files\Rhino 8\Plug-ins\IronPython\RhinoDLR_Python.rhp “IronPython” 8.15.24352.13001
C:\Program Files\Rhino 8\Plug-ins\RhinoCycles.rhp “RhinoCycles” 8.15.24352.13001
C:\Program Files\Rhino 8\Plug-ins\Grasshopper\GrasshopperPlugin.rhp “Grasshopper” 8.15.24352.13001
C:\Program Files\Rhino 8\Plug-ins\RhinoCode\RhinoCodePlugin.rhp “RhinoCodePlugin” 8.15.24352.13001
C:\Program Files\Rhino 8\Plug-ins\Toolbars\Toolbars.rhp “Toolbars” 8.15.24352.13001
C:\Program Files\Rhino 8\Plug-ins\3dxrhino.rhp “3Dconnexion 3D Mouse”
C:\Program Files\Rhino 8\Plug-ins\Displacement.rhp “Displacement”
C:\Program Files\Rhino 8\Plug-ins\SectionTools.rhp “SectionTools”
C:\Program Files\Rhino 8\Plug-ins\RhinoScriptEditor.rhp “RhinoScriptEditor” 8.0.23161.1000

there are very few experimental materials (called metamaterials i believe) that would have a refractive index below the one defined for vacuum, but interestingly it would make for some neat experiments indeed. just curious what would you need it for? i guess the value for gold could be wrong? scratch that, it seems gold has a special place in physics…

also in c4d i had this option, i am not sure if Rhino was ever able to set a value below 1.

Nothing more fancy than golden or silver ring to be honest :slight_smile:

1 Like

i checked v7 now and 1.0 is a hard stop there either, seems wrong then for a while if gold has way below 1, uhh… and glaring at your list once more i see that silver is even lower :face_with_monocle: :smiley: going to my corner already… seems i have some catching up to do.

@nathanletwory any ideas?

No, gold and silver have IOR values below 1.0. Not being able to set below 1.0 is a GUI issue. It is assigned to @maxsoder .

Note though that whilst Cycles tries to do physically based rendering it isn’t capable of doing all light effects - it is more of an approximation than anything. Setting an IOR of 0.18 on a glass material in Cycles will make it look more like a reflective thing

Compare to a value above 1.0

While transparent metals (and metamaterials) are a thing in the real world, they are not in Cycles world.

Setting metallic to 1.0 makes it so that transmission weight no longer has any effect

(note: screenshots from Blender)

What would be a good min value for IOR?

The minimum should be zero. However if Cycles permits the existing and calculations of “metamaterials”, then maybe even -1. But I doubt anyone would use Cycles for such things.

for me the rabbid hole is getting deeper as we speak :face_with_monocle: doing some quick search which goes into dielectrics and whatnot (terms which are so handily used in the bella plugin which i currently dont use since all these terms knocked my socks off) i will bother copilot with some more dumb questions then, if you could come up with a super succinct answer i would appreciate that either.

anyway doing a little research silver for instance is one of the materials that are more complex in nature meaning that they have min max values varying between 0.18 and 1.35, i assume there is no place to fake these with cylces? i found lists which are used for graphics and i believe they might use these complex IOR values either in other render apps?


experimenting in c4d it appears that from some angles it also becomes reflective as you pointed out in blender, though it looks more like a reflection of its inner walls in c4d at least, at other angles it becomes more transparent here.

below (c4d) the center is 1.001 to make it visible at all, the left is glass and the right has 0.25

here once more a close up. again (not shown) at other angles it becomes more transparent

in c4d the lowest value possible is 0.25 which seems strange thinking that silver already has 0.18 (on the lower end, since its complex it goes up to 1.35) but since this is already the lowest possible natural material i have probably looked at, that would certainly be fine either

since technology is evolving so rapidly, it might make sense to allow even negative settings if there no severe technical implications otherwise.

Filed RH-85339 Can not set IOR below 1.0 for PBR material

The fix will be in v8.16.