FreneticGameEngine icon indicating copy to clipboard operation
FreneticGameEngine copied to clipboard

Dumb Idea: Per-Object Shadow Hackery

Open mcmonkey4eva opened this issue 8 years ago • 3 comments

I had an odd idea...

What if instead of building a shadow map for sky lighting, we calculated the shadow from each object into a massive array of relatively low-res* shadow images, and merely projected that down onto land?

* Current shadow map is generally pretty big, 1024x1024 x light source count is standard. We could easily make this 64x64 without anyone complaining... But large objects would drop quality. Perhaps a giant 2d texture atlas as opposed to a 3D texture, thus allowing dynamic refitting? Would require more involved shader uniforms to pass the correct data in...

Using some trickery*, this could even allow transparent objects to cast full accurate shadows!

* Trickery would basically just be a second buffer alongside the first that identifies rough alpha value of each shadow pixel.

This would probably not be particularly efficient compared to standard shadow mapping, but might be worth a try?

Alternately, could be used for ONLY transparent shadows and NOT for opaques?

mcmonkey4eva avatar Sep 03 '17 08:09 mcmonkey4eva

This should probably be sky light only, I don't see this being very effective with other light sources... but maybe it could be possible? One step at a time: See how well it works for sky lights... if it goes well, try for other types!

mcmonkey4eva avatar Sep 03 '17 08:09 mcmonkey4eva

Possibly as well: a 'mixed' mode. Distant or insignificant or whatever objects get a generic area blast shadow, meanwhile important or close or whatever objects get individual scans.

mcmonkey4eva avatar Sep 03 '17 08:09 mcmonkey4eva

This could potentially actually be fairly clever... As object shadows would rarely need updates!

mcmonkey4eva avatar Oct 18 '17 05:10 mcmonkey4eva