Halo shadows

Anybody know how exactly do they do the shadows in Halo? I know it they’re probably using projective texturing, but what I can’t figure out is how do the shadows maintain the same quality, resolution, and angle with the light source no matter what distance they are from the camera.

For instance, I’ve noticed that a vehicle in front and me and a vehicle half way acrosst he map seem to have the same shadow, if they’re using projective texturing, wouldn’t they render the entire scene from the light source point of view, and then wouldn’t some shadows appear to be sheered more than others? Any ideas?

Only certain objects cast shadows. That lets you cull away most of the scene when you create your light view frustum.

For outdoors scenes the lightsources point of view is ‘at infinity’ so the vehicles will have identical shadows.

They render each object to texture then scale and fade it accordingly then orthographically project it onto the ground. They certainly dont render a shadow map incorporating multiple shadow casting objects: if they have two warthogs in the scene they can use the same low res shadow texture for both, which again is why they look identical.

But how could they use the same texture for 2 warthogs if one is on it’s side?

Also, anybody know any tutorials on the technique foobar described? Would each object have it’s own individual shadow texture? Would you then have to find which triangles on the ground hold that shadow then render those triangles again using the shadow? Or is there a way to combine every object’s shadow?

Oh yeah! oops.

They dont seem to do anything clever to combine the objects shadows though, they just let them accumulate. http://halo.bungie.net/images/site/halo/screenshots/scrn_122.jpg
The shadows seem to be lit by local light sources as well.

Notice how the shadows of vehicles are always drawn as if the lightsource is directly overhead.

edit: I remember outcast used the same technique and the shadows look very similar between the two games, halo’s a bit better obviously. There used to be a website detailing how the outcast engine worked but i cant find it now, oh well.

[This message has been edited by foobar (edited 11-02-2003).]