Work on new RTT widget, let there be light

This commit is contained in:
Marianne Gagnon 2014-05-23 21:15:23 -04:00
parent a6f266ea40
commit 5ce2b0b922
3 changed files with 10 additions and 8 deletions

View File

@ -862,10 +862,15 @@ void IrrDriver::renderLights(scene::ICameraSceneNode * const camnode, float dt)
if (!m_lights[i]->isPointLight())
{
m_lights[i]->render();
if (UserConfigParams::m_shadows && World::getWorld()->getTrack()->hasShadows())
if (UserConfigParams::m_shadows && World::getWorld() != NULL &&
World::getWorld()->getTrack()->hasShadows())
{
m_post_processing->renderShadowedSunlight(sun_ortho_matrix, m_rtts->getShadowDepthTex());
}
else
{
m_post_processing->renderSunlight();
}
continue;
}
const core::vector3df &lightpos = (m_lights[i]->getAbsolutePosition() - campos);

View File

@ -191,6 +191,8 @@ void ModelViewWidget::setupRTTScene(PtrVector<scene::IMesh, REF>& mesh,
AlignedArray<Vec3>& mesh_scale,
const std::vector<int>& model_frames)
{
irr_driver->getSceneManager()->clear();
if (model_frames[0] == -1)
{
scene::ISceneNode* node = irr_driver->addMesh(mesh.get(0), NULL);
@ -244,12 +246,7 @@ void ModelViewWidget::setupRTTScene(PtrVector<scene::IMesh, REF>& mesh,
irr_driver->getSceneManager()->setAmbientLight(video::SColor(255, 35, 35, 35));
const core::vector3df &spot_pos = core::vector3df(0, 30, 40);
m_light = irr_driver->getSceneManager()
->addLightSceneNode(NULL, spot_pos, video::SColorf(1.0f, 1.0f, 1.0f),
1600 /* radius */);
m_light->setLightType(video::ELT_SPOT);
m_light->setRotation((core::vector3df(0, 10, 0) - spot_pos).getHorizontalAngle());
m_light->updateAbsolutePosition();
m_light = irr_driver->addLight(spot_pos, 3.0f /* energy */, 100 /* distance */, 1.0f /* r */, 1.0f /* g */, 1.0f /* g*/, true, NULL);
m_rtt_main_node->setMaterialFlag(video::EMF_GOURAUD_SHADING, true);
m_rtt_main_node->setMaterialFlag(video::EMF_LIGHTING, true);

View File

@ -62,7 +62,7 @@ namespace GUIEngine
scene::ICameraSceneNode *m_camera;
scene::ILightSceneNode *m_light;
scene::ISceneNode *m_light;
FrameBuffer *m_frame_buffer;