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

Comparing ray/src/common/bsdf.h (file contents):
Revision 2.23 by greg, Wed Feb 3 01:54:51 2016 UTC vs.
Revision 2.31 by greg, Sat Jun 7 05:09:45 2025 UTC

# Line 3 | Line 3
3   *  bsdf.h
4   *  
5   *  Declarations for bidirectional scattering distribution functions.
6 *  Assumes <stdio.h> already included.
6   *
7   *  A material is oriented in right-hand coordinate system with X-axis
8   *      in the surface plane pointed to the right as seen from the front.
# Line 23 | Line 22
22   #ifndef _BSDF_H_
23   #define _BSDF_H_
24  
25 + #include "platform.h"
26   #include "fvect.h"
27   #include "ccolor.h"
28  
# Line 30 | Line 30
30   extern "C" {
31   #endif
32  
33 #ifdef _WIN32
34 #define strcasecmp      stricmp
35 #endif
36
33   #define SDnameLn        128             /* maximum BSDF name length */
34   #define SDmaxCh         3               /* maximum # spectral channels */
35  
# Line 87 | Line 83 | extern const SDCDst    SDemptyCD;      /* empty distribution *
83   typedef struct SDComp_s SDComponent;
84  
85   /* Methods needed to handle BSDF components (nothing is optional) */
86 < typedef const struct {
86 > typedef struct {
87                                          /* return non-diffuse BSDF */
88 <        int             (*getBSDFs)(float coef[SDmaxCh], const FVECT outVec,
89 <                                    const FVECT inVec, SDComponent *sdc);
88 >        int             (*getBSDFs)(float coef[SDmaxCh], const FVECT inVec,
89 >                                    const FVECT outVec, SDComponent *sdc);
90                                          /* query non-diffuse PSA for vector */
91          SDError         (*queryProjSA)(double *psa, const FVECT v1,
92                                                  const RREAL *v2, int qflags,
# Line 107 | Line 103 | typedef const struct {
103   /* Structure to hold a spectral BSDF component (typedef SDComponent above) */
104   struct SDComp_s {
105          C_COLOR         cspec[SDmaxCh]; /* component spectral bases */
106 <        SDFunc          *func;          /* methods for this component */
106 >        const SDFunc    *func;          /* methods for this component */
107          void            *dist;          /* loaded distribution data */
108          SDCDst          *cdList;        /* cumulative distribution cache */
109   };
# Line 129 | Line 125 | typedef struct {
125          double          dim[3];         /* width, height, thickness (meters) */
126          SDValue         rLambFront;     /* diffuse front reflectance */
127          SDValue         rLambBack;      /* diffuse rear reflectance */
128 <        SDValue         tLamb;          /* diffuse transmission */
128 >        SDValue         tLambFront;     /* diffuse front transmittance */
129 >        SDValue         tLambBack;      /* diffuse back transmittance */
130          SDSpectralDF    *rf, *rb;       /* non-diffuse BRDF components */
131          SDSpectralDF    *tf, *tb;       /* non-diffuse BTDF components */
132   } SDData;
# Line 148 | Line 145 | extern struct SDCache_s {
145   #define SDretainAll     2               /* also keep cumulative cache data */
146  
147   extern int              SDretainSet;    /* =SDretainNone by default */
148 + extern unsigned long    SDmaxCache;     /* =0 (unlimited) by default */
149  
150   /*****************************************************************
151   * The following routines are less commonly used by applications.
# Line 192 | Line 190 | extern SDError         SDsampComponent(SDValue *sv, FVECT ioV
190   /* Convert 1-dimensional random variable to N-dimensional */
191   extern void             SDmultiSamp(double t[], int n, double randX);
192  
195 /* Map a [0,1]^2 square to a unit radius disk */
196 extern void             SDsquare2disk(double ds[2], double seedx, double seedy);
197
198 /* Map point on unit disk to a unit square in [0,1]^2 range */
199 extern void             SDdisk2square(double sq[2], double diskx, double disky);
200
193   /*****************************************************************
194   * The calls below are the ones most applications require.
195   * All directions are assumed to be unit vectors.
# Line 216 | Line 208 | extern SDError         SDsizeBSDF(double *projSA, const FVECT
208                                          const SDData *sd);
209  
210   /* Return BSDF for the given incident and scattered ray vectors */
211 < extern SDError          SDevalBSDF(SDValue *sv, const FVECT outVec,
212 <                                        const FVECT inVec, const SDData *sd);
211 > extern SDError          SDevalBSDF(SDValue *sv, const FVECT inVec,
212 >                                        const FVECT outVec, const SDData *sd);
213  
214   /* Compute directional hemispherical scattering at given incident angle */
215   extern double           SDdirectHemi(const FVECT inVec,

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines