Example #1
0
void DepthOfField::Init()
{
	// Initialization
	
		// Initialize Scene
		Scene = new SceneGraph();
		
		// Initialize Renderer
		Renderer = new ForwardRenderer(Width,Height);
		Renderer->SetBackground(Vec4(1,0,0,1));
		// Projection
		projection.Perspective(70.f,(f32)Width/(f32)Height,1.f,1000.f);
		
		// Create Camera
		Camera = new GameObject();
		Camera->SetPosition(Vec3(0,2,20));
		
		// Add a Directional Light
		Light = new GameObject();
		dLight = new DirectionalLight(Vec4(1, 1, 1, 1), Vec3(-1, -1, 0));
		Light->Add(dLight);

		Scene->Add(Light);

		// Create Game Object
		modelMesh = new Model("../../../../examples/DepthOfField/assets/suzanne.p3dm", false, ShaderUsage::Diffuse);
		
		for (uint32 i = 0; i < 10; i++)
		{
			GameObject* Monkey = new GameObject();
			Monkey->SetPosition(Vec3(-23.f + i * 3.f, 0, -15.f + i * 3.f));
			RenderingComponent* rMonkey = new RenderingComponent(modelMesh);
			Monkey->Add(rMonkey);
			Scene->Add(Monkey);

			go.push_back(Monkey);
			rc.push_back(rMonkey);
		}

		// Add Camera to Scene
		Scene->Add(Camera);

		Camera->LookAt(Vec3::ZERO);

		fullResBlur = new Texture();
		fullResBlur->CreateEmptyTexture(TextureType::Texture, TextureDataType::RGBA16F, Width, Height);
		fullResBlur->SetRepeat(TextureRepeat::ClampToEdge, TextureRepeat::ClampToEdge, TextureRepeat::ClampToEdge);
		lowResBlur = new Texture();
		lowResBlur->CreateEmptyTexture(TextureType::Texture, TextureDataType::RGBA16F, (int32)(Width*.25f), (int32)(Height*.25f));
		lowResBlur->SetRepeat(TextureRepeat::ClampToEdge, TextureRepeat::ClampToEdge, TextureRepeat::ClampToEdge);

		EffectManager = new PostEffectsManager(Width, Height);

		blurX = new BlurXEffect(RTT::Color, Width, Height);
		blurY = new BlurYEffect(RTT::LastRTT, Width, Height);
		fullResBlur = blurY->GetTexture();
		resize = new ResizeEffect(RTT::Color, (uint32)(Width*.25f), (uint32)(Height*.25f));
		blurXlow = new BlurXEffect(RTT::LastRTT, (uint32)(Width*.25f), (uint32)(Height*.25f));
		blurYlow = new BlurYEffect(RTT::LastRTT, (uint32)(Width*.25f), (uint32)(Height*.25f));
		lowResBlur = blurYlow->GetTexture();
		depthOfField = new DepthOfFieldEffect(lowResBlur, fullResBlur, Width, Height);

		EffectManager->AddEffect(blurX);
		EffectManager->AddEffect(blurY);
		EffectManager->AddEffect(resize);
		EffectManager->AddEffect(blurXlow);
		EffectManager->AddEffect(blurYlow);
		EffectManager->AddEffect(depthOfField);
}
Example #2
0
void SimplePhysics::Init()
{
    // Initialization
    
    // Initialize Scene
    Scene = new SceneGraph();

    // Initialize Renderer
    Renderer = new ForwardRenderer(Width,Height);

    // Projection
    projection.Perspective(70.f,(f32)Width/(f32)Height,1.f,500.f);

    // Create Camera
    Camera = new GameObject();
    Camera->SetPosition(Vec3(0,20.0,300));

    // Add Camera to Scene
    Scene->Add(Camera);

    // Physics
    physics = new Physics();
    physics->InitPhysics();

    // Add a Directional Light
    Light = new GameObject();
    dLight = new DirectionalLight(Vec4(1,1,1,1),Vec3(-1,-1,0));
    dLight->EnableCastShadows(1024,1024,projection,1,500,1);
    dLight->SetShadowBias(1.f,3.f);
    Light->Add(dLight);

    // Add Light to Scene
    Scene->Add(Light);

    // Create Materials
    Diffuse = new GenericShaderMaterial(ShaderUsage::Color | ShaderUsage::Diffuse | ShaderUsage::DirectionalShadow);
    Diffuse->SetColor(Vec4(0.8f,0.8f,0.8f,1.f));

    // Set Selected Mesh PTR NULL
    SelectedMesh = NULL;

    // Create Cubes
    srand( (unsigned int)time( NULL ) );

    // Create Geometry
    cubeHandle = new Cube(5,5,5);

    // Create 100 Cubes
#if !defined(GLES2)
    for (uint32 i=0;i<1000;i++)
#else
    for (uint32 i=0;i<100;i++)
#endif
    {
        // Create GameObject
        GameObject* Cube = new GameObject();
        // Add Cube to GameObjects List
        Cubes.push_back(Cube);
        // Create Rendering Component using Geometry Previously Created with AssetManager
        RenderingComponent* rCube = new RenderingComponent(cubeHandle, Diffuse);
        // Add Rendering Component to Rendering Components List
        rCubes.push_back(rCube);
        // Add Rendering Component to GameObject
        Cube->Add(rCube);
        // Create Physics Component
        IPhysicsComponent* pCube = (IPhysicsComponent*)physics->CreateBox(5,5,5,10);
        // Add Physics Component to Physics List
        pCubes.push_back(pCube);
        // Add Physics Component to GameObject
        Cube->Add(pCube);
        // Add GameObject to Scene
        Scene->Add(Cube);
        // Set Random Position to the GameObject
        Cube->SetPosition(Vec3((f32)(rand() % 100) -50.f, (f32)(rand() % 100)-50.f, (f32)(rand() % 100) -50.f));
    }

    // Create Floor
    Floor = new GameObject();
    // Create Geometry
    floorHandle = new Cube(100,3,100);

    // Create Floor Geometry
    rFloor = new RenderingComponent(floorHandle,Diffuse);

    // Create Floor Physics
    pFloor = (IPhysicsComponent*)physics->CreateBox(100,3,100,0);
    // Add Physics Component to GameObject
    Floor->Add(pFloor);
    
    // Add Rendering Component To GameObject
    Floor->Add(rFloor);

    // Add Floor to Scene
    Scene->Add(Floor);

    // Translate Floor
    Floor->SetPosition(Vec3(0,-100,0));
    
}