Common Settings
- 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. - Projector
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.
InfinitePlaneShadowReceiver
- Target
Set the environment object which will be represented by a plane here. If nothing is specified, no transform will be applied to the plane. - Normal
Input the normal vector of the plane here. It must be represented in local space of Target. - Height
Height is the position of the plane in Normal direction. In other words, distance from the position of Target to the plane.
RaycastPlaneShadowReceiver
- 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.
MeshShadowReceiver
- 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. - Scissor
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
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’. - Margin
Applicable only when ‘Update Only When Projector Moved’ is checked. - Projector Material For Lightmapped Mesh
Specify a material to be applied to the lightmapped receiver mesh. If not specified, the projector material will be used. However, usually, the projector material are applied to dynamic objects as well as the lightmapped static meshes. It is better to set non-lightmapped material to the projector, and set lightmapped material here. For more details, see Mixed Lighting Blob Shadow Projector section. - Static Material Properties To Copy From Projector
Specify material properties which are needed to copy from the projector material to the “Projector Material For Lightmapped Mesh”. Copy is done only once when created. If the value of the property will change, add the property to “Dynamic Material Properties To Copy From Projector” instead - Dynamic Material Properties To Copy From Projector
Specify material properties which are needed to copy from the projector material to the “Projector Material For Lightmapped Mesh”. Copy will be done every frame. If the mesh shadow receiver is used with a ProjectorManager which has effective “Projector Fadeout Distance” and “Fade Duration”, please add “_Alpha” property with Float type. For more details, please see Setup Projector Manager section.