package transfersimulation
- Alphabetic
- Public
- All
Type Members
-
case class
GlossySimulator
(mesh: TriangleMesh3D, occlusion: OcclusionInformation, bounces: Int, shBands: Int, symmetricBRDF: MeshSurfaceProperty[DenseVector[Double]]) extends TransferSimulatorMultiBounce with Product with Serializable
Light transport simulator for symmetric BRDFs.
Light transport simulator for symmetric BRDFs. Simulates glossy, specular reflectance.
The provided BRDF will be rotated s.t. it's axis of symmetry aligns with the reflection of the view direction on the object.
Please not that the BRDF needs to be symmetric w.r.t. its z-axis (c.f. ZH class).
- mesh
The mesh to simulate light transfer for.
- occlusion
An instance of OcclusionInformation for the specified mesh.
- bounces
The number light bounces the will be taken into account (1 or less for occlusion-only simulation).
- shBands
The number of SH bands to use for the simulation.
- symmetricBRDF
A SH convolution kernel of a BRDF with rotational symmetry about the Z axis (c.f. ZH.asConvolution).
- Note
The cosine term of the rendering equation cannot be taken into account in the simulation process.
-
case class
LambertSimulator
(mesh: TriangleMesh3D, occlusion: OcclusionInformation, bounces: Int, shBands: Int, symmetricBRDF: MeshSurfaceProperty[DenseVector[Double]]) extends TransferSimulatorMultiBounce with Product with Serializable
Light transport simulator for symmetric BRDFs.
Light transport simulator for symmetric BRDFs. Simulates diffuse, lambertian-like reflectance.
The provided BRDF will be rotated s.t. it's axis of symmetry aligns with the surface's normals.
- mesh
The mesh to simulate light transfer for.
- occlusion
An instance of OcclusionInformation for the specified mesh.
- bounces
The number light bounces the will be taken into account (1 or less for occlusion-only simulation).
- shBands
The number of SH bands to use for the simulation.
- symmetricBRDF
A SH convolution kernel of a BRDF with rotational symmetry about the Z axis (c.f. ZH.asConvolution).
- Note
The cosine term of the rendering equation is not explicitly taken into account in the simulation process. It needs to be included in the provided SH-projection of the BRDF.
- case class ObjectSpaceTransfer (surfacePointProperty: SurfacePointProperty[DenseMatrix[Double]]) extends Transfer with Product with Serializable
-
case class
ObjectToSurfaceSpaceTransfer
extends Transfer with Product with Serializable
Transfer data that is combined with a transformation form object to local surface space.
Transfer data that is combined with a transformation form object to local surface space.
This class is a specialization of the standard Transfer class and holds transfer matrices that transform light from object space to local surface space applying effects like occlusion, reflection and other light transport phenomena.
Mapping light information into surface space can be advantageous in terms of rendering performance in some situations.
ObjectToSurfaceSpaceTransfer is used in combination with the faces.render.prt.render.shaders.UniversalSurfaceSpaceShader.
-
abstract
class
OcclusionInformation
extends AnyRef
This class provides raycast information for a mesh.
This class provides raycast information for a mesh. For each vertex rays will be cast against the mesh based on a set of raycast directions. The same set of raycast directions will be used for all vertices.
-
abstract
class
Transfer
extends AnyRef
Stores the transfer matrices for a mesh as required for the PRT technique.
Stores the transfer matrices for a mesh as required for the PRT technique.
This class provides methods that facilitate the transformation of scene illumination to local distributions of incoming light for each vertex.
Transfer matrices can be combined with other transformation such as rotations. This is done in the class ObjectToSurfaceSpaceTransfer in which transfer matrices are combined with a transformation from object to surface-local space, for example.
Transfer matrices can map light to arbitrary spaces but are required to accept object space light as input. The image space is indicated by the classes that inherit from this class (e.g. ObjectToSurfaceSpaceTransfer and ObjectSpaceTransfer).
More on PRT and Transfer Matrices: In PRT, light transport is precomputed. By representing light using spherical harmonics it is possible to establish a linear relationship between unblocked scene illumination (i.e. the illuminatiion without any occlusion or reflection effects of the rendered geometry) and illumination at each point of the rendered geometry, that includes reflection and occlusion effects. In other words, this linear relationship transforms any incoming, unblocked light distribution to position-specific local light distributions that take into account the effects of occlusion and reflection due to rendered geometry.
-
trait
TransferSimulator
extends AnyRef
Interface for transfer simulators that operate on the vertices of instances of TriangleMesh3D.
- abstract class TransferSimulatorMultiBounce extends TransferSimulator
-
case class
TransferSimulatorSingleBounce
(mesh: TriangleMesh3D, occlusion: OcclusionInformation, shBands: Int) extends TransferSimulator with Product with Serializable
This light transfer simulator computes one light bounce only.
This light transfer simulator computes one light bounce only. That is, it models occlusion but does not account for reflection. Hence, it does not assume scene illumination to be identical for every point in space (not considering scene geometry).
The results of the precomputation are instances of TransferSingleBounce that can be used to render scenes that are illuminated by point light sources.
- mesh
The mesh to simulate light transfer for.
- occlusion
An instance of OcclusionInformation for the specified mesh.
- shBands
The number of SH bands to use for the simulation.
-
trait
TransferSingleBounce
extends Transfer
An specialization of the Transfer class which indicates that transfer matrices have been calculated without the assumption that scene illumination is identical for all points in space (when no geometry is present).
An specialization of the Transfer class which indicates that transfer matrices have been calculated without the assumption that scene illumination is identical for all points in space (when no geometry is present).
Said assumption is mandatory when a set of transfer matrices models reflections. However, it is not necessary when they model occlusion only.
Dropping this assumption enables the correct simulation of point like light sources under the assumption that they are positioned outside the convex hull of the rendered geometry.
-
case class
UniversalPrtSimulator
(mesh: TriangleMesh3D, occlusion: OcclusionInformation, bounces: Int, shBands: Int, bsdf: MeshSurfaceProperty[SHBrdf with CosineTerm], tangentSpace: SurfacePointProperty[DenseMatrix[Double]]) extends TransferSimulatorMultiBounce with Product with Serializable
Light transport simulator for arbitrary BSDFs.
Light transport simulator for arbitrary BSDFs. This simulator is capable of simulating any opaque, material that can be described by an appropriate BRDF and does not emit light itself.
- mesh
The mesh to simulate light transfer for.
- occlusion
An instance of OcclusionInformation for the specified mesh.
- bounces
The number light bounces the will be taken into account (1 or less for occlusion-only simulation).
- shBands
The number of SH bands to use for the simulation.
- bsdf
A SH-representation of an arbitrary BSDF that includes the rendering equation's cosine term.
- tangentSpace
The tangent / surface space of the provided mesh, which will also be used for rendering.
Value Members
- object ObjectToSurfaceSpaceTransfer extends Serializable
- object OcclusionInformation
- object Transfer