[Sammelthread] GTA IV [FAQ & Performance]

finde die sonne ein wenig zu stark für cloudy (ist es doch, oder?), nord, aber die wolken und der himmel selbst sind geil! :)
und wehe es postet heute hier jemand noch n beitrag ohne screens :d



 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
@nyze

Letztes pic is geil. Das hat was.

@Rest joa ganz ok

damit onkel schaku mir net auf die Finger haut hier an Alibi video
Allerdings Offtopic. Hab ich eben mal schnell gemacht

 
ja die Reflektion und die stimmung auf dem Porsche gefallen mir gut.
Wenn mir was nicht gefällt schweige ich lieber mittlerweile :d
 
ohne worte screen´s von mir^^

neu1fh4672sdoi.png


enb201242923yqcwkz5ipm.png
 
@Nyze
sieht sehr gut aus :d

@Schak
ja, hab die Sonne noch net so gut eingestellt... heute abend und morgen mach ich das und Sunny Windy fertig und dann wars das endlich :banana:
 
Jetzt bitte nicht sauer werden: Was genau ist FXAA? Und wenn du, nord, fertig bist, kommt's dann Public?
Und noch was: Wie mache ich diesen 'Überstrahleffekt' weniger? Wenn ich am Strand bin sehe ich nichts bzw. der Strand ist weiß..
 
@ daxe fxaa ist eine kantenglättungsmöglichkeit genauso wie smaa, damit die treppeneffekte weniger werden. den überstraheffect kannste mit weniger bloom in der enbbloom reduzieren, suche da nach bloom*, dann den wert dahinter reduzieren, spiel damit rum bis es dir passt.
 
FXAA ist eine Methode zur Kantenglättung, da GTA IV keine eigene besitzt muss das über das injectFXAA gemacht werden.
Hab das fertige bereits in meiner Signatur drin ;)

zu dem Bloom: in der enbbloom.fx (am besten mit dem editor öffnen) sind ein paar Zeilen, die "bloom.w=0.7" heißen (irgendein wert) und diesen dann etwas niedriger setzten. Ist zwar etwas aufwendiger, aber besser als über die enbseries.ini

---------- Post added at 09:52 ---------- Previous post was at 09:39 ----------

wo kommt denn der Code für God Rays in die enbeffect hin?

#define GODRAY
----------

#
#ifdef GODRAY
#
const float GR_DECAY = 0.95;
#
const float GR_DENSITY = 0.5;
#
const float GR_EXPOSURE = 0.2; //Brightness of God-Rays
#
const int GR_SAMPLES = 32; //Decrease/increase to improve performance/quality
#
#endif
------------------

#
#ifdef GODRAY
#
float threshold = 0.99 * far;
#
bool foreground = false;
#
float depthGR = getDepth(texcoord.st);
#
if ((worldTime < 14000 || worldTime > 22000) && sunPosition.z < 0 && depthGR < threshold)
#
{
#
vec2 lightPos = sunPosition.xy / -sunPosition.z;
#
lightPos.y *= aspectRatio;
#
lightPos = (lightPos + 1.0)/2.0;
#
vec2 texCoord = texcoord.st;
#
vec2 delta = (texCoord - lightPos) * GR_DENSITY / float(GR_SAMPLES);
#
float decay = -sunPosition.z / 100.0;
#
vec3 colorGR = vec3(0.0);
#
for (int i = 0; i < GR_SAMPLES; i++) {
#
texCoord -= delta;
#
if (texCoord.x < 0.0 || texCoord.x > 1.0) {
#
if (texCoord.y < 0.0 || texCoord.y > 1.0) {
#
break;
#
}
#
}
#
vec3 sample = vec3(0.0);
#
if (getDepth(texCoord) > threshold) {
#
sample = texture2D(composite, texCoord).rgb;
#
}
#
sample *= vec3(decay);
#
if (distance(texCoord, lightPos) > 0.05) sample *= 0.2;
#
colorGR += sample;
#
decay *= GR_DECAY;
#
}
#
color = (color + GR_EXPOSURE * vec4(colorGR, 0.0));
#
}
#
#endif

