8 #ifndef META_OCEAN_RENDERING_GI_THING_H
9 #define META_OCEAN_RENDERING_GI_THING_H
27 namespace GlobalIllumination
112 inline void setObjectTransformation(
const HomogenousMatrix4& objectTransformation);
137 ocean_assert(objectTransformation.
isValid());
HomogenousMatrixT4< T > inverted() const noexcept
Returns the inverted of this matrix.
Definition: HomogenousMatrix4.h:1575
bool isValid() const
Returns whether this matrix is a valid homogeneous transformation.
Definition: HomogenousMatrix4.h:1806
This class implements an infinite line in 3D space.
Definition: Line3.h:70
static constexpr T maxValue()
Returns the max scalar value.
Definition: Numeric.h:3244
This class implements a color defined by red, green, blue and alpha parameters.
Definition: RGBAColor.h:41
This class implements a Global Illumination material object.
Definition: GIMaterial.h:33
This class implements a Global Illumination texture attributes object.
Definition: GITextures.h:34
LightingModes
Definition of individual lighting modes.
Definition: Lighting.h:47
This class implements a ray intersection object.
Definition: RayIntersection.h:44
This class implements a group of tracing objects.
Definition: TracingGroup.h:28
This class is the abstract base class for all tracing objects.
Definition: TracingObject.h:39
HomogenousMatrix4 invertedObjectTransformation_
The transformation transforming points located in the world coordinate system to points located in th...
Definition: TracingObject.h:120
virtual ~TracingObject()
Destructs this tracing object.
void setAttributes(const AttributeSetRef &attributes)
Sets the attributes that will defined the appearance of the object.
virtual void findNearestIntersection(const Line3 &ray, RayIntersection &intersection, const bool frontFace, const Scalar eps, const TracingObject *excludedObject=nullptr) const =0
Determines the nearest intersection with between this tracing object and a given 3D ray.
TracingObject()=default
Creates a new tracing object.
HomogenousMatrix4 objectTransformation_
The transformation transforming points located in the coordinate system of this tracing object to poi...
Definition: TracingObject.h:117
LightSources lightSources_
The light sources which will be used for rendering.
Definition: TracingObject.h:129
AttributeSetRef attributes_
The set of attributes defining the appearance of the sphere.
Definition: TracingObject.h:132
GITextures * textures_
The textures of the sphere, if any.
Definition: TracingObject.h:126
void setObjectTransformation(const HomogenousMatrix4 &objectTransformation)
Sets the transformation transforming points located in the coordinate system of this tracing object t...
Definition: TracingObject.h:135
void setLightSources(const LightSources &lightSources)
Sets the light sources that will be used for rendering.
virtual bool determineDampingColor(const Line3 &ray, RGBAColor &color, const Scalar maximalDistance=Numeric::maxValue()) const =0
Determines the amount of light that transmits trough this object in the case e.g.,...
virtual bool determineColor(const Vector3 &viewPosition, const Vector3 &viewObjectDirection, const RayIntersection &intersection, const TracingGroup &group, const unsigned int bounces, const TracingObject *excludedObject, const Lighting::LightingModes lightingModes, RGBAColor &color) const =0
Determines the light (the color) for a specified viewing ray this object does reflect.
GIMaterial * material_
The material of the sphere, if any.
Definition: TracingObject.h:123
virtual bool hasIntersection(const Line3 &ray, const Scalar maximalDistance=Numeric::maxValue(), const TracingObject *excludedObject=nullptr) const =0
Determines whether this tracing object has an intersection with a provided 3D ray.
float Scalar
Definition of a scalar type.
Definition: Math.h:128
HomogenousMatrixT4< Scalar > HomogenousMatrix4
Definition of the HomogenousMatrix4 object, depending on the OCEAN_MATH_USE_SINGLE_PRECISION flag eit...
Definition: HomogenousMatrix4.h:37
std::vector< LightPair > LightSources
Definition of a vector holding light pairs.
Definition: GILightSource.h:40
The namespace covering the entire Ocean framework.
Definition: Accessor.h:15