Shadow Casting&Receiving on emissive material

Hi I’m trying to build a stylized rendering system with following requirement:

  • All materials cast&receive shadows as they should
  • All lights are faked by computing my own light values and output to emissive input

Right now as long as the material has ever used emissive channel, it stops to cast&receive shadows, I tried tons of ways to bring shadows back, every solution comes with certain compromises.

  • Give it a hidden shadow caster parent (successfully casting shadows but no receiving since there’s no option for hidden object to receive shadows)
  • Layered Material, with a simple lambert blended with my material (both casting and receiving shadows achieved but shadows appears washed out, I didn’t find multiply blend mode or post lighting blend)
  • Scene Capture2d (I’m able to hide actors but can’t override their material so essentially useless)
  • Use directional light only (Since there’s no attenuation for directional light I can use base color instead of emissive)
  • Translucent material (If i’m not mistaken, this one doesn’t receive shadow either)

So the only solution I came think of right now is to do another identical scene rendering side by side with scene capture and blend the render target. I haven’t tried it because this DOUBLES all computation which I truely want to avoid.

I’m so stuck and Googled a lot with no actual progress. Please Help.

Just found an acceptable solution myself with enable point light falloff and setting exponential to be 0, which effectively minimizes any UE side’s lighting calculation, here’s a sample picture