[C] //Credits //God Rays: Blizzard //Depth offield: Azraeil. //Bloom: CosmicSpore - Pastebin.com
 
Zuletzt bearbeitet:
in dem Godray Code ist ein vec2 und vec3 drin, also ganz klar GLSL(Programmiersprache von OpenGL), die enbeffect hat aber HLSL (DirectX Programmiersprache), also kann es selbst bei korrekter Imlementierung nicht funktionieren. Außerdem seh ich unten das da:

God Rays: Blizzard //Depth offield: Azraeil. //Bloom: CosmicSpore

und die Autoren kenn ich die machen bei den GLSL Shaders für Minecraft mit (bzw. der Code ist bei den SonicEther Shadern dabei.) Daher ist es mir auch aufgefallen.Ganz so einfach ist es leider nicht sonst hätten es schon mehr gemacht. Außerdem hab ich ne enbeffect mit Godrays ;) laggt nur wie Arsch und Friedrich.
 
Zuletzt bearbeitet:
Schade :fresse:
n3o hatte das doch auch mal drin und ich will das auch mal bei meiner probieren^^

---------- Post added at 10:12 ---------- Previous post was at 10:07 ----------

geht der code hier?
//Godrays(timely) v5.3 for Scanti's OGE(04.01.2010)
//by vtastek

/*TWEAKABLES START*/

//Number of passes for sunshafts
#define NUM_SAMPLES 25

//decrease to gain performance
//but keep in mind effect will start to break
//revealing the squarish nature of the lightshafts
//so increasing would be a better idea
//but at the exchange of performance

//Exposure(intensity) values for sunshafts
extern float globalmul = 1.0f;
extern float morningshaftex = 2.3f; //morning ray intensity
extern float eveningshaftex = 3.5f; //evening ray intensity
extern float goldendecay = 0.99; //ray length for golden hours ie. sunrises and sunsets
extern float noonshaftex = 1.0f; //afternoon ray intensity
extern float noondecay = 0.99; //afternoon ray length
extern float moonshaftex = 0.09f; //night ray intensity experimental
extern float moondecay = 0.88; //night ray length experimental

//for advancing tweaking shows the rays
extern float showraypass = 0;
extern float scale = 1;

//Mornings are more powerful already
//so I decreased it
//noon is for noon and moon is for nights
//you may get shafts for lightnings and moon maybe
//goldendecay is for sunrise and sunset rays lengths
//noondecay is noon rays length

//Morning start-end hours
extern float startsunrise = 4.0f;
extern float endsunrise = 10.0f;
//start early for sunrise

//Evening start-end hours
extern float startevening = 17.0f;
extern float endevening = 21.0f;
//end late for sunset

//ray density
extern float Density=0.7;
//actual ray visibility
extern float Weight=0.7;


//edit for light colorness, lower the value for desaturated colors...
extern float goldensaturate = 0.540f; //ray colors for golden hours
extern float noonsaturate = 0.010f; //ray colors for afternoon

//decreasing may fix blue lights


//Bright Pass values
extern float Luminance = 0.44;
extern float fMiddleGray = 0.99f;
//extern float fWhiteCutoff = 0.40f;
extern float fWhiteCutoff = 0.20f;
//This shader is image based
//this step(pass) determines how much of the sky will produce godrays
//different skies may need different brightpass values



//shader codes begin here

matrix m44view;
float3 f3EyeForward;
float4 f4SunDir;
float2 rcpres;
static const float3 eyef = f3EyeForward;
float4 f4Time;

static const float3 sd = -f4SunDir.xyz;

//float3 eyepos = float3(m44world[3][0],m44world[3][1],m44world[3][2]);

