--- ray/doc/notes/ReleaseNotes 2023/03/16 00:25:24 1.425 +++ ray/doc/notes/ReleaseNotes 2025/05/02 23:56:18 1.485 @@ -2597,3 +2597,212 @@ surface types would have required additional calculati 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 -- no 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 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 call for multiprocessing when +mkillum and/or mkpmap are involved in octree prep. + +Added ability of gendaymtx to read EPW as well as WEA files. +When EPW input is provided, the 3-hour average dew point is +used to compute a more accurate precipitable water content +value. It currently does not use these data directly from +the EPW input, relying instead on a dew-point-to-W calculation. +This follows the request and recommendations of David G-M. + +Removed limitation in rfluxmtx, which was disallowing distant +and local receivers. Found this to be a perfectly valid approach +for some annual daylighting scenarios. + +Wrote new pvsum tool to handle cases dctimestep can't, like +spectral input pictures. It also adds a -N option for multi- +processing on Unix machines, which utilizes memory-mapped +inputs for efficient i/o sharing. + +Made it so genBSDF can use spectral rendering for a +more accurate photometric result. + +Changed default matrix representation to float rather than +double, which uses less RAM and supports faster operations +in general. Build with compiler flag: + -DDTnativeDTrmx_native=DTdouble +to get back higher precision representation. + +Taoning Wang updated genssky and gensdaymtx to provide illuminance +calibration and accept EPW files directly as input. + +Added -e expr and -f file.cal options to all rendering tools, not +just rcontrib/rxcontrib. Feature request from Peter A-B. + +Fixed slight bias in indirect calculation caused by ambient +collision detection, pointed out by Jon Sargent. New code +keeps track of rejected samples and sells them back to +later calls to get something closer to a true Poisson +sampling method. + +Altered rvu "origin" command to take shift amounts forward, +right, and up rather than taking an explicit origin, which +can be done easily enough with the "view" command. Peter A-B +requested (sort of).