This file is indexed.

/usr/share/povray-3.7/include/ior.inc is in povray-includes 1:3.7.0.0-9.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
// This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
// To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a
// letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.

//    Persistence of Vision Ray Tracer version 3.7 Include File
//    File: ior.inc
//    Last updated: 2010.12.12
//    Description: This file contains constants for ior and dispersion of various materials.

#ifndef(Ior_Inc_Temp)
#declare Ior_Inc_Temp=version;
#version 3.7;

#ifdef(View_POV_Include_Stack)
#debug "including ior.inc\n"
#end

// Index Of Refraction and Dispersion of various materials
// =======================================================

//  Original 2008-2009 by Christoph Lipka

//  Notes on literature:
//
//  * Refractive index is typically denoted with the symbol "n" (sometimes "N"), optionally followed by a subscript designating
//    the specific conditions under which measurements were made. Common subscripts are:
//    - Greek lower case letters omega and epsilon:
//      These are related to birefringence (i.e. the property of a material to refract light at two different angles, splitting up
//      the light according to polarization).
//      Since PoV-ray currently doesn't support bireferingence at all, we can ignore this effect and use an average of the values.
//    - Greek lower case letters alpha, beta and gamma:
//      These are related to biaxial birefringence, aka trirefringence. Again, no PoV-ray support.
//      Sometimes, Nx, Ny and Nz or simply alpha, beta and gamma are used for n[alpha], n[beta], n[gamma].
//    - Latin uppercase (sometimes lowercase) letters:
//      These are related to the wavelength of the light; the letter denotes the corresponding "Fraunhofer line", a series of
//      distinct spectral lines in natural sunlight, with the following being most common:
//        B   686.719nm   extreme red   molecular Oxygen (O2)
//        C   656.281nm   red           Hydrogen (H)
//        D   589.29 nm   yellow        Sodium (Na); center of D1 and D2 ("Sodium doublet")
//        F   486.134nm   blue          Hydrogen (H)
//        G   430.78 nm   violet        Iron (Fe, 430.790nm) or Calcium (Ca, 430.774 nm)
//        h   410.175nm   violet        Hydrogen (H); Balmer series delta; alternatively center of delta and epsilon (404.7 nm)
//    - If no further designation is used, the refractive index is usually measured for Fraunhofer line "D".
//    The PoV-ray documentation does not specify which color (let alone wavelength) is considered "neutral" with respect to
//    dispersion, so I suggest using nD, if only for simplicity.
//
//  * Dispersion is typically characterized in one of the following ways:
//    - A (typically undesignated) value in order of magnitude ~0.010:
//      Such a value specifies the difference of the refractive indices for two given wavelengths. Usually, nG-nB is specified.
//      Differences between other wavelengths will be denoted accordingly as e.g. "nF-nC".
//      This is often seen with natural minerals.
//    - The so-called "Abbe number":
//      This value specifies the quotient (nD-1)/(nF-nC).
//      This is often seen with industrial mass products, especially glass and common glass substitutes.
//    - By refractive indices for individual wavelengths.
//      This is often seen with industrial high-end products.
//    PoV-ray characterizes dispersion as the quotient of refractive indices for "violet" and "red"; assuming that this roughly
//    matches nG and nB respectively, the value to be used can quite easily be approximated from nG-nB and the overall index of
//    refraction, as long as nG-nB is significantly small (which in practice it always is).
//    Approximating the PoV-ray "dispersion" value from the Abbe number is not so straightforward though, as this is based on a
//    different wavelength interval, and the index of refraction is not linear with respect to wavelength.
//    Approximating the PoV-ray "dispersion" value from individual wavelengths is again an easy task of course, provided that the
//    wavelengths of two of the known refractive indices qualify as "violet" and "red" respectively.
//
//  Other notes:
//
//  * Not all of the materials listed below are typically transparent. The refractive indices may nonetheless be of interest
//    in subsurface scattering simulation, or to properly simulate a polished gem's reflection using the fresnel keyword,
//    so I included them here as I happened to come across them.
//  * Some materials have varying optical properties or exhibit birefringence, making it impossible to specify a single exact
//    refractive index; in such cases, a typical average value was chosen.