/*matrix mview;
matrix mproj;

static const float raspect = rcpres.x / rcpres.y;

static const float3 sundir = -normalize(sunpos);

static const float forward = dot(sundir,eyevec);

static const float2 texproj = 0.5f * float2( 1 , - rcpres.y / rcpres.x ) / tan(radians(fov * 0.5));
static const float2 invtexproj = 2 * float2( 1 , - rcpres.x / rcpres.y ) * tan(radians(fov * 0.5));

static const float d = dot(eyevec,sunpos);
static const float3 sunview_v = mul(sunpos/d, mview);
static const float2 sunview = (0.5).xx + sunview_v.xy * texproj;*/




float t = tan(radians(fov * 0.5));
static const float3 sp = float3(0,0,0) + (f4SunDir.xyz * 999999);
static const float2 texproj = 0.5*float2(1,-rcpres.y/rcpres.x)/t;
static const float d=dot(f3EyeForward,sp);
static const float3 sunview_v=mul(sp/d,m44view);
static const float2 sunview=float2(0.5,0.5)+sunview_v.xy*texproj;
static const float raspect = rcpres.x / rcpres.y;


float4x4 m44proj;
static const float nearZ = m44proj._43 / m44proj._33;
static const float farZ = (m44proj._33 * nearZ) / (m44proj._33 - 1.0f);



//float2 sunview = (0.3,0.3);

//the golden code
static const float forward = dot(sd,eyef);


//photoshop blend modes softlight
#define BlendSoftLightf(base, blend) ((blend < 0.5) ? (2.0 * base * blend + base * base * (1.0 - 2.0 * blend)) : (sqrt(base) * (2.0 * blend - 1.0) + 2.0 * base * (1.0 - blend)))

texture thisframe;
texture lastpass;
texture Depth;

sampler s0 = sampler_state {
texture=<thisframe>;

minfilter = linear;
magfilter = linear;
mipfilter = linear;

addressu = clamp;
addressv = clamp;
};

sampler s1 = sampler_state {
texture = <Depth>;

MINFILTER = linear;
MAGFILTER = linear;

AddressU = CLAMP;
AddressV = CLAMP;
};

sampler s2 = sampler_state {
texture = <lastpass>;

minfilter = linear;
magfilter = linear;
mipfilter = linear;

addressu = clamp;
addressv = clamp;
};

struct VSOUT
{
float4 vertPos : POSITION;
float2 UVCoord : TEXCOORD0;
};

struct VSIN
{
float4 vertPos : POSITION0;
float2 UVCoord : TEXCOORD0;
};

VSOUT FrameVS(VSIN IN)
{
VSOUT OUT = (VSOUT)0.0f; // initialize to zero, avoid complaints.
OUT.vertPos = IN.vertPos;
OUT.UVCoord = IN.UVCoord;
return OUT;
}

/*float4 SunPosDebug(float2 TexCoord : TEXCOORD0) : COLOR0
{
float4 black = float4(0.0, 0.0, 0.0, 1.0);
float4 sample=tex2D(s0,TexCoord);

float2 diff=TexCoord-sunview;
diff.x=diff.x*diff.x;
diff.y=diff.y*diff.y;

float dist=diff.x+diff.y;

if (dist>0.1)
dist=0;
else
dist=0.5;

return(lerp(sample,black,dist));
}*/


float4 depthskymask(VSOUT IN) : COLOR0
{

float saat = f4Time[1];
float dakika = f4Time[2];
float gece = 0;
if (saat > endevening - 1 && saat < 24 )
{
gece = 1;
}

if (saat > 0 && saat < startsunrise + 1)
{
gece = 1;
}


float4 black = float4(1.0, 0.0, 0.0, 0.0);
float3 sky = 0;
if(forward<0 && gece<0.6)
{
float posZ = tex2D(s1, IN.UVCoord).x;
float depthMask = (2.0f * nearZ) / (nearZ + farZ - posZ * (farZ - nearZ));
depthMask = step(0.99, depthMask);

sky = tex2D(s0, IN.UVCoord).rgb * depthMask;
sky *= fMiddleGray / ( Luminance + 0.001f );
sky *= ( 1.0f + ( sky / ( fWhiteCutoff * fWhiteCutoff ) ) );
sky -= 5.0f;
sky = max( sky, 0.0f );
sky /= ( 10.0f + sky );

}

return float4(sky,1.0f);
}


