Packages

p

faces.render.prt

transfersimulation

package transfersimulation

Ordering
  1. Alphabetic
Visibility
  1. Public
  2. All

Type Members

  1. 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.

  2. 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.

  3. case class ObjectSpaceTransfer (surfacePointProperty: SurfacePointProperty[DenseMatrix[Double]]) extends Transfer with Product with Serializable
  4. 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.

  5. 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.

  6. 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.

  7. trait TransferSimulator extends AnyRef

    Interface for transfer simulators that operate on the vertices of instances of TriangleMesh3D.

  8. abstract class TransferSimulatorMultiBounce extends TransferSimulator
  9. 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.

  10. 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.

  11. 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.

Ungrouped