Ocean
Loading...
Searching...
No Matches
TracingSphere.h
Go to the documentation of this file.
1/*
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 */
7
8#ifndef META_OCEAN_RENDERING_GI_TRACING_SPHERE_H
9#define META_OCEAN_RENDERING_GI_TRACING_SPHERE_H
10
14
17
19
20namespace Ocean
21{
22
23namespace Rendering
24{
25
26namespace GlobalIllumination
27{
28
29/**
30 * This class implements the tracing object for a sphere.
31 * @ingroup renderinggi
32 */
33class OCEAN_RENDERING_GI_EXPORT TracingSphere : public TracingObject
34{
35 public:
36
37 /**
38 * Creates a new tracing object.
39 */
41
42 /**
43 * Destructs this tracing object.
44 */
45 ~TracingSphere() override;
46
47 /**
48 * Sets the main characteristics of the sphere by providing the object-world transformation and the radius.
49 * @param objectTransformation The transformation transforming points located in the coordinate system of the spehere to points located in the world coordinate system, must be valid
50 * @param localBoundingSphere The bounding sphere object defining the radius of the sphere, must be valid
51 */
52 void setSphere(const HomogenousMatrix4& objectTransformation, const BoundingSphere& localBoundingSphere);
53
54 /**
55 * Determines the nearest intersection with between this tracing object and a given 3D ray.
56 * @see TracingObject::findNearestIntersection().
57 */
58 void findNearestIntersection(const Line3& ray, RayIntersection& intersection, const bool frontFace, const Scalar eps, const TracingObject* excludedObject = nullptr) const override;
59
60 /**
61 * Determines whether this tracing object has an intersection with a provided 3D ray.
62 * @see TracingObject::hasIntersection().
63 */
64 bool hasIntersection(const Line3& ray, const Scalar maximalDistance = Numeric::maxValue(), const TracingObject* excludedObject = nullptr) const override;
65
66 /**
67 * Determines the amount of light that transmits trough this object in the case e.g., this object is transparent.
68 * @see TracingObject::determineDampingColor().
69 */
70 bool determineDampingColor(const Line3& ray, RGBAColor& color, const Scalar maximalDistance = Numeric::maxValue()) const override;
71
72 /**
73 * Determines the light (the color) for a specified viewing ray this object does reflect.
74 * @see TracingObject::determineColor().
75 */
76 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;
77
78 private:
79
80 /// The bounding sphere object providing the radius of the sphere.
82};
83
84}
85
86}
87
88}
89
90#endif // META_OCEAN_RENDERING_GI_TRACING_SPHERE_H
This class implements a bounding sphere.
Definition BoundingSphere.h:23
This class implements an infinite line in 3D space.
Definition Line3.h:68
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 is the abstract base class for all tracing objects.
Definition TracingObject.h:39
This class implements the tracing object for a sphere.
Definition TracingSphere.h:34
~TracingSphere() override
Destructs this tracing object.
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.
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 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.
BoundingSphere tracingLocalBoundingSphere
The bounding sphere object providing the radius of the sphere.
Definition TracingSphere.h:81
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 setSphere(const HomogenousMatrix4 &objectTransformation, const BoundingSphere &localBoundingSphere)
Sets the main characteristics of the sphere by providing the object-world transformation and the radi...
TracingSphere()
Creates a new tracing object.
float Scalar
Definition of a scalar type.
Definition Math.h:129
The namespace covering the entire Ocean framework.
Definition Accessor.h:15