Exemplo n.º 1
0
	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);
	}
Exemplo n.º 2
0
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;
}