____________________________________________________________________________ T H E A D V A N C E D R E N D E R I N G T O O L K I T ____________________________________________________________________________ H I S T O R Y O F C H A N G E S ____________________________________________________________________________ 21-Sep-1999 rft version 1.2.0 Shape/ Raycasting/ new mesh implementation Surface/ Normal interpoation 02-Sep-1999 rft Material/ fixed problem introduced with volume tracing merge Node/ Surface/ Radiosity/ Raytracing/ added importance maps 27-Aug-1999 rft version 1.1.0 Value/ Surface/ cleaned up various things 23-Aug-1999 rft & sm */ merged volume tracing code 29-Jul-1999 rft version 1.0.0 27-Apr-1999 rft Shape/ RayCasting/ User/ Integrated ArnMesh*.[hm]. 26-Apr-1999 rft version 0.4.8 */ ported to Mac OS X Server (rhapsody 5.3): moved AraCombined from Raycasting to Node, and seperated out BBox and Raycasting categories 19-Apr-1999 rft Node/ Value/ Raycasting/ added ArnTextureReferencePoint 01-Apr-1999 rft & aw version 0.4.7 Radiosity/ folded in changes by aw 29-Mar-1999 rft Raycasting/ removed ArnPointTester, folded into ArnRayCaster 03-Feb-1999 rft Image/ renamed ArpImage to ArpBasicImage, added ArpImage artist/ overhauled argument loop, prepared for action paradigm Node/ */ removed ArpAction, renamed ArpOperator to ArpAction Value/ added ArnValueStatistics Node/ added ArpObjectStatistics 01-Feb-1999 aw [rft] version 0.4.6 Colour/ Trafo/ new libraries 26-Jan-1999 rft Basics/ ArDynTable Test/ barebones testing facility 12-Dec-1998 rft Objective/ */ changed reporters, added ArcShortFileReporter 10-Dec-1998 peci [rft] Value/ added large set of ArnOperators 09-Dec-1998 aw [rft] Graphics/ Node/ Interface/ added reading/defining ability to PSSpectrum 08-Dec-1998 rft Parser/ ArfNative: fixed parsing problem of externals on LINUX Math/ fixed texture bug on IRIX in Functions.h: m_d_floor_frac_ud/id (changed '>' to '>=") 25-Nov-1998 rft Node/ Shape/ removed calculateRandomPoint from ArpShape and all shapes 24-Nov-1998 rft version 0.4.5 */ merged aw's code 16-Nov-1998 rft Surface/ merged Reflector.m/Refractor.m modules 13-Nov-1998 rft Value/ changed protocols to use Vec/Pnt instead of Crd merged solid texture functions into ArnSolidTexture.m 11-Nov-1998 rft Surface/ added ArnMappedSurface, ArnMappedColour, removed ArnTexturedSurface 09-Nov-1998 rft Node/ Shape/ Added additional number argument to -getSurfacePoint2D/3D. 02-Nov-1998 rft Basics/ Introduced ArNamedPtrTable, ArSymbolTable */ changed /.m to /Init.m 26-Oct-1998 rft version 0.4.4 Objective/ cleaned up ArcFileStream.h 25-Oct-1998 aw [rft] Shape/ fixes to the merge from 23-Oct-1998 25-Oct-1998 rft Objective/ Image/ Parser/ changed ArcFileStream to ArcFile, added -open and -close Node/ Objective/ added getPath to ArpCoder and ArpStream 24-Oct-1998 rft Node/ Surface/ added ArReflectionEvaluation to -calculateReflectionList 23-Oct-1998 aw [rft] */ new Radiosity code 21-Oct-1998 rft demos/ ported dithermatrix to ART 20-Oct-1998 rft Math/ introduced ArVector, ArMatrix 19-Oct-1998 rft demos/ ported anagrams to ART 17-Oct-1998 mmp [rft] */ alpha/Linux 64-bit port: * Libs/Basics/ArHashTable.h: Added definition for HASHTABLE_ENTRIES and HASHTABLE_SLOTS (not sure if I did the latter correctly). * Libs/Basics/ArFreeList.h: Added definition for ARFREELIST_NODES_ALLOCATED. * Libs/Raycasting/AraCombined.m ([AraCombined -init:newNode:newMaterial:newSurface:newTrafo]): Commented out debugging code: Seems to be erroneous (Trafo3D not groked). 10-Oct-1998 mmp [rft] */ alpha/Linux 64-bit port: * Libs/Basics/ArSymbol.c: Included string.h. * Apps/artist/art: Added alpha--linux-egcs config. * Libs/Material/ArnStandardMaterial.m (-calculateRefractionRef:): Changed unsigned int index to unsigned long. * Libs/Shape/ArnSoft.m (-init::): Changed the va_list parameter NULL to dummy of type va_list. Should not pose problems on any system. [rft: commented out, should be removed when using va_arg functions anyhow!] * Libs/Parser/ArfNative.m: unsigned int to unsigned long changes. * Libs/Image/ArfTIFF.m: Imported string.h. * Libs/Image/ArfRadianceRGBE.m: Imported string.h. * Libs/Image/ArfPPM.m: Imported string.h. * Libs/Objective/Runtime.m (runtime_protocol_name): Pointer was printf'ed with format %x. Changed to %lx and cast to unsigned long instead of unsigned int. * Libs/Objective/ArcFileReporter.m: Imported string.h. * Libs/Objective/ArMaster.m, Libs/Objective/ArMaster.h: On some occasions hash entries are still cast to unsigned int. Changed to unsigned long. * Libs/Socket/String.c: Included string.h. * Libs/Socket/Printf.c: string.h included * Libs/Socket/Peer.c: Included string.h. * Libs/Socket/AllocFree.c: Included string.h. 09-Oct-1998 rft */ 64-bit preparations Node/ Raycasting/ Value/ introduction of ArTraversalState into ArTraversal, ArHit 29-Sep-1998 rft Value/ changed ArpValue... to ArpIntValues, ArpDoubleValues, ... 18-Sep-1998 rft Objective/ Node/ User/ Bug fixes for ARPROTOCOL 15-Sep-1998 rft Runtime/ */ changed implementation for RUNTIME_REGISTER_PROTOCOL, added runtime_protocol_name, since [protocol name] didn't work on LINUX. introduced ARPROTOCOL(...) for @protocol(...) in order to be able to compare protocol pointers (there is more than one protocol object that describes the same protocol), there is now a single pool of ARPROTOCOLs that can be pointer- compared Image/ renamed ArnPlain...Image to Arn...Image 14-Sep-1998 rft Image/ artist/ tonemap/ Revamped image classes. Objective/ Parser/ Small changes in filetype implementation. Objective/ Introduced ALLOC_NODE, NEW_NODE, INIT_NODE, ASSIGN_NODE, and FREE_NODE, which should replace the ARN_... macros. 13-Sep-1998 rft graphics/ Added ArColourType and a lot of colour types in ColourUInt.h Cleaned up ColourConversion.h 11-Sep-1998 rft */ Merged with Alexander Wilkies version containing new FileProbe/FileType semantics 04-Sep-1998 rft version 0.4.3 */ Changed the syntax from ARN_INIT(target,source) to target = ARN_INIT(source) 30-Aug-1998 rft artist/ Changed prefix for scenes from 'create' to 'create_'. In order to make this easy, this can be done with the following commandline (needs Perl5): find . -name '*.arm' -exec perl -i~ -p -e 's/\bcreate([A-Za-z]\w+)\b/create_$1/g;' {} \; This is an idempotent command and can be applied repeatedly without harm! 27-Aug-1998 rft Objective/ Node/ */ moved ArMaster from Node to Objective library. Master identification now only by asking master module (no negative number in ArNode!) User/ Added Standard.[hm] 26-Aug-1998 rft Node/ Raycasting/ Raytracing/ Rendering/ implemented Action paradigm 25-Aug-1998 rft Node/ added ArpAction Rendering/ added ArnNodeAction and subclasses added ArnActionSequence 24-Aug-1998 rft version 0.4.2 23-Aug-1998 rft */ changed macro ARN_INIT(to_node,from_node) to to_node = ARN_INIT(from_node) added AraWorld containing worldMaterial, defaultMaterial and defaultSurface (got rid of explicit setting of these defaults!) Node/ Material/ add 20-Aug-1998 rft */ changed interface to Surfaces, introduced ArHitInfo, ArPointHitInfo Socket/ continued cleanup Basics/ added File.[ch] and String.[ch] 20-Aug-1998 rft version 0.4.1 19-Aug-1998 rft merged in aw's tonemapping code 21-Apr-1998 rft Graphics/ Math/ finished inline function implementation for Spectra 20-Apr-1998 rft Shape/ fixed bug in AraBBox.h (allocBBoxes was not implemented for ArAttribute) Value/ Surface/ implemented antialiasing for solid textures, by changing clamping in ArnTexturedSurface to taking the fraction. This necessitated change in Value/GridTexture! 19-Apr-1998 rft Node/ Shape/ added master object handling 16-Apr-1998 rft Node/ further cleanup and changes to ArnVisitor 10-Apr-1998 rft Node/ */ fixed bug in normal tranformations 09-Apr-1998 rft Node/ */ included ArnModifier functionality into ArnVisitor, removed ArnVisitor added -visitAttributes and -visitOnlyOnce to ArnVisitor added -removeExternals to ArnExternal 07-Apr-1998 rft version 0.4.0 06-Apr-1998 rft Basics/ */ prefixed various datastructues with Ar 30-Mar-1998 rft */ added changes by aw 23-Feb-1998 rft */ changed macros to inline functions changed HashTable to ArHashTable 18-Feb-1998 rft Base/ */ changed name to Basics/ canged List to ArList (prefixed all List structs by Ar) 11-Feb-1998 rft Base/HashTable Base/System */ removed HASHNODE_FROM_OTHER, HASHNODE_TO_OTHER replaced by FIELD_POINTER and STRUCT_POINTER Math/Random */ removed RANDOM_UNIFORM_D, RANDOM_UNIFORM_C2, RANDOM_UNIFORM_C3, RANDOM_DD_UNIFORM, RANDOM_DDDD_UNIFORM_C2, random_dd_normal_c2 changed random_dd_normal to random_normal changed RANDOM_D_NEGEXP to RANDOM_NEGEXP 26-Jan-1998 rft Value/ added ArnCellularTexture.[hm] added ArnOperators.[hm] 14-Dec-1997 rft Math/ merged Range2D.[hc] and Range3D.[hc] into Range.[hc] 01-Dec-1997 rft Shape/ added indexForPoint to ArnVertexSet added addVertexIndex, sync to ArnPolygon Base/ renamed ArsDoubleTable to DoubleTable, ArsTables to Tables 30-Dec-1997 rft Raytracing/ Rendering/ added prepareForRendering, finishWithRendering to ArnScene added prepareForDrawing, finishWithDrawing to ArpRenderer 21-Nov-1997 rft Surface/ implemented ArnSphereReflector updated albedo functions to include transmission 14-Nov-1997 rft artist/ updated art script to use makefiles 13-Nov-1997 rft Base/ Surface/ User/ introduced ArpColour, Arn[Gray|RGB], change all uses of direct RGB/Colour to a pointer to an instance of id 11-Nov-1997 rft Base/ added Symbol.[hc] 09-Nov-1997 rft Surface/ cleaned up ArpSurface protocol and changed all surfaces accordingly Raycasting/ Raytracing/ removed fromShapeFace from RayCaster interface Shape/ Raycasting/ added ArnInfiniteSphere 03-Nov-1997 rft */ changed base class to ART_OBJECT (defined in Base/Runtime.h) 02-Nov-1997 rft Raycasting/ Raytracing/ Rendering/ upgraded Syntax for complex objects (ArnRayCaster, ArnRayTracer, ArnScene, ArnCamera, ArnAdaptivSampler, ...) 30-Oct-1997 rft Surface/ added ArnPerfectRefractor implemented the vector distribution for ArnPhongReflector and PhongRefractor implemented vector distirbution for ArnTexturedSurface Node/ Surface/ added reflection type to ArsReflection implemented optimization for gathering all ArsReflection of the same type in ArnGeneralSurface and ArnTexturedSurface Math/ added Knuth's random generator and cleaned up Random.h 29-Oct-1997 rft version 0.3.9 */ changed ...Table and ...TABLE to ...Array and ...ARRAY removed initWithList from all vararg objects added initWithTable:... to all vararg objects changed vararg modelling Syntax fixed minor problems for ppc--linux-gcc 10-Oct-1997 rft Image/ changed ArnNoOutImage to ArnLineOutImage, added ArpLineOutImage, and changed ArnFppmOutImage, ArnPpmOutImage, ArnRadOutImage, and ArnTiffOutImage to be derived from ArnLineOutImage 05-Oct-1997 rft Rendering/ renamed class ArnEdgeRenderer to ArnSlowEdgeRenderer created common baseclass ArnEdgeRenderer for ArnFastEdgeRenderer and ArnSlowEdgeRenderer added backColour, edgeColour, and objectColour to ArnEdgeRenderer 02-Oct-1997 rft Raycasting/ changed arsHit_ enum constants to lower underscore 01-Oct-1997 rft Raycasting/ fixed singular-hit bug in ArsHitList.m Node/ moved ArnVisitor and ArnModifier into module ArnTraversal created module ArnScaleShift3D from ArnScale3D and ArnShift3D 25-Sep-1997 rft Value/ Surface/ cleaned up implementation of wood and marble 24-Sep-1997 rft mainly Node/ cleaned up operation id stuff, introduced ArNodeOperation type. added ArNodeOperation to flattenByNumbers (this speeded up writing of SPHERE_FLAKE(7) by a factor of 20 or so.) 23-Sep-1997 rft version 0.3.8 */ created ArpStream, ArcFileStream created ArpCoder, ArpCoding, ArcObjCCoder switched I/O to coder/streams removed ArpInOut 22-Sep-1997 rft */ added -prepareForRayCasting; -finishWithRayCasting; renamed Raytracer: -setup; to -prepareForRayTracing; added -finishWithRayTracing; moved bbox preparation into -prepareForRayCasting; changed Traversal, Visitor, Modifier, RayCaster, and PointTester from Arc- to Arn- 21-Sep-1997 rft Shape/ RayCasting/ added singular shape support 19-Sep-1997 rft Shape/ RayCasting/ prepared Shapes for non-bounded versions exact bounding box calculation via -getExtremalPoints; and -getExtremalCoordinates; 18-Sep-1997 rft Shape/ RayCasting/ added -getBBox::; to all nodes 10-Sep-1997 rft version 0.3.7 */ moved ArsHitList to Raycasting/ improved ArpSurface protocol improved ArcEnvironment 08-Sep-1997 rft version 0.3.6 */ changed +new... to -init... 03-Sep-1997 rft Rendering/ removed _TRTR macro usage from Camera.m Graphics/ removed G3D_*_TRTR macros 02-Sep-1997 rft Runtime/ moved Runtime.[hm] to Base library removed Runtime library centralized runtime support */ changed alternative runtime initialization to be on a per module basis User/ added library for user-level functions 24-Aug-1997 rft version 0.3.5 Math/ fleshed out Range, Range2D, added Range3D 20-Aug-1997 aw, rft */ changed [Cc]olor to [Cc]olour Node/ -convertToTree; replaced by -copyTree; 07-Jun-1997 rft version 0.3.4 Raycasting/ added -calculateMaterialPair::; 06-Jun-1997 rft Raycasting/ created out of parts of Raytracing/ 03-Apr-1997 rft Shape/ renamed -getNumberOfFaces; to -numberOfFaces; renamed -getNormal:; to -calculateHitNormal:; 29-Mar-1997 rft Surface/ArsHitList created struct ArsMaterialInterface changed hit->oldMaterial to ARSHIT_FROM_MATERIAL(hit) changed hit->newMaterial to ARSHIT_INTO_MATERIAL(hit) 28-Mar-1997 rft Node/ gathered attribute base classes AraSingle and AraTriple in ArAttribute.[hm] 26-Mar-1997 rft Node/ renamed -getName; to -nodeName; renamed -setName:; to -setNodeName:; Node/ Material/ Surface/ ... renamed -getNumberOfElements; to -numberOfElements; renamed -getNumberOfSubNodes; to -numberOfSubNodes; renamed -getElementWithIndex:; to -elementWithIndex:; renamed -getSubNodeWithIndex:; to -subNodeWithIndex:; renamed -getSubNodeTable; to -subNodeTable; Raytracing/ renamed -getShape; to: -shape; 25-Mar-1997 rft Surface/ Raytracing/ renamed -getSurfaceType; to -surfaceType; renamed -getLightMapType; to -surfaceType; Material/ Rayracing/ renamed -getMaterial::; to -calculateMaterial::; Rendering/ renamed -getPixelsize; to -pixelSize; renamed -getNear; to -near; Base/ artist/ renamed -setDefaultString:; to -setDefaultStringValue; renamed -setDefaultLong:; to -setDefaultLongValue; renamed -setDefaultDouble:; to -setDefaultDoubleValue; renamed -getString; to -stringValue; renamed -getLong; to -longValue; renamed -getDouble; to -doubleValue; 17-Mar-1997 rft Shape/ added -enlargeBBoxes, removed multiple defs of epsilonVec Graphics/ Box3D.h changed to canonical function names Math/ Random.[hm] changed to canonical function names Raytracing/ continued library split: Surface/ 15-Mar-1997 rft, aw artist/ platform-dependent executable facility: 'artist' is now a script that calls src/artist.$(ART_CONFIG) the artist script now also compiles '*.ars' files if they are explicitly given on the commandline Node/ continued library split: Shape/ Material/ Raytracing/ 11-Mar-1997 rft Node/ split into libraries: Node/ Image/ Rendering/ Runtime/ removed Globals.[hm] 09-Mar-1997 rft Node/ included images in the ArNode hierarchy 07-Mar-1997 rft Node/ removed worldMaterial, defaultMaterial, and defaultSurface as subNodes of ArnRayTracer. 06-Mar-1997 aw Graphics/ added Polygon and Quadrangle Node/ added ArnSimpleIndexedShape, ArnVertexSet, ArnQuadrangle, and ArnPolygon 01-Mar-1997 rft Node/ renamed ArnAdaptiveTracer to ArnAdaptiveSampler and ArnMidPointTracer to ArnMidPointSampler 28-Feb-1997 rft Misc/ created, moved Reporter functionality in here Node/ introduced RefNode; ArNode now based on RefNode implemented arnSurface_transparent, -_translucent, and -_nonopaque for ArnRayTracer 26-Feb-1997 rft Node/ added Ppm output support by jp 08-Jan-1997 rft Node/ gathered ArsHit.shape and ArsHit.face into ArsHit.shapeFace changed getFirstHit and calculateWeightedColor accordingly 21-Dec-1996 rft Node/ added Runtime.[hm] for support of platforms with broken runtime (due to gcc/collect2 problem) 20-Dec-1996 rft Node/ replaced ARN_DEFAULT_INTERFACE by ArpConcrete removed ARN_RAYTRACING_INTERFACE, added to ArpRayCasting changed ARN_DEFAULT_IMPLEMENTATION to ARPCONCRETE_DEFAULT_IMPLEMENTATION changed ARN_RAYTRACING_IMPLEMENTATION to ARPRAYCASTING_DEFAULT_IMPLEMENTATION changed ARN_WRITE... to ARPINOUT_WRITE... changed ARN_READ... to ARPINOUT_READ... changed all direct fprintf/fscanfs to new ARPINOUT_WRITE.../ARPINOUT_READ... macros changed numberOfObjects, numberOfTests, numberOfHits to Arn..._numberOfObjects, ... 09-Dec-1996 rft ALL MACRO ARGUMENTS SHOULD BE PREFIXED BY A SINGLE UNDERSCORE! This will be eventually changed in all modules defining macros. Node/ changed fieldName of ArsHitGeometry: arsHit to hit (this was only possible after prefixing all macro arguments in ArsHitList.h with an underscore!!!) there is only a small number of occurrences; to find them: > fgrep '>arsHit' *.[hm] > fgrep '.arsHit' *.[hm] and of course the definition in ArsHitList.h 08-Dec-1996 rft Graphics/Box3D.h Node/ArnBBox.h ArnBBoxValid replaced by BoxFlags3D 07-Dec-1996 rft Node/ calculateRandomEmitDirection: removed argument (ArsRefraction *) refraction 05-Dec-1996 rft Node/ [RayTracer setObject :object] changed to [RayTracer setup :object :reporter] Node/ changed AreSurfaceType to ArnSurfaceType: > perl -i~ -p -e 's/AreSurface/ArnSurface/g;' *.[hm] > perl -i~ -p -e 's/areSurface/arnSurface/g;' *.[hm] ____________________________________________________________________________ AUTHORS: rft Robert F. Tobler aw Alexander Wilkie mmp Markus Probst peci Clemens Pecinovsky ____________________________________________________________________________