Jump to content
  • Advertisement
Sign in to follow this  
  • entries
  • comments
  • views

Work and Shadows

Sign in to follow this  
benjamin bunny


I finally graduate in a few weeks, so I'm looking for work in the games industry. The only slight problem is I don't want to move from the fine city of Norwich, and as far as I can tell, there isn't much work around here. I'm probably looking at a long commute.

I've been working on a demo CD to send to recruiters. At least, that's the theory. In practice I've been playing around with shadow volumes a lot; adding a robust shadow volume lighting system into my engine's mesh classes.

I'm using a depth-fail algorithm to render the shadows. The silhouette calculation turned out to be pretty slow, so I'm caching it and calculating it every 4 frames or so. The volume itself is stored in a single VBO, basically using the mesh's geometry with the silhouette edges extruded. Obviously there's one volume per light/mesh combination. The contributions of each light are blended additively in multiple passes.

I'm getting about 43 fps for the above scene (Radeon 9700 Pro, Athlon 2100+). The slowest part is currently calculating the silhouette for the shadow volumes. Fill rate is also pretty poor, but there's not much I can do about that, short of buying a new video card. There are a lot of optimisations I can make. Dumping the shadow volume calculations into a vertex shader (article) should help a lot, as should adding distance-based culling for distance attenuated lights. Occlusion culling could also be used to cull out shadow volumes that aren't visible from a light source, which would be very useful in large, detailed scenes where there's a lot of occlusion.

I'm still not decided on whether shadow volumes or shadow mapping are best for general purpose scenes. Both currently have significant limitations. Shadow volumes do seem more robust in general though, if slower. OTOH, Shadow mapping does have the advantage of working very well with the image-space occlusion culling system I've implemented.
Sign in to follow this  

1 Comment

Recommended Comments

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!