Die von Superku vorgeschlagene Methode hat den Nachteil, dass man eine zweite Kamera benötigt (Entities werden unnötigerweise noch mal gerendert) und die vom Postprocessing ausgeschlossenen Objekte werden immer VOLLSTÄNDIG ausgeschlossen, egal ob sie teilweise von nicht-auszuschließenden Objekten überlagert werden oder nicht.

Man nimmt sich einen Render-Target zur Hand und "maskiert" damit die Objekte, die ausgeschlossen werden sollen. Dazu erstellst du erstmal ne Bitmap, die die selbe Auflösung wie die Kamera hat. Dann setzt du den target1-Parameter der Kamera auf diese Bitmap. Dadurch kannste im Pixelshader per color1-Register in diese Bitmap schreiben (vorausgesetzt color1 wird noch nicht für andere Zwecke verwendet). In dem Shader, der auf die auszuschließenden Entities angewendet wird, fügst du im Kopf des Pixelshaders ne neue float4-Variable hinzu, die du dem color1-Register zuweist. Irgendwo im Pixelshader setzt du diese Variable dann einfach auf 1.

Im Postprocess-Shader nimmst du die oben erstellte Textur dann als "Maske", um alles, was schwarz (!) ist zu bearbeiten und den Rest nicht. Du musst also die Maske im Pixelshader invertieren. Das ist so gewählt, weil dadurch die Kompatibilität mit Objekten sichergestellt ist, die keine Shader sondern nur das Standardmaterial zugewiesen haben. Diese werden einfach mit solidem schwarz gerendert. Willst du stattdessen die "intuitive" Version, wo die auszuschließenden Objekte schwarz und der Rest weiß ist, müsstest du erstens JEDEM Objekt einen Shader zuweisen und zweitens in JEDEM Shader ins color1-Register schreiben.

Ein Nachteil dieser Methode ist, dass die sky_color unbedingt schwarz sein muss. Kannst also keine andere Farbe verwenden. Ansonsten ist dein Postprocessing von der Helligkeit des Hintergrunds abhängig.