| 502 | | |
| | 502 | arguments.getApplicationUsage()->addCommandLineOption("--minNearSplit", "ParallelSplitShadowMap shadow map near offset.");//ADEGLI |
| | 503 | arguments.getApplicationUsage()->addCommandLineOption("--maxFarDist", "ParallelSplitShadowMap max far distance to shadow.");//ADEGLI |
| | 504 | arguments.getApplicationUsage()->addCommandLineOption("--NVidea", "ParallelSplitShadowMap set default PolygonOffset for NVidea.");//ADEGLI |
| | 505 | arguments.getApplicationUsage()->addCommandLineOption("--PolyOffset-Factor", "ParallelSplitShadowMap set PolygonOffset factor.");//ADEGLI |
| | 506 | arguments.getApplicationUsage()->addCommandLineOption("--PolyOffset-Unit", "ParallelSplitShadowMap set PolygonOffset unit.");//ADEGLI |
| | 507 | arguments.getApplicationUsage()->addCommandLineOption("--CullFaceFront", "ParallelSplitShadowMap add a cull face: front.");//ADEGLI |
| | 508 | |
| | 509 | |
| | 641 | |
| | 642 | int minNearSplit=0; |
| | 643 | while (arguments.read("--minNearSplit", minNearSplit)) |
| | 644 | if ( minNearSplit > 0 ) { |
| | 645 | pssm->setMinNearDistanceForSplits(minNearSplit); |
| | 646 | std::cout << "ParallelSplitShadowMap : setMinNearDistanceForSplits(" << minNearSplit <<")" << std::endl; |
| | 647 | } |
| | 648 | |
| | 649 | int maxfardist = 0; |
| | 650 | while (arguments.read("--maxFarDist", maxfardist)) |
| | 651 | if ( maxfardist > 0 ) { |
| | 652 | pssm->setMaxFarDistance(maxfardist); |
| | 653 | std::cout << "ParallelSplitShadowMap : setMaxFarDistance(" << maxfardist<<")" << std::endl; |
| | 654 | } |
| | 655 | |
| | 656 | double polyoffsetfactor = -0.02; |
| | 657 | double polyoffsetunit = 1.0; |
| | 658 | while (arguments.read("--PolyOffset-Factor", polyoffsetfactor)); |
| | 659 | while (arguments.read("--PolyOffset-Unit", polyoffsetunit)); |
| | 660 | pssm->setPolygonOffset(osg::Vec2(polyoffsetfactor,polyoffsetunit)); //ATI Radeon |
| | 661 | |
| | 662 | if (arguments.read("--NVidea")){ |
| | 663 | //pssm->setPolygonOffset(osg::Vec2(-0.02,1.0)); //ATI Radeon |
| | 664 | pssm->setPolygonOffset(osg::Vec2(10.0f,20.0f)); //NVidea |
| | 665 | } |
| | 666 | |
| | 667 | if ( arguments.read("--CullFaceFront") ) { |
| | 668 | pssm->forceFrontCullFace(); |
| | 669 | } |