// Formula to approximate PoV-ray's "dispersion" value
// ---------------------------------------------------
 
#declare FnPovDispersion = function(ri,disp) { 1+disp/(ri-disp/2) } // from refractive index ri (=nD) and nominal dispersion disp (=nG-nB)


// Common glass types by Schott designations
// -----------------------------------------

// Note: For these, the POV values are computed here according to the Fraunhofer lines h (404.7 nm), D and C

#macro Ior (data) (data.y) #end
#macro Disp(data) (FnPovDispersion(data.y, data.x-data.z)) #end

#local iorData=<1.58941, 1.57241, 1.56949>; #declare iorCrownGlassBaK1    = Ior(iorData); #declare dispCrownGlassBaK1    = Disp(iorData);
#local iorData=<1.53024, 1.51673, 1.51432>; #declare iorCrownGlassBK7     = Ior(iorData); #declare dispCrownGlassBK7     = Disp(iorData);

#local iorData=<1.65064, 1.61989, 1.61503>; #declare iorFlintGlassF2      = Ior(iorData); #declare dispFlintGlassF2      = Disp(iorData);
#local iorData=<1.89844, 1.85002, 1.84256>; #declare iorFlintGlassLaSFN9  = Ior(iorData); #declare dispFlintGlassLaSFN9  = Disp(iorData);
#local iorData=<1.84208, 1.78446, 1.77599>; #declare iorFlintGlassSF11    = Ior(iorData); #declare dispFlintGlassSF11    = Disp(iorData);

#declare iorCrownGlass    = iorCrownGlassBK7;   #declare dispCrownGlass   = dispCrownGlassBK7;  // most common crown glass
#declare iorFlintGlass    = iorFlintGlassSF11;  #declare dispFlintGlass   = dispFlintGlassSF11; // a common flint glass
#declare iorWindowGlass   = iorCrownGlassBK7;   #declare dispWindowGlass  = dispCrownGlassBK7;
#declare iorGlass         = iorWindowGlass;     #declare dispGlass        = dispWindowGlass;

#undef Ior
#undef Disp


// Gemstones by alphabet (excluding variants and aliases)
// ------------------------------------------------------

// Note: For these, the POV values are computed here directly from the refractive index and dispersion values found in literature;
// Where refractive indices at selected wavelengths were found instead, these values were precomputed from the refractive indices at
// Fraunhofer lines G, D and B respectively.

#macro Ior (data) (data.x) #end
#macro Disp(data) (FnPovDispersion(data.x, data.y)) #end

