Shadows are very important aspects in 3D space. Shadows enhance spatial awareness of objects in 3D space and give better user experience for players. However, shadow rendering is GPU intensive process. For low-end mobile devices, it will slow down your application. “Fast Shadow Receiver” will make shadow rendering much faster by minimizing the area where shadows are drawn.

“Fast Shadow Receiver” provides a useful mesh search tree called “Mesh Tree” which is used to search for polygons which are receiving shadows. Mesh Tree is useful not only for shadows but also for various purpose such as light projection, bullet marks, AI, and so on.


  • Unity 2017 or higher is required.
  • Unity Pro is not required.
  • It works with Blob Shadow Projector or shadow-map.
  • It can cast shadows on non-flat surface.
  • Terrain object is also supported (Only Blob Shadow Projector is available)
  • Really fast, even on low-end mobile devices!
  • Accompanied with fast (but no falloff) projector shadow shader.
  • It can handle multiple projectors or shadow casters.
  • Optimized for multi-core processors
  • Projector shadows can be correctly mixed with Lightmap shadows

Release Note

How it works

Usually in a scene that has a large environment object like a terrain, shadow rendering will causes a performance problem. The large environment object will occupy most of pixels on the screen, rendering shadows on it will use a lot of GPU resource.

So, it is better for you to remove shadows from the large object, replace each shadow with a pair of “shadow receiver” and “blob shadow projector”. “Shadow receiver” will generate a minimum mesh to receive a shadow based on associated projector and large environment object (See the image below).

Fast Shadow Receiver is designed to work with Blob Shadow Projector.

Additionally, Fast Shadow Receiver can also work with shadow-map. However, lighting will not be applied, which makes the shadows not realistic. Shadow-map will be rendered by being multiplied or blended with the scene.

Fast Shadow Receiver is an asset for optimizing Projector performance. It is applicable not only to Blob Shadow Projector but also to Light Projector and Bullet Marks.
LightProjector BulletMarks



18 thoughts on “Fast Shadow Receiver

  • 2015/10/20 at 6:39 PM

    First of all – great tool indeed! Thank you.
    Now about a problem:

    I am trying to apply a global shadow texture to my scene (houses, rocks etc) to get shadows on vehicles only. Vehicles cast shadows on the ground too. Thus I have vehicle object which casts its own shadows from local shadow caster and can receive shadows from global shadow caster. The problem is, that then I try to use global shadow map shadows under cars become of lowest resolution possible and become almost invisible.
    I have no idea what to do….

    I have tried same approach with default Unity BLOB projectors – works fine.
    Is there a hint how to use receiver and caster on same object with your scripts?

    Thank you in advance.
    Regards, Alex.

    • 2015/10/20 at 8:55 PM

      Thank you for the comment.

      I am a little bit confused. You have a blob projector and a shadow receiver for each vehicle, and the vehicles also receive a global shadow map, right? It should be okay. There is nothing special you need to do. If the resolution of the shadow map changed, maybe some shadow receivers are receiving the global shadow map. Please check if the shadow receiver object has a check on “receive shadows” (in Mesh Renderer component) or not. And if it does, please remove the check.

  • 2016/06/04 at 3:06 PM

    hii i love your free asset and it works great
    then i buyed your paid asset but as i used i didn’t know how to use it i searched for tutorial but i cant find one , i buyed your paid asset but now i am forced to use your free asset
    plzz help me
    how can i setup to project multiple shadow from my sun ( directional light )
    and i covers all mesh in my scene

    • 2016/06/05 at 10:53 PM

      Hi, thank you for using our assets!
      If your dynamic shadow projectors are working already, you can use Easy Setup Wizard.

  • 2016/08/07 at 11:36 AM

    Hi, I’m having problem displaying shadow on transparent object. After reading the instruction of Fast Shadow Receiver, I think your asset could display shadow on transparent object, is that correct?

    • 2016/08/08 at 1:27 PM

      That’s a good question. Several problems can happen when displaying shadow on transparent object.

      1. Projector will ignore transparent objects.
      2. Transparent objects will overwrite projector shadows.
      3. MeshShadowReceiver does not include transparent polygons by default.

      When you use Fast Shadow Receiver, 1st problem will not occur. Because shadow receiver objects can receive shadows on behalf of the transparent objects.

      To avoid the 2nd problem, those transparent objects should be rendered before the projector shadows. Projector shadow material has 2999 render queue value, so the transparent object should have 2500 – 2998 render queue value.

      To fix the 3rd problem, please remove “Transparent” from “Exclude Render Types”, when you build a Mesh Tree. (see Create a Mesh Tree).

  • 2017/04/08 at 4:23 PM

    This will enable ShadowProjector culling and Fast Shadow Projector will try to disable ShadowProjectors that are either off-screen or aren’t projecting onto receivers.

  • 2019/12/06 at 10:58 AM

    I use skyboxes a lot and also photos as a backdrop for composite work.
    Would “Fast Shadow Receiver” allow for the casting of shadows on a simple Unity plane object set to transparent?
    This would allow objects placed on that plane to cast their shadows on the skybox or backdrop photo with the plane object not seen.
    Is this possible with your asset?

    • 2019/12/06 at 12:33 PM

      Yes, it is possible. You don’t need even a plane object. InfinitePlaneShadowReceiver can receive a shadow without any visible objects.

  • 2019/12/07 at 4:23 PM

    So, just be clear, it will cast a shadow on a skybox?
    If it does, I*’ll buy it.
    Thanks for your quick reply.

    • 2019/12/07 at 11:00 PM

      No, it just receives a shadow. Casting a shadow on a skybox doesn’t make sense.You need a shape (like a plane) which receives a shadow. In this case, InfinitePlaneShadowReceiver is the shape that receives a shadow.

  • 2019/12/09 at 8:25 AM

    It might not make sense to you but some skyboxes ,especially landscape and sea scape ones can be and are used for composition.
    Placing an object on the skybox “ground” without the ability to have the object cast it’s shadow leaves the object “floating”.
    Ground shadows allow for a more realistic look and “place” the object in a more natural way.
    Maybe you should look at this?
    One way would be to place a primitive plane in an appropriate place on the background. Make this plane transparent to show the background…and then have shadows fall on the plane.
    Can your asset allow shadows to fall on a transparent plane?
    The asset I use for this is rather limited….5
    If you wish to see and check some of my stuff out and see what I’m getting at..

      • 2019/12/09 at 12:10 PM

        If it is inconvenient for you to create lots of InfinitePlaneShadowReceivers, you can use a single InfinitePlaneShadowReceivers to receive all the shadows. If you do so, please set a large bounding box in step 4 so that it can cover all the shadow casting objects. This method is not good for the GPU performance though.

        • 2019/12/10 at 10:49 AM

          Many kind thanks for your replies and information.
          I shall study your wise words and see what happens!!

  • 2020/08/17 at 9:56 PM

    Hi,How to use Shadowmap in URP projects?


Leave a Reply

Your email address will not be published. Required fields are marked *

Anti Spam Code *