8 #ifndef META_OCEAN_RENDERING_GI_TRACING_MESH_H
9 #define META_OCEAN_RENDERING_GI_TRACING_MESH_H
28 namespace GlobalIllumination
This class implements a 3D bounding box.
Definition: BoundingBox.h:23
This class implements a bounding sphere.
Definition: BoundingSphere.h:23
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
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 implements a simple octree-like structure allowing to optimized the intersection performan...
Definition: TracingMesh.h:44
void findNearestIntersection(const Line3 &ray, const HomogenousMatrix4 &objectTransformation, const HomogenousMatrix4 &invertedObjectTransformation, const TracingMesh &mesh, RayIntersection &intersection, const bool frontFace, const Scalar eps, const TracingObject *excludedObject=nullptr) const
Determines the nearest intersection with between this tracing object and a given 3D ray.
VertexIndices octreeIndices
This indices of all vertices which are covert by this octree object.
Definition: TracingMesh.h:77
bool hasIntersection(const Line3 &ray, const HomogenousMatrix4 &objectTransformation, const HomogenousMatrix4 &invertedObjectTransformation, const TracingMesh &mesh, const Scalar maximalDistance=Numeric::maxValue(), const TracingObject *excludedObject=nullptr) const
Determines whether this tracing object has an intersection with a provided 3D ray.
Octree(const VertexIndices &indices, const TracingMesh &mesh)
Creates a new octree object by a set of given indices and an corresponding mesh object.
BoundingBox octreeBoundingBox
The bounding box of this octree object.
Definition: TracingMesh.h:74
~Octree()
Destructs an octree object.
This class implements the tracing object for a mesh.
Definition: TracingMesh.h:36
Triangles3 tracingTriangles
The 3D triangles representing the mesh.
Definition: TracingMesh.h:150
BoundingSphere tracingLocalBoundingSphere
The bounding sphere of this tracing object.
Definition: TracingMesh.h:147
BoundingBox tracingLocalBoundingBox
The bounding box of this tracing object.
Definition: TracingMesh.h:144
~TracingMesh() override
Destructs this tracing object.
Octree * tracingOctree
The octree used to improved the performance of the intersection determination process.
Definition: TracingMesh.h:159
bool hasIntersection(const Line3 &ray, const Scalar maximalDistance=Numeric::maxValue(), const TracingObject *excludedObject=nullptr) const override
Determines whether this tracing object has an intersection with a provided 3D ray.
Normals tracingNormals
The set of normals connected with the mesh's triangles.
Definition: TracingMesh.h:153
bool determineDampingColor(const Line3 &ray, RGBAColor &color, const Scalar maximalDistance=Numeric::maxValue()) const override
Determines the amount of light that transmits trough this object in the case e.g.,...
void setTriangles(const Vertices &localVertices, const Normals &localNormals, const TextureCoordinates &textureCoordinates, const TriangleFaces &faces, const HomogenousMatrix4 &objectTransformation, const BoundingBox &localBoundingBox)
Defines the mesh by setting individual triangles.
void findNearestIntersection(const Line3 &ray, RayIntersection &intersection, const bool frontFace, const Scalar eps, const TracingObject *excludedObject=nullptr) const override
Determines the nearest intersection with between this tracing object and a given 3D ray.
TextureCoordinates tracingTextureCoordinates
The set of texture coordinates connected with the mesh's triangles.
Definition: TracingMesh.h:156
TracingMesh()
Creates a new tracing object.
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 override
Determines the light (the color) for a specified viewing ray this object does reflect.
void setTriangleStrips(const Vertices &localVertices, const Normals &localNormals, const TextureCoordinates &textureCoordinates, const VertexIndexGroups &indicesSet, const HomogenousMatrix4 &objectTransformation, const BoundingBox &localBoundingBox)
Defines the mesh by setting a triangle strip.
This class is the abstract base class for all tracing objects.
Definition: TracingObject.h:39
float Scalar
Definition of a scalar type.
Definition: Math.h:128
std::vector< Triangle3 > Triangles3
Definition of a vector holding 3D triangles.
Definition: Triangle3.h:57
std::vector< Vertex > Vertices
Definition of a vector holding vertices.
Definition: rendering/Rendering.h:119
std::vector< TextureCoordinate > TextureCoordinates
Definition of a vector holding texture coordinates.
Definition: rendering/Rendering.h:113
std::vector< Normal > Normals
Definition of a vector holding normals.
Definition: rendering/Rendering.h:107
std::vector< TriangleFace > TriangleFaces
Definition of a vector holding triangle faces.
Definition: TriangleFace.h:23
std::vector< VertexIndices > VertexIndexGroups
Definition of a vector holding vertex indices.
Definition: rendering/Rendering.h:125
std::vector< VertexIndex > VertexIndices
Definition of a vector holding vertex indices.
Definition: rendering/Rendering.h:101
The namespace covering the entire Ocean framework.
Definition: Accessor.h:15