#local iorData=<1.790, .024>; #declare iorAlmandineGarnet    = Ior(iorData); #declare dispAlmandineGarnet    = Disp(iorData);
#local iorData=<1.64,  .016>; #declare iorAndalusite         = Ior(iorData); #declare dispAndalusite         = Disp(iorData);
#local iorData=<1.888, .057>; #declare iorAndraditeGarnet    = Ior(iorData); #declare dispAndraditeGarnet    = Disp(iorData);
#local iorData=<1.63,  .013>; #declare iorApatite            = Ior(iorData); #declare dispApatite            = Disp(iorData);
#local iorData=<1.58,  .014>; #declare iorBeryl              = Ior(iorData); #declare dispBeryl              = Disp(iorData);
#local iorData=<1.69,  .019>; #declare iorChromeDiopside     = Ior(iorData); #declare dispChromeDiopside     = Disp(iorData);
#local iorData=<1.746, .015>; #declare iorChrysoberyl        = Ior(iorData); #declare dispChrysoberyl        = Disp(iorData);
#local iorData=<2.16,  .060>; #declare iorCubicZirconia      = Ior(iorData); #declare dispCubicZirconia      = Disp(iorData); // [1]    NOT Zircon!
#local iorData=<1.766, .018>; #declare iorCorundum           = Ior(iorData); #declare dispCorundum           = Disp(iorData);
#local iorData=<1.885, .057>; #declare iorDemantoidGarnet    = Ior(iorData); #declare dispDemantoidGarnet    = Disp(iorData);
#local iorData=<2.417, .044>; #declare iorDiamond            = Ior(iorData); #declare dispDiamond            = Disp(iorData);
#local iorData=<1.434, .007>; #declare iorFluorite           = Ior(iorData); #declare dispFluorite           = Disp(iorData);
#local iorData=<1.740, .028>; #declare iorGrossulariteGarnet = Ior(iorData); #declare dispGrossulariteGarnet = Disp(iorData);
#local iorData=<1.55,  .017>; #declare iorIolite             = Ior(iorData); #declare dispIolite             = Disp(iorData);
#local iorData=<1.73,  .020>; #declare iorKyanite            = Ior(iorData); #declare dispKyanite            = Disp(iorData);
#local iorData=<1.654, .020>; #declare iorPeridot            = Ior(iorData); #declare dispPeridot            = Disp(iorData);
#local iorData=<1.74,  .022>; #declare iorPyropeGarnet       = Ior(iorData); #declare dispPyropeGarnet       = Disp(iorData);
#local iorData=<1.544, .013>; #declare iorQuartz             = Ior(iorData); #declare dispQuartz             = Disp(iorData);
#local iorData=<1.76,  .026>; #declare iorRhodoliteGarnet    = Ior(iorData); #declare dispRhodoliteGarnet    = Disp(iorData);
#local iorData=<1.81,  .027>; #declare iorSpessartiteGarnet  = Ior(iorData); #declare dispSpessartiteGarnet  = Disp(iorData);
#local iorData=<1.70,  .051>; #declare iorSphene             = Ior(iorData); #declare dispSphene             = Disp(iorData); // [2]
#local iorData=<1.712, .020>; #declare iorSpinel             = Ior(iorData); #declare dispSpinel             = Disp(iorData);
#local iorData=<1.620, .014>; #declare iorTopaz              = Ior(iorData); #declare dispTopaz              = Disp(iorData);
#local iorData=<1.624, .017>; #declare iorTourmaline         = Ior(iorData); #declare dispTourmaline         = Disp(iorData);
#local iorData=<1.740, .028>; #declare iorTsavoriteGarnet    = Ior(iorData); #declare dispTsavoriteGarnet    = Disp(iorData);

#local iorData=<1.67,  .017>; #declare iorSpodumene          = Ior(iorData); #declare dispSpodumene          = Disp(iorData);
#local iorData=<1.95,  .039>; #declare iorZircon             = Ior(iorData); #declare dispZircon             = Disp(iorData); // [3]    NOT [Cubic] Zirconia!
#local iorData=<1.70,  .030>; #declare iorZoisite            = Ior(iorData); #declare dispZoisite            = Disp(iorData);

#undef Ior
#undef Disp

// Values from other sources:
// [1] ior = 1.80 .. 2.23 (lower bound dubious, maybe mixup with Zircon)
// [2] ior = 1.88 .. 2.05
// [3] ior = 1.88


// Variants by alphabet
// --------------------

#declare iorAgate         = iorQuartz;        #declare dispAgate        = dispQuartz;
#declare iorAlexandrite   = iorChrysoberyl;   #declare dispAlexandrite  = dispChrysoberyl;
#declare iorAmethyst      = iorQuartz;        #declare dispAmethyst     = dispQuartz;
#declare iorAmetrine      = iorQuartz;        #declare dispAmetrine     = dispQuartz;
#declare iorAquamarine    = iorBeryl;         #declare dispAquamarine   = dispBeryl;
#declare iorAventurine    = iorQuartz;        #declare dispAventurine   = dispQuartz;
#declare iorChalcedony    = iorQuartz;        #declare dispChalcedony   = dispQuartz;
#declare iorCitrine       = iorQuartz;        #declare dispCitrine      = dispQuartz;
#declare iorEmerald       = iorBeryl;         #declare dispEmerald      = dispBeryl;
#declare iorHiddenite     = iorSpodumene;     #declare dispHiddenite    = dispSpodumene;
#declare iorKunzite       = iorSpodumene;     #declare dispKunzite      = dispSpodumene;
#declare iorMorganite     = iorBeryl;         #declare dispMorganite    = dispBeryl;
#declare iorOnyx          = iorQuartz;        #declare dispOnyx         = dispQuartz;
#declare iorPadparadscha  = iorCorundum;      #declare dispPadparadscha = dispCorundum;
#declare iorRoseQuartz    = iorQuartz;        #declare dispRoseQuartz   = dispQuartz;
#declare iorRuby          = iorCorundum;      #declare dispRuby         = dispCorundum;
#declare iorSapphire      = iorCorundum;      #declare dispSapphire     = dispCorundum;
#declare iorSmokyQuartz   = iorQuartz;        #declare dispSmokyQuartz  = dispQuartz;
#declare iorTanzanite     = iorZoisite;       #declare dispTanzanite    = dispZoisite;
#declare iorTigersEye     = iorQuartz;        #declare dispTigersEye    = dispQuartz;


