Shadows Reflections

I just wanted to express some thoughts on iOS graphics:

I saw ZenBound the other day, and was really impressed at how good it looks. I understand that it’s not possible at the time for Unity to create such quality (basically I have shadows reflections in mind) for iOS correct?

I was wondering if this is something that will be possible in the near future, as it seems that if the iOS devices can handle this quality, it should be possible for Unity make games like that.

Reflections can be done already, not so much of a problem I think.

But Shadows are rather unlikely because the way these games do it is not even supported technically in Unity (stencil) although different people requested support for it for several years (earliest request I heard being voiced was in 2007), which with the new generation of mobiles is playing as a worse and worse lack unhappily

I was looking into stencil shadows in early 2009 (pre-3GS) and back then it was the iPhone that didn’t support it, Unity or no Unity, so I don’t think ZenBound used stencil for its shadows. I don’t know whether the newer iDevices have stencil buffers though.

Yes they have and Session 417 from WWDC 2010 for example shows off why you reasonably need it for realtime shadows on the type of device we talk about here.

given though you don’t need too much performance or can cut it otherwise, look at the character shadow article on the unifycommunity wiki, from what I recall the shader works with U3 with little to no modification

The main points of the objects in the picture is sometimes lost in these aspects. Some beautiful shadow play or as an object reflect, may be what really makes a photo.This is a group where you can send your pictures in the shadows and reflections, even an excellent combination of both.

I think it’s almost possible in Unity, but you have to use clever approaches. I’d give 99% probablity that Zen Bound is not using “real” (aka standard textbook approach to) shadows/reflections.

Some out of the top of my head ideas (that may or may not work):

  1. For background blurry shadows, precompute a bunch of really blurry “shadow textures” for each possible object. E.g. from a dozen+ sides of an object. When drawing a shadow, pick closest two suitable shadow textures and interpolate between them. Since shadows are very blurry there, no one will notice that they are “fake”.

  2. Self-shadowing shadows on the object might be hard with the current version of Unity (we do not expose depth texture format on iOS right now). However, since the objects are really small, it’s possible to render their object space depth into a regular texture, and use that to do shadow testing. I’m not sure how they make the shadow that smooth in realtime on iOS; would be good to know their tricks (which again, might be entirely possible in Unity… you’d just need to know the approach).

  3. I’m not sure I see any “real” reflections there. Isn’t the fake specular done with just a spheremap?

In other words: whenever anything in realtime graphics looks super cool, most likely it’s smoke mirrors (aka clever approaches to trick the eye or clever approximations) coupled with really good artwork. It’s very rare that the ability to do or not do that is limited by actual underlying technology.