Changeset 2897 for GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp
- Timestamp:
- 09/03/08 01:57:45 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp
r2896 r2897 83 83 RenderQueue *renderQueue = NULL; 84 84 85 // traverses and renders the hierarchy 86 RenderTraverser *shadowTraverser = NULL; 87 88 85 89 /// these values get scaled with the frame rate 86 90 static float keyForwardMotion = 30.0f; … … 211 215 void MiddleMotion(int x, int y); 212 216 void CalcDecimalPoint(string &str, int d); 213 void ResetTraverser(); 217 218 RenderTraverser *CreateTraverser(Camera *cam); 214 219 215 220 void KeyHorizontalMotion(float shift); … … 427 432 bvh->SetVirtualLeaves(trianglesPerVirtualLeaf); 428 433 429 bvh->SetCamera(camera);434 //bvh->SetCamera(camera); 430 435 431 436 InitCg(); … … 435 440 436 441 // initialize the render traverser 437 ResetTraverser();442 traverser = CreateTraverser(camera); 438 443 439 444 visualization = new Visualization(bvh, camera, NULL, &state); 440 445 446 state.SetRenderType(RenderState::FIXED); 441 447 sceneQuery = new SceneQuery(bvh->GetBox(), traverser); 442 448 … … 691 697 692 698 693 void ResetTraverser()694 { 695 DEL_PTR(traverser);696 699 RenderTraverser *CreateTraverser(Camera *cam) 700 { 701 RenderTraverser *tr; 702 697 703 bvh->ResetNodeClassifications(); 698 704 … … 700 706 { 701 707 case RenderTraverser::CULL_FRUSTUM: 702 tr averser= new FrustumCullingTraverser();708 tr = new FrustumCullingTraverser(); 703 709 break; 704 710 case RenderTraverser::STOP_AND_WAIT: 705 tr averser= new StopAndWaitTraverser();711 tr = new StopAndWaitTraverser(); 706 712 break; 707 713 case RenderTraverser::CHC: 708 tr averser= new CHCTraverser();714 tr = new CHCTraverser(); 709 715 break; 710 716 case RenderTraverser::CHCPLUSPLUS: 711 tr averser= new CHCPlusPlusTraverser();717 tr = new CHCPlusPlusTraverser(); 712 718 break; 713 719 714 720 default: 715 traverser = new FrustumCullingTraverser(); 716 } 717 718 traverser->SetCamera(camera); 719 traverser->SetHierarchy(bvh); 720 traverser->SetRenderQueue(renderQueue); 721 traverser->SetRenderState(&state); 722 traverser->SetUseOptimization(useOptimization); 723 traverser->SetUseRenderQueue(useRenderQueue); 724 traverser->SetVisibilityThreshold(threshold); 725 traverser->SetAssumedVisibleFrames(assumedVisibleFrames); 726 traverser->SetMaxBatchSize(maxBatchSize); 727 traverser->SetUseMultiQueries(useMultiQueries); 728 traverser->SetUseTightBounds(useTightBounds); 729 traverser->SetUseDepthPass(renderType == RenderState::DEPTH_PASS); 730 traverser->SetRenderQueue(renderQueue); 721 tr = new FrustumCullingTraverser(); 722 } 723 724 tr->SetCamera(cam); 725 tr->SetHierarchy(bvh); 726 tr->SetRenderQueue(renderQueue); 727 tr->SetRenderState(&state); 728 tr->SetUseOptimization(useOptimization); 729 tr->SetUseRenderQueue(useRenderQueue); 730 tr->SetVisibilityThreshold(threshold); 731 tr->SetAssumedVisibleFrames(assumedVisibleFrames); 732 tr->SetMaxBatchSize(maxBatchSize); 733 tr->SetUseMultiQueries(useMultiQueries); 734 tr->SetUseTightBounds(useTightBounds); 735 tr->SetUseDepthPass(renderType == RenderState::DEPTH_PASS); 736 tr->SetRenderQueue(renderQueue); 737 738 return tr; 731 739 } 732 740 … … 866 874 } 867 875 868 if (showShadowMap && !shadowMap)869 {870 const float shadowSize = 4096;871 shadowMap = new ShadowMap(shadowSize, bvh->GetBox(), camera);872 }873 876 874 877 // render without shading … … 908 911 case RenderState::DEFERRED: 909 912 910 // change CHC state (must be done for each change of camera) 911 BvhNode::SetCurrentState(1); 912 913 if (showShadowMap && shadowChanged) 913 if (showShadowMap)// && shadowChanged) 914 914 { 915 if (!shadowMap) 916 { 917 const float shadowSize = 4096; 918 shadowMap = new ShadowMap(light, shadowSize, bvh->GetBox(), camera); 919 } 920 921 // change CHC state (must be done for each change of camera) 922 BvhNode::SetCurrentState(1); 923 924 if (!shadowTraverser) 925 shadowTraverser = CreateTraverser(shadowMap->GetShadowCamera()); 926 915 927 shadowChanged = false; 916 928 … … 921 933 922 934 // the scene is rendered withouth any shading 923 shadowMap->ComputeShadowMap( light, traverser);935 shadowMap->ComputeShadowMap(shadowTraverser); 924 936 925 937 // change back state … … 1073 1085 case 32: //space 1074 1086 renderMode = (renderMode + 1) % RenderTraverser::NUM_TRAVERSAL_TYPES; 1075 ResetTraverser(); 1087 1088 DEL_PTR(traverser); 1089 traverser = CreateTraverser(camera); 1090 1091 if (shadowTraverser && shadowMap) 1092 { 1093 DEL_PTR(shadowTraverser); 1094 //shadowTraverser = CreateTraverser(shadowMap->GetShadowCamera()); 1095 } 1096 1076 1097 break; 1077 1098 case 'h':
Note: See TracChangeset
for help on using the changeset viewer.