2001-08-24 Philippe Bekaert * DOC/: documentation changes, uses frames now. * DOC/Userguide: missing pages added + stochastic Jacobi radiosity usage finally explained. 2001-08-23 Philippe Bekaert * DOC/UserGuide/: new directory, contains user guide TODO: user guide is not yet complete. For instance stochastic Jacobi radiosity and Galerkin radiosity are not yet documented. * DOC/*.html: extensive documentation in HTML format replaces previous 0BUGS, 0COMPILEFLAGS and 0README file. * lightlist.C: COLORAVERAGE(return value of some function returning COLOR struct) construct replaced by COLOR e = return value of ... ; ... COLORAVERAGE(e) ... The SGI compiler crashes on it. 2001-08-09 * opengl.c(RenderPixels): Linux specific code. Some linux drivers did not update well. * patch.c (PatchInterpolatedFrameAtUV): Vector frame not used anymore, restored to old method. Mismatch with differentials.C possible... 2001-08-08 * All: Removed several warnings * PHOTONMAP/pmap.C+RAYTRACING/rtstochastic.C: The use of the special photonmap sampler that uses perfectly specular fresnel sampling is now an option. * RAYTRACING/bidirpath.C+spar.C+...: Changed regexp mode so that any Radiance method can be used. However no distinction is made between direct and indirect illumination anymore. It would be insteresting to include such support for all radiance methods. By defining WMP_WEIGHTS the direct/indirect readout using Galerkin becomes active. 2001-08-07 * Merge: merged my changes with philippe and pieter * RAYTRACING/rtstochastic.C: Support for Frame Coherent sampling and Pixel Correlated sampling. Same random numbers are used per frame/pixel to reduce noise over frames/pixels. * readvrml.C(viewpoint): Field of view is now copied into the renderpark camera. * Path_differentials: Path differentials support added [experimental]. Many files affected, grep on 'PATH_DIFFERENTIALS'. See 0PATHDIFFERENTIALS on how to remove the code from the source for distribution * {balanced}kdtree.C/H: Support for balanced kdtrees * Importance_driven_photonmaps: All photonmap files affected. Also added is code to display various aspects of the photon maps and irradiance precomputation for the global map. Advanced footprint based importance [experimental] can be activated by defining PMAP_ADVIMP. unifdef this for release... * ui_pathdebug.c: Only active when GI_DEBUG is defined. Allows to display some sampled paths for debugging purposes. * RAYTRACING/raymatting.C+raycasting.C: Process events for every 10th line. TODO: time based processing * RAYTRACING/raycasting.C: Made a single static instance of a raycaster. This was useful for raycasting from the photon map control panel, so that the raycaster could be interrupted. 2001-07-05 Pieter Peers * fixed bugs in Importance sampling and in weighting of environment rays. * LightList.[CH] changed avgEmittedRadiance to emittedFlux 2001-07-04 Pieter Peers * added extra field in BACKGROUND: this field keeps a ptr to the virtual patch that represents the background * Lightlist.[CH] : split EvalPDF into a _real and into a _virtual part. The first takes care of normal patches while the second handles virtual patches. (idem as 2001-07-05) * LightSampler.C & LightList.C : moved Prob of choosing a point in EvalPDF up to EvalPDF of the lightsampler (uniform and importance) 2001-06-20 Pieter Peers * prepared renderpark for position dependend backgrounds * added in RENDEROPTIONS use_background, this controls if a background image has to be displayed behind the scene (only is preview mode!!!). The background is drawn by Renderbackground() function and init by InitBackground * added RenderSetUseBackground() in rendercommon.c * added use background stuff in ui_render.c * added load background stuff in ui_file.c 2001-06-01 Pieter Peers * merged and addapted Vincents' version (included RayMatting) 2001-05-31 Pieter Peers * lightlist.[CH] removed possible error in ComputeOneLightImportance (_real) : contribution formula previously was divided by dist^4 It now is divided by dist^2 * rtsoption.C: DirectBackground sampling is now FALSE by default 2001-05-21 Pieter Peers * ui_debug.c added GetPixelRadiance, this funtion prints the radiance of a pixel (rts and bidir only). * rtstochastic.[Ch] added RTStochastic_GetPixel (returns radiance from lastscreen) * bidirpath.[Ch] added Bidir_GetPixel (returns radiance from lastscreen) 2001-05-07 Pieter Peers * lightlist.[CH] add CLightList::ComputeOneLightImportance_virtual and CLightList::ComputeOneLightImportance_real which are specialisations of CLightList::ComputeOneLightImportance 2001-05-03 Pieter Peers * RAYTRACING/lightsampler.C (CImportanceSampler::Sample) : divided point sampling on a lightsource and on the background. * RAYTRACING/rtstochastic.C : moved initialisation of gLightList from RTStochastic_Init to SRCONFIG::InitDependentVars 2001-05-02 Pieter Peers * RAYTRACING/lightsampler.C (CUniformLightSampler::Sample) : created fake hitpoint when patch is virual (at distance 1 of thisnode.m_hit) * RAYTRACING/raytools.C (PathNodeVisible) : addapted to correctly calculate intersections when a virtual patch is used (node2) 2001-04-06 Pieter Peers * RAYTRACING/lightsampler.C (CUniformLightSampler::Sample) : divided point sampling on a lightsource and on the background. 2001-04-05 Pieter Peers * adjusted LightList.[CH]. Added bool includeVirtualPatches in constructor (default = false). When set, virtual patches are includes in iterations and calculations. Otherwise they are ignored. * added IncludeVirtualPatches to change the above mentioned bool 2001-04-04 Pieter Peers * added CreatePatchVirtual in patch.c that creates virtual patches (= 0 vertices) * added IsPatchVirtual in patch.c that returns true if a patch is virtual (= 0 vertices) * added AddbackgroundToLightList in main.c that adds a virtual patch to the light list if a background is present * added background_edf.[hC] that includes an interface for making a edf of the background 2001-03-31 Pieter Peers * bug fixed (actually I forgot it ;) : background is now 'unloaded' when a new scene is loaded. 2001-03-28 Pieter Peers * Merged changes with philippes version. * added 3 new vars in rtconfig: backgroundSampling, backgroundDirect, backgroundIndirect. These control user defined options concerning background rendering. GUI also has been adjusted to accomodate these three options. 2001-05-31 Philippe Bekaert * MCRAD/nondiff.c and other files: non-diffuse first shot: handles non-diffuse light sources. TODO: no hierarchical refinement yet in first shot. * PhBRML.C: Warning and Error -> std::Warning and std::Error * RAYTRACING/screenbuffer.[CH]: . GetPixelDirection renamed into GetPixelVector (not normalised!!!) . new Set() member function for setting radiance in particular pixel * RAYTRACING/raycasting.C: GetPixelDirection call renamed cfr supra * various other very minor changes. * TODO: SERIOUS BUG: POOLS DOESN WORK ANYMORE. DISABLE IT!!!!! ====> 20010703 snapshot 2001-03-18 Philippe Bekaert * texture.[ch]: new files: RenderPark texture objects * splitbsdf.[ch]: now also has a texture, modulating diffuse relfection (can be changed easily to modulate other components) * readvrml.C: reads in standard VRML textures and creates transparent materials * MCRAD/mcrad.c|render.c: GetRadiance didn't return self-emitted radiance anymore - fixed. 2001-03-14 Philippe Bekaert * readvrml.C, PhBRML.C, PhBRMLBackground.C: changes to make it compile with newest xrml library (xrml names are now all in an xrml namespace). 2001-03-08 Pieter Peers * main.C: adjusted calculation of total_emitted_power. It now includes the power radiated by the background. * hit.c (InitHit) : added test if point/gnormal exists before filling in. * lightlist.H: CLightList_Iter::First returns NULL when no light is in list. * PHOTONMAP/pmap.C: not only has there has to be a hit, but also the material of the patch hit must exist. * RAYTRACING/bidirpath.C: endingEdf only exists if material exists * RAYTRACING/lightsampler.C: ActivateFirstUnit now returns false light exists. * RAYTRACING/sampler.H: ActivateFirstUnit now returns a boolean. Returns false when no objects exist. * RAYTRACING/sampler.C: SampleTransfer adjusted. When no hit occurs generate a PATCH with raytype as environment. * RAYTRACING/pathnode.H: replaced ends in PATHRAYTYPE enumeration into stops and environment. A function Ends() has been added that returns true when PATHRAYTYPE is stops or environment. All test in renderpark have been addapted for this. * RAYTRACING/rtstochastic.C: SR_GetDirectRadiance fixed no lightsource bug by adding boolean in ActivateFirstUnit. * RAYTRACING/rtstochastic.C: SRGetRadiance added background support. 2001-02-12 Frank Suykens * vectortype.h: Added C++ operations for VEC2D and DVEC2D, removed some typo's from the vector operations (important!!) * vector.c (VectorFrame): constructs a coordinate frame given a vector and a principal direction. The principal direction is used to choose u-v directions so that poles are evaded. * patch.c (PatchInterpolatedNormalAtPoint,...): Shading renamed to 'Interpolated' (PatchInterpolatedFrameAt[UV/Point]): Computes an interpolated frame. The frame is constructed using the dominant patch axis and 'VectorFrame'. A frame will never be in the pole of a sphere, but u-v directions can change discontinuously over discretised spheres. * canvas.c (CanvasKey): disabled 'TestGlobalLine', so that defines in ui_debug.c can be safely commented out. * adaptation.c (EstimateViewAdaptation): Extra test added if no raytracing image AND no radiance method is active. Otherwise a wrong adaptation was computed. * RAYTRACING/sampler.C (SampleTransfer): This function traces a ray for a given direction and fills in a new path node. This was shared code in many different samplers. * *.h: #ifdef __cplusplus added to several .h files 2001-02-08 Philippe Bekaert * RAYTRACING/raycasting.C: viewing direction now normalized in get_radiance_at_pixel(). * MCRAD/vrml.c: 3 fixes: - improved initalisation of vertex coordinate indices while writing - material names are converted to legal VRML Id strings by replacing illegal characters (e.g. '.' allowed in MGF) by '_' - written IndexedFaceSets always contain less than 30000 coordinates, colors and coordinate indices (not all VRML browsers can handle larger arrays ...) 2001-02-07 Philippe Bekaert * SoftIds.[CH], RAYTRACING/raycasting.C: C++ wrapper class for soft id rendering utilities in softids.[ch], split off from RAYTRACING/raycasting.C. 2001-01-31 Philippe Bekaert * readvrml.C: shaded PointSet support 2001-01-10 Philippe Bekaert * MCRAD/stochjacobi.c: crash due to very rare rounding type of error fixed. 2001-01-04 Philippe Bekaert * surface.h, compound.h: "casts" from GEOM to SURFACE or COMPOUND * MCRAD/vrml.c, writevrml.h: MCRAD writes vrml files with separate IndexedFaceSet for each surface in the scene. * material.h: radiance_data field added to MATERIAL struct * MCRAD/stochjacobi.c, coefficients.h: received radiance is now accumulated without multiplication with reflectivity of the receiver element, next pushed to the leaf elements and multiplied with the reflectivity only on the leaf elements. This solves certain artefacts when textures are used. 2001-01-03 Philippe Bekaert * surface.c: default color of a surface no longer includes the specular component. * readvrml.H: define VRML_NOPOOLS if vrml library has been compiled with VRML_NOPOOLS defined. POOLS for C++ new and delete appears to not work completely properly on some SGI's. TODO: A better, automatic detection of whether POOLS is used in the VRML library is needed. * PhBRML.C: division by WHITE_EFFICACY now also in PhBEDFSample() (noticed by Frank S.) * MCRAD/element.[ch],render.c,mcrad.c: bugfixes in . computation of average reflectance and emittance of subelements . GetRadiance function in combination with texturing 2000-12-21 Philippe Bekaert * Makefile, Config.common: install target moved back from Config.common to Makefile * MCRAD/: bugfix: reflectances and emittances were incorrect during push-pull. (bug introduced when updating the code for texturing). 2000-12-18 Philippe Bekaert * POOLS/: upgraded to newest 2.0.2 version (minor changes) * Config.common: install target added: copies rpk executable to $(BINDIR) 2000-12-15 Philippe Bekaert * readvrml.C: minor fix to make it compatible with newest PhBRML library * camera.c: CameraPrint() should now correctly print field of view (CameraPrint is nowhere being used) 2000-12-11 Frank Suykens De Laet * kdtree.C (fixDown): Bug causing photon map crashes fixed. If no crash occurred, a small error could be introduced in the photon map reconstructions. * vectortype.h: Added C++ operators for VECTOR. 2000-12-01 Philippe * ui_main, ui_file: top level window name was also set when there was no top level window (e.g. batch mode): fixed. 2000-12-01 Frank Suykens De Laet * Makefile (depend_here): Added so that only dependensies of the current directory can be recomputed. * RAYTRACING/eyesampler.C (Sample): The fake hit record now has a shading frame, which is the camera frame. * RenderPark: added window titles for dialog boxes, the load scene pattern is set to: *.??? to include wrl and mgf, but also anything with a three char suffix * uit.c (SetDialogTitle): added. Sets dialog title 2000-11-30 Frank Suykens De Laet * rendercommon.c (RenderArrow): Renders an arrow given two points, in one of the points. * ui_pathdebug.C/h: Code for visualising paths for debug purposes. * ui_debug.c (CreateDebugMenu): Added entry for path debugging. 2000-11-30 Philippe Bekaert * ui_tonemapping.c, gamma.c: proper black level and gamma calibration test[patterns and procedure (avoids high-frequency patterns as suggested on Steve Westins web page http://www.graphics.cornell.edu/~westin/gamma/gamma.html) 2000-11-29 Philippe Bekaert * PhBRML.C: better "brush" direction implemented yesterday was much worse - change undone. 2000-11-28 Philippe Bekaert * Float.H: type 'Float' renamed 'rpk_float'. All references to it have been removed (mainly GALERKIN code and transform.[ch]) * background.[ch], background_methods.h scene.[ch]: new "background" scene object can represent sky illumination or environment map * readvrml.C, PhBRMLBackground.[CH]: VRML PhBBackground node handler. * PhBRML.C: better "brush" directions. 2000-11-28 Frank Suykens De Laet * render.c (RenderAALine): Added anti aliased line drawing. A valid implementation in opengl.c and a dummy in gl.c and starbase.c 2000-11-27 Frank Suykens De Laet * render.c (RenderPoint): Check near/far plane for correct clipping. Changed in opengl.c and gl.c. * RAYTRACING/pathnode.H (class CBiPath): ReleasePaths() added. (class CPathNode): ReleaseAll(node) class method added. * RAYTRACING/pixelsampler.C (SetPixel): Only the integer nx, ny of the pixel must be given and an optional camera can be supplied. Float coords are computed in SetPixel. 2000-11-27 Philippe Bekaert * bsdf.h, edf.h and everything that depends on it (and that's really a lot): Bsdf and Edf evaluation and sampling routines now accept a HITREC parameter containing point, normal and texture coordinates instead of a separate point and normal argument before. * new BSF and EDF member functions ShadingFrame() and IsTextured() for determining the shading normal/frame at a given point and for determining whether or not a material is textured. * patch.[ch]: new routines PatchAverageEmittance() and PatchAverageNormalAlbedo() for computing average emittance and scattered power on a patch. * RenderPark finally fully supports texturing (with VRML, MGF does not know textures) * rendercommon.c: new routine for rendering coordinate frame at a point. * ui_debug: new debug button for showing shading frame at a point. * Config.common: removed obsolete includeWDRS and includeStochRay. * DEST/: out of order: needs to be updated for new BSDF/EDF interface 2000-11-24 Philippe Bekaert * vector.[ch]: VectorCompare re-implemented, now also requires tolerance. * vertex*: vertices now also have texture coordinates, vertex comparison re-implemented. * surface.[ch]: also keeps a list of vertex texture coordinates + proper computation of default color for textured patches. * patch.[ch]: new function PatchAverageReflectance computes average reflectance of each patch. * readmgf.c, namedvertex.c, vertexlist.c, readvrml.C: updated for changes above: RenderPark now reads in texture coordinates. * hit.[ch]: re-implemented: a hit record has some fields that are filled in by ray intersection routines (HIT_FRONT|HIT_BACK, hit point, geometric normal, material, distance of hit point along the ray, patch OR geometry -currently always a patch but this will change once curved surfaces are implemented). Other fields are only filled in if explicitly requested (uv parameters, texture coordinates and shading frame, including the shading normal). * patch.[ch]: new routine PatchTextureCoordAtUV() computes texture coordinates for point on a patch given by its bililear or barycentric coordinates. * material.[ch]: new function for computing the shading frame at a hit point. * PhBRML.C: new hit_projection object for smuggling RenderPark texture coordinates at a hit point to a PhBRML shader. 2000-11-22 Philippe Bekaert * readvrml.C, PhBRML.[CH]: normals are now correctly transformed + new VRML PhBAppearance node interface. 2000-11-14 Frank Suykens De Laet * IMAGE (pic.C/H, dkcolor.c/h): Added support for the radiance '.pic' radiance image format. Implemented by Olaf Appeltants, using some 3rd party code [see 0README]. * select.c (SelectPatch): Also renders the normals on the patch when selected and not only the boundary. * rendercommon.c (RenderPatchNormals): New function that renders the normals of one patch. Handles triangles and quads. (RenderNormals): external visible function, uses the new RenderPatchNormals. * RAYTRACING/rtstochastic.C (class SRCONFIG): Added debug info boolean, to trigger debug info. * RAYTRACING/sampler.H (class CSampler): Added 'DoDebugInfo' method that outputs debug information to a FILE* that can be specified in the constructor. Samplers also provide an implementation for this method. * canvas.c/h (CanvasSetMode, CanvasMouse): Added CANVASMODE_SELECT_PIXEL for selecting pixels on screen. * select.c/h (SelectPixel, SelectPixelSetCallback): Routine added similar to SelectPatcht to allow GUI functions easy selection of pixels. * ui_debug.c (TraceDebugPixelCallback): Added button and function for debugging stochastic raytracing. A pixel to be traced can be selected. * Config.common (includeBIRAD): Removed because obsolete * Makefile (RADDIRS): Removed BIRAD directories 2000-11-13 Philippe Bekaert * Private code synchronised with cvs public code. That means: everything private thrown away except: - MCRAD: directory: merge - TOOLS: copied from old private dir - DOC: copied + directory reorganised 2000-11-07 Philippe Bekaert * QMC/niederreiter.[ch], nied63.[ch], nied31.[ch]: there are two (incompatible) Niederreiter sequences now: one 31-bit and one 63-bit: . Include nied31.h and use Nied31() and NextNiedInRange31() if you explicitly want the 31-bit version (compatible with the old Nied() and NExtNiedInRange()). . Similarly, include nied63.h and use Nied63() and NextNiedInRange63() if you explicitly want the 63-bit sequence. . niederreiter.h declares Nied() and NextNiedInRange() as the 63-bit sequence unless compiled with NOINT64. . Also the routines RadicalInverse() and FoldSample() are declared public in a similar fashion now. The arguments and return values are declared as 'niedindex', which is either 'unsigned long long' or 'unsigned'. niederreiter.c contains the implementation of the Niederreiter routines and is included in both nied31.c and nied63.c since the implementation is equal, except for the data types and defined constants. * MCRAD/elementtype.h, element.[ch], stochjacobi.c, sample4d.[ch]: Updates as a conseuence of the above. * PHOTONMAP/pmap.C, RAYTRACING/samplertools.C: references to Nied() replaced by references to Nied31(), the 31-bit sequence. * MCRAD/render.c: vertex colors are now also correctly computed when displaying importance. * grid.c: all grid items are now grouped in one pool, kept for the top level grid..Before, each grid had its own pool. 2000-11-06 Philippe Bekaert * [ui_]tonemapping.[ch], opengl.c, gamma.c (new), ui_config.h, appdata.h, IMAGE/image.c, rgb.h, RAYTRACING/screenbuffer.C: . separate gamma for red, green and blue . gamma correction through table lookup (much faster than using pow() every time!) . test image for testing/determining appropriate gamma values . gamma values are saved in .rpkrc file. 2000-11-03 Philippe Bekaert * POOLS/: new version 2.0, rewritten from scratch: . (very slightly) faster and less memory overhead . new feature: named pools collect information about memory consumption in all pools in the program. * all files using POOLS: pool names introduced. * ui_debug.c: new debug button prints detailled overview of memory consumption * various fixes to make it compile without POOLS if desired. * BUG: a 31-bit Niederreiter sequence is not enough for certain scenes (e.g. SODA hall). 2000-10-27 Philippe Bekaert * QMC/niederreiter.c: overflow check * MCRAD/: stochastic Jacobi radiosity code except refinement stuff: . 3 new command line options: -srr-discard-incremental: for discarding the result of the first incremental iteration steps (reuired to make more experimental stuff to work) -srr-incremental-uses-importance: in order to use view-importance driven sampling already in the first, incremental, iteration. Experimental: may confuse the merging heuristic when changing views, or when switching importance on and off. -srr-naive-merging: in order to disable the intelligent merging heuristic and to merge the result of different iterations solely based on the number of samples. . code clean-up: many mostly esthetical changes . minor fix: vertex colors are only re-computed when stricktly needed when doing incremental radiance propagation steps + the image is updated only as long as the unshot power is more than 30% instead of 10% of the original unshot power. This saves a lot of time when rendering large scenes. 2000-10-20 Philippe Bekaert * render.c, Config.Linux, config.SGI: adapted for new versions of Linux/Mesa/offscreen rendering: in order to enable Mesa's offscreen rendering, compile with OSMESA symbol defined. 2000-10-17 Philippe Bekaert * POOLS/pools.c: some explicit casts introduced in order to make it safe on 64-bit architectures (SGI Onyx 2 at VRC centre, Vienna, Austria). 2000-10-15 Philippe Bekaert * render.[ch], rendercommon.c, MCRAD/stochrelax.c, GALERKIN/galerkin.c: OpenGL rendering acceleration techniques: hierarchical view frustum culling, sorted rendering (large patches first, smaller later + front to back), projected-size absed culling (if projected size of a collection of patches is smaller than a pixel, don't render it). 2000-10-13 Philippe Bekaert * hitlist.[ch], globallines.c: routines PrintHit() and PrintHits() made "public". * ui_debug: new item for printing all patches overlapping a pixel on the screen. 2000-10-04 Frank Suykens De Laet * kdtree.C (AddPoint): Bug fix, member initialisation added. 2000-10-04 Philippe Bekaert * patch.[ch], patch_type.h, geom.c, ray.h: ray-tracing validation: . GEOM bounding boxes are enlarged a tiny bit in GeomCreate() for more conservative bounding box culling . ray-polygon intersection test of Badouel and Schlick from Graphics Gems I and V implemented and compared with what we had . new fields and flags in HITREC struct for computing (u,v) bilinear or barycentric parameters of intersection point on hit patch . PatchUV (and internally also TriangleUV and QuadUV) now returns TRUE or FALSE whether a point lays inside the patch or not and does all computations + stores results in double floating point instead of single floating point precision. WARNING: The computed (u,v) parameters are correct only if the point is inside the patch (check return value!) . compile with LOWMEM_INTERSECT defined to use new, low-memory, but slower ray-patch intersection code, or compile with CHECK_INTERSECT in order to compare old and new strategies (for debugging). * MCRAD/stochjacobi.c: takes advantage of (u,v) parameters computed during ray-patch intersection testing if available. * MCRAD/localline.c: minimum distance to intersection set to minimum of EPSILON and source patch tolerance. * MCRAD/stochrelax.c, element.c: small changes concerning printed messages * render.c: if display list gets invalidated, don't keep showing raytracing image. 2000-09-09 Philippe Bekaert * POOLS/: is now pools library version 1.5 and can handle storage allocation over 0.5 or 1GB on Linux unlike before (thanks to Jan Prikryl) * globallines.[ch]: new files: contain a generic global line tracing engine. * ui_debug.c: everything concerning global lines redone + new method for removing overlapping patches in the model. 2000-09-04 Jan Prikryl * Config.LinuxPPC: New file. 2000-09-03 Jan Prikryl * MCRAD/stochjacobi.c (Setup): topcluster has not been set up correctly - calls ElementSetup(hierarchy.topcluster) now 2000-08-28 Philippe Bekaert * DOC/SourceCode: source code structure document updated with a description of the ray tracing methods by Frank. Moved to a separate directory now. * RAYTRACING/ScreenBuffer: WriteBuffer method now uses OpenFIle() and CloseFile() for opening/closing files with support for pipes and for compression extensions .gz, .Z, etc... * a bit everywhere: small fixes to get RenderPark compiled and running on our Solaris systems. * 0COMPILEFLAGS: new file containing a list of compilation flags 2000-08-25 Philippe Bekaert * MGF/Makefile: rule for compiling .c files to .o omitted (problem reported by Lars Grohe) * RenderPark, RAYTRACING/screenbuffer.C: small corrections * ui_raytracing.c Reproject button is not compiled in by default (toy). Compile with -DRT_REROJECT_BUTTON to get it back. 2000-08-08 Frank Suykens De Laet * PHOTONMAP/pmapoptions.H/C: Simplified & synced command line options with GUI. * RAYTRACING/rtsoptions.H/C: Separate file for stoch. rt. options. Synced command line options with GUI. * RAYTRACING/bidiroptions.H/C: Separate file for bpt options. Synced command line options with GUI. * batch.c (Batch): Modified raytracing batch processing, so that computation and image saving are separated [new function: BatchSaveRaytracingImage). Timings during batch processing is added together with a command line option, * options.h/c (Tsettrue, Tsetfalse): New option parsing types that just set a variable to true or false resp. when the option is present. Option doesn't take params. * options.h/c (MakeNStringTypeStruct): New options parsing type for strings that are copied to the destination variable [and not allocated]. A maximum length can be specified when declaring a new n-string type. 2000-07-20 Frank Suykens De Laet Merge with CVS version * CSList.H: Added some functionality: Init of lists & iterators * PHOTONMAP: Many changes. No density control in this version * RAYTRACING/lightsampler.C/H: added support to sample all lights * lightlist.C/H: added iterator support * RAYTRACING/photonmapsampler.C: improved fresnel sampling Note that the photonmap specific method requires separateSpecular. * RAYTRACING/rtstochastic.C/H, ...: Major change so that extra options were possible (all lights, separate specular) and photonmap code merged with normal SR. * ui_bidirpath.c: Disabled weighted multipass method & adaptive filtering 2000-07-05 Frank Suykens De Laet Partial merge with CVS version. Photonmap not completely merged. * phong.c/h: Added fields for average diffuse and non-diffuse albedo, check albedo > 0 for certain evaluations. This improves speed and prevents some problems. * kdtree.C/H: Faster implementation. Results are structured as a vector representation of a max heap. * radiance.h: Introduced a function type GETRADIANCE_FT for GetRadiance like functions. * raycasting.c/h: Added a C++ function 'RayCast' that raycasts into a given screenbuffer. Raycasting still shown on screen. * renderpatch.h: Added function prototype of RenderPatch * spherical.c/h (PrintCoordSys): Added a function to print a coordinate system. * spherical.c (VectorToSphericalCoord): Added limit checks to ensure -1.0 <= z <= 1.0. This was not always true. * vector.h: Added 'VECTORDIST2' macro. * xxdf.c/h: Added 'ComplexToGeometricRefractionIndex' for using real Fresnel coefficients. Fresnel stuff not yet complete. * IMAGE/image.C/H (WriteDisplayRGB): Implemented to write RGB images. * RAYTRACING/sampling.c/h: Replaced by 'discretesampling.c/h' in main directory. * RAYTRACING/all_samplers: (Sample): Added code to handle possible differences between shading and geometric normals. * RAYTRACING/all_samplers: Added code for component propagation, to see what type of bounces have taken place in a path. * RAYTRACING/pathnode.C/H (CPathNode): Added method 'EnsureNext' to facilitate extension of paths. * RAYTRACING/raycasting.C/H: Added Raycast function that allows to render in a supplied screen buffer using a supplied GetRadiance function. Old syntax still valid. * RAYTRACING/rtstochastic.C/H: Some photonmap changes. Not complete yet. * RAYTRACING/samplertools.C/H: Added a 'TraceNode' function used by TracPath but also usable separately. Some QMC sampling changes, still not optimal/finished. * RAYTRACING/screenbuffer.C/H: Support for RGB images that don't store radiance and don't need tonemapping before display. Can be saved & rendered. 2000-06-09 Philippe Bekaert * IMAGE/image.C&tiff.C: now also works if stonits is zero. Setting stonits to zero has the same effect as asetting it to 1: radiance values are written without scaling. * MCRAD/hierarchy.h: default clustering mode is now oriented clustering instead of no clustering. * MCRAD/mcrad.c: new enumerated value options parsing * MCRAD/render.c: mcr.show options (total or indirect radiance only) now (hopefully) correctly handled. * MCRAD/stochjacobi.c: other sampling sequences besied Niederreiter (including pseudo-random sampling) half implemented (not ready for hierarchical refinement) * ui_dump.c: reads/displays previously dumped radiance data. Useful for redisplaying hig dynamic range radiosity values, making false color plots, debugging etc... Dump files consist of 1 line per patch including ID + radiance fields and can be composed with the UNIX commands join and awk. * options.[ch]: new enumerated value type options. Boolean options now implemented as enumerated value type option. 2000-05-22 Frank Suykens De Laet * uit.h: There was a __cplusplus too much at the end of the file 2000-05-11 Philippe Bekaert * MCRAD/tests.c: basename changed into rpk_basename in order to avoid name conflict (thanks to Lars O. Grobe ). 2000-04-04 Philippe Bekaert * MCRAD: weighted importance sampling + various minor fixes * ui_debug.c: new debug items for locating/minotring patches, dumping MCR leaf elements, assigned previously computed radiance values or "falsecolor" data to the patches in the scene ... 2000-03-17 Philippe Bekaert * ====> internal release 000317. * BUG: on Linux, RenderPark segfaults at exit(). * TONEMAP/trwf.c: added factors WHITE_EFFICACY and M_PI until results look more or less consistent with each other and with Radiance ximage. TODO: carefully check the factors with literature. * RAYTRACING/screenbuffer.c: adaptation luminance functions now scale radiance properly by a factor of PI. * MCRAD/render.c (ElementDisplayRadianceAtPoint): does Gouraud shading for constant basis functions (if smooth shading is on in the render menu). * RAYTRACING/screenbuffer.[CH]: new functions for calculating the direction pointing from the eye through a pixel and vice versa: for determining the pixel pierced by a direction from the eye. * RAYTRACING/raycasting.C: new screenbuffer Reproject member function reprojects screenbuffer after a viewing change. Very naive and slow algorithm (10x10 oversampling, should do proper splatting). Also ray casting render() member function re-implemented. * raytracing.h and all derivatives: new Raytracing member function "Reproject" reprojects ray tracing solution after a viewing change. 2000-03-10 Philippe Bekaert * softids.[ch]: new file: software ID rendering and consorts. * opengl.c, potential.c, RAYTRACING/raycast.C: use software ID rendering if SOFT_ID_RENDERING is defined. Use this in case you have problems with hardware ID rendering. * MGF/parser.c (mg_open): small fix so that included MGF files are now hopefully again properly opened. * adaptation.[ch]/ui_tonemapping.c: estimates adaptation luminance in the current view. * raytracing.h and derivates: new method "AdaptationLuminance" determines adaptation luminance in current view. * RAYTRACING/screenbuffer.[CH]: new member functions for adaptation luminance estimation. 2000-03-09 Philippe Bekaert * =====> internal & alpha release 000309 * file.c: new file, contains routines OpenFile() and CloseFile() for opening/closing files. Recognizes file extensions .Z, .gz, .bz, .bz2. Opens the file through a pipe as appropriate. Replaces code in uit.c, batch.c, MGF/parser.c for consistent file name handling. * adaptation.c: new file: contains Jan's static adaptation luminance estimation code. * ui.c, ui_main.c: new submenu for tone mapping. * tonemapping/render: monitor calibration stuff and gamma correction moved from renderopts to tmopts. Everything concerning tone mapping is now separated from HW rendering. User interface dialog is in ui_tonemapping.[ch] (new). * config.h: "compatibility" config.h maps environment variables defined in the (old-style) Config- and Make-files to symbols defined by (new-style) configure scripts. * Again a big merge, this time really with Jan's code dated 11-jan-2000. Features: - IMAGE/: changes handling non-LogLUV libtiff - raytraced image after every n-th iteration in "batch.c" - alternate camera is saved to .rpkrc - support for ".bz" and ".bz2" extensions - CIE LUV colour conversions - tonemapping (TR, Ward, revised TR, Ferwerda) - adaptation level estimation (not working very well and probably duplicated in some parts of the code) - automatic regonition of RGB/high-dynamic tiff files by extension .logluv in "RenderScreen" - small changes in eye.*, cie.*, color.*, ui_debug.c, ui_main.c and in other files * remain TODO: - changes to GALERKIN (Gibson refinement crit.) - changes to MCRAD (concerning importance driven refinement and perceptually driven termination) - possibility to save data in display luminances] - possibility to render importance rather than radiosity - automake/autoconf (!!!) - another tonemaper adaptation (average luminance of visible patches determined using id-rendering) [appears to be in MCRAD/ - PhB] 2000-03-08 Philippe Bekaert * =====> internal & alpha release 000308 * screensampler.[CH] moved from BIRAD/ to PHOTONMAP/ * options.c: Boolean option type implemented. * tonemapping.[ch], TONEMAP/: tone mapping methods (restructured work by Jan Prikryl). replaces eye.[ch]. reference_luminance and adaptation_luminance are now in statistics.h. SetAverageLuminance() has been deprecated. ui_render.c now contains tone mapping and monitor calibration menus on top. * MCRAD/mcrad.c: command line options * merge with code Jan dated 2000/01/11. Most important visible change concerns tone mapping. (TODO: list new features) * BUG: ray tracing crashes badly on alfven (SUN) * rgb.h, RAYTRACING/bidirpath.C, Config.Solaris: minor changes in order to make it compile on Solaris with SUNs cc/CC. 2000-03-07 Philippe Bekaert * patch.c (QuadUV): now correctly clips the (u,v) parameters of points that lay slightly outside the patch to the interval (0,1). Solves more spike noise in Monte Carlo radiosity images with higher order approximations. 2000-03-06 Philippe Bekaert * MCRAD/vrml.c (McrWriteVRML): saves a model, "illuminated" by means of hierarchical Monte Carlo radiosity, in a VRML file. * MCRAD/sample4d.c (FoldSample): points to be folded are now slightly displaced as described in PhB's thesis p.255. The two least significant bits of the parameters (u,v) are lost, but the results are now fully compatible with other routines. Solves a "spike noise" problem with importance sampling and with higher order approximations. 2000-03-03 Philippe Bekaert * Merge with code Frank sinds 981113 =====> 20000303-intern release * All ray-tracing routines now take additional HITREC *hitstore argument which points to a hit record in which information about a new hit will be recorded if a hit is found. 'hitstore' will be used instead of a static HITREC struct in PatchIntersect() before. This change now allows parallel execution using OpenMP e.g. * MCRAD/: Complete re-implementation of Monte Carlo radiosity: - New implementation of stochastic Jacobi radiosity contains: . first a sequence of ("incremental") iterations in which unshot power is propagated until almost none remains. This leads to a first "complete" radiosity solution. Variance is reduced next using ("regular") iterations in which total power is propagated as in Neumann's original stochastic ray radiosity paper (Neumann et al., EGRW'95). . new variance reduction techniques: bidirectional lines, constant control variate . hierarchical refinement (includes Jan Prikryl's "generic" element hierarchy code and UI panel except view importance/perceptually-driven refinement) . view-importance: separate radiance/importance propagation, no refinement for importance, but importance-weighted radiance refinement as described in Jan Prikryl's WSCG2000 paper . higher order approximations All combinations are possible, e.g.: view-improtance drive hierarchical (*) higher-order radiosity with bidirectional lines -- (*) with power-based oracle. . (H)WDRS and old Stochastic Ray Radiosity are obsolete and omitted. . to-do's: grep TODO MCRAD/*.[ch], in particular, the rejection sampling technique for higher-order approximations needs to be merged back in (avoids spikes in certain scenes), importance-refinement, ... - New implementation of random walk radiosity: . collision gathering and 5 different types of shooting estimators (collision, absorption, survival, score at last-N, score at last-but-N) . discrete and continuous . higher order approximations . different sample number generators: pseudo-random, Halton, Niederreiter . Gathering for Free: based on multiple iomportance sampling, heuristic variance approximations or sample variance estimates . no hierarchical refinement or view-importance yet . global lines (Mateu Sbert) need to be re-incorporated again - detailled description of the algorithms can be found in Philippe's PhD thesis available at http://www.cs.kuleuven.ac.be/cwis/research/graphics/CGRG.PUBLICATIONS/PHBPHD/ 2000-02-28 Frank Suykens De Laet * BIRAD: bidirectionele radiositeit toegevoegd. Drie methodes kunnen gekozen worden: Pattanaik, Birad en Birad met secundaire contributies. Niet klaar voor distributie. Niet zo geliefd bij sommige reviewers... * PHOTONMAP: Oude photonmap code verwijderd en nieuwe toegevoegd. Code is nog helemaal niet geoptimaliseerd. Direction sampling is ook nog niet geimplementeerd, enkel opbouwen en reconstructie van belichting. Niet klaar voor distributie. * RAYTRACING/BPT: diverse fouten verbeterd, geeft nu identieke resultaten als SR, behalve aan o.a. schaduwranden hoogstwaarschijnlijk omdat de visibiliteitstesten in verschillende richtingen gebeuren en dus met andere vlakjes [front/back faces verschillen]. Misschien kan dit opgelost worden door altijd front en back te testen en een straal 'geabsorbeerd' te beschouwen als verkeerdelijk een back face geraakt wordt. Dit lost echter nog niet alles op [vb. als backfaces effectief moeten meetellen]. Adaptive filtering toegevoegd (densitybuffer) (densitykernel). Werkt met regexp's en plain BPT. * RAYTRACING/SR: photonmap tweede pas toegevoegd. Nog geen direction sampling. Niet geschikt voor distributie. 2000-02-28 Frank Suykens De Laet (Backlog) * ui_raytracing.c: File dialog box bij start raytracing afgezet. * ui_debug.c: Photon map tests toegevoegd. * splitbsdf.c (SplitBsdfSample): Foutje verbeterd: bij oproep BtdfTransmittance werden brdfflags meegegeven. Liep enkel mis sinds photonmap... * raytracing.c/h: ray_count en pix_count naar long veranderd, rt_total_time naar double veranderd om overflow te vermijden. * radiance.h: interrupt_radiance globaal gemaakt. Wordt gebruikt in BIRAD. * radiance.c: Photonmap en Birad toegevoegd/aaangepast. 2000-02-28 Frank Suykens De Laet (Backlog) * phong.c (PhongB[r|s]dfSample): gebruik cos theta sampling voor het diffuse part (PhongB[r|s]rdfEvalPdf): kies juiste richting voor de normaal, anders kunnen verkeerde pdf evaluaties gebeuren. * lightlist.C/H (LightEvalPDFImportant): functie toegevoegd, kan opgeroepen worden vanuit C. * color.h (COLORCLIPPOSITIVE): Deze macro toegevoegd. * camera.h: alternate_camera globaal gemaakt. Nuttig voor statistics e.d. * bsdf.h: Commentaar aangepast zodat nu juist aangegeven wordt dat de in/out vectoren van de patch weg wijzen. * bsdf.c (BsdfScatteredPower): Functie toegevoegd om de scattered power op te vragen met bepaalde BSDFFLAGS als parameter. Transmittance en Reflectance zijn behouden, maar zijn nu eigenlijk overbodig. Bemerk dat dit {nog} geen bsdf method is. 1999-12-02 Frank Suykens De Laet * QMC/niederreiter.h: #ifdef __cplusplus'en toegevoegd 1999-11-24 Frank Suykens De Laet * RAYTRACING/lightdirsampler.C (EvalPDF): pdf vanaf de achterkant van een lichtbron is nu nul zoals het hoort. * phong.c (PhongEdfEval): Adjusted evaluation of lightsources so that the back of the light source does not radiate. 1999-10-12 Frank Suykens De Laet * camera.c (CameraComplete): pixh en pixv variabelen werden lichtjes fout berekend. Schermoppervlak moet gedeeld worden door volledige schermresolutie en niet door 'resolutie - 1'. Hierdoor was er een lichte discrepantie tussen particle tracing en ray tracing. * RAYTRACING/screenbuffer.H (class CScreenBuffer): Vanaf nu wordt in de classe zelf een CAMERA object bijgehouden dat zou moeten overeenkomen met de camera van waaruit het beeld berekend is. Dat dit effectief zo is, daar moet de programmeur voor zorgen. * vectortype.h: In 'VECTOR' en 'VEC2D' types is een C++ specifieke sectie toegevoegd. Momenteel bevinden zich daar enkel een paar constructors gebruikt in CScreenBuffer... * vector2d.h: Operaties op 2D vectors overgenomen van Olivier Ceulemans (DEST). 1999-10-11 Frank Suykens De Laet * uit.c (CreateFileAndBrowseEntry): Functie toegevoegd om een filename formentry met bijhorende 'Browse' button te maken. * uit.c (CreateFileSelectionDialog): Als de null string wordt meegegeven voor 'open_mode' wordt dit aanvaard en wordt bij file selectie geen poging gedaan de file te openen 1999-09-28 Frank Suykens De Laet * RAYTRACING/rttools.*, ui_rtdirectlight.c, sampling.*, * rtcasting.*, rtdirectlight*, bdpathclass.*: Obsolete: removed These files can still be found in my 'rpk270999.tgz' * RAYTRACING/flagchain.C: Hardcoded reguliere expressie parsing verwijderd. De generieke werkt ok. * Makefile, *.sed, release.cmd: Basic Release management toegevoegd. Een 'make RELEASEPATH=/eenpad release' copieert de sources, filtert code en voert dan enkele commando's uit in de nieuwe source tree (zie release.cmd). 1999-09-27 Frank Suykens De Laet * error.h: Verscheidene macro's toegevoegd ivm. floating point problemen: NaN en Inf tests, prints en core dumps (test een float en core dumped als hij fout is). 1999-09-17 Frank Suykens De Laet * RAYTRACING/specularsampler.C, rtstochastic.C: een klassieke raytracing sampler toegevoegd. Sampled een glossy of specular component alsof het perfect speculair was. Ingebouwd in stochastische raytracing. * RAYTRACING/screenbuffer.C: Memory leak uit destructor gehaald. 1999-08-10 Frank Suykens de Laet * RAYTRACING/flagchain.C: Generieke regexp parser toegevoegd. 1998-12-30 Frank Suykens de Laet * RAYTRACING/spar.C, bidirpath.C: Toevoeging weighted multipass method. Werkt alleen samen met GALERKIN * GALERKIN/galerkin.c, element.c/h, interaction.c/h, ...: Toevoeging weighted multipass method: Berekening partial weights en aparte evaluatie van directe en indirecte radiantie. Het symbool FSK_WEIGHTS zondert de betrokken code af. 1998-11-30 Frank Suykens de Laet * bsdf.[ch] : BsdfEvalComponents toegevoegd. Deze routine evalueert de bsdf voor elke bsdf vlag afzonderlijk en steekt het resultaat in aan array. De complete bsdf eval (alle flags) wordt teruggekeerd. De routine roept voor elke vlag apart BsdfEval op. Voor materialen met veel verschillende 'flags' is dus dus niet zo efficient... * RAYTRACING/flagchain.C, spar.C, bidirpath.C: Invoering pad evaluatie op basis van reguliere expressies. (Datum klopt niet) 1998-11-24 Frank Suykens de Laet * camera.c (CameraCompare): Nieuwe functie om camera's te vergelijken. * ui_file.c (LoadRecentFile): als de file loader zelf een nieuwe camera instelling opzet, wordt deze eerst op de stack gepushed, voordat de recent file camera wodrt gezet. Met Restore in het camera menu kan je dan de default cam in de file herstellen. 1998-11-16 Frank Suykens de Laet * RAYTRACING/samplertools.C (PathNodeConnect): de geometry factor kon soms negatief worden. Nu is hij altijd positief. 2000-03-02 Philippe Bekaert * potential.c (SoftUpdateDirectVisibility): direct visibility determination using ID rendering based on the SGL library. Will be used instead of hardware ID-rendering if the program is compiled with -DSOFT_ID_RENDERING. Faster than software Mesa on Linux and avoids troubles related with X window depth configuration. 2000-03-01 Philippe Bekaert * main.c (ReadFile): before reading a new scene, the current raytracing and radiance methods are now terminated by switching them off (SetRadianceMethod(NULL)). Radiance/raytracing initialisation of a new file is now done by switching the radiance/raytracing method back on after reading the file. Reason: now, Radiance->CreatePatchData can assume that the scene is fully read (e.g. patches do have a surface pointer: they didn't have a surface pointer yet before while reading a new scene). 2000-02-29 Philippe Bekaert * MCRAD/hierarchy.h: hierarchy struct: index_offset field omitted, new field tvertex_elimination. * patch.c (QuadUV): uv-boundary checking disabled with QUADUV_CHECKBOUNDS symbol 2000-02-21 Philippe Bekaert * patch.c: QuadUV() fixed. Solves a bug when rendering PhBexample2.wrl (1998-09-22), a bug that was previously attributed to ray-tracing (big thanks to Jan Prikryl!) 2000-01-28 Philippe Bekaert * MCRAD/: stochastic Jacobi routine updated to operate on ELEMENTs instead of PATCHes (step towards incorporation of hierarchical refinement). higher-order approximations and control variates temporarily disabled. 2000-01-21 Philippe Bekaert * PhBRML.C (cvtcol): now correctly takes -DRGBCOLORS into account 1999-10-05 Philippe Bekaert * GALERKIN/newformfactor.c: new QMC form factor computation methods: uniform area sampling, uniform direction sampling and weighted area sampling. Works fine with hierarchical refinement, but no higher order approximations nor clusters yet! 1999-10-03 Philippe Bekaert * ui_camera.c (ToggleAlternateCameraCallback): small fix: switching between primary and alternate camera now "invalidates" ray-traced image. 1999-10-02 Philippe Bekaert * main.c (ReadFile): fclose not called if FILE *input = NULL: solves a crash on certain Linuxes. * MCRAD/stochjacobi.c: when using higher order approximations, ray origin is chosen with probability proportional to the radiosity rather than uniformly: solves stability problem of stochastic relaxation with higher order approximations. 1999-10-01 Philippe Bekaert * MCRAD/randwalk.c: constant control variate for gathering random walk radiosity implemented. 1999-09-30 Philippe Bekaert * MCRAD/: different types of shooting random walk estimators implemented: collision, absorption, survival, score at last but N, score at last N. * radiance.h: 1) Create/Print/DestroyGeomData members as well as UpdateDirectPotential removed: not useful or there are good alternatives 2) new UpdateControlPanel() member: updates control panel in order to correctly reflect radiance method state variables before popping up. * Config.common, Makefile(s): "make depend" now without optimisation, profiling or debug flags. Per directory flags belong in THISLIBFLAGS, linker flags in THISLIBLDFLAGS and libs in THISDIRLIBS. _CFLAGS, _LDFLAGS and _LIBS makefile variables do not exist anymore. 1999-09-29 Philippe Bekaert * MCRAD/: random walk radiosity: shooting, gathering, first shot, higher order approximations. Numerous changes to stochastic relaxation radiosity code in order to allow optimal code sharing. 1999-09-28 Philippe Bekaert * MCRAD/: importance-driven stochastic relaxation radiosity. * potential.[ch], patch*: new routine UpdateDirectVisibility() determines (using ID-rendering) which PATCHes in the scene are visible in a view and which are not. The result is stored in a patch flag which can be checked with the PATCH_IS_VISIBLE(patch) macro. 1999-09-23 Philippe Bekaert * render.c: small corrections, e.g. RenderIds(0 restores drawing in the draw buffer that was active when it was called instead of always switching to front buffer drawing. * MCRAD/: stochastic relaxation radiosity with higher order approximations implemented. 1999-09-22 Philippe Bekaert * MCRAD/: stochastic relaxation radiosity improvements: gathering for free, constant control variate, QMC sampling. * CAVEAT: constant control variate does not work well in combination with two-sided surfaces, non-closed models and models containing surfaces that do not receive any light. This is a fundamental limitation of the control variate technique. Therefore, the use of control varite sampling is off by default. 1999-09-17 Philippe Bekaert * render.c (RenderPixels): uses RGBA pixel format + 8-byte alginement now. Un-aligned RGB caused crashes now and then on certain platforms + 8-byte aligned RGBA may "unpack" faster. Images are rendered as a block now, using one call to DrawPixels() instead of line by line. 1999-09-16 Philippe Bekaert * MCRAD/stochrelax.*: new implementation of stochastic relaxation radiosity algorithms: no "warming up" problem as in WDRS, but no need to ever unshoot energy or keep a ray count unlike WDRS. Also contains better heuristic for choosing the initial number of rays. Only basic, non-hierarchical algorithm as yet. * RAYTRACING/raycasting.[Ch]: hardware-assisted "ray casting" (uses Z-buffer and ID-rendering for visibility calculations). Significantly faster and easier to use than stochastic ray tracing + no eye ray jitter. Contains a routine 'RayCast()' that can be called from within a radiance method or whereever in order to ray-cast the current result. * radiance.c, raytracing.c: addition of the new radiance and raytracing methods. * RAYTRACING/pixelsampler.[CH]: failed attempt at incorporating ID-rendering: it works, but no speed-up (the ray-tracing code is simply too good ;-). * uit.c: small correction in handle_fet_type() due to Frank S. 1999-07-20 Philippe Bekaert * grid.c, gridP.h (RandomRayId): old definition of RandomRayId() could interfere with the use of srand48() in other places (problem reported by Jan Prikryl). 1999-01-26 Philippe Bekaert * IMAGE/tiff.C: improved stonits value for high dyanmic range tiff. 1999-01-18 Philippe Bekaert * readmgf.c: check for invalid color specifications (due to Jan.Prikryl@cg.tuwien.ac.at) and material specifications. Lost probleem ivm renderen van hospitaal scene op. 1998-12-23 Philippe Bekaert * readmgf.c: 'monochrome' variable deleted (is global file loading option in fileopts.h) * various other tiny changes in order to avoid some compiler warnings. 1998-11-13 Philippe Bekaert * readvrml.C, PhBRML.[CH]: VRML importer revised for VRML-981113 library version 1998-10-14 Philippe Bekaert * render.[ch], ui_render.c: nieuwe functie RenderSetLineWidth() + button en dialoogvenster om line width voor outlines etc... in te vullen. 1998-09-30 Philippe Bekaert * color.c, cie.h, readmgf.c, PhBRML.c, IMAGE/tiff.C: input light source emittance wordt gedeeld door WHTEFFICACY voor conversie lumen/m^2 naar Watt/m^2. Bij uitvoer (tone mapping, wegschrijven high dynamic range tiff) wordt radiance vermenigvuldigd met WHTEFFICACY voor conversie van W/M^2sr terug naar nits. WHTEFFICACY is gedefinieerd in cie.h. M.a.w.: berekeningen gebeuren van nu voort in radiometrische grootheden zoals het hoort, met conversie van en naar fotometrische grootheden waar gewenst. 1998-09-25 Philippe Bekaert * EDF en BSDF interface veranderingen: - extra parameter namelijk het punt waar deze geevalueerd etc... moeten worden - behalve indexOfRefraction routines: deze verdwijnen in de toekomst als MEDIA worden geintroduceerd - inkomende richting voor BSDF omgekeerd * RAYTRACING/bsdfsampler.C: inkomende en uitgaande richting verwissed bij iedere BsdfEvalPdf call. * BUG: Resultaat met niet reciproke BSDF is zinvoller dan tevoren, maar nog niet bevredigend. Vermoedelijk moet een van de gegeven richtingen nog omgekeerd worden. * BUG: ui_material.c eruit gelaten. Is helemaal kreupel. 1998-09-22 Philippe Bekaert * fileopts.h, main.c, readmgf.c, readvrml.c, ui_file.c: model input options zijn niet meer MGF specifiek maar gelden ook voor VRML. * grid.[ch]: grids hebben eigen kopie van bounding box, die iets groter gemaakt is om problemen ivm roundoff error op te vangen. * BUG: sommige scenes, vb PhBExample2.wrl vertonen nog steeds foutieve raytracing. * opengl.c: correctie ivm outline drawing in display lists. * MCRAD/rwrad.c: mutual information van de scene wordt berekend bij multipath methode. 1998-09-20 Philippe Bekaert * material.[ch]: brdf en btdf velden uit MATERIAL struct weggelaten. Gebruik enkel de BSDF interface in het vervolg! * readvrml.C: begin gemaakt met importeren van PhBRML surfaces. 1998-09-11 Philippe Bekaert * ====> interne en publieke snapshot 980911. * spectrum.h, rgb.h, color.[ch], readmgf.c, cie.c, RAYTRACING/screenbuffer.C: COLOR type geherdefinieerd als struct waarin een array van floating point getallen. Maakt het eenvoudiger met verschillende kleurvoorstellingen te werken. Berekeningen gebeuren van nu voort per default in CIE XYZ ruimte ipv monitor RGB. * radiance.h, radiance methoden: nieuwe functie RecomputeDisplayColors in interface herberekent display colors gegeven eventueel aangepaste gamma facotr, brightness adjustment, monitor primaire kleuren en wit punt. * render.[ch], rendercommon.c, ui_render.c: nieuwe parameters brightness_adjust en monitor primaries kleuren en wit punt voor conversie XYZ kleuren zoals berekende radiantie naar display RGB. Gamma correctie prompt dialoog venster is vervangen door uitgebreid monitor calibratie dialoogvenster. 1998-09-08 Philippe Bekaert * readmgf.c, cie.c: color conversies opgekuist. * raytracing.h, RAYTRACING/...: raytracing interface uitgebreid met routines om laatste beeld terug te displayen, te saven, en op te kuisen. * ui_raytracing.c, render.h, rendercommon.c, opengl.c: aanpassingen om geraytracete beeld op scherm te laten staan na expose events etc... * BUG: irisgl.c en starbase.c ook aangepast maar ONGETEST! * canvas.[ch]: nieuwe routines CanvasPostRedraw() en CanvasCancelRedraw() om overbodig rerenderen te vermijden. * ui_file.c: call naar RenderNewDisplayList() vergeten na inladen nieuwe scene - gefikst 1998-09-04 Philippe Bekaert * ====> interne snapshot 980904 * readmgf.c, cie.c, eye.c, ... : interpretation of MGF colors is now consistent with radiance. COLORS APPEAR DIFFERENT THAN BEFORE because of this! * edf.h, phong.c, ... : selfemitted radiant exitance was taken for exitant radiance: all illumination was a factor PI to intense. Corrected. Resulting computed illumination values now are comparable with those of Radiance. This has no impact on the images shown by RenderPark, only in high dynamic range image output. 1998-09-03 Philippe Bekaert * patch_type.h: patches bevatten nu ook pointer naar patch "aan de achterzijde" ingeval dubbelzijdig oppervlak * patch.[ch]: PatchDontIntersect(): neemt nu tot 4 patches aan waarmee intersectie genegeerd moet worden. * RAYTRACING/raytools.C: verbeterde vermijding van zelfintersecties door expliciet patches uit te sluiten ipv met minimum intersectie- afstand te werken. * Merge met code Frank sinds 980828 1998-09-02 Philippe Bekaert * opengl.c: probleem ivm canvas resize (hopelijk) opgelost (zie 1998-08-28 BUG) 1998-09-02 Frank Suykens de Laet * RAYTRACING/raytools.C (TraceWorld): Bij het tracen van een straal is nu een minimum afstand EPSILON ingesteld dat het hitpoint verwijderd moet zijn van het begin punt. Nu werken double sided surfaces zonder problemen * GENETIC/, PARTICLE/, PHOTONMAP/ terug ingevoegd 1998-08-28 Philippe Bekaert * merge met code Frank ====> snapshot 980828 * Config.common, Config.site, Makefiles: Config.common bevat nu defaults voor alle Makefile variabelen. Config hernoemd naar Config.site. Bijhorende verandering in Makefiles + install en uninstall targets. * render.h: interface veranderd: SaveScreen neemt nu filenaam, FILE * en ispipe vlag. ImageOutputHandlers worden gebruikt voor het saven van een beeld in meerdere formaten. * IMAGE: updates * BUG report by phil@graphics.cornell.edu: raytracing window contents are sometimes trash. 1998-08-28 Frank Suykens de Laet * RAYTRACING/pathnode.C (GetMatchingNode): Klein foutje verbeterd dat kon optreden bij geneste transparante materialen. * RAYTRACING/screeniterate.C (ScreenIterateProgressive): Progressief renderen aangepast zodat geen halve lijnen meer getekend worden. * RAYTRACING/bidirpath.C (HandlePath_X_X) Crashbug : Soms kan het zijn dat importance sampling van de lichtbronnen, geen enkel gesampled licht oplevert. Nu wordt alles mooi hersteld. 1998-08-27 Philippe Bekaert * raytracing.c: new function RayTrace() initiates ImageOutputHandle + performs raytracing. Common raytracing stuff for interactive and batch processing. * raytracing.h, ui_raytracing.c, RAYTRACING/screenbuffer.[HC], rtstochastic.C, bidirpath.C: RayTrace() method takes ImageOutputHandle * argument now instead of FILE *. * IMAGE/: new library for writing image output in several formats. Currently supported are PPM and TIFF (both LZW-compressed RGB and Greg W. Larsons' SGI LogLuv high dynamic range format). * TOOLS/, PNM/, ui_debug.c: moved back in. * NON_PUBLIC: lists files that are not suited for inclusion in public snapshots and releases. 1998-08-21 Philippe Bekaert * =====> PUBLIC RELEASE RenderPark "Leuven By Night" v980821 * starbase.c: updated to be in sync with the other drivers * several small changes in order to avoid compile warnings. 1998-08-18 Philippe Bekaert * unused source files deleted * RAYTRACING/raytools.C: bugfix by Frank. 1998-08-14 Philippe Bekaert * Config.common, Makefiles: bevat platform onafhankelijke configuratie parameters en defaults voor platform afhankelijke configuratie parameters. Op dit ogenblik: welke radiantie en raytracing methoden ingecompileerd moeten worden en welke niet, alsook default bevel op web browser op te starten + default URL voor RenderPark home pagina en online documentatie * radiance.[ch], ui_radiance.c: instellen van defaults, command line optie parsing, creatie control panel, methode namen etc... zijn nu opgenomen in RADIANCEMETHOD struct. Om een radianteimethode toe te voegen moet enkel nog 'e'en tabel aangepast worden in radiance.c + Makefiles aanpassen natuurlijk. * raytracing.[ch], ui_raytracing: analoog RaytracingMethod pointer herdoopt tot Raytracing, zoals Radiance. alle Raytracing herdoopt tot RayTracing. * kleinere aanpassingen om compiler warnings te vermijden op Linux met gcc-2.7.1 en egcs-1.0.3. 1998-08-13 Philippe Bekaert * bijna(?) klaar voor publieke release, alle soorten uitgelaten prive onderzoeksstuff moet weer toegevoegd worden (uit 980707 versie) na publieke release. * ui_help.c: nieuwe buttons om HTML documentatie en home page te bekijken. Default webbrowser commando en URLs in Config files. * MCRAD: qmcpt herdoopt tot rwrad (Random Walk RADiosity) * RAYTRACING: command line opties * HURA: HURA wordt ingecompileerd als HURA vlag gedefinieerd is. * en nog overal cosmetische veranderingskes. * Merge met code Frank sinds 980309 1998-08-11 Frank Suykens de Laet * RAYTRACING : Complete rewrite of stochastic raytracing and bidirectional path tracing. Klassieke raytracing nog niet klaar, final gathering is evenwel mogelijk ! * opengl.c, bounds.c, vector.h : Voorzieningen getroffen om alle VECTOR en POINT variabelen met 1 define in double om te zetten. Voor wanneer er twijfel bestaat over de nauwkeurigheid. * camera.c/h : velden pixh, pixv en tanhfov, tanvfov toegevoegd. Deze velden worden automatisch ingevuld in CameraSet. * appdata.h, ui_config.h, ui_file.h: aantal recente files verhoogd tot 6. * error.h : definitie van NULL wordt overgeslagen voor C++ files. Dit gaf namelijk type errors. * main.c, raytracing.c : Een init method voor raytracing methodes werd toegevoegd. Bv. voor initialisatie van lightlist's e.d. * lightlist.C/H : importance sampling toegevoegd. Hiermee wordt een lichtbron gekozen, afhankelijk van een opgegeven punt en normaal. * splitbsdf.c/h : Implementatie van een bsdf die gebaseerd is op het combineren van een btdf en brdf. Dit mogen algemene brdf's en btdf's zijn. * xxdf.h : bsdf component definities toegevoegd. BTDF indices verbeterd. * bsdf.c/h : Eens bsdf bepaalt de licht verstrooiing op een oppervlak voor de hele bol rondom een punt op het oppervlak. Deze files geven een basis framework voor bsdf implementaties analoog aan brdf's en btdf's. * phong.c : sampling voor phong btdf en brdf toegevoegd * brdf.c : brdf sampling en pdf evaluation toegevoegd * btdf.c : btdf sampling en pdf evaluation toegevoegd 1998-04-27 Frank Suykens * lightlist.C (Sample): foutje uitgehaald wanneer door afrondingsfouten voorbij de lijst gesampled werd. 1998-03-11 Frank Suykens * lightlist.C (CLightList): light list klasse toegevoegd om gemakkelijk lichtbronnen te kunnen sampelen. 1998-03-10 Frank Suykens * bidirpath.C : LightList samplen was fout als er meerdere lichtbronnen waren. Fixed. 1998-08-04 Philippe Bekaert * pools-1.4: nieuwe versie van de pools bibliotheek in gebruik genomen. * GALERKIN/: max.nr of elements parameter veranderd in relative minimum element area (consistent met WDRS radiosity) 1998-08-03 Philippe Bekaert * patch.c, polygon.c, Makefile: oude gestolen rayshade code in polygon.c geelimineerd. Andere routines in polygon.c naar patch.c verhuisd. M.a.w. polygon.c bestaat niet meer. 1998-07-10 Philippe Bekaert * rendercommon.c: command line options * GALERKIN/galerkin.c: command line options * options.c: typeless opties kunnen nu een 'client-data' waarde doorspelen naar action routines. * radiance.c: 'World-space radiance' -> 'Object-space radiance' * raytracing.c: 'Raytracing options' -> 'Pixel-driven radiance ...' 1998-07-07 Philippe Bekaert * QMC: nieuwe directory met QMC sample generators uit MCRAD * DEST/, SE/: Olivier Ceuelemans' density estimation implementatie. 1998-06-18 Philippe Bekaert * MCRAD/faure.[ch], sobol.[ch], scramhalton.[ch]: nieuwe QMC sequenties (Stijn Tastenhoye) * MCRAD/stochray.c, wdrs.c, qmcpt.c, qmcptP.h, ui_qmcpt.c: command lines opties + aanpassingen ivm uitgebreidde keuze QMC sequenties. 1998-05-12 Philippe Bekaert * ipc.[ch], ui_main.c: Inter Process Communicatie om RenderPark te besturen [Koen Deforche] * main.c, rendercommon.[ch], readmgf.[ch], readvrml.[CH], radiance.[ch], raytracing.[ch], radiantie- en raytracing methoden: aparte routine voor instellen van default(), wordt opgeroepen vanuit Init() in main.c. * rendercommon, readmgf, readvrml: command line optie routines 1998-05-07 Philippe Bekaert * canvas.c: external canvas Expose and ButtonMotion event compressing * ui_radiance.c: continue radiance berekeningen worden nu zonder Xt WorkProcedure gedaan (work procedures kunnen niet elegant behandeld worden ingeval external canvas + interactieve mode omdat XtNextEvent() niet gebruikt kan worden.) 1998-05-06 Philippe Bekaert * ui_main.c, canvas.c: mouse button events op external canvas kunnen nu ook opgevangen worden (als ButtonPress event op canvas window nog niet wordt behandeld) + optie '-create-test-canvas' met bijhorende routine om test canvas te creeren. * MCRAD?qmcpt.c: basename functie/variabele hernoemd naar unieke naam (suggestie van Koen Deforche ivm egcs etc...). * gl.c: external canvasses geimplementeerd voor Iris GL. * diverse kleine correcties om compilatiewaarschuwingen te vermijden. * BUG: raytracing werkt niet naar behoren na external canvas resize. Dit is een probleem met Mesa-2.5. Workaround: progressive tracing afzetten. Niet-progressieve tracing werkt nl wel. Het probleem doet zich niet voor met SGI OpenGL, noch met NPGL op Solaris. 1998-05-05 Philippe Bekaert * ui_main.c, canvas.c, opengl.c: event handling voor extern canvas window + offscreen rendering (enkel met Mesa) 1998-05-04 Philippe Bekaert * main.c, ui_main.[ch], radiance.c, raytracing.[ch], alle ui_%%%.c en overeenkomstige %%%.[chcH] files: routines voor parsing van command line opties ingevoerd + instellen defaulst gewijzigd (defaults worden ingesteld door de routine die command line argumenten parst omdat bij batch rendering geen interface gecreerd wordt, waarbij vroeger de defaults ingesteld werden). Command line parsing voor zogoed als geen enkele radiance of raytracing method volledig geimplementeerd. Aanpassingen ivm batch rendering en rendering in extern canvas window. * GALERKIN/galerkin.c: WriteVRML method geimplementeerd. Fri May 1 00:12:57 1998 Philippe Bekaert * main.c, radiance.c, camera.c, MCRAD/hwdrs.c: command line options * options.[ch]; nieuwe command line option value types 1998-04-30 Philippe Bekaert * options.[ch]: command line option processing routines * main.c, ui_main.c: aanpassingen ivm command line option processing. 1998-04-27 Philippe Bekaert * Merge met code Frank sinds 980309 ====> versie 980427 1998-03-11 Frank Suykens * lightlist.C (CLightList): light list klasse toegevoegd om gemakkelijk lichtbronnen te kunnen sampelen. 1998-03-10 Frank Suykens * bidirpath.C : LightList samplen was fout als er meerdere lichtbronnen waren. Fixed. 1998-04-21 Philippe Bekaert * patch.c: PatchInitRaytracing(): patches met middelpunt op (ttz dichter dan patch->tolerance) een rand zullen altijd beschouwd worden als "niet geintersecteerd" door gelijk welke straal. * MCRAD/qmcpt.c,ui_qmcpt.c,qmcptP.h: expliciete berekening van vormfactormatrix m.b.v. global lines geimplementeerd. Kan gebruikt worden om de vormfactormatrix expliciet te dumpen voor analyse etc..., niet nuttig voor belichtingsberekeningen. Wordt aangezet door te compileren met -DFORMFACTORS. 1998-04-17 Philippe Bekaert * MCRAD/hwdrs.c,element.c,wdrs.h,ui_wdrs.c: ray caching geimplementeerd + exactere delete ray operaties + uitvoer van hierarchische mesh in MGF formaat + whitetest en stat functies voor performantiemetingen + hierarchische verfijning kan afgezet worden in controle paneel. 1998-04-16 Philippe Bekaert * uit.c, ui_*.c: Boolean *valid parameter van CreateFormEntry() of CreatePromptDialog() moest in vele gevallen een static zijn (veroorzaakte een crash bij het editeren van invulvelden). Functies zijn aangepast zodat ook een NULL pointer doorgespeeld kan worden. 1998-04-15 Philippe Bekaert * MCRAD/qmcpt.c: afrondingsfout gefikst in MakeLightSamplingTable() + binair zoekalgoritme voor LightSource() in plaats van lineair. 1998-04-10 Philippe Bekaert * canvas.c, opengl.c, irisgl.c, starbase.c: crearen canvas window gewijzigd: roep CreateCanvasWindow() aan i.p.v. RenderCreateWindow(). - canvas.[ch]: muis conventies voor navigatie gewijzigd (zijn nu identiek de WALK viewer conventies in CosmoWorlds): button1: rechts/links draaien / vooruit/achteruit bewegen button2: boven/onver/links/rechts bewegen button1 en button2 terzelfdertijd: boven/onder/links/rechts draaien - button3 dient om canvas popup menu te activeren (was tevoren niet mogelijk wegens interferentie met sommige window managers). * camera.c: CameraMoveForward(): beweging blijft in horizontaal vlak. * uit.c: niewe funcites CreateHelpSubMenu() en CreateScrolledWindow() * ui_help.c uitgeklaard. * RenderPark resource file: default times font ingesteld + patterns voor saveImageBox, saveModelBox en loadBox file selection boxes. Tue Apr 7 21:52:46 1998 Philippe Bekaert * transform.[ch]: opgekuist + nieuwe functie RecoverRotation() om rotatie-as en hoek te bepalen uit rotatiematrix * writevrml.c: saven van viewpoints (hopelijk) in order nu. 1998-04-03 Philippe Bekaert * radiance.[ch] en rendering methodes: nieuwe methode "WriteVRML" om berekende belichting te saven in VRML formaat voor specifieke rendering algoritme. Indien de methode NULL is, wordt de default methode genomen (zoals bij renderen met hardware). Enkel GALERKIN en HWDRS hebben eigen VRML saving functie. GALERKIN VRML save functie moet nog geimplementeerd worden. * writevrml.[ch]: default methode voor wegschrijven van model in VRML2 formaat rekening houdend met rendering opties backfaceculling en smooth shading. 1998-04-02 Philippe Bekaert * grid.c: probleem vastgesteld met whitelab scene en global lines op Linux (cfr. 1998-03-23). NOG NIET GEFIKST!!!! * vertex_type.h: extra veld 'tmp' ingevoerd. Nodig om ids bij te houden voor saven VRML model. * MCRAD/element.c: verschillende bugs gefixt ivm analytische form factoren. Werkt nog altijd niet betrouwbaar op bvb cube.mgf. 1998-03-27 Philippe Bekaert * ui_debug.c: More... button ingevoerd waarmee actief (door polling) op user input gewacht kan worden . Om iets stap voor stap te debuggen bijvoorbeeld. Werkt niet + geeft Warning op SGI. * shaftculling.[ch]: nieuwe functies GeomShaftFullVisibility() en PatchShaftFullVisibility() doen "shadow"-test voor shafts: gegeven TRUE terug indien volledige zichtbaarheid en FALSE indien er occluders zijn, zonder een candidaat occluder list op te stellen. Opm: shaftculling is niet volledig betrouwbaar!!! 1998-03-23 Philippe Bekaert * MCRAD/*qmcpt*: Mateu Sbert's multipath code toegevoegd. Quasi monte Carlo Radiosity herdoopt tot "Random Walk Radiosity". * grid.c: bug ivm afrondingsfouten gecorrigeerd in EngridItem() door bounding boxes wat te vergroten. 1998-03-13 Philippe Bekaert * MCRAD/hwdrs.c,element.[ch],ui_wdrs.c,wdrsP.h: hopen aanpassingen ivm experimenteren met verschillende verfijningscriteria. * GDT/List.h, DList.H: ForAllInList macros aangepast zodat lijst argument slechts een maal geevalueerd wordt. * Config.Linux: HWLIBS per default leeg gelaten ipv per default glide lib aan te namen. * hitlist.h: C++-safe gemaakt. 1998-03-09 Philippe Bekaert * merge met code Frank sinds 14 october 1997 ===> release 980309 * MCRAD/element.c, ui_wdrs.c: aanpassing ivm WDRS methode waarin links wel expliciet worden bijgehouden + smoothness based refinement. * spherical.c: domme fout in SampleHemisphericalCosNTheta() gecorrigeerd. (fout gerapporteerd door Mateu Sbert) Oct 97 - Feb 98 Frank Suykens * GDT/CSList.[CH] : small error corrected. Now compiles with SGI cc and egcs. * GENETIC/* : start of genetic rendering. Do not distribute. * RAYTRACING/bdpathclass.[CH], bidirpath.[CH], ui_bidirpath.c : Bidirectionele path tracing met multiple importance sampling. Volledige implementatie (cfr. Ph.D Veach). * RAYTRACING/rtstochastic.[CH] : Converted all calculations to double precision. Restored N.E.E. for specular surfaces. Works better. Still better is bidirectional path tracing with maximum light length set to 1. (Uses multiple imp.s.) * RAYTRACING/rttools.C : progressieve raytracing. Scherm wordt in blokken gerenderd. Blokken worden kleiner gemaakt tot ze 1 pixel beslaan. Finale oplossing duurt even lang als tevoren. ID rendering werkt voorlopig niet meer !!! * PHOTONMAP/* : implementatie van de photonmap. Nu wordt enkel de photonmap nog maar opgebouwd. Rendering met photonmap nog niet volledig. De photonmap code kan ook gebruikt worden voor particle tracing. * spherical.c : SamplehemisphereCosNTheta was fout, sin_theta werd fout berekend (mist een sqrt). * **df.[ch], phong.[ch], spherical.[ch], vector.h, Support voor functies met DVECTOR's (double vectoren) zowel voor sampling als b*df evaluaties. 1998-03-04 Philippe Bekaert * main.c (ReadFile): bugfix: Radiance->Terminate() werd niet opgeroepen bij inladen van een nieuwe scene. * MCRAD/hwdrs.c en consoorten: begin gemaakt aan implementatie bijhouden links in HWDRS methode. * grid.c: recursieve grids geimplementeerd. 1998-03-02 Philippe Bekaert * grid.c: GridIntersect() herschreven (5-10% meer efficient), nieuwe functie AllgridIntersections() om alle intersecties volgens een lijn te vinden. * geom.[ch], geomlist.[ch], compound.c, surface.c, patchlist.[ch]: nieuwe functies ivm tracen van globale lijnen. * render.h, opengl.c, gl.c: nieuwe functie RenderPoint() om punt om scherm aan te duiden. 1998-02-27 Philippe Bekaert * tussentijdse release =====> 980227 * ui_camera.c: bugske ivm canvas resize en toggle-alt-camera opgelost. * opengl.c: RenderIDs() aangepast zodat die nu ook werkt op de MXI 12+12+12bits en SI 5+5+5bits framebuffer (importance-driven radiosity kan weer gedemonstreerd worden). * render.h, opengl.c: nieuwe functie RenderFinish() om te wachten tot alle gegeven graphics commandos zeker zijn uitgevoerd. * select.c: patch boundary van geselecteerde patch verscheen niet tijdig op het scherm op SGI. Opgelost met RenderFinish() functie. Wed Jan 28 17:12:55 1998 Philippe Bekaert * uit.[ch]: nieuwe routines voor file selection box, prompt dialog, installen/inlezen van label strings, ... * ui_*.c: aanpassingen ivm nieuwe versie uit + opsmuk * render.h, gl.c, opengl.c, rendercommon.c, ui_*.c, main.c: display lists om sneller te renderen. Nog geen display list ondersteuning voor starbase. * MCRAD/element.c: met MIPSPro C compiler op SGI zijn chars per default unsigned. childnr veld van ELEMENT struct type veranderd naar signed char. Lost oneindige lus in hwdrs op. * GDT/CSList.H: geprutst met "friend" declaraties en "public/private" dingessen tot ie eindelijk wou compileren met egcs-1.0/gcc-2.8/MIPSPro C compiler. Tue Jan 6 12:33:55 1998 Philippe Bekaert * lightmetering.c: belichtingsmeting voor correctere radiantie->RGB omzetting. * GALERKIN/raphier.c: enkele kleinere correcties Fri Nov 14 12:55:34 1997 Philippe Bekaert * MCRAD/qmcpt.c: aangepast voor oplossing van zowel discreet als continu probleem, zowel met random sampling als met QMC sampling zoals in wdrs. * MCRAD/element.c: clustering geimplementeerd. * GALERKIN/raphier.c: Hierarchisch radiositeitsalgoritme zoals in Hanrahan'91, met uitbreiding naar clustering zoals voorgesteld door Sillion. Te gebruiken als alternatief voor hierefine.c. Fri Nov 7 19:15:32 1997 Philippe Bekaert * MCRAD/qmcpt.c: Pattanaik style particle tracing geimplementeerd. Thu Nov 6 14:41:41 1997 Philippe Bekaert * shadowcaching.c: als shadow caching gebruikt wordt om een itnersectie met de volledige wereld te berekenen, wordt voxel grid acceleratie gebruikt i.p.v. de hierarchishe bounding boxes. Wed Nov 5 18:27:22 1997 Philippe Bekaert * MCRAD/hwdrs.c,element.c: HWDRS geimplementeerd voor zowel drie- als vierhoeken + visualisatie met T-vertex eliminatie. Mesh grading ontbreekt nog. Fri Oct 31 19:33:36 1997 Philippe Bekaert * polygon.c: QuadUV() efficienter geimplementeerd voor parallellogrammen. Thu Oct 23 18:59:48 1997 Philippe Bekaert * MCRAD/niederreiter.[ch]: basis-2, 4D, 31 bits Niederreiter QMC sequentie. * MCRAD/[h]wdrs.c: uitgebreid met Niederreiter sampling + enkele kleinere correcties. Tue Oct 14 13:50:47 1997 Philippe Bekaert * reden genoeg voor een nieuwe release ====> versie 971014 Mon Oct 13 19:20:11 1997 Philippe Bekaert * grid.[ch], scene.[ch], main.c + diverse andere plaatsen: raytracing acceleratie d.m.v. voxel grid. Versnelt het raytracen enkele factoren meer dan de hierarchie van bounding boxes (waargenomen factor 4). Bij het inlezen van de scene wordt een voxelstructuur WorldGrid (scene.h) aangemaakt (in main.c). De oproep GridIntersect(WorldGrid, ...) (zie grid.h) is compatibel met GeomlistDiscretisationIntersect(ClusterWorld, ...). De grid intersectie routine is overgenomen uit rayshade en kan nog geoptimaliseerd worden. * geomlist.h: ForAllGeoms iterator toegevoegd * patch.c, patch_type.h: PatchIntersect 2x sneller gemaakt hoofdzakelijk door andere inside/outside test te gebruiken. De gebruikte test test of het intersectiepunt aan de goede kant van iedere zijlijn van de patch ligt. Dit werkt omdat patches convex zijn. Nadeel: 20 bytes meer geheugen nodig per patch. Sat Oct 11 23:46:10 1997 Philippe Bekaert * bounds.c: BoundsIntersectingSegment(): aangepast i.v.m. foutief gedrag voor dikte-0 bounding boxes op PC (vermoedelijk probleem met extended precisie floating point getal in register dat naar beneden wordt afgerond wordt bij wegschrijven in geheugen, zodat het getal even later groter blijkt te zijn dan zichzelf). * Config.Linux: compilatievlaggen -meee-fp -m486 -malign-double voor ongeveer 5% snellere executable + hopelijk betrouwbaardere floating point op PCs (-mieee-fp lostte bovenstaand probleem niet op!) * CSList.H was foutief in hoofddirectory i.p.v. GDT/ gecopieerd. * readmgf.c: vertex sharing was soms fout bij veranderde transformatie context (fout geintroduceerd op 8/10/97) Thu Oct 9 09:16:12 1997 Philippe Bekaert * merge met veranderingen Frank sinds 8 juli ====> versie 971009 * render.h, gl.c: RenderPixels() heeft extra argument i.v.m. renderen van beelden die uit meerdere lijnen bestaan (ook aangepast waar dit problemen gaf). opengl.c en starbase.c zijn nog niet aangepast! Wed Oct 8 13:26:25 1997 Philippe Bekaert * readmgf.c, vertex_type.h, MGF/: inlezen van MGF bestanden aanzienlijk versneld door behandeling van vertices te vereenvoudigen + optimisaties in the MGF bibliotheek. Vereistte o.a. een nieuw veld 'back' in de VERTEX structuur waarin een pointer naar de overeenkomstige vertex in een back face bijgehouden kan worden. Tue Oct 7 18:17:46 1997 Frank Suykens * ui_debug.c : Draw Virtual Camera toegevoegd. Nutteloze functie om een camera grid op het scherm te tekenen. Zo kan je de intersectie ervan met de scene zien. * ui_config.[ch], ui_main.c, ui_file.c, appdata.h : Mechanisme toegevoegd om user specifieke opties toe te laten. Twee functies : LoadUserOptions en SaveUserOptions laden/saven deze opties. De file die gebruikt wordt om de opties in te zetten, is in te stellen in de application defaults. Momenteel is dit '%H/.rpkrc' waarbij %H vervangen wordt door de home directory. De huidige user opties zijn momenteel enkel de 4 laatst gebruikte files. Bij deze files wordt ook de laatste camera positie bijgehouden. De vier files zijn in het file menu terug te vinden. Ze worden tijdens het runnen van het programma ook aangepast. User options worden weggeschreven wanneer 'Quit' geselecteerd wordt in het file menu. Alle opties worden altijd weggeschreven. User opties zitten allemaal in de globale variabele appData. Extra opties moeten hieraan worden toegevoegd. * RAYTRACING/[ui_]rtstochastic.[cCH] : herschreven. -> Klassieke raytracing is nu hier ondergebracht. User interface is aangepast. -> Aangepast om te werken met brdf's gesplitst in componenten. Voor speculaire componenten wordt geen next event berekend. -> Transparantie ingebouwd. Werkt ook voor geneste transparante objecten. Er wordt steeds BTDF sampling gebruikt, behalve bij klasieke raytracing. -> Recursion depth parameter toegevoegd : Voor klassieke raytracing betekent dit de MAXIMALE recursie diepte. Voor stochastische bepaalt dit wanneer Russian roulette ingeschakeld wordt (na rec-depth recursies). -> Enkele fouten die er nog in zaten, zitten er nu niet meer in. * RAYTRACING/*rtclassic* : verdwenen (cfr rtstochastic). * RAYTRACING/directlight.[CH] : toegevoegd (uit rttools.[ch]). Behandeld directe belichting voor raytracing (next event estimation). Importance sampling van lichtbronnen is toegevoegd, waarbij alle lichten op voorhand een gewicht krijgen. Naargelang hun gewicht worden de lichten stochastisch gekozen. Visibiliteit en brdf zijn niet opgenomen in het gewicht. * GDT/CSList.H : C++ implementatie van een lineaire enkel gelinkte lijst, gebaseerd op het voorbeeld in het boek van Stroustrup. Twee soorten lijsten zijn voorzien : een waar het 'next' veld in de node zit en een waar dit niet zo is. Zie de file voor meer info. * RAYTRACING/path.[CH] : toegevoegd. CPath is een klasse die een lichtpad in de scene beschrijft. CPathNode is de klasse die een node van het pad beschrijft. Een node bestaat uit een richting en een hitrecord waar de straal intersecteert. Meer info zie path.H * brdf.[ch], btdf.[ch], edf.[ch], phong.[ch], xxdf.h (nieuw) Brdfs, btdfs en edfs zijn gesplitst in componenten. Deze componenten zijn gedefinieerd in xxdf.h. Momenteel is de opsplitsing gebeurd in DIFFUSE, GLOSSY en SPECULAR componenten. De Eval, Transmittance, Reflectance, Emittance functies hebben allemaal een extra parameter meegekregen : XXDFFLAGS. Deze parameter geeft aan welke componenten in de berekeningen opgenomen moeten worden. Voor backwards compatibility redenen zijn er macro's voorzien die het vroegere gedrag simuleren. (vb. BrdfDiffuseReflectance -> BrdfReflectance(..., DIFFUSE_COMPONENT)) Voor phong brdf's wordt het verschil tussen specular en glossy arbitrair op een bepaalde exponent gezet. Mon Sep 22 13:10:45 1997 Philippe Bekaert * MCRAD/stochray.c: warming up geimplementeerd voor semi-iteratieve methode. Fri Sep 19 20:18:04 1997 Philippe Bekaert * ui_material.c (nieuwe file): material editor, kan worden opgeroepen door dubbel te klikken op een oppervlak zichtbaar in het canvas window. * brdf.[ch], btdf.[ch], edf.[ch]: nieuwe methodes Duplicate en CreateEditor i.v.m. material editor. * radiance.h + alle radiance methoden: nieuwe methode 'UpdateMaterial' wordt opgeroepen als ergens een materiaal gewijzigd is in de scene. De bedoeling is dat de radiantie methode zelf de nodig correcties aan brengt aan tot dan toe berekende radiantie + andere gegevens, en de scene herrendert. Thu Sep 18 19:37:01 1997 Philippe Bekaert * canvas.c, ui_main.c, ui_canvas.c (nieuwe file): dubbel klikken op canvas window maakt dat er een popup menu verschijnt waarin je momenteel een optie hebt: het materiaal van de aangeduide patch editeren. Tue Sep 16 18:21:30 1997 Philippe Bekaert * patchlist.h: macro ForAllPatches gedefinieerd om over een PATCHLIST te itereren. * GDT/List.h: (LIST *) cast toegevoegd in ForAllInList macro om "incompatible pointer conversion" boodschappen te vermijden. Wed Aug 27 17:08:07 1997 Philippe Bekaert * MCRAD/qmcpt: Quasi Monte Carlo Particle Tracing (Keller EGRW 1996) geimplementeerd. * STOCHRAY directory hernoemd naar MCRAD (Monte Carlo RADiosity) * STOCHRAY/hwdrs.c: WDRS radiosity met hierarchische, adaptieve verfijning ... eerste poging. * STOCHRAY/stochray.c, wdrs.c: white labyrint tests. * GDT/List.h: nieuwe iterator ForAllInList om lijsten mee te doorlopen zonder functies te hoeven te definieren voor wat je met een element wil doen. * vertex_type.h: nieuw veld "radiance_data" voor per vertex gegevens gebruikt door de courante radiantie methode. Wordt volledig zelf beheerd door de radiantiemethode, ttz wordt niet automatische gefreed etc... . Tue Aug 19 18:24:39 1997 Philippe Bekaert * STOCHRAY/wdrs.c: uitgebreid voor niet-monochromatische omgevingen. Mon Aug 18 16:56:28 1997 Philippe Bekaert * readvrml.[CH], VRML/: ondersteuning voor het inlezen van VRML97 bestanden. Moet nog verder uitgewerkt worden: viewpoints, global illumination nodes, dynamische omgevingen ... * Makefile, Config files: aanpassingen i.v.m. C++ en VRML. Wed Jul 16 19:28:04 1997 Philippe Bekaert * GALERKIN/hierefine.c, cluster.[ch]: voor afschatting van benaderingsfout wordt maximale radiantie in een bron cluster gebruikt i.p.v. een schatting van de radiantie die de broncluster in de richting van de ontvanger uitstraalt. Dit lost storende onderschatting van de benaderingsfout op als de radiantie naar de ontvanger niet goed wordt geschat. Nieuwe functie MaxClusterRadiance() in cluster.c. MaxClusterRadiance() zou net zo goed in de ELEMENT * structuur bijgehouden kunnen worden + berekend tijdens push/pull. * GALERKIN/formfactor.c: strenger verfijningscriterium bij isotrope clustering (max. kernel waarde x max source radiance). Tue Jul 15 20:21:40 1997 Philippe Bekaert * starbase.c, Config.HP: support voor HP machines toegevoegd. Moet nog verbeterd worden. Wed Jul 9 16:34:32 1997 Philippe Bekaert * GALERKIN/mrvisibility.[ch], formfactor.c: multi-resolution visibility bepaling ala Sillion & Drettakis SIGGRAPH'95 geimplementeerd. Omdat het exact bepalen van de equivalent blocker size van een cluster zo lang duurt, gebruiken we momenteel de afmetingen van de boundingbox ervan, wat een overschatting is. * GALERKIN/cluster.c, feature.[ch], ui_galerkin.c: berekening van equivalente blokker (of blokker complement) grootte geimplementeerd. Nodig voor multiresolutie visibiliteit ala Sillion, Drettakis, "Feature-based Control of Visibility Error ...", SIGGRAPH'95, p 145. * GALERKIN/ui_galerkin.c: berekening herinitialiseren kan lang duren, dus klok cursor op canvas window + button voor multi resolutie visibiliteit gemaakt (staat af per default). Tue Jul 8 15:15:02 1997 Philippe Bekaert * Merge met code Frank sind 070529 ===> RenderPark 970708. * patch.[ch], geom.[ch], compound.c, surface.c, patchlist.c, ray.h, shadowcaching.c, select.c, GALERKIN/galerkin.c, RAYTRACING/..., PARTICLE/..., STOCHRAY/...: ray-discretised GEOM intersectie routines geherdefinieerd. Laatste parameter van GeomDiscretisationIntersect() etc... is nu niet meer een BOOLEAN (shadowtesting of niet), maar een combinatie van vlaggen. Deze vlaggen, beschreven in ray.h, bepalen 1) welk soort intersecties teruggegeven wordt: enkel met facetten die naar de oorsprong van de straal toegekeerd zijn (HIT_FRONT), enkel ervan weggekeerd (HIT_BACK), of beide (HIT_FRONT|HIT_BACK), en of de dichtstbijzijnde, dan wel eender welke (HIT_ANY), intersectie gezocht moet worden. 2) welke informatie teruggegeven moet worden over het intersectiepunt (als er een is): intersectiepunt (HIT_POINT), geinterpoleerde normaal (HIT_NORMAL), materiaaleigenschappen (HIT_MATERIAL). Informatie waar niet naar gevraagd wordt, wordt niet berekend. Met shadowtesting=TRUE voorheen, komt nu best overeen: HIT_FRONT|HIT_ANY (men is niet geinteresseerd in welk itnersectiepunt etc...) Met shadowtesting=FALSE voorheen: HIT_FRONT|HIT_POINT|HIT_NORMAL|HIT_MATERIAL Tue Jul 8 17:13:42 1997 Frank Suykens * brdf.h/c, IdealReflectedDirection : Functie toegevoegd om perfect weerkaatste straal te berekenen * btdf.h/c, BtdfIdealRefractedDirection : Functie om ideaal gerefracteerde straal te berekenen. Houd rekening met totale interne reflectie. * btdf.h/c, BtdfEvalXXX : Evaluatie functies voor btdf's * phong.h/c, PhondBtdfEvalXXX : Evaluatie functies voor Phong btdf's * rtclassic.c : Gestart met behandeling doorzichte materialen. Nog niet af !! Tue Jun 24 11:46:21 1997 Philippe Bekaert * GALERKIN: formfactor.[ch] commentaar aangepast + terug onderscheid gemaakt tussen receiver en source surface element bij keuze cubatuur- formule. * GALERKIN/gelaerkin.c, element.[ch], interaction.[ch]: statistieken vermelden nu ook hoeveel van iedere soort elementen (clusters, surface) of interacties (cluster to cluster ...) er zijn. * GALERKIN/shooting.c: berekening ambiente radiantie gecorrigeerd: gebeurt nu na de shooting operatie i.p.v. voor (wat fout was ingeval niet gesloten omgeving). Fri Jun 20 19:26:14 1997 Philippe Bekaert * Config, Makefile, diverse .c en .h files: code strikt ANSI-C compliant gemaakt. Compilatie met SUN's C compiler is nu ook mogelijk. Wed Jun 11 19:42:31 1997 Philippe Bekaert * readmgf.c (do_face_with_holes): eliminatie van gaten in facetten met gaten geimplementeerd. Fri Jun 6 14:21:11 1997 Philippe Bekaert * GALERKIN/scratch.c: voor iedere cluster wordt viewport ingesteld die afhangt van relatieve grootte van kleinste surface element in cluster t.o.v. virtueel scherm grootte. * GALERKIN/element.[ch], cluster.c: nieuw ELEMENT veld minarea = grootte van kleinste surface element in een cluster. * SGL/sgl.c: viewports geimplementeerd + werken met current rendering context i.p.v. context bij iedere bewerking als parameter mee te geven. Gevolg van viewports: frame buffer bevat beeld nu ondersteboven (vcoordinaat (0,0) in beeld is linker benedenhoek komt overeen met eerste pixel in frame buffer). * GALERKIN/hierefine.c: EvaluateInteraction() herschreven. Source cluster radiance variation error wordt niet meer geevalueerd indien de approximatino error reeds groter dan de error threshold is. * GALERKIN/scratch.[ch]: nieuw bestand met alles i.v.m. rendering in scratch buffer. Thu Jun 5 19:44:40 1997 Philippe Bekaert * GALERKIN/cluster.c, element.h, galerkin.c, ui_galerkin.c, galerkinP.h: Clustering met behandeling van intra-cluster visibiliteit m.b.v. Z-buffer zichtbaarheidsalgoritme geimplementeerd. Noopt tot extra veld tmp (integer) in ELEMENT struct. Tevens veld nrpatches ingevoerd (aantal patches in cluster). Interface aangepast zodat scratch renderer frame buffer size ingevuld kan worden + clustering strategie (isotroop, met surface orientatie alleen of met Z-buffer intra-cluster visibiliteit) gekozen kan worden. * bounds.[ch]: nieuwe functie BoundsTransform() om boundingbox voor getransformeerde van een boundingbox te berekenen. Wed Jun 4 14:27:57 1997 Philippe Bekaert * SGL/: nieuwe directory met eenvoudige, kleine grafische bibliotheek. Doel is eenvoudige scenes (enkele tientallen patches bij clustering bvb) snel in een geheugenbuffer te kunnen renderen. Wordt gebruikt voor "slim" energietransport bij clustering (enkel van zichtbare patches in een bron cluster naar zichtbare patches in de ontvangende cluster). Scan conversie en clipping routines komen uit Graphics Gems I. * transform.[ch]: definitie van 2D affiene transformaties gewijzigd + 4x4 transformaties ingevoerd. Momenteel enkel nodig voor SGL. Mon Jun 2 12:58:51 1997 Philippe Bekaert * cluster.[ch], main.c: CreateClusterHierarchy() geeft nu GEOM * terug i.p.v. GEOMLIST *. Constructie ClusteredWorld en CLusteredWorldGeom nu iets eleganter. Fri May 30 17:10:11 1997 Philippe Bekaert * GALERKIN/hierefine.c (EvaluateInteraction): source cluster radiantie varieert naargelang de richting waaruit ze waargenoemen wordt. Dit leidt tot een extra term in de foutafschatting van een gegeven kandidaat interactie. Hier wordt nu rekening mee gehouden. Vooral belangrijk bij combinatie clustering + hogere orde benaderingen. Werkt waarschijnlijk nog niet goed voor bidirectionele radiositeit. * color.h: COLORMIN macro toegevoegd voor berekenen van minimum van twee COLORs (componentsgewijs). Thu May 29 15:58:19 1997 Philippe Bekaert * Merge met code Frank en Philip sinds versie 970418 ====> versie 970529 Thu May 29 15:26:42 1997 Frank Suykens * kdtree.C kdtree.H : C++ klassen voor kd-trees. Nog niet bruikbaar vanuit RenderPark. * bidirectional.c (Potential source selection) : Enkel zichtbare elementen worden als potentiaal bron gebruikt. * bidirectional.c (Shooting patch selection) : Code toegevoegd die de patch met maximale flux bijdrage berekend. Dit kan als een goed maar zeer traag shooting patch criterium gebruikt worden. (Functie : 'ExactFluxContribution') * bidirectional.c (PropagateRadianceAndPotential) : Bij hierarchische radiositeit moeten bijdragen van 'received radiance' en 'received potential' in verschillende niveau's gecombineerd worden. Hiertoe werd 'PushPullReceivedPotential', 'PatchUpdatePushPulledPotential' en 'CombineReceivedPotentialWithReceivedRadiance' toegevoegd. Tue May 20 18:51:59 1997 Philippe Bekaert * GALERKIN/: Isotropie-aanname gerelaxeerd op receiver cluster: orientatie van de facetten in de ontvangende cluster wordt in rekening gebracht. Intra-cluster visibiliteit nog niet. Fri May 16 19:58:52 1997 Philippe Bekaert * GALERKIN/: Isotropie-aanname gerelaxeerd op source cluster: er wordt nu ook rekening gehouden met de orientatie van fe facetten in een source cluster. * GALERKIN/: clustering geimplementeerd voor shooting en in combiantie met importance. * cubature.[ch]: nieuwe cubatuurformule CRV1 voor integratie over balken door evaluatie in de hoekpunten van de balk. Wordt gebruikt voor vormfactoren met clusters. Thu May 15 16:45:51 1997 Philippe Bekaert * De naam van het ding is veranderd van 'Rad' tot 'RenderPark'. De executable heet niet langer meer 'rad', maar 'rpk'. * STOCHRAY/: 'Minimal Ray Set Radiosity' hernoemd naar 'WDRS radiosity' * shaftculling.[ch]: nieuwe functie ShaftCullGeom() voor shaft culling van een enkele GEOM i.p.v. een GEOMLIST. Shaft culling code geherstructureerd. * GALERKIN/: Probleem i.v.m. zelfocclusie van clusters tijdens vormfactorberekening opgelost. Wed May 14 19:40:53 1997 Philippe Bekaert * GALERKIN/: gathering met isotropische clustering geimplementeerd. Ref: Sillion, "A Unified Approach ...", IEEE TVCG nr 1, sept 1995. * geom_type.h: GEOMs hebben nu ook een uniek ID nummer om het debuggen wat eenvoudiger te maken. * geom.[ch]: nieuwe functie GeomDontIntersect() ingevoerd waarmee tot twee GEOMS gegeven kunnen worden waarmee geen straal-intersectietesten mogen uitgevoerd worden. * shaftculling.[ch]: nieuwe functie SetShaftCUllingStrategy() waarmee shaft culling strategy (KEEP_CLOSED, OVERLAP_OPEN of ALWAYS_OPEN) opgegeven kan worden. Default is OVERLAP_OPEN wat meestal het meest efficient is. Ook een functie ShaftDontOpen() ingevoerd, waarmee tot 2 GEOMs opegegevn kunnen worden niet niet geopend mogen worden tijdens shaft culling. Tue May 13 15:33:32 1997 Philippe Bekaert * GALERKIN/element.[ch]: nieuwe functies ElementVertices() en ElementMidpoint() die vertices en middelpunt van element berekenen. ElementBounds() en DrawElement() sterk vereenvoudigd. * ui_debug.c: nieuwe debug functies voor onderzoeken van element hierarchie op een aan te duiden plaats geimplementeerd (voor Galerkin radiosity). * bounds.h: definitie van DisjunctBounds aangepast zodat minimum X, Y of Z van de ene strikt groter i.p.v. groter of gelijk moet zijn aan maximum X, Y, of Z van de andere. Op die manier worden gelijke bounding boxes niet meer als disjunct beoordeeld. * POOLS/: pools bibliotheek versie 1.3 beta 2 in gebruik genomen: een onregelmatig voorkomende Fatal error van de POOLS bibliotheek zou hiermee eindelijk opgelost moeten zijn (cfr Thu Feb 27). Mon May 12 19:51:47 1997 Philippe Bekaert * cubature.[ch]: CUBARULE structuur uitgebreid voor integratie over balken (3-de abscis coordinaat t ingevoerd, deze is nul voor 2D regels) Fri May 9 16:31:25 1997 Philippe Bekaert * GALERKIN/galerkin.c, cluster.[ch]: opstellen cluster hierarchie geimplementeerd. * main.c, scene.[ch]: nieuwe globale variabele ClusteredWorldGeom geintroduceerd. Dit is een compound GEOM die ClusteredWorld bevat. Wordt niet gebruikt voor ray-tracing omdat dit telkens een extra ray-intersectie test zou kosten, maar is wel nodig om als toplevel cluster te dienen in Galerkin methodes met clustering. * opengl.c: SwitchBackfaceCulling() en doing_backface_culling verwijderd vermits niet langer relevant sinds alle facetten enkelzijdig zijn. Wed May 7 15:27:29 1997 Philippe Bekaert * GALERKIN/element.[ch]: aanpassingen gemaakt i.v.m. clustering. Voornaamste incompatibele aanpassing is de invoering van een veld pog (PatchOrGeom) i.p.v. patch in struct ELEMENT. Eveneens een nieuw veld irregular_subelements, van nieuw type ELEMENTLIST * voor subelementen gecreerd door onregelmatige opslitsing (clusters!). * RAYTRACING/rttools.c: correctie in RT_IDTrace() (er werd een pixel per scanlijn te weinig geproduceerd). Mon May 5 18:23:27 1997 Philippe Bekaert * ui_debug.c (PatchDumpFormFactors): routine (en button) toegevoegd waarmee de radiosity vorm factor matrix gedumpt kan worden. Momenteel nog geen voorzieningen voor hierarchische structuur van vormfactoren. * GALERKIN/: probleem met dubbelzijdige oppervlakken opgelost. Fri Apr 18 13:02:12 1997 Philippe Bekaert * merge met code Frank ====> versie 970418. * nieuwe SCENES: classroom.mgf (het alombekende klaslokaal uit de S) en Franks Hospital. * readmgf.c: voor twee-zijdige oppervlakken worden nu dubbel patches gegenereerd: een voor iedere zijde (zo ook dubbele vertices: een met de normaal naar weerszijden). Default is nog steeds enkelzijdigheid te forceren. * STOCHRAY/: stochray.c en minray.c aangepast voor correcte behandeling van tweezijdige oppervlakken * GALERKIN/: aangepast voor correcte behandeling van tweezijdige oppervlakken: alle patches zijn enkelzijdig en wat achter een patch ligt kan niet met de patch interageren. Soms divergeren de berekeningen: wordt onderzocht (enkelzijdigheid forceren, zoals voorheen, resulteert in enkelzijdige patches en daar zijn voor zover ik zie geen problemen mee ... of toch geen nieuwe). * patch.c: ray intersecties voor straal die langs achter een patch raakt worden altijd genegeerd (voor dubbelzijdige oppervlakken heb je nu paren patches: een aan iedere zijde). * gl.c, opengl.c: alle patches zijn enkelzijdig, dus geen speciaal aan- en afzetten van backface culling meer nodig ivm tweezijdige oppervlakken. * GALERKIN/: Bidirectionele radiositeit verder afgewerkt (tegen 3 april = EGRW'97 deadline). Bidirectional radiosity vereist COLOR potentiaal, niet zomaar een Float. Daarom type van potential, unshot_potential, received_potential aangepast! Zo ook een nieuw veld flux. * STOCHRAY/minray.c: correctie i.v.m. patch sample offset voor QMC sampling. * nieuwe versie van MGF bibliotheek (2.0) in gebruik genomen. Fri Apr 18 13:19:31 1997 Frank Suykens * basis.c : RadianceAtPoint keert voor bidirectionele radiositeit shooting patch selectie-criterium waarde terug als 'clustered' aanstaat. * bidirectional.c (EstimatedFluxContribution) : Het shooting patch criterium kan via 'potential driven' selectie switchen tussen 'simpel philip' en source patch coherence based criterium. Dit veranderd de waarde van gemiddelde ongeschoten potentiaal in de scene. * bidirectional.c : Potentiaal op patches wordt gebruikt om het shooting patch criterium in op te slaan. * bidirectional.c : Camera wordt bevrozen na de eerste iteratie ! * element.c/h : Added 'DrawElementOutlineStrong' : tekent een elementje zodat het kan onderscheden worden van normal outline elementjes. Momenteel worden gewoon een aantal tussen lijntjes getekend. Tue Mar 25 19:38:35 1997 Philippe Bekaert * GALERKIN/basis.c: PushRadiance() en PullRadiance() hernoemd naar Push() en Pull(): deze routines kunnen ook voor potentiaal gebruikt worden. Mon Mar 24 16:30:03 1997 Philippe Bekaert * GALERKIN/element.h: interactions_created veld vervangen door een unsigned char voor meerdere vlaggen per element. Fri Mar 21 20:09:17 1997 Philippe Bekaert * GALERKIN/: Bidirectionele radiositeitsmethode geimplementeerd (niet hierarchisch). * GALERKIN/ gecopieerd naar GALERKIN-STABLE/ Fri Mar 7 14:40:29 1997 Philippe Bekaert * motif.h: nieuwe include file, lost incompatibiliteitsprobleempje tussen Motif 1.2 en 2.0 op. Wordt ingesloten in uit.h. Thu Mar 6 14:20:12 1997 Philippe Bekaert * Rad, 0README, SCENES/: beknopte uitleg over gebruik van het programma in Help menu + README file bij source. Eerste publieke release via WWW en ftp (godfather:/ftp/pub/graphics/software/Rad-970306.tar.gz) na weglaten van experimentele code uit versie 970304. Bij deze gelegenheid ook beperkte verzameling scenes in subdirectory SCENES geplaats + README file. Tue Mar 4 13:06:52 1997 Philippe Bekaert * fix.[ch], ui_file.c: routine voor het corrigeren van de vertex volgorde van alle facetten die zichtbaar zijn (als backface culling wordt afgezet) in het huidige aanzicht. * PARTICLE/, RAYTRACING/, Makefile: aparte subdirectories voor particle tracing and de raytracing algoritmes + aanpassingen in Makefile. ====> versie 970304. * merge met code Frank en Philipd sinds versie 970224 Mon Feb 24 15:29:29 1997 Phil Dutre * phong.c: (veel) commentaar toegevoegd * rtstochastic.c (RT_GetRadiance_rec): sample routines aangepast voor extra pdf parameter * particle.c (ShootParticlesFromPatches): sample routines aangepast voor extra pdf parameter * minray.c (GenerateRay): sample routines aangepast voor extra pdf parameter * stochray.c (PatchShootRays): sample routines aangepast voor extra pdf parameter * spherical.c / .h (SampleSphericalTriangle): sample routines aangepast zodat pdf waarde mee teruggegeven wordt. Mon Mar 3 21:54:36 1997 Philippe Bekaert * topology.[ch], patch_type.h, patch.c, vertex_type.h, vertex.c: Uitgebreide topologische informatie over de PATCHes en VERTEXes in de scene. Topologische informatie is voorhanden onder de vorm van een BREP_VERTEX voor een VERTEX en BREP_FACE voor een PATCH. De informatie wordt ingevuld in een nieuw veld brep_data van VERTEXes en PATCHes. Bij het inlezen van de scene wordt geen dergelijke informatie ingevuld omdat deze redelijk wat geheugen in beslag neemt. Een radiantie methode die van deze topologische informatie gebruik wil maken moet zelf BrepCheckIn(Patches) uitvoeren. Mon Mar 3 13:01:21 1997 Philippe Bekaert * monitor.[ch]: nieuwe bestanden: hulpje bij het debuggen: om een lijst bij te houden van patches die in de gaten gehouden moeten worden. * ui_debug.c: routines om patch toe te voegen/weg te laten uit lijst van in de gaten te houden patches. * Makefile, radiance.[ch], HURA/*: nieuwe directory HURA met stubs voor Het Ultieme Rendering Algoritme. Sat Mar 1 12:31:08 1997 Philippe Bekaert * Makefile, radiance.c, GALERKIN/, STOCHRAY/: aparte subdirectories voor Galerkin radiosity en stochstic ray/minimal ray set radiosity. * Makefile, BREP/: nieuwe subdirectory: Boundary REPresentation voor solid objects. Implementatie van een topologische datastructuur, een variant van de winged edge data structuur. Zal gebruikt worden voor zichtbaarheidsclassificatie en discontinuity meshing en mogelijks ook voor het oplappen van ingelezen scenes. * ui_camera.c, Rad: knopje "Print" ingevoerd in Camera menu met bijhorende actie: oogpunt etc... afdrukken op scherm. * hierefine.c, formfactor.c: aanpassing i.v.m. exacte visibiliteitsclassificatie: volledige zichtbaarheid voor een interactie (link->vis == 255) is betroubaar: indien deze situatie zich voordoet (vaak tijdens verfijning), is geen shaft culling en visibiliteitsbemonstering nodig. * initiallinking.c: aangepast voor exacte visibiliteitsclassificatie. Op dit ogenblik wordt al uitgemaakt of er volledige zichtbaarheid is, dan wel occlusie veroorzaakt door een enkele tussenliggende patch. Andere gevallen worden voorlopig nog steeds met puntbemonstering (= inexact) behandeld. * shaftculling.[ch]: correcties in shaft cull test voor patches + shaft bevat nu een vlag 'cut', die op TRUE gezet wordt tijdens culling van zodra gedetecteerd wordt dat een enkele patch de hele shaft omsluit, m.a.w. er is volledige occlusie veroorzaakt door een enkele patch. In een dergelijke situatie wordt shaft culling stopgezet. De candidate-occluder list na shaft culling bevat niet meer alle potentiele occluders, maar de patch die volledige occlusie veroorzaakt is de eerst in de lijst. Dit mechanisme werkt wel enkel voor polygon-tot-polygon shafts, niet voor balk-tot-balk shafts. Fri Feb 28 10:30:26 1997 Philippe Bekaert * geometry3d.[ch]: nieuwe bestanden met algemeen toepasbare meetkundige operaties in 3D, zoals het opzoeken van de snijlijn tussen twee vlakken en het vinden van het snijpunt van een lijn en een vlak. * formfactor.c: Facing() geherimplementeerd (deze keer zoals het hoort?) * inverse force matrices naar aparte directory DATA verhuisd, waar van nu voort al dat soort data thuis zal horen (i.p.v. tussen de source code te staan). Overeenkomstige aanpassing in de Config files. Thu Feb 27 13:02:33 1997 Philippe Bekaert * Float.h, vector.h: macro VECTORTOLERANCE ingevoerd die onzekerheid op vector componenten bepaalt + macro's voor vergelijken getallen en vectoren (FLAOTEQUAL en VECTOREQUAL) vereisen nu opgave van een tolerantie. Ook aanpassingen overal deze macros gebruikt worden. Filosofie: twee "features" vallen samen indien hun onzekerheidsgebied overlapt. Onzekerheidsgebied voor een punt is een kubusje met halve zijde VECTORTOLERANCE() rond het punt etc... (cfr. M. Segal, "Using tolerances ...", SIGGRAPH '90). * patch_type.h, patch.c: tolerantie ingevoerd voor patch vlakken. Nodig om betrouwbare punt-op-vlak e.d. testen te doen. * POOLS/pools.c: Een aantal "sanity checks" geimplementeerd. free block pointer in pools gaat blijkbaar soms om zeep. De fout lijkt echter niet herhaalbaar en doet zich slechts zeer zelden voor. In observatie. Sanity checks worden niet ingecompileerd tenzij indien het preprocessor symbool SANITY_CHECKS gedefinieerd is. * shaftculling.c: Shaft cull test voor patches geimplementeerd (vroeger werd enkel de bounding box van de patch tegen de shaft getest). Shaft culling met element-tot-element shafts levert nu de lijst van alle zekere occluders op. Indien na culling de occluder lijst leeg is, is er met zekerheid volledige zichtbaarheid. Tue Feb 25 19:58:41 1997 Philippe Bekaert * shaftculling.[ch]: constructie van een shaft op basis van 2 patches i.p.v. bounding boxes. Nodig voor exacte visibiliteitsclassificatie. * galerkinP.h, galerkin.c, ui_galerkin.c: vlag exact_visibility geintroduceerd in galstate. Zet aan voor exacte visibiliteits classificatie i.p.v. classificatie d.m.v. punt-bemonstering. * patch.c, polygon.c, bounds.c: vlak vergelijking van patches consistent gemaakt met vlakvergelijkingen voor shaft culling: VECTORDOTPRODUCT(normal, point) + plane_constant = 0. * polygon.h: type POLYGON ingevoerd. Momenteel enkel gebruikt voor element-tot-element shaft culling in galerkin radiosity. Mon Feb 24 11:24:42 1997 Philippe Bekaert * Merge met code Philip sinds versie 970217 en Frank sinds versie 970210 ====> versie 970224 Mon Feb 24 11:23:43 1997 Frank Suykens * spherical.h/c: Added VectorCoordSys : maakt een coordsys met opgegeven vector als Z-vector. * rtstochastic.c : Correct two pass methods, brdf sampling * rttools.c : Light selection : kies een licht voor een shadowray. Pixel shaft culling voor oogstralen. Fri Feb 21 15:59:17 1997 Phil Dutre * particle.c: gevoelig uitgebreid met de behandeling van particles ... maar particle tracing als geheel werkt nog niet. Thu Feb 20 19:13:10 1997 Phil Dutre * spherical.c / .h (SampleHemisphereUniform): routine toegevoegd voor uniforme sampling over hemisfeer. Wed Feb 19 18:56:45 1997 Philippe Bekaert * hierefine.c: begin gemaakt met het implementeren van H-P refinement (ontvanger benaderingsorde vangt aan met constant en wordt verhoogd wanneer nodig). * formfactor.c (PointKernelEval): stralen worden getrokken van bron naar ontvanger ipv omgekeerd: lichtlekken worden nu schaduwlekken zoals het hoort. Mon Feb 17 16:25:55 1997 Philippe Bekaert * ===> versie 970217 in /cw/graphics/projects/philippe. * main.c (Init): default alarm signal handler geinstalleerd (soms ontglippen alarm signals de rekenroutines, en als ze niet worden opgevangen wordt het programma terstond zonder pardon afgeschoten). * galerkin radiosity: importance-driven variant van de algoritmen geimplementeerd. Thu Feb 13 14:18:24 1997 Philippe Bekaert * ui_camera.c: "alternate" camera geimplementeerd met bijhorende buttons. Camera omwisselen met "alternate" wordt niet beschouwd als van camera positie veranderen. Handig i.v.m. view-potentiaal gedreven algoritmen (maken van "offset" views). * eye.[ch]: SetAverageLuminance() geeft voormalig ingestelde gemiddelde luminantie terug i.p.v. niets. * radiance.h, minray.c, stochray.c, galerkin.c, particle.c: nieuwe methode "UpdatePatchPotential" in de interface voor radiantie-algoritmen. Deze methode behandelt veranderingen van de direct ontvangen potentiaal van een patch. Voor alle algoritmen behalve Galerkin is deze methode NULL. * potential.[ch]: nieuwe bestanden. voor het berekenen en renderen van de direct ontvangen potentiaal van de patches in de scene. Wed Feb 12 16:20:40 1997 Philippe Bekaert * galerkin.c: ambiente lichtterm wordt nu ook in GetRadiance() in rekening gebracht. * galerkin.c: routine GalerkinRaycast() geimplementeerd die het ray casten versnelt door eerst dmv het Zbuffer algoritme in hardware het meest dichtbijzijnde facet te bepalen. De techniek zal later opgenoemen worden in ray-tracing algoritmen en daarna zal de routine terug verdwijnen. * gl.c, opengl.c, render.h: functie RenderIds() voor patch ID rendering geimplementeerd + opsmuk. ID rendering in gl.c en opengl.c werkt voorlopig enkel met een 24-bits frame buffer. * ui_galerkin.c: buttons voor herinitialiseren van radiantie berekening en voor het tussentijds renderen van de oplossing (tijdens de berekening) ingevoerd. * POOLS/pools.c: bug verbeterd in GetMagic() + opsmuk ===> versie 1.2 van de POOLS bibliotheek. Tue Feb 11 19:37:04 1997 Philippe Bekaert * POOLS/pools.c, private.h: sneller + (veel) minder geheugen overhead. Mon Feb 10 11:32:34 1997 Philippe Bekaert * element.[ch], hierefine.c: recursieve shaftculling gedurende verfijning geimplementeerd, vereiste een routine ElementBounds(). * merge met de code van Frank sinds versie 970204 ===> versie 970210 (cfr. onder). * galerkin.c en consoorten: hogere orde benaderingen geimplementeerd. Verfijningscriterium is nog altijd heel primitief en vatbaar voor grote verbeteringen. Default orde van benadering is lineair. * element.c: Galerkin-rendering kan nu ook m.b.v. Gouraud interpolatie, maar het is wel erg traag (positie en kleur van element vertices wordt niet opgeslagen, maar telkenmale herberekend). Heeft enkel zin voor hogere orde benaderingen. * render.h, gl.c, opengl.c: functie RenderPolygonGouraud() voor renderen van een convex polygon met Gouraud shading toegevoegd. * canvas.c: mate waarin camera rechts/links geroteerd wordt wanneer op-richting bijna samenvalt met kijkrichting aangepast zodat het wat minder schokkerig gebeurt. Nog steeds probleem met naar boven/onder roteren van de camera onder deze condities. Mon Feb 10 15:38:40 1997 Frank Suykens * brdf.c/h : Toevoeging van methods om brdf's te evalueren, gegeven brdf, inkomende en uitgaande richting. * phong.c/h : Toevoeging van routines om het phong model te evalueren. * raytracing.c : Aangepast om stachastische raytracing toe te laten. * rtstochastic.c/h : Nieuw : stochastische raytracing * rttools.c/h (RT_NextEventEstimation) : Algemene routine voor next event estimation (direct lighting) voor raytracing algoritmes. * ui_rttools.c : Nieuw. Next event estimation options panel. * ui_rtstochastic.c : Nieuw. Stochastische raytracing control panel. Wed Feb 5 10:01:49 1997 Philippe Bekaert * ui_galerkin.c: menu voor basissen + cosmetica * uit.[ch]: functie CreateSeparator() voor creeren separator widget toegevoegd. Tue Feb 4 14:07:45 1997 Philippe Bekaert * galerkin.c, stochray.c, minray.c: GetRadiance() routines zinniger gemaakt. * color.h: macro's gedefinieerd voor barycentrische en bilineaire interpolatie van COLORs. * patch.h: BilinearToUniform() en UniformToBilinear() voor omzetting uniforme <-> biineaire coordinaten globaal gemaakt. * element.[ch]: routines toegevoegd om punten op elementen naar regelmatige subelementen te transformeren. * phong.c, rtclassic.c: EdfDiffuseEmittance geeft radiantie terug, niet de radiositeit. Er is dus geen deling door M_PI meer nodig om de diffuse zelfuitgestraalde radiantie van een oppervlak te kennen. * main.c: ReadScene() toleranter gemaakt voor fouten tijdens inlezen nieuwe scene: als er zich fouten voordoen, maar de nieuwe scene is niet leeg, werk dan toch verder met de nieuwe scene ipv de oude te herstellen. * merge met code Philip van Frank sinds versie 970122 (zie onder). ====> Versie 970204 in /cw/graphics/projects/philippe geplaatst. Tue Feb 4 12:20:18 1997 Frank Suykens * raytracing.c,h : Aangepast zodat meerdere raytracing-achtige algoritmes ingeplugd kunnen worden. * rttools.c,h : Nieuwe file, bevat hulproutines voor raytracing methodes. Bv. het aflopen van alle pixels op het scherm waarbij voor elke pixel een callback wordt opgeroepen die de radiantie berekent. * rtcasting.c,h : Ray casting methode * rtclassic.c,h : Klassieke recursieve raytracing. * ui_raytracing.c : Menu gelijkaardig gemaakt aan het Radiosity menu. Fri Jan 31 17:17:20 1997 Frank Suykens * brdf (BrdfSpecularReflectance): Nieuwe functie om speculaire reflectie coefficient op te vragen. * phong : Method geimplementeerd die speculair reflectie teruggeeft. Thu Jan 30 11:22:09 1997 Frank Suykens * defaults.h : Raytracing defaults toegevoegd. Mon Jan 27 09:46:40 1997 Frank Suykens * error.h (Assert): Assert macro toegevoegd. Handig om te debuggen. * Float.h (FLOATEQUAL): Haakjes toegevoegd in macro * kdtree.c: Nieuwe file - eerste versie. Twee verschillende implementaties van kd trees. Normale kd tree met een punt per node en bucket kd trees met een punt per interne node en N punten in de bladeren. Splitsing gebeurt volgens de richting van maximale spreiding (bucket kd). Thu Jan 23 11:10:47 1997 Frank Suykens * Rad: Added photonmap menu Fri Jan 31 18:17:04 1997 Phil Dutre * particle.[ch], ui_particle.c, particleP.h, ui_radiance.c, radiance.[ch]: particle tracing. Ook aanpassingen in Rad voor de namen van de buttons en zo. Fri Jan 24 18:05:54 1997 Phil Dutre * spherical.c: toevoeging routine SampleHemisphereCosNTheta() aanpassen commentaar routine SampleHemisphereCosTheta() * spherical.h: toevoeging declaratie routine SampleHemisphereCosNTheta() Mon Feb 3 14:58:35 1997 Philippe Bekaert * main.c, ui_file.c, Config: nieuwe versie van de POOLS bibliotheek in gebruik genomen. Kleine aanpassingen aan statistiek paneel in file menu. Config file bevat compilatievlaggen voor POOLS bibliotheek (deze zijn architectuurafhankelijk). Dispose() is nu veel sneller (als POOLS gecompileerd met -DPOOL_HEADERS, kost wel behoorlijk wat storage overhead: 1 pointer per cel, die vaak slechts 8 bytes groot is). * radiosity.[ch] en alles wat er van af hangt: werd hernoemd tot radiance.[ch], RADIOSITY_METHODS is nu RADIANCE_METHOD, patch->radiosity_data is nu patch->radiance_data, ... * cluster.[ch], geom.[ch], scene.[ch], radiosity.[ch], ...: de cluster hierarchie is van nu voort van dezelfde vorm als de gegeven model hierarchie. Dit maakt dat bvb het trekken van een straal door de cluster hierarchie, of shaft culling, geen cluster- specifieke code (meer) vergt. ClusterIntersect(TopCluster, ...) wordt nu bijvoorbeeld GeomListDiscretisationIntersect(ClusteredWorld,...). In de radiosity interface zijn CreateClusterData(), PrintClusterData(), DestroyClusterData() vervangen door CreateGeomData(), ... voor bijhouden radiosity-specifieke data bij GEOMS ipv CLUSTERs. * shaftculling.c, geom.[ch]: Voorheen waren "patchlist-geoms" alleen voor shaft culling nodig, nu ook voor clustering. Dit noopte tot invoeren van een vlag "shaftcullgeom" in iedere GEOM struct om aan te duiden of de GEOM tijdens shaft culling gegenereerd is of niet (enkel tijdens shaft culling gegenereerde GEOMs moeten na shaft culling terug vrijgegeven worden). * compound.[ch]: De specifieke data voor een compound GEOM is nu geen aparte COMPOUND struct meer, maar rechtstreeks een GEOMLIST *. Naar analogie met de patchlist GEOMs (patchlist.c, patchlist_geom.h). * compound.[ch], surface.[ch]: compoundMethods en surfaceMethods() GEOM_METHODS structs globaal gemaakt. .h file bevat nu ook een "routine" om te testen of een gegeven GEOM een compound, ... is. Was reeds eerder zo voor patchlists. * patch.c, readmgf.c: omzetting uniforme naar bilineaire parametrisatie en berekening jacobiaan en normaal wat robuster gemaakt. * opengl.c: compilatieprobleem i.v.m. 'PatchListIterate();' voor 'else' opgelost (tussen {} gezet, ';' mocht er niet staan anders blijkbaar.) Fri Jan 31 19:34:02 1997 Philippe Bekaert * default MGF material sidedness veranderd: alle materialen worden 1-zijdig verondersteld. De opgegeven zijdigheid wordt genegeerd. Reden: de algoritmes werken niet voor tweezijdige oppervlakken. * main.c, statistics.h: max_selfemitted_power en max_selfemitted_radiance worden berekend bij inladen scene. * radiosity.h, render.h, gl.c, opengl.c, galerkin.c, stochray.c, minray.c: een radiantie-algorithme kan een eigen methode implementeren om de scene te renderen met hardware assistentie. Deze vervangt de default werkwijze (patches renderen met het hun toegewezen RGB kleurtriplet) indien gedefinieerd. Setup (camera, backbuffer...) gebeurt nog steeds in render.c. * Galerkin radiosity: hierarchische verfijning geimplementeerd. nieuwe bestanden: element.[ch], hierefine.c, constant.c. Voor de nabije toekomst: hogere orde benaderingen, clustering, view-potentiaal, betere verfijningscriteria. * patch.[ch]: uniforme sampling van patches (ook onregelmatige vierhoeken) geimplementeerd. Alle parametrisatie van patches is nu uniform. Nergens nog expliciete Jacobianen nodig. Nadeel voor Galerkin spul i.v.m. T-vertex elminatie en rendering m.b.v. Gouraud interpolatie: aangrenzende patches worden niet steeds op dezelfde plaats (midden gedeelde zijde) opgedeeld. * stochray.c, minray.c: PatchPoint() vervangen door PatchUniformPoint() voor uniforme sampling van patches. Wed Jan 29 11:02:28 1997 Philippe Bekaert * main.c, scene.[ch]: bij inlezen scene wordt nu ook een lijst aangelegd van patches op lichtbronnen (LightSourcePatches) + inlezen is meer verbose gemaakt. * readmgf.c: aanpassing in GetCurrentMaterial() opdat edf van niet lichtgevens materiaal (EDF *)NULL zou zijn en idem zo voor brdf en edf. Mon Jan 27 13:12:47 1997 Philippe Bekaert * uit.[ch]: option menus geimplementeerd. * Galerkin radiosity algorithme: shaftculling ingevoerd + cubatuurformules voor de vormfactoren. * galerkin.c, main.c: constant radisoity initialisatie verbetered. esimtaed_average_radiance was vroeger alleen gebaseerd op zelfuitgestraald vermogen. Nu wordt ook gedeeld door 1-gemiddelde reflectiviteit. Dit zou een betere schatting moeten zijn waarin het effect van meervoudige reflecties ook is in rekening gebracht. Visualisatie met radiantie herschaling gebaseerd op deze schatting ziet er echter veel slechter uit. Daarom wordt deze schatting nu terug vermenigvuldigd met (1-reflectiviteit) in de oproep van SetAveragLuminance in de routine ReadScene() in main.c. Fri Jan 24 19:57:05 1997 Philippe Bekaert * Galerkin radiosity geimplementeerd met uitzondering van hierarchische verfijning, hogere orde benaderingen, clustering en potentiaal. Ook de vormfactorberekening is slechts uiterst simpel (een straal tussen middelpunten, net genoeg om de rest te testen). De constant radiosity initialisatie in galerkin.c moet ook nog worden nagezien. Nieuwe bestanden: gathering.c, shooting.c, initiallinking.c, formfactor.[ch]. Aanpassingen in ui_galerkin.c, galerkin.c, galerkinP.h, shadowcaching.h. Thu Jan 23 18:30:02 1997 Philippe Bekaert * Makefile aangepast zodat make config niet meer bestaat en make depend niet meer noodzakelijk is (maar wel nog aan te raden als je de source code verandert natuurlijk). appdefaults.c bestaat niet meer (en wordt niet meer included in ui_main.c). In de plaats daarvan is er nu een bestand ui_defaults.c dat volledig automatisch wordt aangemaakt uitgaande van 'Rad' (make zorgt daarvoor). Inbakken van aangepaste application defaults gaat nu veel sneller. * aanvang gemaakt met het implementeren van Galerkin radiosity, ttz radiosty.c, ui_radiosity.c aangepast + nieuwe files aangemaakt: galerkin.[ch], ui_galerkin.c, gathering.c, shooting.c, interaction.[ch], interactionlist.h. Wed Jan 22 19:00:25 1997 Philippe Bekaert * edf*, brdf*, btdf*, phong.[ch], material.[ch] en alles wat van material.h afhangt: EDFs, BRDFs en BTDFs geimplementeerd als afzonderlijke klassen. Momenteel enkel het Phong type geimplementeerd en dan nog slechts enkel met die methoden die nodig zijn voor de radiositeitsmethode. Echter eenvoduig uit te breiden met andere methoden + andere types EDFs, ... . Tue Jan 21 18:18:55 1997 Philippe Bekaert * stochray: statistics panel aangemaakt, minray: control panel aangemaakt. Header files zijn gesplits: "publiek" deel in stochray.h en minray.h. Zaken die enkel in stochray.c en ui_stochray.c nodig zijn zitten in stochrayP.h, idemzo voor minray. Mon Jan 20 19:50:03 1997 Philippe Bekaert * uit.c: User Interface Toolkit uitgebreid met CreateFormEntry() functie voor eenvoudig creeren van invulformulieren. Invulformulieren aangepast in ui_file.c, ui_render.c en ui_camera.c. xmenu.[ch] geelimineerd.