Release Tweak zum Verstärken des HDR-Effekts

Xerus

Reisender
Tweak zum Verstärken des HDR-Effekts

Was? Verstärkter HDR-Effekt? Aber so etwas gibt es doch schon! Nämlich RPG-BlackDragon's Ultra HDR. Schön und gut, aber leider nicht für manche Leute mit einer Shader 4.0 Grafikkarte. Die haben nämlich das Problem mit pixeligen Beleuchtungsübergängen. Und das sieht wirklich Sch...recklich aus. Nun habe ich es geschafft den HDR-Effekt auch ohne RPG-BlackDragon's Mod zu verstärken. Es könnte also eine Lösung für Leute sein, die ebenfalls verstärktes HDR haben möchten, aber das besagte Problem mit Dragon's Mod haben. Und so viel schlechter als mit Dragon's Mod sieht es dann auch nicht aus, finde ich zumindest. Hier ein paar Screenshots zum Vergleich...

RPG-BlackDragon's Ultra HDR (Variance=high, Luminosity=middle)
Hier sieht man auch die pixeligen Beleuchtungsübergänge


Getweakter Verstärker HDR-Effekt
Keine pixeligen Beleuchtungsübergänge mehr, trotz Shader 4.0 Grafikkarte


Oblivion Standard HDR


Es scheint so, dass RPG-BlackDragon bei seiner Mod den HDR-Shader völlig modifiziert hat und es deswegen zu dem Problem bei Shader 4.0 Karten kommt. Mit diesem Tweak hier wird nur das Standard HDR verstärkt, ohne sonst etwas daran zu verändern. Ich selbst habe keine Ahnung von Shadern und habe das nur durch Herumexperimentieren herausgefunden und kann auch nicht garantieren, dass es immer und bei jedem problemlos klappt.
Ein Problem scheint es noch zu geben: Es ist mir nämlich ein paar mal passiert, dass nach dem Verlassen einer Interrior-Cell die HDR-Beleuchtung plötzlich auf Maximum eingerastet geblieben ist und nicht mehr den Lichtverhältnissen entsprechend heruntergeregelt wurde. Das scheint sporadisch und selten aufzutreten und ich weiß nicht woran es liegt.
EDIT: Das mit dem Einrasten des HDR auf Maximum liegt wohl nicht an diesem Tweak hier, da es mir inzwischen auch ohne den Tweak einige male passiert ist.

