ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/doc/ray.html
(Generate patch)

Comparing ray/doc/ray.html (file contents):
Revision 1.32 by greg, Fri Nov 3 17:41:27 2023 UTC vs.
Revision 1.44 by greg, Tue Jul 22 20:38:43 2025 UTC

# Line 2 | Line 2
2   <!-- RCSid $Id$ -->
3   <head>
4   <title>
5 < The RADIANCE 5.4 Synthetic Imaging System
5 > The RADIANCE 6.0 Synthetic Imaging System
6   </title>
7   </head>
8   <body>
# Line 10 | Line 10 | The RADIANCE 5.4 Synthetic Imaging System
10   <p>
11  
12   <h1>
13 < The RADIANCE 5.4 Synthetic Imaging System
13 > The RADIANCE 6.0 Synthetic Imaging System
14   </h1>
15  
16   <p>
# Line 75 | Line 75 | in  graphic  arts,  lighting  design,
75   computer-aided engineering and architecture.
76  
77   <p>
78 < <img SRC="diagram1.gif">
78 > <img SRC="diagram1.png">
79   <p>
80 Figure 1
81 <p>
80   The diagram in Figure 1 shows the flow between programs (boxes)  and  data  
81   (ovals).  
82   The central program is <i>rpict</i>, which produces a picture from a scene
# Line 148 | Line 146 | It is stored as ASCII  text,  with  the  following bas
146           ...
147   </pre>
148  
149 + <p>
150 +
151   A comment line begins with a pound sign, `#'.
152  
153   <p>
# Line 394 | Line 394 | The basic types are given below.
394          0
395   </pre>
396  
397 + <p>
398          If the modifier is &quot;void&quot;, then surfaces will
399          use the modifiers  given  in  the  original  description.  
400          Otherwise, the modifier specified is used in their  place.  
# Line 438 | Line 439 | The basic types are given below.
439          0
440   </pre>
441  
442 + <p>
443 +
444          If the modifier is &quot;void&quot;, then surfaces will
445          use the modifiers  given  in  the  original  mesh description.  
446          Otherwise, the modifier specified is used in their  place.  
# Line 532 | Line 535 | A material defines the way light interacts with a  sur
535          4 red green blue maxrad
536   </pre>
537  
538 + <p>
539          If maxrad is zero, then the surface will never be tested for shadow,  although  it  may participate in an interreflection calculation.  
540          If maxrad is negative, then the  surface  will never  contribute  to scene illumination.  
541          Glow sources will never illuminate objects on the other side of an illum  surface.  
# Line 580 | Line 584 | This is only appropriate if the surface hides other (m
584          3 red green blue
585   </pre>
586  
587 +        While alternate materials that are reflective will appear as normal,
588 +        indirect rays will use the mirror's reflectance rather than the
589 +        alternate type.
590 +        Transmitting materials are an exception, where both transmission and
591 +        reflection will use the alternate type for all rays not specifically
592 +        targeting virtual light sources.
593 +        In this case, it is important that any reflections be purely specular
594 +        (mirror-like) and equal to the mirror's reflectivity
595 +        to maintain a valid result.
596 +        A pure diffuse reflection may be added if desired.
597 +
598   <p>
599  
600 +        The mirror material type reflects light sources only from the front side
601 +        of a surface, regardless of any alternate material.
602 +        If virtual source generation is desired on both sides, two coincident
603 +        surfaces with opposite normal orientations may be employed to achieve
604 +        this effect.
605 +        The reflectance and alternate material type may be
606 +        different for the overlapped surfaces,
607 +        and the two sides will behave accordingly.
608 +
609 + <p>
610 +
611   <dt>
612          <a NAME="Prism1">
613          <b>Prism1</b>
# Line 603 | Line 629 | This is only appropriate if the surface hides other (m
629          n A1 A2 .. An
630   </pre>
631  
632 + <p>
633 +
634          The new direction variables dx, dy and dz need not produce a normalized  vector.  
635          For convenience, the variables DxA, DyA and DzA are defined as the normalized direction to the  target  light  source.  
636          See <a HREF="#Function">section 2.2.1</a> on function files for further information.
# Line 646 | Line 674 | This is only appropriate if the surface hides other (m
674          3  source1  mirror1&gt;source10  mirror2&gt;mirror1&gt;source3
675   </pre>
676  
677 + <p>
678   Normally, only one source is given per mist material, and there is an
679   upper limit of 32 to the total number of active scattering sources.
680   The extinction coefficient, if given, is added the the global
# Line 666 | Line 695 | forward direction, as fit by the Henyey-Greenstein fun
695          P(theta) = (1 - g*g) / (1 + g*g - 2*g*cos(theta))^1.5
696   </pre>
697  
698 + <p>
699 +
700   A perfectly isotropic scattering medium has a g parameter of 0, and
701   a highly directional material has a g parameter close to 1.
702   Fits to the g parameter may be found along with typical extinction
# Line 680 | Line 711 | cloud types in USGS meteorological tables.
711          0|3|6|7 [ rext gext bext [ ralb galb balb [ g ] ] ]
712   </pre>
713  
714 + <p>
715 +
716   There are two usual uses of the mist type.
717   One is to surround a beam from a spotlight or laser so that it is
718   visible during rendering.
# Line 834 | Line 867 | unless the line integrals consider enclosed geometry.
867   <p>
868  
869   <dt>
870 +        <a NAME="WGMDfunc">
871 +        <b>WGMDfunc</b>
872 +        </a>
873 +
874 + <dd>
875 +        WGMDfunc is a more programmable version of <a HREF="#Trans2">trans2</a>,
876 +        with separate modifier paths and variables to control each component.
877 +        (WGMD stands for Ward-Geisler-Moroder-Duer, which is the basis for
878 +        this empirical model, similar to previous ones beside Ashik2.)
879 +        The specification of this material is given below.
880 + <pre>
881 +        mod WGMDfunc id
882 +        13+ rs_mod  rs  rs_urough rs_vrough
883 +            ts_mod  ts  ts_urough ts_vrough
884 +            td_mod
885 +            ux uy uz  funcfile  transform
886 +        0
887 +        9+  rfdif gfdif bfdif
888 +            rbdif gbdif bbdif
889 +            rtdif gtdif btdif
890 +            A10 ..
891 + </pre>
892 +
893 + <p>
894 +
895 + The sum of specular reflectance (<I>rs</I>), specular transmittance (<I>ts</I>),
896 + diffuse reflectance (<I>rfdif gfdif bfdif</I> for front and <I>rbdif gbdif bbdif</I> for back)
897 + and diffuse transmittance (<I>rtdif gtdif btdif</I>) should be less than 1 for each
898 + channel.
899 +
900 + <p>
901 +
902 + Unique to this material, separate modifier channels are
903 + provided for each component.
904 + The main modifier is used on the diffuse reflectance, both
905 + front and back.
906 + The <I>rs_mod</I> modifier is used for specular reflectance.
907 + If "void" is given for <I>rs_mod</I>,
908 + then the specular reflection color will be white.
909 + The special "inherit" keyword may also be given, in which case
910 + specular reflectance will share the main modifier.
911 + This behavior is replicated for the specular transmittance modifier
912 + <I>ts_mod</I>, which also has its own independent roughness expressions.
913 + Finally, the diffuse transmittance modifier is given as
914 + <I>td_mod</I>, which may also be "void" or "inherit".
915 + Note that any spectra or color for specular components must be
916 + carried by the named modifier(s).
917 +
918 + <p>
919 +
920 + The main advantage to this material over
921 + <a HREF="#BRTDfunc">BRTDfunc</a> and
922 + other programmable types described below is that the specular sampling is
923 + well-defined, so that all components are fully computed.
924 +
925 + <p>
926 +
927 + <dt>
928          <a NAME="Dielectric">
929          <b>Dielectric</b>
930          </a>
# Line 894 | Line 985 | unless the line integrals consider enclosed geometry.
985          tn = (sqrt(.8402528435+.0072522239*Tn*Tn)-.9166530661)/.0036261119/Tn
986   </pre>
987  
988 + <p>
989 +
990          Standard 88% transmittance glass  has  a  transmissivity  of 0.96.  
991          (A <a HREF="#Patterns">pattern</a> modifying glass will affect the transmissivity.)
992          If a fourth real argument is given,  it  is  interpreted as the index of refraction to use instead of 1.52.
# Line 925 | Line 1018 | unless the line integrals consider enclosed geometry.
1018          4+ red green blue spec A5 ..
1019   </pre>
1020  
1021 + <p>
1022 +
1023          The function refl takes four arguments, the x, y and z
1024          direction towards the incident light, and the solid angle
1025          subtended by the source.
# Line 966 | Line 1061 | unless the line integrals consider enclosed geometry.
1061          6+ red green blue rspec trans tspec A7 ..
1062   </pre>
1063  
1064 + <p>
1065 +
1066          Where trans is the total light transmitted and tspec is  the non-Lambertian  fraction of transmitted light.  
1067          The function brtd should integrate to 1 over each projected hemisphere.
1068  
# Line 993 | Line 1090 | unless the line integrals consider enclosed geometry.
1090               A10 ..
1091   </pre>
1092  
1093 + <p>
1094 +
1095          The variables rrefl, grefl and brefl specify the color coefficients  for  the ideal specular (mirror) reflection of the surface.  
1096          The variables rtrns, gtrns and btrns  specify  the color coefficients for the ideal specular transmission.  
1097          The functions rbrtd, gbrtd and bbrtd take the direction to the incident light (and its solid angle) and  
# Line 1037 | Line 1136 | unless the line integrals consider enclosed geometry.
1136          4+ red green blue spec A5 ..
1137   </pre>
1138  
1139 + <p>
1140 +
1141          The coordinate indices (x1, x2, etc.) are  themselves  functions  of  the  x,  y and z direction to the incident light, plus the solid angle
1142          subtended by the light source (usually ignored).
1143          The data function (func) takes five variables, the
# Line 1203 | Line 1304 | unless the line integrals consider enclosed geometry.
1304          0
1305   </pre>
1306  
1307 + <p>
1308 +
1309          The first modifier will also be used to shade  the  area  leaving the  antimatter  volume and entering the regular volume.  
1310          If mod1 is void, the antimatter volume is completely invisible.
1311          Antimatter  does  not  work  properly with the material type <a HREF="#Trans">&quot;trans&quot;</a>,
# Line 1252 | Line 1355 | A texture is a perturbation of the surface normal,  an
1355  
1356   <pre>
1357          mod texdata id
1358 <        8+ xfunc yfunc zfunc xdfname ydfname zdfname vfname x0 x1 .. xf
1358 >        8+ xfunc yfunc zfunc xdfname ydfname zdfname funcfile x0 x1 .. xf
1359          0
1360          n A1 A2 .. An
1361   </pre>
1362  
1363 + <p>
1364 +
1365   </dl>
1366  
1367   <p>
# Line 1396 | Line 1501 | A colorfunc is a procedurally  defined  color  pattern
1501                  [spacing]
1502   </pre>
1503  
1504 + <p>
1505 +
1506   or:
1507  
1508   <pre>
# Line 1433 | Line 1540 | or:
1540                  [spacing]
1541   </pre>
1542  
1543 + <p>
1544 +
1545   or:
1546  
1547   <pre>
# Line 1461 | Line 1570 | or:
1570          A section of text meant to  depict  a  picture, perhaps using a special purpose font such as hexbit4x1.fnt, calls for uniform  spacing.  
1571          Reasonable  magnitudes  for  proportional  spacing are between 0.1 (for tightly spaced characters) and 0.3 (for wide spacing).
1572  
1573 + <p>
1574 +
1575 + <dt>
1576 +        <a NAME="Spectrum">
1577 +        <b>Spectrum</b>
1578 +        </a>
1579 +
1580 + <dd>
1581 +        The spectrum primitive is the most basic type for introducing spectral
1582 +        color to a material.
1583 +        Since materials only provide RGB parameters, spectral patterns
1584 +        are the only way to superimpose wavelength-dependent behavior.
1585 +
1586 + <pre>
1587 +        mod spectrum id
1588 +        0
1589 +        0
1590 +        5+ nmA nmB s1 s2 .. sN
1591 + </pre>
1592 +
1593 + <p>
1594 +        The first two real arguments indicate the extrema of the
1595 +        spectral range in nanometers.
1596 +        Subsequent real values correspond to multipliers at each wavelength.
1597 +        The nmA wavelength may be greater or less than nmB,
1598 +        but they may not be equal, and their ordering matches
1599 +        the order of the spectral values.
1600 +        A minimum of 3 values must be given, which would act
1601 +        more or less the same as a constant RGB multiplier.
1602 +        As with RGB values, spectral quantities normally range between 0
1603 +        and 1 at each wavelength, or average to 1.0 against a standard
1604 +        sensitivity functions such as V(lambda).
1605 +        The best results obtain when the spectral range and number
1606 +        of samples match rendering options, though resampling will handle
1607 +        any differences, zero-filling wavelenths outside the nmA to nmB
1608 +        range.
1609 +        A warning will be issued if the given wavelength range does not
1610 +        adequately cover the visible spectrum.
1611 +
1612 + <p>
1613 +
1614 + <dt>
1615 +        <a NAME="Specfile">
1616 +        <b>Specfile</b>
1617 +        </a>
1618 +
1619 + <dd>
1620 +        The specfile primitive is equivalent to the spectrum type, but
1621 +        the wavelength range and values are contained in a 1-dimensional
1622 +        data file.
1623 +        This may be a more convenient way to specify a spectral color,
1624 +        especially one corresponding to a standard illuminant such as D65
1625 +        or a library of measured spectra.
1626 +
1627 + <pre>
1628 +        mod specfile id
1629 +        1 datafile
1630 +        0
1631 +        0
1632 + </pre>
1633 +
1634 + <p>
1635 +        As with the spectrum type, rendering wavelengths outside the defined
1636 +        range will be zero-filled.
1637 +        Unlike the spectrum type, the file may contain non-uniform samples.
1638 +
1639 + <p>
1640 +
1641 + <dt>
1642 +        <a NAME="Specfunc">
1643 +        <b>Specfunc</b>
1644 +        </a>
1645 +
1646 + <dd>
1647 +        The specfunc primitive offers dynamic control over a spectral
1648 +        pattern, similar to the colorfunc type.
1649 +
1650 + <pre>
1651 +        mod specfunc id
1652 +        2+ sfunc funcfile transform
1653 +        0
1654 +        2+ nmA nmB A3 ..
1655 + </pre>
1656 +
1657 + <p>
1658 +        Like the spectrum primitive, the wavelength range is specified
1659 +        in the first two real arguments, and additional real values are
1660 +        set in the evaluation context.
1661 +        This function is fed a wavelenth sample
1662 +        between nmA and nmB as its only argument,
1663 +        and it returns the corresponding spectral intensity.
1664 +
1665 + <dt>
1666 +       <a NAME="Specdata">
1667 +       <b>Specdata</b>
1668 +       </a>
1669 +
1670 + <dd>
1671 +        Specdata is like brightdata and colordata, but with more
1672 +        than 3 specular samples.
1673 +
1674 + <pre>
1675 +        mod specdata id
1676 +        3+n+
1677 +                func datafile
1678 +                funcfile x1 x2 .. xn transform
1679 +        0
1680 +        m A1 A2 .. Am
1681 + </pre>
1682 +
1683 + <p>
1684 +        The data file must have one more dimension than the coordinate
1685 +        variable count, as this final dimension corresponds to the covered
1686 +        spectrum.
1687 +        The starting and ending wavelengths are specified in "datafile"
1688 +        as well as the number of spectral samples.
1689 +        The function "func" will be called with two parameters, the
1690 +        interpolated spectral value for the current coordinate and the
1691 +        associated wavelength.
1692 +        If the spectrum is broken into 12 components, then 12 calls
1693 +        will be made to "func" for the relevant ray evaluation.
1694 +
1695 + <dt>
1696 +       <a NAME="Specpict">
1697 +       <b>Specpict</b>
1698 +       </a>
1699 +
1700 + <dd>
1701 +        Specpict is a special case of specdata, where the pattern is
1702 +        a hyperspectral image stored in the common-exponent file format.
1703 +        The dimensions of the image data are determined by the picture
1704 +        just as with the colorpict primitive.
1705 +
1706 + <pre>
1707 +        mod specpict id
1708 +        5+
1709 +                func specfile
1710 +                funcfile u v transform
1711 +        0
1712 +        m A1 A2 .. Am
1713 + </pre>
1714 +
1715 + <p>
1716 +        The function "func" is called with the interpolated pixel value
1717 +        and the wavelength sample in nanometers, the same as specdata,
1718 +        with as many calls made as there are components in "specfile".
1719 +
1720   </dl>
1721  
1722   <p>
# Line 1493 | Line 1749 | A mixfunc mixes  two  modifiers  procedurally.   It  i
1749          n A1 A2 .. An
1750   </pre>
1751  
1752 + <p>
1753 +
1754          Foreground and background are modifier names that must be
1755          defined earlier in the scene description.
1756          If one of these is a material, then
# Line 1521 | Line 1779 | A mixfunc mixes  two  modifiers  procedurally.   It  i
1779          m A1 A2 .. Am
1780   </pre>
1781  
1782 + <p>
1783 +
1784   <dt>
1785          <a NAME="Mixpict">
1786          <b>Mixpict</b>
# Line 1565 | Line 1825 | A mixfunc mixes  two  modifiers  procedurally.   It  i
1825                  [spacing]
1826   </pre>
1827  
1828 + <p>
1829 +
1830   or:
1831  
1832   <pre>
# Line 1580 | Line 1842 | or:
1842                  [spacing]
1843   </pre>
1844  
1845 + <p>
1846 +
1847   </dl>
1848  
1849   <p>
# Line 1624 | Line 1888 | An example function file is given below:
1888          cfunc(x) : 10*x / sqrt(x) ;
1889   </pre>
1890  
1891 + <p>
1892 +
1893   Many variables and functions are already defined by the program, and they are listed in the file rayinit.cal.  
1894   The following variables are particularly important:
1895  
# Line 1638 | Line 1904 | The following variables are particularly important:
1904                  arg(i)                  - i'th real argument
1905   </pre>
1906  
1907 + <p>
1908 +
1909   For mesh objects, the local surface coordinates are available:
1910  
1911   <pre>
1912                  Lu, Lv                  - local (u,v) coordinates
1913   </pre>
1914  
1915 + <p>
1916 +
1917   For BRDF types, the following variables are defined as well:
1918  
1919   <pre>
# Line 1652 | Line 1922 | For BRDF types, the following variables are defined as
1922                  CrP, CgP, CbP           - perturbed material color
1923   </pre>
1924  
1925 + <p>
1926 +
1927   A unique context is set up for each file so
1928   that  the  same variable may appear in different
1929   function files without conflict.  
# Line 1706 | Line 1978 | The basic data file format is as follows:
1978          DATA, later dimensions changing faster.
1979   </pre>
1980  
1981 + <p>
1982 +
1983   N is the number of  dimensions.  
1984   For  each  dimension,  the beginning  and  ending  coordinate  values and the dimension size is given.  
1985   Alternatively, individual coordinate  values can  be  given when the points are not evenly spaced.  
# Line 1734 | Line 2008 | All numbers are decimal integers:
2008           ...
2009   </pre>
2010  
2011 + <p>
2012 +
2013   The ASCII codes can appear in any order.  N is the number of vertices,  and  the  last  is automatically connected to the first.  
2014   Separate polygonal sections are joined by coincident sides.  
2015   The  character  coordinate  system is a square with lower left corner at (0,0), lower right at (255,0) and upper right at (255,255).
# Line 1872 | Line 2148 | or converted a standard image format using one of the
2148   </h2>
2149  
2150   <pre>
2151 < The Radiance Software License, Version 1.0
2151 > The Radiance Software License, Version 2.0
2152  
2153 < Copyright (c) 1990 - 2021 The Regents of the University of California,
2154 < through Lawrence Berkeley National Laboratory.   All rights reserved.
2153 > Radiance v6.0 Copyright (c) 1990 to 2025, The Regents of the University of
2154 > California, through Lawrence Berkeley National Laboratory (subject to receipt
2155 > of any required approvals from the U.S. Dept. of Energy).  All rights reserved.
2156  
2157   Redistribution and use in source and binary forms, with or without
2158 < modification, are permitted provided that the following conditions
1882 < are met:
2158 > modification, are permitted provided that the following conditions are met:
2159  
2160 < 1. Redistributions of source code must retain the above copyright
2161 <        notice, this list of conditions and the following disclaimer.
2160 > (1) Redistributions of source code must retain the above copyright notice,
2161 > this list of conditions and the following disclaimer.
2162  
2163 < 2. Redistributions in binary form must reproduce the above copyright
2164 <      notice, this list of conditions and the following disclaimer in
2165 <      the documentation and/or other materials provided with the
1890 <      distribution.
2163 > (2) Redistributions in binary form must reproduce the above copyright
2164 > notice, this list of conditions and the following disclaimer in the
2165 > documentation and/or other materials provided with the distribution.
2166  
2167 < 3. The end-user documentation included with the redistribution,
2168 <          if any, must include the following acknowledgment:
2169 <            &quot;This product includes Radiance software
2170 <                (<a HREF="http://radsite.lbl.gov/">http://radsite.lbl.gov/</a>)
1896 <                developed by the Lawrence Berkeley National Laboratory
1897 <              (<a HREF="http://www.lbl.gov/">http://www.lbl.gov/</a>).&quot;
1898 <      Alternately, this acknowledgment may appear in the software itself,
1899 <      if and wherever such third-party acknowledgments normally appear.
2167 > (3) Neither the name of the University of California, Lawrence Berkeley
2168 > National Laboratory, U.S. Dept. of Energy nor the names of its contributors
2169 > may be used to endorse or promote products derived from this software
2170 > without specific prior written permission.
2171  
2172 < 4. The names &quot;Radiance,&quot; &quot;Lawrence Berkeley National Laboratory&quot;
2173 <      and &quot;The Regents of the University of California&quot; must
2174 <      not be used to endorse or promote products derived from this
2175 <      software without prior written permission. For written
2176 <      permission, please contact [email protected].
2172 > THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
2173 > AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2174 > IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2175 > ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
2176 > LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2177 > CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2178 > SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2179 > INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2180 > CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2181 > ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2182 > POSSIBILITY OF SUCH DAMAGE.
2183  
2184 < 5. Products derived from this software may not be called &quot;Radiance&quot;,
2185 <      nor may &quot;Radiance&quot; appear in their name, without prior written
2186 <      permission of Lawrence Berkeley National Laboratory.
2187 <
2188 < THIS SOFTWARE IS PROVIDED ``AS IS&quot; AND ANY EXPRESSED OR IMPLIED
2189 < WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
2190 < OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
2191 < DISCLAIMED.   IN NO EVENT SHALL Lawrence Berkeley National Laboratory OR
2192 < ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2193 < SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1917 < LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
1918 < USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
1919 < ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
1920 < OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
1921 < OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
1922 < SUCH DAMAGE.
2184 > You are under no obligation whatsoever to provide any bug fixes, patches,
2185 > or upgrades to the features, functionality or performance of the source
2186 > code ("Enhancements") to anyone; however, if you choose to make your
2187 > Enhancements available either publicly, or directly to Lawrence Berkeley
2188 > National Laboratory, without imposing a separate written license agreement
2189 > for such Enhancements, then you hereby grant the following license: a
2190 > non-exclusive, royalty-free perpetual license to install, use, modify,
2191 > prepare derivative works, incorporate into other computer software,
2192 > distribute, and sublicense such enhancements or derivative works thereof,
2193 > in binary and source code form.
2194   </pre>
2195 +
2196 + <p>
2197  
2198   <hr>
2199  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines