00001 /*
00002 File: RadControl.h
00003
00004 Function: Defines a structure for all of the possible options for
00005 the various radiosity illumination methods.
00006
00007 Author(s): Andrew Willmott
00008
00009 Copyright: (c) 1997-2000, Andrew Willmott
00010 */
00011
00012 #ifndef __RadOptions__
00013 #define __RadOptions__
00014
00015 #include "gcl/Renderer.h"
00016 #include "gcl/Scene.h"
00017
00018 enum RadType
00019 {
00020 kNoMethod,
00021 kMatrix,
00022 kProgressive,
00023 kProgSubstruct,
00024 kHierarchical,
00025 kAnalytical,
00026 kNumRadMethods
00027 };
00028
00029 enum HRBasisType
00030 {
00031 kHaar = 1,
00032 kFlatlet2,
00033 kFlatlet3,
00034 kMultiwavelet2,
00035 kMultiwavelet3
00036 };
00037
00039 enum VisType
00040 {
00041 vis_none,
00042 vis_1,
00043 vis_16x1,
00045 vis_4x4
00047 };
00048
00049 enum MeshType
00050 {
00051 mesh_std,
00052 mesh_random,
00053 mesh_nonlin
00054 };
00055
00056 enum SolverType
00057 {
00058 sv_twoStage,
00059 sv_interleaved,
00060 sv_scheduled
00061 };
00062
00063 class HRElem;
00064 class RadMethod;
00065
00068 class RadControl
00069 {
00070 public:
00071
00072 RadControl();
00073
00074 // Options for the current render
00075
00076 RadType method;
00077 HRBasisType basis;
00078
00079 // Method options
00080
00081 GCLReal patchSubdivs;
00082 GCLReal eltSubdivs;
00083 GCLReal alpha;
00084 GCLReal error;
00085
00086 GCLReal kFError;
00087 GCLReal kAError;
00088 SolverType solver;
00089 Bool useBF;
00090 Bool cluster;
00091 Bool gridOn;
00092 Bool textureRefl;
00093 Bool useConjGrad;
00094 Bool ambient;
00095 Bool refAllLinks;
00097 Int refineLevels;
00099 Int maxShots;
00100 Int schedIterations;
00101
00102 // Visibility and form factor stuff.
00103
00104 VisType visibility;
00105 Bool jitterRot;
00107 GCLReal dFError;
00109 GCLReal visError;
00113 Int quadLevel;
00114 GCLReal forceVisReuseArea;
00116 GCLReal sampleFactor;
00117 Bool visInQuad;
00119 GCLReal favourReceiver;
00122 // Mesh options
00123
00124 MeshType mesh;
00125 Bool fixMesh;
00126 Bool connectMesh;
00127 Bool noGridMesh;
00128
00129 // MR complexity options
00130
00131 GCLReal rtComplexity;
00132 GCLReal meshComplexity;
00133
00134 // Simulation opts.
00135
00136 Bool stop;
00137 Bool step;
00138 Bool pause;
00139
00140 // Display options
00141
00142 Bool graded;
00143 Bool anchor;
00144 Bool gouraud;
00145 Bool texture;
00146 Bool wire;
00147
00148 Bool redWire;
00149 Bool shotDisplay;
00150 Bool patchView;
00151 HRElem *pvData;
00152 Bool funcView;
00153
00154 Bool animate;
00155 Bool showRays;
00156 Bool showLinks;
00157 Bool showFCs;
00158
00159 Int choke;
00161 Bool drawMatrix;
00162
00163 Bool outlineClusters;
00164 Bool outlineVisGrid;
00165
00166 Bool finalPass;
00167 Bool bestPass;
00168 Bool bestVisPass;
00169 Int bestLevels;
00170
00171 // debugging, adding code
00172
00173 Bool o1, o2, o3, o4, o5, o6;
00174
00175 // Objects relevant to the current render
00176
00177 RadMethod *radObject;
00178 Int stage;
00179
00180 // Statistics for the current render
00181
00182 Bool dumpTree;
00184 Bool dumpScenes;
00186 Bool updateScene;
00188 GCLReal sliceTime, limitTime;
00189 Int numPolys;
00190 Int rays;
00191 GCLReal mem;
00192 StrConst outFile;
00193 };
00194
00195 extern Reflectance kRadRGBToLum;
00196 extern Int radVersionMajor;
00197 extern Int radVersionMinor;
00198 extern Int radVersionFix;
00199 extern RadControl *gRadControl;
00200
00201 TempString RadGetVersion();
00202
00203 #endif