- Manual Update
If ‘Manual Update’ is checked, the Shadow Receiver will not be updated automatically. If you want to control update timing yourself, use this option. This is useful for MeshShadowReceiver because it uses multi-thread to update its mesh (if available).If ‘Manual Update’ is unchecked, multi-threaded task will start in LateUpdate function, and join the main thread in OnWillRenderObject function. If you can start the multi-threaded task just after Projector position is changed, you can save waiting time in OnWillRenderObject function.To start the multi-threaded task manually, call UpdateReceiver function of FastShadowReceiver.ReceiverBase class.
Set a projector (UnityEngine.Projector) or FastShadowReceiver.ProjectorBase object here. This projector is used to calculate the intersection of the shadow receiver and the projection volume.If the shadow receiver is receiving a shadow from a projector, simply set the projector here. If shadow-map is used to cast shadow on the shadow receiver, set a LightProjector here (See Steps to use Shadow Receiver with Shadow-map section). If you want to calculate the projection volume manually, you can use FastShadowReceiver.CustomProjector.
Set the environment object which will be represented by a plane here. If nothing is specified, no transform will be applied to the plane.
Input the normal vector of the plane here. It must be represented in local space of Target.
Height is the position of the plane in Normal direction. In other words, distance from the position of Target to the plane.
- Raycast Mask
This Layer Mask will be passed to Physics.Raycast function when RaycastPlaneShadowReceiver tries to find a position to place a quadrangle mesh. The environment object should have collider(s) and one of the layers in Raycast Mask.
- Mesh Tree
Set a Mesh Tree here (see Create a Mesh Tree section).
- Mesh Transform
A mesh generated from the Mesh Tree will be transformed by ‘Mesh Transform’. So, it should be the same object from which the Mesh Tree was created. If you create the Mesh Tree from a single mesh, it should be the object which has MeshRenderer of the mesh.
- Has Normals
Check this option if the projector uses a shader which requires normal vectors. For more details, see Projector Shaders section.
- Cull Back Face
If this option is checked, polygons which are not facing to the projector are removed from the mesh.
MeshShadowReceiver will pick up polygons which intersect with the projection volume from the MeshTree (See the left figure below). However it is still larger than the actual intersection. If ‘Scissor’ is checked, extra area can be cut out (the center figure below), but it will take some CPU time.
- Scissor Margin
It is waste of CPU time to scissor small polygons which stick out just a bit from the bounds. The center figure below shows how ‘Scissor Margin’ works. The right figure below is an effective example of ‘Scissor Margin’. In this scene, the polygons of the plane and the cylinder are scissored but the small polygons of the sphere are not scissored.
‘Scissor Margin’ is only applicable for BinaryMeshTree.
- Enable Prediction
If ‘Enable Prediction’ is checked, MeshShadowReceiver will prepare a mesh for next frame in advance so that it can take advantage of multi-core processors. To enable prediction, you need to set ‘Predictor’ as well. Prediction will be turned off if it runs on a device which does not have multi-core processor.
Predictor is a component inherited from ITransformPredictor interface. It predicts next frame position of the projector. For more details, please have a look at “MultiProjector – Mesh” demo.
- Update Only When Projector Moved
If the Projector does not keep moving, you can check this option to save CPU time for updating the mesh. The mesh will not be updated as long as the projection volume stays within ‘Margin’.
Applicable only when ‘Update Only When Projector Moved’ is checked.