Don't get me wrong. This is what I have thought of so fare: For each enemy which can see the player, do 1. An RTT from the enemies postition pointing at the player. Use special matierials for that. e.g. the player has alpha 1, the rest alpha 0 and the lighting as a monochrome palette. (for this the RTT surface doesn't even have to be that big) 2. Let a fragment shader decide wether the contrast is high enough so that the player silhouette can be seen. (IIRC you can pass pointers even in shaders around (but I could be wrong)) This should be fast enough, but I don't know the D3 engine very well so the material changing isn't maybe very easy to do. And only people with a compatible card can get this extra difficulty. If some points aren't clear (because of my languange ) don't hesitate to ask me. edit: mmh... I just thought over it again and there still would be a problem if there's a very small bright surface directly behind the player, but that should be negligible. It just so happens that I've got another idea For each enemy which can see the player, do 1. An RTT from the enemies postition pointing at the player. 2. An RTT from the enemies postition pointing at the player with the player model invisible 3. Check wether there are big differences between the two images.