si ton appli a pour but le temps reel, il te faudra forcement prendre en considerations les limitations techniques des cartes graphiques actuelles. Meme avec du multi-GPU des dernieres 295, tu peux mettre la machine a plat avec simplement une grosse resolution (vu que le cout du pixel shader s'applique a chaque pixel a rendre) et une grosse convolution. Un algo qui tourne tres bien sur un CPU peut etre "minable" une fois porte en version "shader" - non pas a cause de la logique, mais a cause du cout de certaines operations materielles (lecture dans les textures, transfert de donnees memoires, etc. D'autant plus que tout ce qui est traitement du signal se vectorise tres bien avec les archi CPU actuelle, ce qui n'est pas encore le cas avec les GPU).
Bref, le jeux actuels font gros usage de FSE (full-screen effects), et si l'approche theorique reste valide, l'implementation est loin d'etre "ideale" d'un point de vue modelisation, et on a beaucoup recours a des simplifications et astuces pour conserver des performances correctes.
Sinon, pour les shaders, c'est relativement simple, mais il faut bien comprendre le principe ; je te recommande des suivre les tutorials fournis avec les SDK DirectX, ils sont tres bien fait, et devrait tedonner tous les elements dont tu as besoin pour realiser ce que tu souhaites. (il doit y avoir des exemples de high-dynamic range rendering -HDR-, pre-computed radiance tranfert (PRT) ou image based lighting (IBL) )