So, und nun zum Tweak...

  • Wichtig: Macht auf jeden Fall vorher eine Sicherungskopie des Ordners Shaders im Verzeichnis Oblivion\Data. So könnt Ihr die Standard Shader schnell wiederherstellen, falls erforderlich.
  • Öffnet die Datei RendererInfo.txt im Verzeichnis My Games\Oblivion und merkt Euch die Zahl, die dort ganz unten hinter Shader Package steht. Das ist das Shader Package, das von Eurem Oblivion benutzt wird (Bei mir z.B. 13).
  • Ladet Euch den Oblivion Shader Editor von Timeslip herunter. Der Shader Editor braucht nicht installiert zu werden. Entpackt einfach die 7ZIP-Datei in ein beliebiges Verzeichnis und startet das Programm per Doppelklick auf ShaderEdit.exe.
    Hinweis: Der Shader Editor setzt Microsoft .NET Framework 2.0 (oder neuer) voraus.
  • Klickt unten rechts auf Open und navigiert zum Verzeichnis Oblivion\Data\Shaders. Wählt dort das Shader Package mit der vorher gemerkten Zahl am Ende (Bei mir z.B. shaderpackage013.sdp).
  • Sucht unten links in der Liste nach dem Eintrag HDR004.pso und klickt darauf. Oben im Feld sollte nun Folgendes erscheinen...
    //
    // Generated by Microsoft (R) D3DX9 Shader Compiler 9.08.299.0000
    //
    // Parameters:
    //
    // sampler2D AvgLum;
    // sampler2D DestBlend;
    // float4 HDRParam;
    // sampler2D Src0;
    //
    //
    // Registers:
    //
    // Name Reg Size
    // ------------ ----- ----
    // HDRParam c1 1
    // Src0 s0 1
    // DestBlend s1 1
    // AvgLum s2 1
    //

    ps_2_x
    def c0, 1, 0.5, 0, 0
    dcl t0.xy
    dcl t1.xy
    dcl_2d s0
    dcl_2d s1
    dcl_2d s2
    texld r2, t0, s2
    texld r1, t0, s0
    texld r0, t1, s1
    dp3 r2.x, r2, c0.x
    max r0.w, r2.x, c1.x
    rcp r0.w, r0.w
    mul r1.w, r0.w, c0.y
    mul r2.xyz, r1, r1.w
    mul r0.w, r0.w, c1.x
    max r1.xyz, r2, c0.z
    mad r0.xyz, r0.w, r0, r1
    mov r0.w, c0.x
    mov oC0, r0

    // approximately 13 instruction slots used (3 texture, 10 arithmetic)
  • Nun schaut Euch daraus folgende Zeile an... (Seht auch den Hinweis weiter unten!)
    def c0, 1, 0.5, 0, 0
    Hier sind wohl die Konstanten für den Shader festgelegt.
    Der erste Wert 1 steht für die Variance und gibt an, wie weich das Bild erscheinen soll. Je größer die Zahl, desto weicher und verschwommener wirkt das Bild. Jedoch wird das Bild dabei auch etwas dunkler.
    Der zweite Wert 0.5 steht für die Luminosity und gibt die Leuchtkraft des HDR-Effekts an. Je größer die Zahl, desto heller strahlen beleuchtete und leuchtende Objekte.
  • Ich habe bei mir diese Werte so geändert...
    def c0, 1.5, 1.5, 0, 0
    Danach sieht das Ganze so aus...
    //
    // Generated by Microsoft (R) D3DX9 Shader Compiler 9.08.299.0000
    //
    // Parameters:
    //
    // sampler2D AvgLum;
    // sampler2D DestBlend;
    // float4 HDRParam;
    // sampler2D Src0;
    //
    //
    // Registers:
    //
    // Name Reg Size
    // ------------ ----- ----
    // HDRParam c1 1
    // Src0 s0 1
    // DestBlend s1 1
    // AvgLum s2 1
    //

    ps_2_x
    def c0, 1.5, 1.5, 0, 0
    dcl t0.xy
    dcl t1.xy
    dcl_2d s0
    dcl_2d s1
    dcl_2d s2
    texld r2, t0, s2
    texld r1, t0, s0
    texld r0, t1, s1
    dp3 r2.x, r2, c0.x
    max r0.w, r2.x, c1.x
    rcp r0.w, r0.w
    mul r1.w, r0.w, c0.y
    mul r2.xyz, r1, r1.w
    mul r0.w, r0.w, c1.x
    max r1.xyz, r2, c0.z
    mad r0.xyz, r0.w, r0, r1
    mov r0.w, c0.x
    mov oC0, r0

    // approximately 13 instruction slots used (3 texture, 10 arithmetic)
  • Je nach Geschmack könnt Ihr auch andere Werte ausprobieren, auf eigene Verantwortung. Ändert einfach die Werte in die gewünschten um und klickt auf Save. Wählt hier noch Euer verwendetes Shader Package im Verzeichnis Oblivion\Data\Shaders (Bei mir z.B. shaderpackage013.sdp) und bestätigt die Meldung zum Überschreiben der Datei.
  • Hinweis: Bei einem anderen Shader Package als dem shaderpackage013.sdp könnte der Inhalt der HDR004.pso anders aussehen. Eventuell klappt dort der Tweak auch, wenn Ihr ähnliche Wete verändert, natürlich auf eigenes Risiko. Postet am besten Eure Erfahrungen, falls es bei Euch mit einem anderen Shader Package geklappt hat. :)

Hier noch einige Screenshots mit meinen Eistellungen


Update...

Nun merke ich, dass die HDR-Beleuchtung durch den Tweak in den Innenbereichen im Vergleich zu den Außenbereichen doch etwas zu viel des Guten ist. Heller Kerzenschein und die Fenster wirken für meinen Geschmack recht stark überbeleuchtet. Glücklicherweise gibt es hierfür auch eine Lösung... :)

In der Datei Oblivion.ini gibt es folgende zwei Abschnitte: [BlurShaderHDRInterior] und [BlurShaderHDR]. Das Verändern der Parameter im Abschnitt [BlurShaderHDR] zeigt bekanntlich keinerlei Auswirkungen. Anders jedoch im Abschnitt [BlurShaderHDRInterior]. Hier kann man den HDR-Effekt separat für die Innenbereiche modifizieren. Der Abschnitt sieht so aus...
[BlurShaderHDRInterior]
fTargetLUM=1.0000
fUpperLUMClamp=1.0000
fEmissiveHDRMult=1.0000
fEyeAdaptSpeed=0.5000
fBrightScale=2.2500
fBrightClamp=0.2250
fBlurRadius=7.0000
iNumBlurpasses=1
Ich habe die Parameter so geändert...
[BlurShaderHDRInterior]
fTargetLUM=1.0000
fUpperLUMClamp=1.0000
fEmissiveHDRMult=1.0000
fEyeAdaptSpeed=0.7000
fBrightScale=1.5000
fBrightClamp=0.2250
fBlurRadius=4.0000
iNumBlurpasses=2
Was die einzelnen Parameter bewirken könnt Ihr hier nachschauen. Auch Lightcatcher hatte mal hier etwas dazu gepostet. Hier noch Screenshots vom Ergebnis...