// Aliases by alphabet
// -------------------

#declare iorCyanite             = iorKyanite;             #declare dispCyanite            = dispKyanite;
#declare iorCZ                  = iorCubicZirconia;       #declare dispCZ                 = dispCubicZirconia;
#declare iorDisthene            = iorKyanite;             #declare dispDisthene           = dispKyanite;
#declare iorGarnetAlmandine     = iorAlmandineGarnet;     #declare dispGarnetAlmandine    = dispAlmandineGarnet; 
#declare iorGarnetAndradite     = iorAndraditeGarnet;     #declare dispGarnetAndradite    = dispAndraditeGarnet;   
#declare iorGarnetDemantoid     = iorDemantoidGarnet;     #declare dispGarnetDemantoid    = dispDemantoidGarnet;   
#declare iorGarnetGrossularite  = iorGrossulariteGarnet;  #declare dispGarnetGrossularite = dispGrossulariteGarnet;   
#declare iorGarnetPyrope        = iorPyropeGarnet;        #declare dispGarnetPyrope       = dispPyropeGarnet;   
#declare iorGarnetRhodolite     = iorRhodoliteGarnet;     #declare dispGarnetRhodolite    = dispRhodoliteGarnet;   
#declare iorGarnetSpessartite   = iorSpessartiteGarnet;   #declare dispGarnetSpessartite  = dispSpessartiteGarnet;   
#declare iorGarnetTsavorite     = iorTsavoriteGarnet;     #declare dispGarnetTsavorite    = dispTsavoriteGarnet;   
#declare iorMunkrudite          = iorKyanite;             #declare dispMunkrudite         = dispKyanite;
#declare iorZirconia            = iorCubicZirconia;       #declare dispZirconia           = dispCubicZirconia;      // NOT Zircon!


// Odds and ends
// -------------

// Note: For these, I found information on refractive indices but none about dispersion

#declare iorAdulariaMoonstone   = 1.52;
#declare iorAmazonite           = 1.53;
#declare iorAmber               = 1.54;
#declare iorAndesine            = 1.53;
#declare iorCoral               = 1.486;
#declare iorIvory               = 1.540;
#declare iorJadeite             = 1.67;   // "hard jade"
#declare iorJasper              = 1.54;
#declare iorLabradorite         = 1.56;
#declare iorLapisLazuli         = 1.5;    // lazurite compound; other sources: nD = 1.610
#declare iorMalachite           = 1.655;
#declare iorMoissanite          = 2.670;  // (Silicon Carbide)
#declare iorNephriteJade        = 1.62;   // "soft jade"
#declare iorOpal                = 1.45;
#declare iorOrthoclase          = 1.52;
#declare iorPearl               = 1.53;
#declare iorPrehnite            = 1.64;
#declare iorTurquoise           = 1.610;

#declare iorJadeNephrite        = iorNephriteJade;
#declare iorFireOpal            = iorOpal;
#declare iorMoonstoneAdularia   = iorAdulariaMoonstone;
#declare iorMossOpal            = iorOpal;

// end of ior.inc
#version Ior_Inc_Temp;
#end