Hi,
Ich lege gleichmäßigen Noise über mein Bild. Soweit, so gut.
Nun ist meine Render-Target-View allerdings im sRGB-Format, wird also nach dem Shader Gamma-korrigiert. Für den Noise – der im linearen Farbraum vorliegt – bedeutet das aber, dass er in dunklen Bereichen ganz anders zur Geltung kommt als in hellen.
Eine Lösung wäre, den Input ans Gamma anzupassen, dann den Noise aufzuaddieren und das Ergebnis wieder in den linearen Farbraum zurück zu konvertieren … nur, damit er dann beim Schreiben ins Render-Target automatisch wieder ans Gamma angepasst wird …
Meine Fragen also:
– Lässt sich Noise auch Gamma-korrigiert anwenden, ohne dabei Gamma auf den Frame anzuwenden und wieder umzukehren?
– Falls das nicht geht: Überwiegen die Vorteile eines sRGB-Render-Targets (Konvertierung in Hardware) überhaupt noch oder wäre es besser, direkt in ein normales Render-Target zu schreiben (wo ich die Gammakorrektur dann ja eh im Shader durchführen muss)?
Gruß, Ky
Noise und Gamma
- Richard Schubert
- Moderator
- Beiträge: 106
- Registriert: 27.02.2009, 08:44
- Wohnort: Hohen Neuendorf (b. Berlin)
- Kontaktdaten:
Re: Noise und Gamma
Was ich bisher gesehen habe, ist das Rendering komplett im linearen Space zu abzuarbeiten und im letzten Postprocess Step den man meist sowieso irgendwie haben wird, kann man noch so ein kleines pow() vertragen um wieder im gewünschten sRGB format zu landen.
Das entfernt erstens den Renderunterschied von DX9 und DX10+ Hardware, welcher bei Alphablending von sRGB Rendertargets auftreten kann. Zweitens kannst du einfacher auf HDR Rendertargets umsteigen, bei denen keine sRGB Capabilites vorhanden sind (weil sie dort eigentlich auch unnötig sind).
Das entfernt erstens den Renderunterschied von DX9 und DX10+ Hardware, welcher bei Alphablending von sRGB Rendertargets auftreten kann. Zweitens kannst du einfacher auf HDR Rendertargets umsteigen, bei denen keine sRGB Capabilites vorhanden sind (weil sie dort eigentlich auch unnötig sind).
Produktivität über Performance - XNA Creators Club
- Schrompf
- Moderator
- Beiträge: 4867
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas Ziegenhagen
- Wohnort: Dresden
- Kontaktdaten:
Re: Noise und Gamma
Jupp, so machen wir das auch: Rendern im linearen Bereich, allerdings mit 16Bit-Fließkomma-Renderziel. Im Post Processing dann die Gammakorrektur. Sorgt unter anderem auch dafür, dass auch durch Alphablending und Shaderlogik entstandene Berechnungen gammakorrekt passieren. Hat bei uns z.B. das Wasser einen ganzen Zacken glaubwürdiger gemacht, weil da Untergrund und Spiegelungen per AlphaBlending kombiniert werden.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
- Krishty
- Establishment
- Beiträge: 8264
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Noise und Gamma
Okay, dann werde ich sRGB fallen lassen :)
Vielen Dank für die Infos!
Vielen Dank für die Infos!