//lets pack data


struct GSIN
{
float4 vertPos : POSITION0;
float2 TexCoord : TEXCOORD0;
};

struct GSOUT
{
float4 vertPos : POSITION;
float2 TexCoord : TEXCOORD0;
float3 satdecexpo :TEXCOORD1;
};

GSOUT IFLOOKVS(GSIN IN)
{
GSOUT OUT = (GSOUT)0.0f; // initialize to zero, avoid complaints.
OUT.vertPos = IN.vertPos;
OUT.TexCoord = IN.TexCoord;


float Decay = 0.99;
float saat = f4Time[1];
float dakika = f4Time[2];
float Exposure = 0.001;
float saturatex = 0.550;
float gece = 0;

if (saat > endevening - 1 && saat < 24 )
{
gece = 1;
}

if (saat > 0 && saat < startsunrise + 1)
{
gece = 1;
}



if (saat > endevening - 1 && saat < 24 )
{

Exposure = moonshaftex;
Decay = moondecay;
}

if (saat > 0 && saat < startsunrise + 1)
{

Exposure = moonshaftex;
Decay = moondecay;
}

if (saat > startsunrise - 1 && saat < endsunrise-1 )
{
Exposure = morningshaftex;
Decay = goldendecay;
saturatex = goldensaturate;
}

if ( saat > (endsunrise - 2) && saat < endsunrise + 1 )
{
//float trans1 = clamp(dakika, 0,1);
Exposure = lerp (morningshaftex, noonshaftex, float(dakika / 59));
Decay = lerp (goldendecay, noondecay, float(dakika / 59));
saturatex = lerp (goldensaturate, noonsaturate, float(dakika / 59));
}

if ( saat > endsunrise -1 && saat < startevening )
{
Exposure = noonshaftex;
Decay = noondecay;
saturatex = noonsaturate;
}

if (saat > startevening - 1 && saat < (startevening + 1))
{
//float trans2 = clamp(dakika, 0,1);
Exposure = lerp (noonshaftex, eveningshaftex, float(dakika/59));
Decay = lerp (noondecay, goldendecay, float(dakika/59));
saturatex = lerp (noonsaturate, goldensaturate, float(dakika/59));
}

if (saat > startevening && saat < endevening )
{
Exposure = eveningshaftex;
Decay = goldendecay;
saturatex = goldensaturate;
}




OUT.satdecexpo = float3(saturatex, Decay, Exposure);

return OUT;
}





float4 lightshaft(GSOUT IN) : COLOR0
{

IN.TexCoord *= scale;

//this is a vector!!!
float2 DeltaTexCoord= (IN.TexCoord - sunview.xy);

//vertically, we need to adjust it according to Aspect Ratio
float screendist = length(DeltaTexCoord * float2(1,raspect));
DeltaTexCoord /=screendist;

//sun is not a point
float sunr = min(0.3,screendist);

//float2 DeltaTexCoord = (IN.TexCoord - ScreenLightPos.xy);


DeltaTexCoord = DeltaTexCoord * 0.5 * sunr * (1.0 / NUM_SAMPLES) * Density;

float3 Color = tex2D( s2, IN.TexCoord );

float IlluminationDecay = 1.0;

float2 samplepos = IN.TexCoord;

for( int i = 0; i < NUM_SAMPLES; ++i )
{

samplepos -= DeltaTexCoord;

float3 Sample = tex2D( s2, samplepos );

Sample *= IlluminationDecay * Weight;
Color += Sample;

IlluminationDecay *= IN.satdecexpo.y;
}


Color *=IN.satdecexpo.z * globalmul/float(NUM_SAMPLES);
Color = saturate(Color);

float grey_s = ((Color.r * 0.3) + (Color.g * 0.59)) + (Color.b * 0.11);
Color = lerp(grey_s, Color, IN.satdecexpo.x);

return float4( Color , 1.0 );
}


