PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was macht diese Shaderprogramm (FakeHDR) mit Oblivion (Source enthalten)?


Odal
2006-04-14, 16:48:11
Für Oblivion gibts ja ein "FakeHDR" Plugin
nun würde mich mal interessieren was dieses Shaderprogramm ungefähr tut...
im Spiel hat man den Anschein das es eine Art Iriissimulation durchführt....eben mit den Typischen Bloom nachteilen (keinen hohen Farbcontrast zwischen Overbright stellen und normal stellen)

ausserdem läuft das ding recht zähflüssig...kann da vielleicht mal jemand drüberschauen ob sich was optimieren lässt?

das FakeHDR plugin gibts hier (http://www.tessource.net/files/file.php?id=2773)
enthalten ist auch noch eine andere d3d9.dll welche man ins Oblivion verzeichnis schmeissen muss

//These variables will get set automatically
texture tex1;
texture tex2;
float2 rcpres;
float currentlevel;

sampler s0 = sampler_state {
AddressU = Clamp;
AddressV = Clamp;
texture = <tex1>;
};
sampler s1 = sampler_state { texture = <tex2>; };

//Use these to modify the behaviour of the dll
bool AffectMenus=true;
int ToggleKey=107;
float ReactionSpeed=0.5;

//Use these to modify the behaviour of the shader
static const int g_cKernelSize = 13;
static const float BloomScale = 0.75;
static const float HDRScale = -0.7;
static const float HDRAdjust = 0.2;

float2 PixelKernelH[g_cKernelSize] =
{
{ -6, 0 },
{ -5, 0 },
{ -4, 0 },
{ -3, 0 },
{ -2, 0 },
{ -1, 0 },
{ 0, 0 },
{ 1, 0 },
{ 2, 0 },
{ 3, 0 },
{ 4, 0 },
{ 5, 0 },
{ 6, 0 },
};

float2 PixelKernelV[g_cKernelSize] =
{
{ 0, -6 },
{ 0, -5 },
{ 0, -4 },
{ 0, -3 },
{ 0, -2 },
{ 0, -1 },
{ 0, 0 },
{ 0, 1 },
{ 0, 2 },
{ 0, 3 },
{ 0, 4 },
{ 0, 5 },
{ 0, 6 },
};

static const float BlurWeights[g_cKernelSize] =
{
0.002216,
0.008764,
0.026995,
0.064759,
0.120985,
0.176033,
0.199471,
0.176033,
0.120985,
0.064759,
0.026995,
0.008764,
0.002216,
};

float4 UpCombine( in float2 Tex : TEXCOORD0 ) : COLOR0
{
float4 ColorOrig = tex2D( s0, Tex );
float4 adjust = (currentlevel-0.5)*HDRScale;
ColorOrig *= 1+adjust;
ColorOrig += tex2D( s1, Tex );
ColorOrig.a = 1;
return clamp(ColorOrig,0,1);
}

float4 Bloom( in float2 Tex : TEXCOORD0 ) : COLOR0
{
float4 Color = 0;

for (int i = 0; i < g_cKernelSize; i++)
{
Color += tex2D( s1, Tex + (PixelKernelH[i]*rcpres) ) * BlurWeights[i];
Color += tex2D( s1, Tex + (PixelKernelV[i]*rcpres) ) * BlurWeights[i];
}

return clamp(Color * BloomScale,0,1);
}
float4 HDRBrightPass( in float2 Tex : TEXCOORD0 ) : COLOR0
{
float4 color = tex2D( s0, Tex );
float4 adjust = (color-currentlevel)-HDRAdjust;
color = clamp((adjust*adjust*adjust*adjust*adjust)*8,0,1);
color.a = 1;
return color;
}

technique T0
{
pass p0
{
PixelShader = compile ps_2_0 HDRBrightPass();
}
pass p1
{
PixelShader = compile ps_2_0 Bloom();
}
pass p2
{
PixelShader = compile ps_2_0 UpCombine();
}
}

san.salvador
2006-04-14, 17:25:45
Irgendwie siehts auf den Bildern so aus, als ob die Helligkeit brutal nach oben gehoben wurde und die Farben komplett ausgewaschen wurden. Seiht IMHO furchtbar aus.

Odal
2006-04-14, 17:52:52
Irgendwie siehts auf den Bildern so aus, als ob die Helligkeit brutal nach oben gehoben wurde und die Farben komplett ausgewaschen wurden. Seiht IMHO furchtbar aus.

jein, es wirkt erstmal heller..aber schau mal in innenräumen auf die fenster...und aktiviere es mit "num +" und deaktiviere es.. oder schau in die sonne oder sieh dir die funkelnden sterne im nachthimmel an...

es regelt imho nicht nur die helligkeit hoch..zumindest nicht gleichmässig (kostet ja auch gut performance)

aber vielleicht könnte sich das hier ja mal ein Grafikspezi zu Gemüte führen....

Coda
2006-04-14, 18:05:54
Das ist ein simpler Bloom-Filter. Das gibts doch im Spiel schon eingebaut. Macht das ganze wohl nur noch furchtbarer.

Odal
2006-04-14, 19:32:40
naja das es Bloom ist war ja nicht anders zu erwarten, läuft ja schliesslich auch auf Karten ohne FP16 Filtering oder Blending

Fragt sich nur wieso dann ein extra plugin, die Bloomstärke kann man auch in der ini erhöhen...und warum zieht das ding Soviel Performance? Bei Fenstern oder Kerzen sieht das Teil schon recht edel aus...

hast du zufällig Oblivion und kannst es mal selbst testen?

RLZ
2006-04-14, 19:46:20
Das ist ein simpler Bloom-Filter. Mit "+" förmigen Filterkernel. Bei Kerzen und Sternen könnte es vielleicht wirklich gut aussehen.
Aber ohne HDR-Rohdaten sollte man imo von sowas die Finger lassen. X-D
@Odal: Kannst du mal ein Screenshot posten?

Odal
2006-04-14, 19:58:53
moment ich mach mal welche :D

sooo

man beachte das Fenster
http://666kb.com/i/11d3qd3dd1hj5.jpg
http://666kb.com/i/11d3qkh18oa2p.jpg

man beachte das schwert und die kerzen
http://666kb.com/i/11d3qmvnmqpkx.jpg
http://666kb.com/i/11d3qqoukv7y9.jpg

diesmal nur die kerzen in nahaufnahme

http://666kb.com/i/11d3qswkcyosh.jpg
http://666kb.com/i/11d3quio9r7k1.jpg


iris simulation... man beachte den himmel 1. bild sofort nach dem schauen in den himmel 2. bild kurz danach nach "irisanpassung"
http://666kb.com/i/11d3qz9jecav5.jpg
http://666kb.com/i/11d3r0nuiibcx.jpg

ob die irissimulation auch schon bestandteil des default blooms von oblivion ist weiss ich jetzt nicht genau....

auf jeden fall zieht der shader ganz gut performance (optimierungsmöglichkeiten?)

Gast
2006-04-14, 21:06:11
in den dunklen Screenshots (Typ mit "Leuchtschwert", Kerzen) sieht es aber so aus, als ob auch das Menü den Effekt abbekommt. ("SE" ist auch überstrahlt), ob das so gewollt ist?

Odal
2006-04-14, 21:39:12
in den dunklen Screenshots (Typ mit "Leuchtschwert", Kerzen) sieht es aber so aus, als ob auch das Menü den Effekt abbekommt. ("SE" ist auch überstrahlt), ob das so gewollt ist?

Ob das gewollt ist weiss ich nicht...das Menu bekommt den Effekt auch ab das ist korrekt...
wenn man das OptionsMenue aufmacht sind einige helle Stellen viel heller....

Ich weiss auch nicht ob man Bloom ausstellen muss....bei mir war Bloom an bei den Screenshots..und halt dieses FakeHDR

Coda
2006-04-14, 22:03:56
und warum zieht das ding Soviel Performance?
Vermutlich verpfuschte Wrapper-D3D9-DLL.

hast du zufällig Oblivion und kannst es mal selbst testen?
Ja und nein :)

Odal
2006-04-14, 23:01:18
Vermutlich verpfuschte Wrapper-D3D9-DLL.


kann man das irgendwie verbessern? ich würde mit dem Ding gern noch ein wenig testen :D

Coda
2006-04-14, 23:48:51
In dem Fall nicht.