Ich wollt mal den Ansatz versuchen, den Vorhang im Tunnel wegzublenden und hab mich dafür mal etwas mit Shadern beschäftigt. Nun hätte ich vermutet, dass das hier gehen sollte:
Es kommt aber ein Fehler, den ich nicht verstehe, und zwar führen in PS_OUTPUT die Kommandos Out.RGBA.r = In.fogFactor * nebelfarbe.r usw. zu einem Fehler. Setzt man die Werte dort einfach z.B. auf Out.RGBA.r = nebelfarbe.r + 0.5; dann kompiliert der Shader erstmal, natürlich nicht wirklich mit dem gewünschten Ergebnis. ich versteh nicht, warum In.fogFactor hier ein Problem macht.
Kann dir auf die schnelle leider nicht helfen, weil ich gleich weg muss... allerdings ist mir aufgefallen, dass du den Pixelshader ein wenig optimierter schreiben kannst. Weniger code heißt ja auch manchmal weniger Fehlerquellen:
Mit dem Effects Framework kenne ich mich leider nicht aus, ich schreib meine Shader immer direkt. Ich bin aber halbwegs sicher, dass man da irgendwo vorher auch ne konkrete Fehlermeldung abgreifen kann. Zudomons kurzer Code-Schnippsel würde z.b. eine Warnung "Implicit truncation of vector" generieren, weil der Code einen float4 nebelfarbe mit einem float3 c.rgb multipliziert. OpenGL würde Dich an der Stelle schon geiseln, weil es nicht erraten kann, welche drei Komponenten von den 4 verfügbaren es für die Multiplikation verwenden soll.
Ich will damit sagen, dass Microsoft in diesem Fall keine Schimpfe verdient - der Shader-Compiler ist normalerweise sehr ausführlich bei Fehlermeldungen und Warnungen. Die Fehler, die Dich interessieren, sind aber wahrscheinlich irgendwo in einem Zwischenschritt des Effect Frameworks versteckt. Keine Ahung, wie Du da rankommst, aber die Doku kennt sicher einen Weg.