ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/tmapluv.c
(Generate patch)

Comparing ray/src/common/tmapluv.c (file contents):
Revision 3.1 by gwlarson, Thu Oct 22 13:53:06 1998 UTC vs.
Revision 3.2 by gwlarson, Mon Oct 26 17:07:05 1998 UTC

# Line 68 | Line 68 | register struct tmStruct       *tm;
68   double  uvp[2];
69   {       /* Should check that tm->inppri==TM_XYZPRIM beforehand... */
70          double  d, x, y;
71 <        COLR    XYZ, RGB;
71 >        COLOR   XYZ, RGB;
72                                          /* convert to XYZ */
73          d = 1./(6.*uvp[0] - 16.*uvp[1] + 12.);
74          x = 9.*uvp[0] * d;
# Line 94 | Line 94 | compmeshift(li, uvp)                   /* compute mesopic color shift
94   TMbright        li;             /* encoded world luminance */
95   double  uvp[2];                 /* world (u',v') -> returned desaturated */
96   {
97 <        /* UNIMPLEMENTED */
98 <        return(li);
97 >        double  scotrat, d;
98 >
99 >        if (li >= BMESUPPER)
100 >                return(li);
101 >        scotrat = 1.33/9.*(6.*uvp[0]-16.*uvp[1]+12.)/uvp[0] - 1.68;
102 >        if (li <= BMESLOWER) {
103 >                d = 0.;
104 >                uvp[0] = U_NEU; uvp[1] = V_NEU;
105 >        } else {
106 >                d = (tmLuminance(li) - LMESLOWER)/(LMESUPPER - LMESLOWER);
107 >                uvp[0] = d*uvp[0] + (1.-d)*U_NEU;
108 >                uvp[1] = d*uvp[1] + (1.-d)*V_NEU;
109 >        }
110 >        d = li + (double)TM_BRTSCALE*log(d + (1.-d)*scotrat/2.26);
111 >        return((TMbright)(d+.5));
112   }
113  
114  
# Line 185 | Line 198 | int    len;
198                          uvp[0] = 1./UVSCALE*((luvs[i]>>8 & 0xff) + .5);
199                          uvp[1] = 1./UVSCALE*((luvs[i] & 0xff) + .5);
200                          ls[i] = compmeshift(ls[i], uvp);
201 <                        j = tmTop->flags & TM_F_BW || ls[i] < BMESLOWER
201 >                        j = tmTop->flags&TM_F_BW || ls[i]<BMESLOWER
202                                          ? UVNEU
203                                          : (int)(uvp[0]*UVSCALE)<<8
204                                                  | (int)(uvp[1]*UVSCALE);
# Line 241 | Line 254 | int    len;
254                                  uvp[1] = V_NEU;
255                          }
256                          ls[i] = compmeshift(ls[i], uvp);
257 <                        if (tmTop->flags & TM_F_BW || ls[i] < BMESLOWER
257 >                        if (tmTop->flags&TM_F_BW || ls[i]<BMESLOWER
258                                          || (j = uvpencode(uvp)) < 0)
259                                  j = uv14neu;
260                  } else {
# Line 249 | Line 262 | int    len;
262                  }
263                  if (!isuvset(ld, j)) {
264                          if (uvpdecode(uvp, j) < 0) {
265 <                                uvp[0] = U_NEU;
253 <                                uvp[1] = V_NEU;
265 >                                uvp[0] = U_NEU; uvp[1] = V_NEU;
266                          }
267                          uv2rgb(ld->rgbval[j], tmTop, uvp);
268                          setuv(ld, j);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines