Great sample! That is ecaxlty what I was looking for to improve the graphics of my 2d game. But the (bad) performance still remains a serious problem for me. In my game, the (scrolling)levels are much bigger as the one in the sample. Furthermore i also would like to add some more lights. I tried this within the sample and the result was like a slideshow I experienced that the most performance loss comes while drawing the shadowvertices (last lines of the DrawShadows method). Maybe merging all convexhulls shadows to one single buffer could help here. Also precalc the shadowvertices on specific events (eg. on new light, on new convexhull, on lightposition change, on convexhullposition change, on scaling light range ) instead of doing this each frame. Therefor an illumination manager class, which holds shadowvertices and manages all convexhulls and lightsources, could be helpfull. Just my thoughts. Any further ideas?