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