SO3Engine
src
SO3Renderer
DeferredShading
SO3DeferredLightDirectional.cpp
Go to the documentation of this file.
1
/*
2
-----------------------------------------------------------------------------
3
This source file is part of OpenSpace3D
4
For the latest info, see http://www.openspace3d.com
5
6
Copyright (c) 2012 I-maginer
7
8
This program is free software; you can redistribute it and/or modify it under
9
the terms of the GNU Lesser General Public License as published by the Free Software
10
Foundation; either version 2 of the License, or (at your option) any later
11
version.
12
13
This program is distributed in the hope that it will be useful, but WITHOUT
14
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15
FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
16
17
You should have received a copy of the GNU Lesser General Public License along with
18
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
19
Place - Suite 330, Boston, MA 02111-1307, USA, or go to
20
http://www.gnu.org/copyleft/lesser.txt
21
22
-----------------------------------------------------------------------------
23
*/
24
25
#include "
SO3Renderer/DeferredShading/SO3DeferredLightDirectional.h
"
26
27
namespace
SO3
28
{
29
30
SDeferredLightDirectional::SDeferredLightDirectional
(Ogre::Light* originalLight,
SDeferredLightMaterialGenerator
* typeLightMaterialGenerator) :
SDeferredLightImpl
(originalLight,
"Directional"
, typeLightMaterialGenerator)
31
{
32
}
33
34
SDeferredLightDirectional::~SDeferredLightDirectional
()
35
{
36
}
37
38
void
SDeferredLightDirectional::SetAttenuation
()
39
{
40
// No attenuation for directional light
41
}
42
43
void
SDeferredLightDirectional::RebuildGeometry
()
44
{
47
delete
mRenderOp.vertexData;
48
delete
mRenderOp.indexData;
49
mRenderOp.operationType = Ogre::RenderOperation::OT_TRIANGLE_STRIP;
50
mRenderOp.useIndexes =
false
;
51
52
mRenderOp.vertexData =
new
Ogre::VertexData();
53
mRenderOp.indexData = 0;
54
55
// Generate the geometry
56
SBaseMeshsTools::CreateQuad
(mRenderOp.vertexData);
57
58
// Set boundings
59
// TODO: dynamicaly...
60
setBoundingBox(Ogre::AxisAlignedBox(-10000,-10000,-10000,10000,10000,10000));
61
}
62
63
Ogre::Real
SDeferredLightDirectional::getBoundingRadius
()
const
64
{
65
// TODO: dynamicaly...
66
return
15000.0f;
67
}
68
69
Ogre::Real
SDeferredLightDirectional::getSquaredViewDepth
(
const
Ogre::Camera* cam)
const
70
{
71
return
0.0f;
72
}
73
74
void
SDeferredLightDirectional::getWorldTransforms
(Ogre::Matrix4* xform)
const
75
{
76
Ogre::Quaternion quat = Ogre::Vector3::UNIT_Z.getRotationTo(
ogreParentLight
->getDerivedDirection());
77
xform->makeTransform(
ogreParentLight
->getDerivedPosition(), Ogre::Vector3::UNIT_SCALE, quat);
78
}
79
80
void
SDeferredLightDirectional::CheckCullingMode
(Ogre::Camera* camera, Ogre::Pass* pass)
81
{
82
pass->setCullingMode(Ogre::CULL_CLOCKWISE);
83
pass->setDepthCheckEnabled(
false
);
84
pass->setDepthFunction(Ogre::CMPF_ALWAYS_PASS);
85
}
86
87
}
SO3DeferredLightDirectional.h
SO3::SBaseMeshsTools::CreateQuad
static void CreateQuad(Ogre::VertexData *&vertexData)
Definition
SO3BaseMeshsTools.cpp:392
SO3::SDeferredLightDirectional::RebuildGeometry
virtual void RebuildGeometry()
Definition
SO3DeferredLightDirectional.cpp:43
SO3::SDeferredLightDirectional::SDeferredLightDirectional
SDeferredLightDirectional(Ogre::Light *originalLight, SDeferredLightMaterialGenerator *typeLightMaterialGenerator)
Definition
SO3DeferredLightDirectional.cpp:30
SO3::SDeferredLightDirectional::getSquaredViewDepth
virtual Ogre::Real getSquaredViewDepth(const Ogre::Camera *) const
Definition
SO3DeferredLightDirectional.cpp:69
SO3::SDeferredLightDirectional::getWorldTransforms
virtual void getWorldTransforms(Ogre::Matrix4 *xform) const
Definition
SO3DeferredLightDirectional.cpp:74
SO3::SDeferredLightDirectional::getBoundingRadius
virtual Ogre::Real getBoundingRadius() const
Definition
SO3DeferredLightDirectional.cpp:63
SO3::SDeferredLightDirectional::~SDeferredLightDirectional
~SDeferredLightDirectional()
Definition
SO3DeferredLightDirectional.cpp:34
SO3::SDeferredLightDirectional::SetAttenuation
virtual void SetAttenuation()
Definition
SO3DeferredLightDirectional.cpp:38
SO3::SDeferredLightDirectional::CheckCullingMode
virtual void CheckCullingMode(Ogre::Camera *camera, Ogre::Pass *pass)
Definition
SO3DeferredLightDirectional.cpp:80
SO3::SDeferredLightImpl
Definition
SO3DeferredLightImpl.h:39
SO3::SDeferredLightImpl::ogreParentLight
Ogre::Light * ogreParentLight
The light that this SDeferredLight renders.
Definition
SO3DeferredLightImpl.h:42
SO3::SDeferredLightMaterialGenerator
Definition
SO3DeferredLightMaterialGenerator.h:35
SO3
Definition
SO3DataScol.h:38
Generated by
1.9.8