Changeset 1292 for GTP/trunk/Lib/Vis/Preprocessing
- Timestamp:
- 08/28/06 21:13:40 (18 years ago)
- Location:
- GTP/trunk/Lib/Vis/Preprocessing
- Files:
-
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/Lib/Vis/Preprocessing/scripts/preprocessor.bat
r1218 r1292 1 1 @PATH=%PATH%;..\bin 2 @..\bin\release\preprocessor.exe %1 %2 %3 %4 2 @..\bin\release\preprocessor.exe %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 -
GTP/trunk/Lib/Vis/Preprocessing/src/Makefile
r1272 r1292 1 1 ############################################################################# 2 2 # Makefile for building: preprocessor 3 # Generated by qmake (2.00a) (Qt 4.1.2) on: út 22. VIII 22:47:1320063 # Generated by qmake (2.00a) (Qt 4.1.2) on: po 28. VIII 11:32:19 2006 4 4 # Project: preprocessor.pro 5 5 # Template: app … … 78 78 C:\Qt\4.1.2\mkspecs\features\win32\stl.prf \ 79 79 C:\Qt\4.1.2\mkspecs\features\shared.prf \ 80 C:\Qt\4.1.2\mkspecs\features\qt.prf \81 C:\Qt\4.1.2\mkspecs\features\win32\opengl.prf \82 C:\Qt\4.1.2\mkspecs\features\moc.prf \83 80 C:\Qt\4.1.2\mkspecs\features\resources.prf \ 84 81 C:\Qt\4.1.2\mkspecs\features\uic.prf … … 99 96 C:\Qt\4.1.2\mkspecs\features\win32\stl.prf: 100 97 C:\Qt\4.1.2\mkspecs\features\shared.prf: 101 C:\Qt\4.1.2\mkspecs\features\qt.prf:102 C:\Qt\4.1.2\mkspecs\features\win32\opengl.prf:103 C:\Qt\4.1.2\mkspecs\features\moc.prf:104 98 C:\Qt\4.1.2\mkspecs\features\resources.prf: 105 99 C:\Qt\4.1.2\mkspecs\features\uic.prf: … … 116 110 distclean: release-distclean debug-distclean FORCE 117 111 -$(DEL_FILE) Makefile 118 119 release-mocclean: $(MAKEFILE).Release120 $(MAKE) -f $(MAKEFILE).Release mocclean121 debug-mocclean: $(MAKEFILE).Debug122 $(MAKE) -f $(MAKEFILE).Debug mocclean123 mocclean: release-mocclean debug-mocclean124 125 release-mocables: $(MAKEFILE).Release126 $(MAKE) -f $(MAKEFILE).Release mocables127 debug-mocables: $(MAKEFILE).Debug128 $(MAKE) -f $(MAKEFILE).Debug mocables129 mocables: release-mocables debug-mocables130 112 FORCE: 131 113 -
GTP/trunk/Lib/Vis/Preprocessing/src/Mesh.cpp
r1287 r1292 69 69 70 70 void 71 Mesh::Preprocess() 72 { 71 Mesh::Preprocess(bool cleanup) 72 { 73 if (cleanup) 73 74 Cleanup(); 74 75 -
GTP/trunk/Lib/Vis/Preprocessing/src/Mesh.h
r1199 r1292 127 127 because it creates the local kd tree and the bounding box. 128 128 */ 129 void Preprocess( );129 void Preprocess(const bool cleanup = true); 130 130 131 131 /** Applies transformation to the mesh. -
GTP/trunk/Lib/Vis/Preprocessing/src/ObjParser.cpp
r1286 r1292 42 42 }; 43 43 44 const static int nMaxFaces = 6;44 //const static int nMaxFaces = 6; 45 45 46 46 … … 109 109 110 110 mesh->mFaces = faces; 111 mesh->Preprocess(); 111 112 // can't do cleanup because coupling with kdf file for intel ray tracer 113 mesh->Preprocess(false); 112 114 113 115 /*for (int i = 0; i < faces.size(); ++ i) … … 161 163 int meshGrouping; 162 164 Environment::GetSingleton()->GetIntValue("ObjParser.meshGrouping", meshGrouping); 165 166 int nMaxFaces = meshGrouping; 163 167 164 168 while (fgets(str, 80, file) != NULL) -
GTP/trunk/Lib/Vis/Preprocessing/src/Preprocessor.cpp
r1291 r1292 24 24 #include "ArchModeler2MLRT.hxx" 25 25 #endif 26 27 #define DEBUG_RAYCAST 0 28 26 29 27 30 namespace GtpVisibilityPreprocessor { … … 454 457 } 455 458 459 460 bool 461 Preprocessor::ConstructViewCells() 462 { 463 // if not already loaded, construct view cells from file 464 if (!mLoadViewCells) { 465 mViewCellsManager->SetViewSpaceBox(mKdTree->GetBox()); 466 467 // construct view cells using it's own set of samples 468 mViewCellsManager->Construct(this); 469 470 //-- several visualizations and statistics 471 Debug << "view cells construction finished: " << endl; 472 mViewCellsManager->PrintStatistics(Debug); 473 } 474 return true; 475 } 456 476 457 477 HierarchyManager *Preprocessor::CreateHierarchyManager(const char *name) … … 834 854 835 855 Vector3 pointA, pointB; 836 837 Intersectable *objectA = 838 CastIntelSingleRay(viewPoint, direction, pointA, box); 839 840 // cast ray into other direction 841 Intersectable *objectB = 842 CastIntelSingleRay(viewPoint, -direction, pointB, box); 843 844 const bool validSample = (objectA != objectB); 845 846 if (validSample) 847 { 848 if (objectA) 849 { 850 vssRay = new VssRay(pointB, 851 pointA, 852 objectB, 853 objectA, 854 mPass, 855 probability 856 ); 857 858 vssRays.push_back(vssRay); 859 hits ++; 860 } 861 862 if (objectB) 863 { 864 vssRay = new VssRay(pointA, 865 pointB, 866 objectA, 867 objectB, 868 mPass, 869 probability 870 ); 871 872 vssRays.push_back(vssRay); 873 hits ++; 874 } 875 //Debug << "intel ray: " << *vssRay << endl; 876 } 877 878 //cout << "a"; 879 return hits; 856 Vector3 normalA, normalB; 857 Intersectable *objectA = NULL, *objectB = NULL; 858 float dist; 859 860 int hittriangle; 861 double normal[3]; 862 hittriangle = mlrtaIntersectAS(&viewPoint.x, 863 &direction.x, 864 normal, 865 dist); 866 if (hittriangle !=-1 ) { 867 if (hittriangle >= mFaceParents.size()) 868 cerr<<"Warning: traingle index out of range! "<<hittriangle<<endl; 869 else { 870 objectA = mFaceParents[hittriangle].mObject; 871 normalA = Vector3(normal[0], normal[1], normal[2]); 872 // Get the normal of that face 873 // Mesh *mesh = ((MeshInstance *)objectA)->GetMesh(); 874 // normalA = mesh->GetFacePlane(mFaceParents[forward_hit_triangles[i]].mFaceIndex).mNormal; 875 //-rays[index+i].mDirection; // $$ temporary 876 pointA = viewPoint + direction*dist; 877 } 878 } 879 880 Vector3 dir = -direction; 881 hittriangle = mlrtaIntersectAS(&viewPoint.x, 882 &dir.x, 883 normal, 884 dist); 885 if (hittriangle !=-1 ) { 886 if (hittriangle >= mFaceParents.size()) 887 cerr<<"Warning: traingle index out of range! "<<hittriangle<<endl; 888 else { 889 objectB = mFaceParents[hittriangle].mObject; 890 normalB = Vector3(normal[0], normal[1], normal[2]); 891 // Get the normal of that face 892 // Mesh *mesh = ((MeshInstance *)objectB)->GetMesh(); 893 // normalA = mesh->GetFacePlane(mFaceParents[forward_hit_triangles[i]].mFaceIndex).mNormal; 894 //-rays[index+i].mDirection; // $$ temporary 895 pointB = viewPoint + dir*dist; 896 } 897 } 898 899 return ProcessRay(viewPoint, 900 direction, 901 objectA, pointA, normalA, 902 objectB, pointB, normalB, 903 probability, 904 vssRays, 905 box 906 ); 880 907 } 881 908 … … 909 936 910 937 if (hittriangle == -1) 911 {938 { 912 939 static Ray ray; 913 940 SetupRay(ray, viewPoint, direction); 914 941 915 942 float tmin = 0, tmax; 916 943 if (box.ComputeMinMaxT(ray, &tmin, &tmax) && tmin < tmax) 917 {944 { 918 945 tPoint = ray.Extrap(tmax); 919 }920 946 } 947 921 948 return NULL; 922 } 923 else 924 { 949 } 950 else { 951 if (hittriangle >= mFaceParents.size()) { 952 cerr<<"Warning: traingle index out of range! "<<hittriangle<<endl; 953 return NULL; 954 } 955 else { 956 925 957 tPoint[0] = pforg[0] + pfdir[0] * dist; 926 958 tPoint[1] = pforg[1] + pfdir[1] * dist; 927 959 tPoint[2] = pforg[2] + pfdir[2] * dist; 928 960 929 961 return mFaceParents[hittriangle].mObject; 930 } 962 } 963 } 964 931 965 } 932 966 … … 1050 1084 { 1051 1085 int hits=0; 1052 1086 #if DEBUG_RAYCAST 1087 Debug<<"PR "; 1088 #endif 1053 1089 if (objectA == NULL && objectB == NULL) 1054 1090 return 0; 1055 1091 1056 1092 AxisAlignedBox3 sbox = box; 1057 1093 sbox.Enlarge(Vector3(-Limits::Small)); … … 1123 1159 } 1124 1160 } 1125 1161 1162 1126 1163 return hits; 1127 1164 } … … 1135 1172 int i; 1136 1173 int num = 16; 1137 1174 1175 #if DEBUG_RAYCAST 1176 Debug<<"C16 "<<flush; 1177 #endif 1138 1178 if (mRayCastMethod == INTEL_RAYCASTER) { 1139 1179 #ifdef GTP_INTERNAL … … 1144 1184 int backward_hit_triangles[16]; 1145 1185 float backward_dist[16]; 1146 1186 1187 1147 1188 Vector3 min = sbox.Min(); 1148 1189 Vector3 max = sbox.Max(); 1149 1150 1190 for (i=0; i < num; i++) { 1151 1191 mlrtaStoreRayAS16(&rays[index + i].mOrigin.x, … … 1161 1201 1162 1202 for (i=0; i < num; i++) { 1163 Vector3 dir = -rays[index +i].mDirection;1203 Vector3 dir = -rays[index + i].mDirection; 1164 1204 mlrtaStoreRayAS16(&rays[index+i].mOrigin.x, 1165 1205 &dir.x, … … 1174 1214 1175 1215 1216 1176 1217 for (i=0; i < num; i++) { 1177 1218 Intersectable *objectA = NULL, *objectB = NULL; 1178 1219 Vector3 pointA, pointB; 1179 1220 Vector3 normalA, normalB; 1221 1222 1223 1180 1224 if (forward_hit_triangles[i] !=-1 ) { 1181 objectA = mFaceParents[forward_hit_triangles[i]].mObject; 1182 // Get the normal of that face 1183 Mesh *mesh = ((MeshInstance *)objectA)->GetMesh(); 1184 normalA = mesh->GetFacePlane(mFaceParents[forward_hit_triangles[i]].mFaceIndex).mNormal; 1185 //-rays[index+i].mDirection; // $$ temporary 1186 pointA = rays[index+i].Extrap(forward_dist[i]); 1225 if (forward_hit_triangles[i] >= mFaceParents.size()) 1226 cerr<<"Warning: traingle index out of range! "<<forward_hit_triangles[i]<<endl; 1227 else { 1228 objectA = mFaceParents[forward_hit_triangles[i]].mObject; 1229 // Get the normal of that face 1230 Mesh *mesh = ((MeshInstance *)objectA)->GetMesh(); 1231 normalA = mesh->GetFacePlane(mFaceParents[forward_hit_triangles[i]].mFaceIndex).mNormal; 1232 //-rays[index+i].mDirection; // $$ temporary 1233 pointA = rays[index+i].Extrap(forward_dist[i]); 1234 } 1187 1235 } 1188 1236 1189 1237 if (backward_hit_triangles[i]!=-1) { 1190 objectB = mFaceParents[backward_hit_triangles[i]].mObject; 1191 Mesh *mesh = ((MeshInstance *)objectB)->GetMesh(); 1192 1193 normalB = mesh->GetFacePlane(mFaceParents[backward_hit_triangles[i]].mFaceIndex).mNormal; 1194 1195 // normalB = rays[index+i].mDirection; // $$ temporary 1196 pointB = rays[index+i].Extrap(-backward_dist[i]); 1197 } 1198 1238 if (backward_hit_triangles[i] >= mFaceParents.size()) 1239 cerr<<"Warning: traingle index out of range! "<<backward_hit_triangles[i]<<endl; 1240 else { 1241 objectB = mFaceParents[backward_hit_triangles[i]].mObject; 1242 Mesh *mesh = ((MeshInstance *)objectB)->GetMesh(); 1243 1244 normalB = mesh->GetFacePlane(mFaceParents[backward_hit_triangles[i]].mFaceIndex).mNormal; 1245 1246 // normalB = rays[index+i].mDirection; // $$ temporary 1247 pointB = rays[index+i].Extrap(-backward_dist[i]); 1248 } 1249 } 1250 1199 1251 ProcessRay(rays[index+i].mOrigin, 1200 1252 rays[index+i].mDirection, … … 1207 1259 } 1208 1260 #endif 1261 1209 1262 } else { 1210 1263 … … 1217 1270 } 1218 1271 } 1219 1272 #if DEBUG_RAYCAST 1273 Debug<<"C16F\n"<<flush; 1274 #endif 1220 1275 } 1221 1276 … … 1236 1291 i += 16; 1237 1292 } else { 1293 1238 1294 CastRay(rays[i].mOrigin, 1239 1295 rays[i].mDirection, … … 1241 1297 vssRays, 1242 1298 mViewCellsManager->GetViewSpaceBox()); 1299 1243 1300 i++; 1244 1301 } … … 1252 1309 } 1253 1310 1254 1255 int Preprocessor::CastRay( 1256 const Vector3 &viewPoint, 1257 const Vector3 &direction, 1258 const float probability, 1259 VssRayContainer &vssRays, 1260 const AxisAlignedBox3 &box 1261 ) 1262 { 1263 switch (mRayCastMethod) 1311 Intersectable * 1312 Preprocessor::CastSimpleRay( 1313 const Vector3 &viewPoint, 1314 const Vector3 &direction, 1315 const AxisAlignedBox3 &box, 1316 Vector3 &point, 1317 Vector3 &normal 1318 ) 1319 { 1320 Intersectable *result = NULL; 1321 switch (mRayCastMethod) 1322 { 1323 case INTEL_RAYCASTER: { 1324 float dist; 1325 int hittriangle; 1326 double n[3]; 1327 hittriangle = mlrtaIntersectAS(&viewPoint.x, 1328 &direction.x, 1329 n, 1330 dist); 1331 if (hittriangle !=-1 ) { 1332 if (hittriangle >= mFaceParents.size()) 1333 cerr<<"Warning: traingle index out of range! "<<hittriangle<<endl; 1334 else { 1335 result = mFaceParents[hittriangle].mObject; 1336 normal = Vector3(n[0], n[1], n[2]); 1337 point = viewPoint + direction*dist; 1338 } 1339 } 1340 break; 1341 } 1342 case INTERNAL_RAYCASTER: 1343 default: { 1344 static Ray ray; 1345 1346 ray.intersections.clear(); 1347 // do not store anything else then intersections at the ray 1348 ray.Init(viewPoint, direction, Ray::LOCAL_RAY); 1349 1350 ray.mFlags &= ~Ray::CULL_BACKFACES; 1351 1352 if (mKdTree->CastRay(ray)) { 1353 result = ray.intersections[0].mObject; 1354 point = ray.Extrap(ray.intersections[0].mT); 1355 normal = ray.intersections[0].mNormal; 1356 } 1357 break; 1358 } 1359 } 1360 return result; 1361 } 1362 1363 int 1364 Preprocessor::CastRay( 1365 const Vector3 &viewPoint, 1366 const Vector3 &direction, 1367 const float probability, 1368 VssRayContainer &vssRays, 1369 const AxisAlignedBox3 &box 1370 ) 1371 { 1372 #if DEBUG_RAYCAST 1373 Debug<<"CR "<<flush; 1374 #endif 1375 switch (mRayCastMethod) 1264 1376 { 1265 1377 case INTEL_RAYCASTER: … … 1269 1381 return CastInternalRay(viewPoint, direction, probability, vssRays, box); 1270 1382 } 1383 #if DEBUG_RAYCAST 1384 Debug<<"CRF "<<flush; 1385 #endif 1271 1386 } 1272 1387 -
GTP/trunk/Lib/Vis/Preprocessing/src/Preprocessor.h
r1288 r1292 87 87 */ 88 88 bool PrepareViewCells(); 89 89 90 /** Construct viewcells (if not already loaded) */ 91 bool 92 ConstructViewCells(); 93 90 94 /** Returns the specified sample strategy, NULL if no valid strategy. 91 95 */ … … 168 172 ); 169 173 174 Intersectable * 175 CastSimpleRay( 176 const Vector3 &viewPoint, 177 const Vector3 &direction, 178 const AxisAlignedBox3 &box, 179 Vector3 &point, 180 Vector3 &normal 181 ); 182 170 183 //////////////////////////////////////////////// 171 184 -
GTP/trunk/Lib/Vis/Preprocessing/src/Preprocessor.icproj
r1283 r1292 115 115 <Tool 116 116 Name="CppCmplrTool" 117 Optimization=" 1000"118 GlobalOptimizations=" 1"117 Optimization="2" 118 GlobalOptimizations="0" 119 119 InlineFunctionExpansion="0" 120 EnableIntrinsicFunctions=" 1"120 EnableIntrinsicFunctions="0" 121 121 FavorSizeOrSpeed="1" 122 OmitFramePointers=" 1"123 EnableFiberSafeOptimizations=" 1"122 OmitFramePointers="0" 123 EnableFiberSafeOptimizations="0" 124 124 OptimizeForProcessor="3" 125 125 OptimizeForWindowsApplication="1" … … 135 135 WarningLevel="2" 136 136 Detect64BitPortabilityProblems="1" 137 DebugInformationFormat="3" 138 UseProcExt="4" 139 Parallelization="1"/> 137 DebugInformationFormat="3"/> 140 138 <Tool 141 139 Name="LinkerTool" -
GTP/trunk/Lib/Vis/Preprocessing/src/Preprocessor.vcproj
r1287 r1292 115 115 Name="VCCLCompilerTool" 116 116 Optimization="2" 117 GlobalOptimizations=" TRUE"117 GlobalOptimizations="FALSE" 118 118 InlineFunctionExpansion="0" 119 EnableIntrinsicFunctions=" TRUE"119 EnableIntrinsicFunctions="FALSE" 120 120 FavorSizeOrSpeed="1" 121 OmitFramePointers=" TRUE"122 EnableFiberSafeOptimizations=" TRUE"121 OmitFramePointers="FALSE" 122 EnableFiberSafeOptimizations="FALSE" 123 123 OptimizeForProcessor="3" 124 124 OptimizeForWindowsApplication="TRUE" -
GTP/trunk/Lib/Vis/Preprocessing/src/RssPreprocessor.cpp
r1283 r1292 503 503 504 504 long startTime = GetTime(); 505 long lastTime; 506 float totalTime; 505 507 506 508 int totalSamples = 0; … … 602 604 mViewCellsManager->ComputeSampleContributions(mVssRays, true, false); 603 605 cout<<"done.\n"<<flush; 606 607 long time = GetTime(); 608 totalTime = TimeDiff(startTime, time)*1e-3; 609 lastTime = time; 604 610 605 611 mStats << 606 612 "#Pass\n" <<mPass<<endl<< 607 613 "#RssPass\n" <<rssPass<<endl<< 608 "#Time\n" << TimeDiff(startTime, GetTime())*1e-3<<endl<<614 "#Time\n" << totalTime <<endl<< 609 615 "#TotalSamples\n" <<totalSamples<<endl<< 610 616 "#RssSamples\n" <<rssSamples<<endl; … … 748 754 749 755 // now evaluate the ratios for the next pass 750 #define TIMES 0756 #define TIMES 1 751 757 752 758 #if TIMES … … 800 806 mInitialSamples)<<"%\n"; 801 807 808 809 long time = GetTime(); 810 totalTime += TimeDiff(lastTime, time); 811 lastTime = time; 802 812 803 813 mStats << -
GTP/trunk/Lib/Vis/Preprocessing/src/SamplingPreprocessor.cpp
r1251 r1292 15 15 16 16 17 SamplingPreprocessor::SamplingPreprocessor(): mPass(0)17 SamplingPreprocessor::SamplingPreprocessor(): Preprocessor(), mPass(0) 18 18 { 19 19 // this should increase coherence of the samples … … 36 36 ) 37 37 { 38 static Ray ray;39 38 AxisAlignedBox3 box = mViewCellsManager->GetViewSpaceBox(); 40 39 … … 43 42 if (!sbox.IsInside(origin)) 44 43 return 0; 45 46 ray.intersections.clear(); 47 // do not store anything else then intersections at the ray 48 ray.Init(origin, direction, Ray::LOCAL_RAY); 49 50 ray.mFlags &= ~Ray::CULL_BACKFACES; 51 52 44 45 Vector3 point, normal; 46 Intersectable *object; 53 47 54 48 // cast ray to KD tree to find intersection with other objects 55 Intersectable *objectA = NULL; 56 Vector3 pointA; 57 float bsize = Magnitude(box.Size()); 58 59 if (mKdTree->CastRay(ray)) { 60 if (!mDetectEmptyViewSpace || DotProd(ray.intersections[0].mNormal, direction) < 0) { 61 objectA = ray.intersections[0].mObject; 62 pointA = ray.Extrap(ray.intersections[0].mT); 63 } 64 } 65 return objectA; 49 object = CastSimpleRay(origin, 50 direction, 51 mKdTree->GetBox(), 52 point, 53 normal 54 ); 55 56 if (mDetectEmptyViewSpace && DotProd(normal, direction) >= 0) { 57 object = NULL; 58 } 59 60 return object; 66 61 } 67 62 -
GTP/trunk/Lib/Vis/Preprocessing/src/TestPreprocessor.icproj
r1283 r1292 126 126 <Tool 127 127 Name="CppCmplrTool" 128 Optimization=" 3"128 Optimization="2" 129 129 GlobalOptimizations="0" 130 130 FavorSizeOrSpeed="1" -
GTP/trunk/Lib/Vis/Preprocessing/src/TestPreprocessor.vcproj
r1287 r1292 130 130 <Tool 131 131 Name="VCCLCompilerTool" 132 Optimization=" 3"132 Optimization="2" 133 133 GlobalOptimizations="FALSE" 134 134 FavorSizeOrSpeed="1" -
GTP/trunk/Lib/Vis/Preprocessing/src/VspTree.h
r1291 r1292 190 190 bool Mailed() const { return mMailbox == sMailId; } 191 191 192 192 193 static int sMailId; 193 194 int mMailbox; -
GTP/trunk/Lib/Vis/Preprocessing/src/default.env
r1283 r1292 56 56 } 57 57 58 ObjParser { 59 meshGrouping 500 60 } 58 61 59 62 RenderSampler { … … 104 107 105 108 SamplingPreprocessor { 106 totalSamples 30000000109 totalSamples 10000000 107 110 samplesPerPass 1000000 108 111 } … … 112 115 initialSamples 1000000 113 116 vssSamples 10000000 114 vssSamplesPerPass 500000117 vssSamplesPerPass 1000000 115 118 useImportanceSampling true 116 119 … … 192 195 } 193 196 197 194 198 MeshKdTree { 195 199 Termination { 196 minCost 32200 minCost 150 197 201 maxDepth 18 198 202 maxCostRatio 0.9 … … 221 225 222 226 #number of active view cells 223 active 5000227 active 1000 224 228 maxStaticMemory 200 225 229 … … 234 238 235 239 height 5.0 236 maxViewCells 5000240 maxViewCells 1000 237 241 238 242 #percentage of total visible objects where pvs is considered invalid -
GTP/trunk/Lib/Vis/Preprocessing/src/main.cpp
r1284 r1292 143 143 MeshKdTree::ParseEnvironment(); 144 144 145 145 146 char buff[128]; 146 147 Environment::GetSingleton()->GetStringValue("Preprocessor.type", buff); -
GTP/trunk/Lib/Vis/Preprocessing/src/preprocessor.pro
r1272 r1292 1 #CONFIG -= qt 2 CONFIG += console warn_off thread release 1 CONFIG -= qt debug 2 CONFIG += console warn_off thread release mlrt 3 3 4 4 TEMPLATE = app … … 29 29 win32:LIBPATH += GL $$NONGTP/Xerces/xerces/lib $$NONGTP/Devil/lib \ 30 30 $$NONGTP/glut $$NONGTP/Boost/lib $$NONGTP/Zlib/lib 31 31 32 32 33 CONFIG(qt) { … … 64 65 } 65 66 67 68 CONFIG(mlrt) { 69 70 CONFIG(release) { 71 LIBPATH += ../MultiLevelRayTracing/RTScene/Release \ 72 ../MultiLevelRayTracing/RTWorld/Release 73 } 74 75 CONFIG(debug) { 76 LIBPATH += ../MultiLevelRayTracing/RTScene/Debug \ 77 ../MultiLevelRayTracing/RTWorld/Debug 78 } 79 80 LIBS += RTScene.lib RTWorld.lib 81 DEFINES += GTP_INTERNAL 82 INCLUDEPATH += ../MultiLevelRayTracing 83 } 84 85 66 86 QMAKE_LFLAGS_CONSOLE=/NODEFAULTLIB:LIBCMT 67 87 … … 91 111 VrmlExporter.cpp PlyParser.cpp plyfile.c RenderSampler.cpp \ 92 112 GzBinFileInputStream.cpp GzFileInputSource.cpp \ 93 LogManager.cpp \113 LogManager.cpp VspTree.cpp \ 94 114 SamplingStrategy.cpp KdIntersectable.cpp \ 95 OspTree.cpp HierarchyManager.cpp ObjParser.cpp VspTree.cpp\115 OspTree.cpp HierarchyManager.cpp ObjParser.cpp \ 96 116 BvHierarchy.cpp \ 97 117 BoostPreprocessorThread.cpp 118 98 119 99 120
Note: See TracChangeset
for help on using the changeset viewer.