void Shadows::setupShadows() { SceneManager* sceneMgr = getSceneManager(); sceneMgr->setShadowTechnique(SHADOWTYPE_TEXTURE_ADDITIVE_INTEGRATED); // check SHADOWTYPE_TEXTURE_ADDITIVE sceneMgr->setShadowTexturePixelFormat(Ogre::PF_FLOAT32_R); sceneMgr->setShadowTextureCountPerLightType(Ogre::Light::LT_SPOTLIGHT, 1); //sceneMgr->setShadowTextureCountPerLightType(Ogre::Light::LT_DIRECTIONAL, 1); sceneMgr->setShadowTextureConfig(0, 512, 512, PF_FLOAT32_R); sceneMgr->setShadowTextureCasterMaterial("ESMShadowCaster"); sceneMgr->setShadowTextureSelfShadow(true); //sceneMgr->setShowDebugShadows(true); LiSPSMShadowCameraSetup* camSetup = new Ogre::LiSPSMShadowCameraSetup(); camSetup->setCameraLightDirectionThreshold(Ogre::Degree(20)); getShadowCameraSetupMap()["LiSPSM"] = ShadowCameraSetupPtr(camSetup); sceneMgr->setShadowCameraSetup( getShadowCameraSetupMap()["LiSPSM"] ); sceneMgr->setShadowCasterRenderBackFaces(false); //DebugTextureManager::getSingleton().addShadowTextures(sceneMgr, 1); createTestScene(); /* const unsigned numShadowRTTs = sceneMgr->getShadowTextureCount(); for (unsigned i = 0; i < numShadowRTTs; ++i) { printf("shadow tex %d\n", i); Ogre::TexturePtr tex = sceneMgr->getShadowTexture(i); Ogre::Viewport *vp = tex->getBuffer()->getRenderTarget()->getViewport(0); //Ogre::Real d = getCamera()->getFarClipDistance(); //vp->setBackgroundColour(Ogre::ColourValue(d, d*d, d, d)); vp->setBackgroundColour(Ogre::ColourValue(1, 1, 1, 1)); vp->setClearEveryFrame(true); } */ Ogre::Viewport* shadowMapViewport = sceneMgr->getShadowTexture(0)->getBuffer()->getRenderTarget()->getViewport(0); CompositorManager::getSingleton().addCompositor(shadowMapViewport, "ESM/BOXFILTER_5TAPS"); CompositorManager::getSingleton().setCompositorEnabled(shadowMapViewport, "ESM/BOXFILTER_5TAPS", true); sceneMgr->addListener(this); }
bool AppDelegate::applicationDidFinishLaunching() { // initialize director auto director = Director::getInstance(); auto glview = director->getOpenGLView(); if(!glview) { glview = GLViewImpl::create("My Game"); director->setOpenGLView(glview); } // turn on display FPS director->setDisplayStats(true); // set FPS. the default value is 1.0/60 if you don't call this director->setAnimationInterval(1.0 / 60); // Set the design resolution glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::NO_BORDER); Size frameSize = glview->getFrameSize(); // if the frame's height is larger than the height of medium size. if (frameSize.height > mediumResolutionSize.height) { director->setContentScaleFactor(MIN(largeResolutionSize.height/designResolutionSize.height, largeResolutionSize.width/designResolutionSize.width)); } // if the frame's height is larger than the height of small size. else if (frameSize.height > smallResolutionSize.height) { director->setContentScaleFactor(MIN(mediumResolutionSize.height/designResolutionSize.height, mediumResolutionSize.width/designResolutionSize.width)); } // if the frame's height is smaller than the height of medium size. else { director->setContentScaleFactor(MIN(smallResolutionSize.height/designResolutionSize.height, smallResolutionSize.width/designResolutionSize.width)); } register_all_packages(); // create a scene. it's an autorelease object auto scene = createTestScene(); // run director->runWithScene(scene); return true; }