| 328 | | osg::Vec4 ambient(0.2,0.2,0.2,1.0); |
| 329 | | osg::Vec4 diffuse(0.8,0.8,0.8,1.0); |
| 330 | | osg::Vec4 zero_colour(0.0,0.0,0.0,1.0); |
| 331 | | _lightpos.set(0.0,1.0,0.0,0.0); |
| 332 | | |
| 468 | | #if 0 |
| 469 | | osg::notify(osg::NOTICE)<<"new_bin->getStateGraphList().size()= "<<new_bin->getStateGraphList().size()<<std::endl; |
| 470 | | osg::notify(osg::NOTICE)<<"new_bin->getRenderBinList().size()= "<<new_bin->getRenderBinList().size()<<std::endl; |
| 471 | | osg::notify(osg::NOTICE)<<"new_bin->getRenderLeafList().size()= "<<new_bin->getRenderLeafList().size()<<std::endl; |
| 472 | | |
| 473 | | |
| 474 | | for(osgUtil::RenderBin::RenderBinList::iterator itr = new_bin->getRenderBinList().begin(); |
| 475 | | itr != new_bin->getRenderBinList().end(); |
| 476 | | ++itr) |
| 477 | | { |
| 478 | | osg::notify(osg::NOTICE)<<" bin num = "<<itr->first<<std::endl; |
| 479 | | osg::notify(osg::NOTICE)<<" new_bin->getStateGraphList().size()= "<<itr->second->getStateGraphList().size()<<std::endl; |
| 480 | | osg::notify(osg::NOTICE)<<" new_bin->getRenderBinList().size()= "<<itr->second->getRenderBinList().size()<<std::endl; |
| 481 | | osg::notify(osg::NOTICE)<<" new_bin->getRenderLeafList().size()= "<<itr->second->getRenderLeafList().size()<<std::endl; |
| 482 | | |
| 483 | | } |
| 484 | | #endif |
| 485 | | |
| 499 | | #if 0 |
| 500 | | for(osgUtil::RenderBin::RenderBinList::iterator itr = new_bin->getRenderBinList().begin(); |
| 501 | | itr != new_bin->getRenderBinList().end(); |
| 502 | | ++itr) |
| 503 | | { |
| 504 | | osg::notify(osg::NOTICE)<<"bin num = "<<itr->first<<std::endl; |
| 505 | | } |
| 506 | | |
| 507 | | osg::notify(osg::NOTICE)<<"after new_bin->getStateGraphList().size()= "<<new_bin->getStateGraphList().size()<<std::endl; |
| 508 | | osg::notify(osg::NOTICE)<<"after new_bin->getRenderBinList().size()= "<<new_bin->getRenderBinList().size()<<std::endl; |
| 509 | | osg::notify(osg::NOTICE)<<"after new_bin->getRenderLeafList().size()= "<<new_bin->getRenderLeafList().size()<<std::endl; |
| 510 | | #endif |
| 511 | | |
| 512 | | |
| 513 | | original_bin->setStateSet(_ss1.get()); |
| 514 | | |
| 515 | | osgUtil::RenderStage* orig_rs = cv->getRenderStage(); |
| 516 | | osgUtil::RenderStage* new_rs = new osgUtil::RenderStage; |
| 517 | | orig_rs->addPostRenderStage(new_rs); |
| 518 | | |
| 519 | | new_rs->setViewport(orig_rs->getViewport()); |
| 520 | | new_rs->setClearColor(orig_rs->getClearColor()); |
| 521 | | new_rs->setClearMask(GL_STENCIL_BUFFER_BIT); |
| 522 | | new_rs->setDrawBuffer(orig_rs->getDrawBuffer()); |
| 523 | | new_rs->setReadBuffer(orig_rs->getReadBuffer()); |
| 524 | | new_rs->setColorMask(orig_rs->getColorMask()); |
| 525 | | new_rs->setPositionalStateContainer(orig_rs->getPositionalStateContainer()); |
| 526 | | |
| 528 | | { |
| 529 | | // new_rs->setStateSet(_mainShadowStateSet.get()); |
| 530 | | new_rs->getRenderBinList()[0] = shadowVolumeBin; |
| 531 | | shadowVolumeBin->setStateSet(_shadowVolumeStateSet.get()); |
| 532 | | |
| 533 | | osg::ref_ptr<osgUtil::RenderBin> nested_bin = new_rs->find_or_insert(1,"RenderBin"); |
| 534 | | nested_bin->getRenderBinList()[0] = new_bin; |
| 535 | | nested_bin->setStateSet(_shadowedSceneStateSet.get()); |
| 536 | | } |
| 537 | | |
| 538 | | #if 0 |
| 539 | | osg::notify(osg::NOTICE)<<"After setup"<<std::endl; |
| 540 | | osg::notify(osg::NOTICE)<<"new_bin->getStateGraphList().size()= "<<new_bin->getStateGraphList().size()<<std::endl; |
| 541 | | osg::notify(osg::NOTICE)<<"new_bin->getRenderBinList().size()= "<<new_bin->getRenderBinList().size()<<std::endl; |
| 542 | | osg::notify(osg::NOTICE)<<"new_bin->getRenderLeafList().size()= "<<new_bin->getRenderLeafList().size()<<std::endl; |
| 543 | | |
| 544 | | |
| 545 | | for(osgUtil::RenderBin::RenderBinList::iterator itr = new_bin->getRenderBinList().begin(); |
| 546 | | itr != new_bin->getRenderBinList().end(); |
| 547 | | ++itr) |
| 548 | | { |
| 549 | | osg::notify(osg::NOTICE)<<" bin num = "<<itr->first<<std::endl; |
| 550 | | osg::notify(osg::NOTICE)<<" new_bin->getStateGraphList().size()= "<<itr->second->getStateGraphList().size()<<std::endl; |
| 551 | | osg::notify(osg::NOTICE)<<" new_bin->getRenderBinList().size()= "<<itr->second->getRenderBinList().size()<<std::endl; |
| 552 | | osg::notify(osg::NOTICE)<<" new_bin->getRenderLeafList().size()= "<<itr->second->getRenderLeafList().size()<<std::endl; |
| 553 | | |
| 554 | | } |
| 555 | | osg::notify(osg::NOTICE)<<std::endl; |
| 556 | | #endif |
| 557 | | |
| | 480 | { |
| | 481 | original_bin->setStateSet(_ss1.get()); |
| | 482 | |
| | 483 | osgUtil::RenderStage* orig_rs = cv->getRenderStage(); |
| | 484 | osgUtil::RenderStage* new_rs = new osgUtil::RenderStage; |
| | 485 | orig_rs->addPostRenderStage(new_rs); |
| | 486 | |
| | 487 | new_rs->setViewport(orig_rs->getViewport()); |
| | 488 | new_rs->setClearColor(orig_rs->getClearColor()); |
| | 489 | new_rs->setClearMask(GL_STENCIL_BUFFER_BIT); |
| | 490 | new_rs->setDrawBuffer(orig_rs->getDrawBuffer()); |
| | 491 | new_rs->setReadBuffer(orig_rs->getReadBuffer()); |
| | 492 | new_rs->setColorMask(orig_rs->getColorMask()); |
| | 493 | new_rs->setPositionalStateContainer(orig_rs->getPositionalStateContainer()); |
| | 494 | |
| | 495 | if (shadowVolumeBin.valid()) |
| | 496 | { |
| | 497 | // new_rs->setStateSet(_mainShadowStateSet.get()); |
| | 498 | new_rs->getRenderBinList()[0] = shadowVolumeBin; |
| | 499 | shadowVolumeBin->setStateSet(_shadowVolumeStateSet.get()); |
| | 500 | |
| | 501 | osg::ref_ptr<osgUtil::RenderBin> nested_bin = new_rs->find_or_insert(1,"RenderBin"); |
| | 502 | nested_bin->getRenderBinList()[0] = new_bin; |
| | 503 | nested_bin->setStateSet(_shadowedSceneStateSet.get()); |
| | 504 | } |
| | 505 | } |