So sieht es nach dem Shader-Tweak aus


Und so wenn man noch zusätzlich die INI tweakt


Update 2...

Ich habe etwas weiter herumprobiert und mich nun für folgende Werte entschieden...
def c0, 1.25, 1.25, 0, 0
Damit ist das HDR nicht mehr so übertrieben. Es ist ein gutes Mittelmaß zwischen zu viel und zu wenig HDR. Und das Bild wirkt auch weniger dunkel. Aber das ist natürlich Geschmacksache. ;)

Viel Spaß, Xerus
 
Zuletzt bearbeitet:
Das sieht sehr schön aus, allerdings kann ich nicht abspeichern. Immer wenn ich das versuche kommt die Fehlermeldung:"Unhandled exception has occured in your application...". Die Fehlermeldung kommt auch, wenn ich nichts verändert habe. Der Ordner mit der exe befindet sich im Oblivion Ordner, ich habe die Version 0.3 und auch das richtige Shaderpackage ausgewählt. Was soll ich tun?

Desweiteren hat meine Datei noch eine extra Zeile:
def c0, -0.0019492188, -0.0019492188, 0.0019492188, 0.0019492188
und auch die Werte in der Zeile die ich verändern soll sind anders:
def c2, 256, 1, 0.5, 0
das ganze sieht dann so aus:
//
// Generated by Microsoft (R) D3DX9 Shader Compiler 9.08.299.0000
//
// Parameters:
//
// sampler2D AvgLum;
// sampler2D DestBlend;
// float4 HDRParam;
// sampler2D Src0;
//
//
// Registers:
//
// Name Reg Size
// ------------ ----- ----
// HDRParam c1 1
// Src0 s0 1
// DestBlend s1 1
// AvgLum s2 1
//

ps_2_x
def c0, -0.0019492188, -0.0019492188, 0.0019492188, 0.0019492188
def c2, 256, 1, 0.5, 0
dcl t0.xy
dcl t1.xy
dcl_2d s0
dcl_2d s1
dcl_2d s2
add r6.yw, t0.y, c0
add r6.xz, t0.x, c0
mov r2.x, r6.x
mov r2.y, r6.w
mov r1.x, r6.z
mov r1.y, r6.w
mov r0.x, r6.z
mov r0.y, r6.y
texld r4, r2, s0
texld r3, r1, s0
texld r2, r6, s0
texld r1, r0, s0
texld r5, t0, s2
texld r0, t1, s1
mul r6.xy, r6, c2.x
frc r6.xy, r6
dp3 r7.x, r5, c2.y
lrp r5.xyz, r6.x, r3, r4
max r0.w, r7.x, c1.x
lrp r3.xyz, r6.x, r1, r2
rcp r0.w, r0.w
lrp r1.xyz, r6.y, r5, r3
mul r1.w, r0.w, c2.z
mul r2.xyz, r1, r1.w
mul r0.w, r0.w, c1.x
max r1.xyz, r2, c2.w
mad r0.xyz, r0.w, r0, r1
mov r0.w, c2.y
mov oC0, r0

// approximately 32 instruction slots used (6 texture, 26 arithmetic)
 
Zuletzt bearbeitet:
Hallo,

bei mir kommt beim Öffnen des HDR004 folgende Meldung:
The current shader could not be compiled. Do you want to discard your changes?
Hat sonst noch jemand diese Meldung erhalten?
 
das ist sogar leichter durch zu führen als RPG Dragon Ultra HDR mod! xD
super beschreibung ;) klappt ohne probleme, aber ne frage wie kann man HDR die farben stärker aussehen lassen?
 
@ oofishoo