//blurt from phal's sunshaft shader
float4 blurT( float2 Tex : TEXCOORD0 ) : COLOR0
{

//clip(-forward);

float4 col = tex2D(s2, Tex );

float2 tangent = 1.0 * normalize((Tex-sunview)).yx*float2(rcpres.y,-rcpres.x );

col += 0.67*tex2D(s2, Tex + tangent );
col += 0.67*tex2D(s2, Tex - tangent );
col += 0.33*tex2D(s2, Tex + 2*tangent );
col += 0.33*tex2D(s2, Tex - 2*tangent );

if (forward > 0)
col = 0;

return float4(col.rgb*0.333f,1);

}

float4 SunCombine( float2 Tex : TEXCOORD0 ) : COLOR0
{
float4 graypass = {0.5, 0.5, 0.5, 1};
float4 orgi = tex2D(s0,Tex);
//float4 shaft = tex2D(s2,Tex/2);
float4 shaft = (tex2D(s2,Tex/scale));

if (showraypass<0.88){

//shaft = orgi + shaft;
shaft *= -forward;
shaft = graypass + shaft;

shaft = BlendSoftLightf(orgi,saturate(shaft));

}

return float4(shaft.rgb,1);
}


technique t0
<
int group = EFFECTGROUP_MAIN;
int fxclass = EFFECTCLASS_LIGHT;
int conditions = EFFECTCOND_ZBUFFER /*| EFFECTCOND_HASSUN*/;
>
{
/*
pass debug {
//VertexShader = compile vs_1_1 FrameVS();
PixelShader = compile ps_2_0 SunPosDebug();
}
*/

pass {
VertexShader = compile vs_1_1 FrameVS();
PixelShader = compile ps_2_0 depthskymask(); }

pass {
VertexShader = compile vs_3_0 IFLOOKVS();
Pixelshader = compile ps_3_0 lightshaft(); }

pass {
VertexShader = compile vs_1_1 FrameVS();
Pixelshader = compile ps_2_0 blurT(); }

pass {
VertexShader = compile vs_1_1 FrameVS();
Pixelshader = compile ps_2_0 SunCombine(); }

}

/*eof*/
 
zu dem Bloom: in der enbbloom.fx (am besten mit dem editor öffnen) sind ein paar Zeilen, die "bloom.w=0.7" heißen (irgendein wert) und diesen dann etwas niedriger setzten. Ist zwar etwas aufwendiger, aber besser als über die enbseries.ini
Ich habe den Wert aber 4 mal. In den Zeilen 185, 265, 324 und 360. Soll ich den überall ändern? Ist bei mir nämlich überall 1.0
 
Also ich n3o hatte mir die godrays aus der enbeffect geholt von GP auf seite 1 im gtaf forum

Gesendet von meinem LG-P920 mit der Hardwareluxx App
 
@nord: opezdl hat laut gtaf. auch welche in gta4 eingebaut die keine fps fressen, sieht dummerweise aus wie ein todestrahl der vom himmel kommt... :d
 
Ahh, danke für die Hilfe ^^ Und wie aktiviere ich DDOF bzw. DOF? Welche Werte müssen da wie angepasst werden? Sorry, falls ich nerve :d
 
in der enbeffect.fx steht doch ziemlich weit oben
//define DoF
//Define ddof (weiß es jetz net mehr auswendig^^)

vor einem davon die beiden striche entfernen und damit wird das aktviert.

Dann bei
DOFAmount
DDoFAmount
wird die stärke eingestellt.

ich denke das war alles^^ :d
 
in der enbeffect.fx steht doch ziemlich weit oben
//define DoF
//Define ddof (weiß es jetz net mehr auswendig^^)

vor einem davon die beiden striche entfernen und damit wird das aktviert.

Dann bei
DOFAmount
DDoFAmount
wird die stärke eingestellt.

ich denke das war alles^^ :d

Achso, wenn es so einfach ist ^^ Dachte, es wäre schwerer.. Danke ;)
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh