--- ray/doc/notes/ReleaseNotes 2012/04/25 22:21:06 1.196 +++ ray/doc/notes/ReleaseNotes 2025/01/23 22:03:59 1.475 @@ -1807,7 +1807,7 @@ of KitWare and sponsored by NREL. This includes a qt- driver for rvu, which is built in the new subdirectory src/qtrvu. ===================== -Version 4.2 +Version 4.2 (Release date 7/31/2014) Axel Jacobs added -cp and -palettes options to falsecolor. @@ -1821,3 +1821,953 @@ but response time quick until next "new" command. Fixed major bug in transmitting proxy material sampling. Patched cmake build tools (changes by Zack Galbreath). + +Removed requirement for pflip -h to be given input file (can pipe from stdin). + +Added "Number of processes" slider to trad "Action" pane to control rad -N +option for rvu and batch rendering. + +Added -c option to vwrays to repeat pixels for rtcontrib. + +Reworked rtcontrib program and renamed to rcontrib. New version runs much +faster, especially on multiprocessor systems, and doesn't require as much +memory. No longer calls rtrace; instead does all the work itself. + +Added -d option to genskyvec to produce direct-only (sun no sky) vector. + +Added Ashikhmin-Shirley anisotropic BRDF model (ashik2) with help +from Nicolas Boneel. + +Added Ruby rewrite of objview.csh by Rob Guglielmetti. + +Fixed bug in reciprocity for tensor tree BTDF representations. Thanks +to Andy McNeil for identifying the problem. + +Added MNAME and ZNAME variables to ranimove for debugging & testing. + +Created pmblur2 command to take motion and depth buffers from ranimove +to compute a better motion blur. + +****** COMPATIBILITY CHANGE ******** +Changed BSDF routines to use updated/corrected XML specification and +removed depracated BSDF support from mkillum. + +Fixed behavior of i/o flushing in rcontrib with -c > 1 (averaging). Thanks +to Lars Grobe for help identifying this problem. + +Fixed bug in depth-of-field blur where view distance was measured from +fore clipping plane rather than viewpoint. Thanks to Peter A-B for +pointing this out. + +Added options to dctimestep to allow multiple time steps (-n) +and multiple output pictures or sensor files (-o). Also added -i +option to specify float (-if) or double (-id) input for sky matrix. + +Created gendaymtx program to compute annual sky patch matrix based +on Ian Ashdown's implementation of Perez all-weather sky model. +Output can be sent directly to dctimestep in ASCII or binary stream. + +Replaced existing gendaylit.c with improved version from Wendelin Sprenger +and Jan Wienold of ISE. + +Improved accuracy of ambient calculation for large -ad settings. Thanks +to Lars Grobe for noticing the problem. + +Added -r option to gendaymtx to rotate the sky the specified number of +degrees about the zenith as suggested by A. McNeil. + +Axel Jacobs added -pal eco color map that does a blue-red-yellow scale. + +Created bsdf2klems tool to convert from various BSDF representations to +Klems basis matrix in XML file. + +Fixed problem with inappropriate reciprocity enforcement on tensor +tree reduction in genBSDF. (Thanks to A.McNeil for discovering issue.) + +Fixed bug in isotropic tensor tree sampling for impinging rays +exactly normal to surface. Thanks to Peter Apian-Bennewitz for +discovering and pointing out the error. + +Fixed double-counting bug in mirror material with alternate type. +Thanks to David Geisler-Moroder for spotting the problem and helping +to fix it. + +Created rcollate program to resize and transpose matrix data for Andy +McNeil's 5-phase annual simulation method. + +Added epw2wea conversion program by Christoph Reinhart. + +Implemented Perlin's improved noise function with help from Rahul Narain. +This will change the appearance of renderings using this function. + +Added "origin" command to rvu as requested by John Mardaljevic +to place view origin at selected point in scene. + +Switch to Perl versions of objview and objpict written by Axel Jacobs. + +Improved rendering speed of scenes with aliases by not entering new +modifiers into table if they are the same as the previously defined +modifier for that name. + +Made it so icalc and rcalc search RAYPATH directories for *.cal files +given on command line. This simplifies script writing and makes these +utilities consistent with other tools in Radiance. + +Added triangulation routine to handle convex polygons in obj2mesh. + +****** COMPATIBILITY CHANGE ******** +Made backface visibility apply to all material types, including +transparent and translucent materials (except dielectric and interface). +This makes the option useful in cases where adjacent trans surfaces +are placed next to each other by a modeler that only understands +volumetric objects. + +Changed dctimestep so that output matrices (-n > 1) are preceded by a +header, and added support for float and double output formats with -o[fd]. + +Introduced eplus_adduvf program to compute user view factors for EnergyPlus. + +Changed image-plane sampling in rpict to use Hilbert curve, which gives +less of a brushed/striped appearance to output pixels with -u- (default). + +Added ltview and ltpict Perl scripts contributed by Axel Jacobs, inspired +by Rob Guglielmetti. + +Added header variables for NROWS, NCOLS and NCOMP to help standardize +matrix files. This functionality has been incorporated into +rcollate, gendaymtx, and dctimestep. + +Created rmtxop utility to operate on multi-component matrices. This +facilitates some daylight matrix calculations, and provides a general +tool for manipulating matrix data. + +****** COMPATIBILITY CHANGE ******** +Introduced new Hessian-based error control in irradiance caching (ambient) +calculation. Since the format of the stored ambient values is different, +the old files will be rejected with an error message and must be removed. +The programs may be compiled with the -DOLDAMB option if this is a problem. + +Added -p option to rcontrib to set function file parameters on a per-modifier +basis to simplify bin evaluation. + +Created rfluxmtx program to compute flux transfer matrices from a sender +surface to one or more receiver surfaces. (Renamed the file klems_int.cal +to klems_full.cal in the process.) + +Added "-c" option to getinfo to execute command on data segment. + +================================ +Version 5.0 (Released 9/18/2015) + +Changed rmtxop so it writes out same type as lesser of inputs unless +directed otherwise using -f? option. + +Changed order of oconv arguments in rfluxmtx so user can specify input +octree using -i option at the end instead of (or in addition to) a +list of scene files. + +Added support for argument expansion to rfluxmtx and bug fixes. + +Fixed bug in indirect hemisphere sampling for some corner cases. + +Added default specular lobe to BSDF interpolation. + +Set minimum number of shadow checks before direct optimization (4). + +(Above changes included in 4.2.1 patch release.) + +****** COMPATIBILITY CHANGE ******** +Made header input and output the default behavior for dctimestep and +genskyvec. + +****** COMPATIBILITY CHANGE ******** +Changed pabopto2bsdf default behavior to add 90-degree rotation +to bring pgII's definition of "up" in line with Klems axis +conventions. Introduced a new header variable "upphi" to +control this added rotation. Using "#upphi 90" in each +BSDF input file gets back the original behavior, where it +assumes that the up direction is 90-degrees from the X-axis. +The default value of 0 corresponds to PAB's definition of +the X-axis as being "up". + +Fixed bug in rsensor related to having many rows (altitude) and +few columns (azimuth) in sensitivity file. + +Fixed floating point round-off error in new Hessian calculation +for some sytems (Windows, primarily). + +Fixed bug in tensor tree BSDF code that caused bus error on +some systems, and may have been source of other errors as well. + +(Above changes included in 4.2.2 patch release.) + +Improved ambient extrapolation to avoid zero values. Actual +threshold set to 5% of recorded value. + +Changed anisotropic Gaussian and Ashikhmin models so that +illegal orientation vectors are dealt with more gracefully. + +Created wrapBSDF tool and incorporated into genBSDF along +with new rfluxmtx computation. + +Initial check-in of Roland Schregle's photon map integration. +New 5.0a version designation as suggested by Andy McNeil. + +Added left-hand coordinate sytems to rfluxmtx to correct +problems with coordinate axis orientations pointed out by +David Geisler-Moroder. + +Added color output to genBSDF (+C option) and support for +color rendering of Klems and tensor tree data. + +Fixed another bug in rsensor that caused rays to be generated +on opposite side of hemisphere even where sensitivity was zero. + +Fixed bug discovered by Jacob Jonsson in Klems BSDF +interpolator that caused it to over-predict normal +transmittance and reflectance. + +Added ability to read input from commands in dctimestep +and rmtxop. + +Added photon map support to rad. Fixed some double-counting +issues in photon-mapping spotted by David Geisler-Moroder. + +Added photon map support to trad. + +Fixed bug in antimatter source testing when antimatter +definition follows potential obstructor in input. + +Fixed issue with missing character type identifier at head +of genBSDF XML output. + +Prompted by Roland S., added option to have pcompos -a order +rows from top rather than bottom of image. + +Changed dctimestep to accept matrix as well as BTDF input +in the VTDs invocation mode. This permits the output of +rmtxop to be used in a pinch when combining multiple BTDF +layers, although interreflection between layers is not +accounted for properly as it is in the WINDOW program. + +Added Jan Wienold et al.'s evalglare to distribution. + +Hopeful fix to deadlock issue under Mac OS X 10.10.x (Yosemite). + +Fixed early exit of rcontrib with internal error (sample behind sender) +discovered by Rob G. + +================================= +Version 5.1 (Released 8/17/2017) + +Fixed issue with vchars.mta and symbols.mta not being installed in +the appropriate metafile library location, with help from Rob G. + +Added ability to give quoted strings to output= directive in rfluxmtx. + +****** COMPATIBILITY CHANGE ******** +Added ability to digest color (CIE-XYZ) input in pabopto2bsdf. +This change alters the .sir (interpolant) format, so these files +will need to be regenerated. Use the new "#colorimetry: CIE-XYZ" tag +to enable on input. + +Rewrote bsdf2klems to support tristimulus color and call wrapBSDF. +Did the same for bsdf2ttree. Function specifications still gray only. + +Reduced a problem where rvu or rholo would be slow to quit when +run with many processes on a large model or one with a large +ambient file (taking lots of memory). We were waiting for +processes to quit one-by-one, which takes some time for each +process as it disentangles its shared memory. We now +wait for all the processes together, so they can disentangle +in parallel. It can still take up to a minute in some cases, +but not 10 minutes like it was taking before the fix. + +Enabled ambient cache value corral for all levels, not just final two. +This may reduce errors in certain pathological scenes. + +Added -in option to rcalc, rlam, and total to limit the number of +input records in hopes of circumventing Windows EOF issues on binary data. +Also added -on option to rcalc and total for logical symmetry. + +Increased modifier limit to 10,000 in rcontrib. + +Fixed issues with glrad and added zoom response to mouse wheel input. + +Added missing definition of "ashik2" material type to reference manual. + +Changed genBSDF to calculate device thickness assuming Zmax==0 so +pkgBSDF will generate correct proxy geometry. + +Created pabopto2xyz tool to combine different sensor measurements +into a single CIE-XYZ measurement file for color BSDF interpolation. + +Jan Wienold updated evalglare to version 1.30 + +Roland Schregle added out-of-core photon mapping routines, which +may be compiled using the PMAP_OOC macro. + +Added -a option to getinfo for easy addition of header lines. + +Fixed issue with multiple records on picture output in rcontrib (and rfluxmtx). +Credit to Sarith Subramaniam for pointing out the problem. + +Made mkillum more tolerant of non-planar polygons in its sampling routines. + +Added "-recover" option to genBSDF to pick up where it left off. + +Fixed genBSDF issue that was created incorrect normalization of +Klems output. Thanks to David G-M and Christian Knoflach for +discovering the error. Also improved sampling of indirect irradiance +that showed some slight bias due to poor sample collision avoidance. + +Fixed long-standing issue with -aa 0 neglecting textures in calculating +surface shading. + +Fixed bug in ranimove introduced during photon map integration. + +Added check for steep sections of BSDF in pabopto2bsdf, creating narrower +peakes in those places and mitigating some normalization issues. + +Added view360stereo.cal by Mark Stock to handle 360-degree over/under +stereo views. + +Added MAX2SHADE macro to place limit on number of light sources +to precheck for obstructions. (Currently set to 200.) This +avoids excessive start-up times for scenes with many light sources. +Thanks to Axel Jacobs for pointing out the problem. + +Added -v option to obj2mesh to print out mesh statistics. + +Rewrote bsdf2rad from ground up and made it a standard part of build. + +Fixed bug in orientation of Reinhart/Tregenza sample generator in rfluxmtx. + +Added ability to perform shadow-testing through unproxied BSDFs with strong +through (direct-direct) component. + +Added {+|-}a options to genBSDF and bsdf2ttree for switching off reciprocity +averaging. + +Added bias to see through BTDFs with a strong "through" component +rather than scattering view rays. This is in lieu of peak extraction, +which looked to be too difficult from an implementation standpoint. + +Added bsdfview tool analogous to objview but for BSDF files (XML and SIR), +which calls bsdf2rad then rad with a few useful default views. + +========================= +Version 5.2 (Release October 8, 2018) + +Created psketch program to apply non-photorealistic rendering to selected +objects, identified by modifier name(s). + +Added '*' and '/' operations to rmtxop for element-wise multiplication and +division of same-sized matrices. + +Changed falsecolor so "-s" option is adjusted to match legend if one. + +Falsecolor legend changes and improvements by David G-M and Stephen W. + +Fixed bug in peak extraction code that generated +"Bad call to SDqueryTreProjSA" error, reported by Lars Grobe. + +Increased maximum luminance to 10^7 in pcond to fix issue noticed +by Axel Jacobs where veiling glare not added for the sun under +some conditions. + +Increased maximum number of open files in rcontrib to the system upper +limit of 2048 rather than the default 512 under Windows. + +Added top-level resources directory with files from Rob Guglielmetti. + +Improved accuracy for peaky BSDFs and small light sources. + +Fixed issue with pmapdump noted by Axel Jacobs. + +Improved accuracy of bsdf2ttree when converting scattering interpolation +representatons with strong peaks. + +Tweaked peak-extraction code to work more reliably. + +Georg Mischler updated SCons build system. + +Rob Guglielmetti and Alex Swindler updated CMake build system. + +Modified pcomb so the first view seen in the inputs is written into header. + +Wrote rtpict script to run rtrace in parallel mode and simulate rpict with +-n option. + +Added ability to move forwards/backwards specified distance in rvu "origin" +command. Feature requested by John Mardaljevic, who essentially owns this +command, now. + +Reduced bias in ambient super-sampling method. + +Fixed bugs associated with zero transmission in chromatic tensor trees. +Thanks to Lars Grobe for pointing out issues. + +Added RAYPATH searching for -f options to genrev, gensurf, genworm, +bsdf2klems, bsdf2ttree, and pcomb. This makes behavior consistent +with rcalc, calc, and rendering tools. + +Worked with Randolph Fritz to fix some issues with ies2rad and newer +IESNA63 standards. + +Resurrected original bsdf2rad test program, renaming it bsdf2rado. Still an +optional build in src/cv/. + +Fixed bug in rcontrib with virtual sources, where pretest was adding +to modifier accumulation buffers. Reported by Mostapha. + +Added an "aBSDF" material type that explicitly checks for peak extraction. +Its arguments are the same as the original "BSDF" type, but without the +thickness parameter, as proxy geometry is not supported by this new type. +The old "BSDF" type no longer does peak extraction under any circumstances, +since this behavior is superfluous for proxied geometry. + +Added -r option to bsdf2rad (and bsdfview) to fix BSDF min and max range +for comparing BSDFs. + +Fixed issue with pfilt -m option and uneven image size changes pointed +out by Rob Shakespeare. + +Updates to evalglare and gendaylit from Jan Wienold, including new +colored sky option. + +========================= +Version 5.3 (Released September 1, 2020) + +Created radcompare program to compare Radiance tool output to reference outputs +during unit-testing. + +Fixed issue reading very large files (> 2 GBytes) in rcollate. + +Made picking function in rvu ignore transparent and void surfaces. + +Added -orRxX options to rtrace to enable output of mirrored and unmirrored +contributions and distances to enable new types of reprojections. This also +cleaned up and unified handling of effective ray lengths throughout code. + +Bug fixes from Jan Wienold for evalglare. + +Changed indexed (numbered) output from dctimestep to start from 0 rather +than 1, to make it more consistent with expected input naming. + +Increased default sampling in bsdf2klems (-n option) to 1024. + +Fixed an issue noticed by David G-M that was causing genBSDF to bias +isotropic tensor tree samples resulting in subsequent failure of +peak extraction with "aBSDF" type. + +Introduced max() and min() functions to .cal library. + +Added random incident patch sampling to bsdf2klems to improve accuracy +with scattering interpolation representation input (e.g., from +pabopto2bsdf). The other input types already sampled incident patch area. + +Added gendaymtx -A option to compute average sky over all the input +time steps. + +Added ability to output color image from rtrace with any of -ovrx options. +Also fixed inconsistency of -oN output when ray casting versus full trace. +Before, it would flip normal to front side unless ray casting. Now, -oN +always reports the unflipped normal. + +Changed rlam behavior so -iaN reads N lines from a stream rather than N +characters. This seems more useful, since -ibN is somewhat redundant with +the old behavior. + +Created rsplit program as compliment to rlam and to handle more complex +rtrace output into separate files or streams. + +Improved getinfo so that it can also hop over resolution string with -c +and header elide mode. Use +d to include resolution string in output, +and -d to elide with - and -c options. + +Made pvalue -u option mean "uncompressed" with -r. Also, allow skipping +bytes on standard input. + +Created rcode_depth tool to convert to and from a 16-bit/pixel portable +depth image encoding that uses a mix of linear and reciprocal distance +with explicit representations of 0 and infinity. Code for loading these +depth maps is in src/common/depthcodec.{h,c}. + +Created rcode_norm tool to convert to and from 32-bit/pixel portable +surface normal representation, matching the one in src/common/dircode.c. +Code for loading normal maps is in src/common/normcodec.{h,c}. + +Created rcode_ident tool to create indexed identifier files. +Code for loading these files is in src/common/idmap.{h,c}. + +Added -o* option to rtpict to produce layered images that handle most +output types from rtrace (colors, surface normals, distances, IDs). + +Created rcode2bmp script to create images from new rcode_* output maps. + +Improved efficiency of rmtxop in cases where matrix multiplication is +faster evaluated right-to-left, as when the final component is a +column vector. Also added ability to apply trailing unary operators +(-t, and -s or -c) to resulting matrix. + +Added new depth, normal, and ID file types to radcompare. + +Added BigEndian= header line for automatic byte-swapping in rmtxop +and radcompare. + +Added new "turbo" palette to falsecolor (thanks to Taoning). + +Nathaniel Jones created the "dcglare" program for annual glare +simulations when the sun and sky are visible through the window. +Tutorial is posted at +"https://github.com/nljones/Accelerad/wiki/The-Imageless-Method-for-Spatial-and-Annual-Glare-Analysis". + +Added support for loading RGBE images into matrices in dctimestep. + +Added -y option to gensky and gendaylit to support more accurate Michalsky +solar position calculation. + +Changed rsplit, so specifying a space as the separator parses words +between whitespace. + +Added ability of vwrays, pinterp, and pmblur2 to read encoded depth files. + +Added -o RxCxR1xC1 facility to perform blocking in rcollate. + +Made it so number of segments in genworm, genrev, and gensurf can be +given as expressions of previously defined variables, etc. + +Added -D and -n option to gendaymtx to output sun description and skip +matrix output on request. A -M option was also added to output solar +modifiers for rcontrib. Support also added for leap days in WEA input. +Enhancements sponsored by Ladybug Tools. + +Updated eplus_uvf to work with IDF version 9.x, checking version number. + +Fix to glarendx issues with dgi calculation. + +Made it so rmtxop and dctimestep undo any exposure applied to Radiance +pictures they may load. + +Added robjutil utility to manipulate Wavefront .OBJ files. + +Fixed a crash related to rtrace -om or -oM with mesh instances containing +materials. + +Improved rtrace flushing function to handle any value for -x without +deadlock on controlling process. + +Eliminated unnecessary start-up procedures for rtrace when only ray-casting +is needed (i.e., no tracing or value output). + +Improved isotropic sampling method in bsdf2ttree using "zipper" approach +applied in genBSDF. + +Added limit to memory used by high-resolution tensor tree BSDFs for +cumulative cache during MC sampling (rendering). Limit set to 250MBytes +per BSDF for standard architectures. + +Added -n and -s options to bsdf2ttree to provide some user control +over super-sampling. + +Improved surface normal codec used by ambient file to store orthonormal +directions exactly. + +Improved peak extraction method, which was undervaluing transmission +in many cases. + +New version of evalglare from Jan Wienold. + +Added -u option to gendaymtx to elide data columns (time steps) when +the sun is not visible above the horizon. + +========================= +Version 5.4 + +Added rcollate -c option to force operation to continue even if it +seems unnecessary. Made tool more robust. + +Added -t option to rcontrib (and rfluxmtx) to report progress after the +given number of seconds. + +Added "test" target to makeall to run unit tests. + +Modified bsdf2ttree to allow different parameters per input SIR file. + +Fixed issues with very large matrix files (> 2GB) in dctimestep, rmtxop, +and rcollate. + +Added -rf and -rb options to rmtxop to load front or back reflectance +matrix data from XML file rather than transmission. (Lars Grobe suggested.) + +Improved behavior for coincident surfaces with different materials. +Rather than returning one surface or the other based on floating-point +vagaries, opaque materials are now preferred over transparent ones. +If the materials are both transparent or both opaque, then whichever +surface appeared later in the scene description will be selected. +This came of a request for consistent behavior with legal CAD output +from Peter Apian-Bennewitz. + +Added explicit tests for on-edge intersections with polygons. This should +eliminate stray rays and tiny light leaks that often appear even in +well-constructed geometry. + +Added "-s up" option to pabopto2bsdf to allow for 180 degree symmetry, +meaning that data repeats after 180 degree rotation (as distinguished +from "-s bilateral" whose data is mirrored about a vertical plane). +Thanks to Helen Rose Wilson for the suggestion and informing me that +such a thing exists. + +Removed upper limit on number of modifiers in rcontrib. + +Put cap on maximum ambient gradient to avoid over-extrapolation of +poorly computed irradiance cache values. + +Added robjutil +T option to triangulate all faces in .OBJ description. + +Altered BSDF library to have both front and back diffuse transmittance +values, which can be different. This was necessary to avoid issues +caused by measurement and modeling discrepancies. + +Added pabopto2bsdf -g option to cull near-grazing scattering to avoid +issues with noise and negative values. + +Increased default dynamic range from 32 to 100 in pcond and normtiff. + +Added -o and -n options to genbox to create .OBJ output and segment +edges and corners for transparent materials. Also added -s option +to control smoothing for .OBJ and Radiance with segmented rounding. + +Made it so robjutil with the +r option for Radiance output now +produces normal smoothing unless normals are removed with -n. + +Added exposure preservation to pcompos when possible (i.e., when +there is only one input or inputs agree on exposure). + +Added -DSHARP_RGB compile-time option to use sharp RGB color space +rather than historic default. This can make for more accurate color +calculations, but requires that materials be recalibrated. The +PRIMARIES= line is also produced on output from rpict or rvu with +the correct set of primaries based on how the system was compiled. + +Added automatic flushing to the output of total, except when the -r +(running subtotals) option is used. + +Improved behavior of little-used -aw option, so that it avoids sea-level +rise caused by adding its own estimate back into the ambient level remainder. +It ended up being simple enough to derate the final average by the factor +corresponding to average surface absorpition, thus removing the average +from the final bounce estimate. + +Introduced ies2rad upgrades by Randolph Fritz. Randolph says it +fixes the following problems: + + 1. Generates correct Radiance geometry for spheres in 1995, 2002, + and 2019 IES files. + + 2. Generates correct Radiance geometry for vertical cylinders that + are taller than they are wide. + + 3. Ignores the file source ("File Generation Type") field in the + 2019 version of the file, which would otherwise be incorrectly used + as an output multiplier. + + It also offers the following enhancements: + + 1. Shape information is included in the .rad file comments. + + 2. 1995, 2002, and 2019-version luminous opening geometry is + accounted for. + + 3. The 2002 and 2019 IES file versions are recognized and + processed appropriately. + + 4. I have made an attempt to do something intelligent with less + common "luminous opening" shapes in the 1995, 2002, and 2019 versions + of the standard, though I have not implemented any support for new + geometry; approximations are substituted and warning messages issued. + Unfortunately, this code is not tested, since I don't have any IES + files that use these shapes. + +Added support for depth-of-field blurring in vwrays using -pd option. +Also, made -c count work with vwrays -i, producing multiple samples +per indicated pixel position. At the same time, support for the -pd +option was added to rtpict, which calls on vwrays for its samples. + +Fixed issue with BSDFs that didn't obey reciprocity, where direct +sampling wasn't following exactly with indirect sampling. This was +discovered and reported by Jon Sargent. + +Created checkBSDF tool to test XML BSDF reciprocity and perform similar +sanity checks. + +Added -O option to pvalue and pextrem to report watts/sr/m^2 even if +picture is XYZE. + +Made subtle changes to header i/o routines to preserve alignment in +binary file formats to enable memory-mapping. Implemented memory-mapped +matrix loading in rmtxop for binary double files. + +Removed ambient value sorting, which was written when ambient caches +could overwhelm available memory. This is rarely the case these days, +and the added code complexity and updating of cache values with LRU +counts dirties pages that would otherwise remain clean, so it was +often a loss even when VM was an issue. + +Added iso2klems script to compute a Klems BSDF based on specular +and diffuse measurements as a function of incident angle. + +Fixed issue with over-counting diffuse component during aBSDF +peak extraction. + +Added dctimestep -x and -y options to specify image dimensions +for multiple outputs corresponding to result vectors. + +Added -P option to rcalc to pass formatted input when cond is <= 0. + +Created rcrop utility for cropping matrices and pictures more +conveniently, correcting view information. Expect it to be handy +for extracting rows and columns from matrices, mostly. + +Changed pcomb so -o option elides original exposure values +from indented source headers. + +Added getinfo -r option, which is similar to -a except it will +replace indicated lines with new ones. + +Slight change to vwrays -d option to not spit out "-ld-", and to +produce "-ld+" without requiring input picture as argument. + +Added automatic overture calculation to rtpict with -n > 1 if +ambient cache is on and file is named. If straight image output +is requested, we randomize all samples and avoid cache collisions. + +Added cnt -s option to shuffle output. + +Fixed issue with divide-by-zero errors in the ambient super-sampling +routine discovered by Jon Sargent of Solemma. This affected regions +that had zero radiance, such as black backgrounds or unlit areas +with -av 0 0 0, when super-sampling was effectively disabled, causing +some loss in accuracy of the results. + +Updated Klems Half- and Quarter-bases to match angles currently used +in WINDOW. + +Eliminated most aiming failures for triangular light sources, at the +expense of conservative sampling near the centroid. Thanks to +David Geisler-Moroder for his help on this. + +Increased maximum set size to 8191 to avoid set overflow errors. + +Added source obstruction test to statistics being kept on which +sources were visible in adaptive shadow testing code. Previous +behavior was likely over-estimating source contributions. + +Added diffuse components into maximum directional hemispherical +reported by checkBSDF, so comparing to 100% is easier for each +component. + +Fixed incorrect calculations in iso2klems script, thanks to +help from Jacob Jonnson. + +Updated official copyright and license according to new wording +provided by Jean Haemmerle at the LBNL Intellectual Property Office. +Both were copied verbatim from e-mail I received from Taoning Wang +on 8/20/2022. + +Added -features option to rpict, rtrace, and rcontrib to check +which features are present or look for specific feature support. +This addition was suggested by Peter Apian-Bennewitz as an easier +way to determine which version of Radiance is installed and what +it supports, and is timely as we begin our refactoring of the +rendering code. There are no current plans to add this to rvu. + +Added falsecolor -odim, -orct, and -c0 options to overlay grid of +values on image. This was requested by Rob Shakespeare. + +Added -i* and -o* options in rhcopy for reading rays from the +standard input and writing rays from holodeck to standard output. +This will hopefully be useful in combining rholo with rcontrib. + +Added further checking for coincident (overlapping) flat surfaces, +preferring front sides to back sides in the ray intersection +calculation. This only applies to rings and faces, as the other +surface types would have required additional calculations to +make them work. Material transparency is still the primary +consideration, now followed by ray hit side, followed by +modifier definition order in the input. + +Increased octree and object limits to allow scenes with billions +of primitives. + +Made reciprocity averaging default to "off" in bsdf2ttree, as it seems +to create more problems than it solves. + +==================== +Version 6.0 + +Extensive changes to enable spectral rendering, which defaults to "off" +to maintain backwards-compatibility with previous versions, with the +exception of the ambient file format, which is changed. The MAXCSAMP +macro, which defaults to 24, sets the maximum number of spectral samples. +The actual number of samples is set by the "-cs" option, which defaults +to 3 for rpict, rtrace, and rcontrib. The latter two programs support +straight spectral output, but rpict is initially restricted to +tristimulus output pictures. New pattern primitives "spectrum", +"specfile", and "specfunc" have been added as a means to specify +spectral reflectance, emittance, etc. to materials that still have +only 3 color channels. Those RGB channels will still affect the +spectrum if used. Unfortunately photon-mapping is currently broken when +spectral sampling is enabled, but we will fix this as soon as possible. +Calculation overhead appears to be approximately 10-15% for RGB +renderings compared to version 5.4a. + +Added spectral rendering to rvu as well, and made -cs and -cw +options standard across the rendering library. I also brought +mkillum, ranimove, rsensor, and mksource into the fold. These +tools were broken in the initial release. (Hopefully, they are +working now, but none have been tested as yet.) +There was also an indexing bug in the spectral->RGB conversions +that made reds into blues and vice versa, which has been fixed. + +Added i/o for spectral pictures to rmtxop, the first program that can +ingest them. (Only rtrace, rcontrib, and rfluxmtx can render them.) +New symbolic rmtxop -c options, such as RGB, XYZ, S (for scotopic) +and M (for melanopic) make color conversions simpler. Alternatively, +a reference matrix or picture may be given and the color space of +that file will be used. The -C option takes either a symbolic +color space or reference file and is "sticky," so it applies to +all subsequent input files that do not have their own -c right ahead +of them. + +Added spectral picture support to rcrop and radcompare. + +Added new utility, rcomb, which is something like a combination +of rmtxop and pcomb, it works with all the inputs and +outputs that rmtxop handles, but allows for general expressions +like those in pcomb for putting matrices together, working on +an element at a time. (No resizing of matrices or accessing +neighboring elements, as permitted in pcomb.) It saves memory +over rmtxop by operating on a row at a time, so can handle +input and output matrices with any number of rows. It does +provide for a single matrix-multiplication operation at the end, +which only requires memory for that final matrix. + +Added support for filtering hyperspectral images to pfilt. + +Added support for 1- and 3-component float matrix i/o to +pcomb to allow for better interoperability. + +Added support for -co+ option to rtpict, so it can directly +produce hyperspectral images. + +Added new "specdata" and "specpict" primitives to support +interpolated spectral data files and hyperspectral images +as patterns. + +Added support for multispectal sampling in rsensor, which will +put out as many color channels as specified in any -cs option +(default is 3 for RGB). + +Added ability of mgf2rad to convert spectral data at least +for light, glow, plastic, and metal primitive types. Need +to use new '-s' option to get new output. + +Added handling of spectral images to rcode2bmp script. + +Minor change to rcollate to allow explicit byte records to +be any specified length without checks against header input. + +Added new hemisphere type to rfluxmtx, "h=cie" for CIE sky +scanner positions. These are 145 patches with identical +row counts to Tregenza, but starting from a different +azimuth and reversing row directions at adjacent altitudes. + +Added optimization for long argument lists and arrays in +the calcomp routines used for rendering and in rcalc, etc. + +Added error estimate spreading to ambient super-sampling +algorithm (-as) to improve performance especially in +scenes with sharp cut-offs. + +Added -i option to gendaymtx to match -i option of gendaylit. +Thanks to Yongqing for initial implementation. + +Changed rcrop so negative #rows or #cols counts back from end. + +Added rcomb -n option for multi-processing of very large matrices. + +Made it so rsplit and rlam can handle any number of input files +up to active open file descriptor limit. + +Taoning Wang added genssky tool for generating spectral sky +descriptions. + +Taoning added gensdaymtx utility based on gendaymtx, and +added epw2wea -a option to include required information. + +Fixed bug introduced in Auguest 2022 (5.4 release) in distant +light source sampling, which caused aiming failures. (Thanks +to Mike DiPompeo of LightStanza for reporting the issue.) + +Added rxpict rendering tool based on C++ RpictSimulManager class. +Multi-processing and spectral output are supported. + +Wrote rxpiece tool that will render pictures using tiling and +can handle different output formats and hyperspectral pictures. +Only runs on a single machine, however -- now NFS locking on +shared volumes. Mainly a demonstration tool for RpictSimulManager +C++ class, but may have its uses. + +Fixed a bug in BSDF sampling of sources pointed out by +David Geisler-Moroder, which tended to overestimate specular +contributions for some BSDFs. + +Added crude ability to read and convert spectra to RGB in ximage, +ra_bmp, ra_ps, and ra_rgbe programs. Also updated fast tone-mapping +library to handle spectral HSR inputs at the same time. HSR +input handling was added in a similar fashion to pcond and pvalue +for convenience. + +Added handling of hyperspectral images to normtiff, a handy program +for quickly tone-mapping Radiance RGBE, XYZE, and now hyperspectral +pictures, as well as IEEE float or LogLuv TIFFs. + +Added handling of hyperspectral pictures to pextrem, though +results are still reported in RGB. + +Added accurate conversion of hyperspectral pictures to ra_xyze. + +Added hyperspectral picture conversion to ra_tiff, with accurate +color when targeting 16-bit/comp., LogLuv, and float utput, +and the approximate method for 24-bit RGB. + +Taoning added genssky -L option to specify global and diffuse +illuminance values for output calibration. + +Created C++ class for rcontrib and example tool rxcontrib, which +is an optional compile in the src/rt directory. The output +model is more general in some respects and the operations more +efficient, but standard output is not supported, nor is ASCII +results data. + +Added experimental source-skipping method to rpict for scenes +with large number of light sources. Currently works with +rcontrib and separate srcsamp image-processing tool. Controlling +rpict options are -dS for skip bitmap specification and -dC +for correction coefficient image. Compile using -DSSKIPOPT +to include this option. + +Added strnstr.c compatibility module in ray/src/common, since +it isn't present on Linux-derivatives. + +Added WGMDfunc material type with programmable roughness and +separate modifier paths for the different components. + +Added gensurf -i option at the request of Peter Apian-Bennewitz +to reverse surface normals, mostly for data input when it is +a bit more difficult to adjust. + +Added rad -N option to rholo run for multiprocessing when +mkillum and/or mkpmap are involved in octree prep.