Hast du eigentlich Microsoft .NET Framework 2.0 (oder neuer) auf deinem Computer installiert? In der Readme des Shader Editors habe ich gerade Folgendes gelesen...
Requires .NET 2.0 and the DX9.0c October 05 update (The same DX version as oblivion)
Könnte das der Grund sein, warum du nicht abspeichern kannst? Sonst wüsste ich auch nicht, woran das liegen könnte. :huh:
Dass der Inhalt deines Shaders anders aussieht liegt wohl daran, dass du nicht wie bei mir das Shader Package 13 hast, sondern ein anderes. Welches eigentlich? Ich habe es nur bei mir mit dem Shader Package 13 ausprobiert und kann nicht genau sagen wie es bei den anderen ist. Versuche es doch mal mit diesen Werten...
def c2, 256, 1, 0.5, 0
und ändere das z.B. so...
def c2, 256, 1.5, 1.5, 0
Vielleicht klappt das ja analog wie beim Shader Package 13. ;)
EDIT: Tipp: Die HDR004.pso sollte natürlich im Originalzustand sein. Falls du diesen Teil schon mit einer anderen Mod (z.B. RPG-BlackDragon's HDR) modifiziert hast, so solltest du das erstmal rückgängig machen bevor du den Tweak machst.

@ trader2

So eine Meldung hatte ich auch mal erlebt. ;) Weiß aber nicht mehr genau was ich gemacht hatte als sie auftauchte. Versuche es einfach nochmal. Tipp: Wenn du dein Shader Package mit dem Shader Editor geöffnet hast und nach dem Eintrag HDR004.pso suchst, solltest du dich nicht verklicken, also nicht voher auf irgend einen anderen Eintag klicken. Dann registriert der Shader Editor das schon als Änderung, sobald du wieder einen anderen Eintag wählst (Sternchen in der Titelleiste). ;) Sollte aber daran nicht liegen.

@ SoundBarriere

Wie meinst du das jetzt mit den Farben stärker aussehen lassen? Stelle doch die Farben bei deinem Monitor entsprechend ein bzw. bei den Farbeinstellungen im Grafikkartetreiber ("Digitale Farbanpassung" bzw. "Digitale Schwingung" bei Nvidia-Karten). :lol: Allerdings benutze ich für die Farben noch eine weitere Mod, die ich nur empfehlen kann: OBGE Motion Blur. Die Mod bringt nicht nur, wie der Name schon sagt, einen Motion-Blur-Effekt ins Spiel, sondern auch einen Bleach-Bypass-Effekt als Post-Prozess. Dadurch wirkt die gesamte Beleuchtung kontrastreicher und realistischer. Und damit nicht genug: Zusätzlich gibt es noch einen Unterwasser-Effekt, der wirklich genial aussieht. :)
 
Zuletzt bearbeitet:
da hab ich so gehofft endlich dieses Problem vom HDR-Mod beseitigen zu können... aber irgentwie hat mein PC eindeutig was gegen HDR. wenn ich gute Bilder machen will, muss ich sie nachbearbeiten :roll:

naja zu meinem Problem:
ich hab Shaderpackage013 und bei mir sieht es so aus wie bei oofishoo, allerdings ist es bei mir die HDR0004 in 2 daten aufgeteilt. und nachdem ich die werte umgestellt hatte (auf die von dir empfohlenen), wirkte das spiel in etwa so als hätte ich eine komische Brille oder so auf:



naja, immerhin weiß ich jetzt, das der displacement-shader erst durch OBGE gut wird, hab mich schon gefragt wieso er mir
1. erst auffiel als ich den Mod installiert hatte
2. ich das nicht an flammen bauen kann um so hitze darzustellen o_O
aber das ist schonwieder OT...
 
@ Verganon

Also, wenn du auch das Shader Package 13 hast und es genauso aussieht wie bei oofishoo, dann ist das schon seltsam. Ich habe hier eine Sicherung des Shader-Ordners aus einer frischen Oblivion-Installation und da sieht die HDR004.pso genauso aus wie bei mir in der Tweak-Anleitung. Was mir jedoch noch aufgefallen ist... Die Code-Zeilen, wie oofishoo es im Spoiler gepostet hat, entsprechen 1 zu 1 den Code-Zeilen aus der modifizierten HDR004.pso durch die HDR-Mod von RPG-BlackDragon, bis auf die Kommentare (Zeilen mit // am Anfang). Fragt mich jetzt aber nicht, warum das so ist. Was ich noch vorschlaggen könnte: Du ersetzt einfach den kompletten Inhalt deiner HDR004.pso durch den Inhalt aus meiner Tweak-Anleitung, aber auf eigenes Risiko. ;) Setze aber vor jede Zeile vier Leerzeichen, außer bei den Zeilen mit // am Anfang. Vielleicht funktioniert es dann. :)

Das mit den zwei Dateien für die HDR004 ist schon richtig so. Die eine heißt HDR004.pso (Pixel-Shader) und die andere HDR004.vso (Vertex-Shader). Du brauchst aber nur die HDR004.pso. Außerdem gibt es da noch Dateien die HDR000 bis HDR007 heißen. Ich bin auf die HDR004 gekommen, weil durch Dragon's Mod auch nur deser Teil verändert wird. Wofür die anderen sind, weiß ich nicht.
 
Zuletzt bearbeitet:
so ein Teil meines Problems hat sich schonmal erledigt. ich hab festgestellt das ich noch Dieses Pack genutzt habe.
Also ShaderPack 13 orginal nochmal rüber, getweaked und anschließend noch ein paar andere wichtige Mods (QTDoF, Nighteye Shader Replacement etc.).
jetzt hab ich außen zwar wieder ein Dynamisches und unverpixeltes HDR, innen fällt der effekt aber wieder weg. benutz ich das oben genannte Shader-Package (in dem bei meinem erstem post anscheinend noch überreste vom Ultra-HDR waren obwohl deaktiviert) hab ich außen keines mehr aber innen, und unverpixelt.
falls du rausbekommst, wie ich sowohl ex als auch interrior dynamisches HDR hab, wär ich dir überaus dankbar. ;)


und hier noch ein hinweiß @all: Ultra-HDR zu deaktivieren bringt nichts, es bleiben überreste erhalten die probleme im zusammenhang mit diesem tweak entstehen lassen. den orginal-shader (oder zumindest ein uneditierter anderer) nochmals einzusetzen ist pflicht! hinterher können dann die gewünschten anderen Mods (wie oben genannte) problemlos hinterher installiert werden.
 
ich habe das problem, dass sich bei meinem shaderpackage017 keine schatten befinden.

Lege ich das von RPGBlackdragon gemachte plugin für den 3.0 shader ein habe ich hdr und schatten, aber dafür diese hässlichen vierecke, die du im ersten bild gezeigt hast.

mein Shaderpackage sieht nun folgendermaßen aus

// sampler2D DestBlend; // float4 HDRParam; // sampler2D Src0; // // // Registers: // // Name Reg Size // ------------ ----- ---- // HDRParam c1 1 // Src0 s0 1 // DestBlend s1 1 // AvgLum s2 1 // ps_2_x def c0, 1.25, 1.25, 0, 0 dcl t0.xy dcl t1.xy dcl_2d s0 dcl_2d s1 dcl_2d s2 texld r2, t0, s2 texld r1, t0, s0 texld r0, t1, s1 dp3 r2.x, r2, c0.x max r0.w, r2.x, c1.x rcp r0.w, r0.w mul r1.w, r0.w, c0.y mul r2.xyz, r1, r1.w mul r0.w, r0.w, c1.x max r1.xyz, r2, c0.z mad r0.xyz, r0.w, r0, r1 mov r0.w, c0.x mov oC0, r0 // approximately 13 instruction slots used (3 texture, 10 arithmetic)

so nun weis ich nicht was in der datei von Blackdragon den Schatten herbeiruft, die datei sieht nämlich so aus.

ps_2_x def c0, -0.0019492188, -0.0019492188, 0.0019492188, 0.0019492188 def c2, 256, 1, 0.5, 0 dcl t0.xy dcl t1.xy dcl_2d s0 dcl_2d s1 dcl_2d s2 add r6.yw, t0.y, c0 add r6.xz, t0.x, c0 mov r2.x, r6.x mov r2.y, r6.w mov r1.x, r6.z mov r1.y, r6.w mov r0.x, r6.z mov r0.y, r6.y texld r4, r2, s0 texld r3, r1, s0 texld r2, r6, s0 texld r1, r0, s0 texld r5, t0, s2 texld r0, t1, s1 mul r6.xy, r6, c2.x frc r6.xy, r6 dp3 r7.x, r5, c2.y lrp r5.xyz, r6.x, r3, r4 max r0.w, r7.x, c1.x lrp r3.xyz, r6.x, r1, r2 rcp r0.w, r0.w lrp r1.xyz, r6.y, r5, r3 mul r1.w, r0.w, c2.z mul r2.xyz, r1, r1.w mul r0.w, r0.w, c1.x max r1.xyz, r2, c2.w mad r0.xyz, r0.w, r0, r1 mov r0.w, c2.y mov oC0, r0 // approximately 32 instruction slots used (6 texture, 26 arithmetic)

es wäre angenehm, wenn mir jemand bei dem problem helfen könnte. :( ich bin seit gestern nach beschäftigt, aber habe weder in Forum noch sonsetwas etwas gefunden.
 
Zuletzt bearbeitet: