Doom 3 @Progger:

RTL-Kevin

Cacodemon
Hat jemand ne Ahnung wie man diesen hübschen Verzerreffekt, der kommt wenn man geschlagen oder beschossen wird, programmieren kann?
Ich könnte es mir so vorstellen:
Man rendert die Szene ganz normal, dann nimmt man das entstandene Bild und zeigt es mehrmals an, jeweils leicht verdreht und verschoben. Wenn dann noch jedes dieser Bilder transparent ist dann könnte das so klappen.

Ist aba nur geraten, weiß jemand wie johnny c. das wirklich macht?
 
E

[ENTEN]Clean

Guest
Also......vieleicht suchst du mal nach Rat bei Q3 CPMA Sites, da dieser Ruckeleffekt bereits in diesem Quake Mod vorkommt und von Moddern gemacht ist ;)
Ca, der Saubermann [ENTEN]Clean :wink:
 

Onan

Arch-Vile
Hier eine erste Spur. Stammt aus der decal.mtr Datei im materials-verzeichnis.
//=====================================================================
//
// player damage tunnel vision effect
//
// parm3 will range FROM 0.0 to 1.0 based on health, 1.0 is full health
// parm0 will be the time that damage was last taken, allowing an
// accentuation and fade out
//=====================================================================


clampTable tunnelVisionSolidAlpha { 1, 0 }
// when health is near 0, the density will be greater


textures/decals/tunnel
{
noshadows
translucent

qer_editorimage textures/decals/tunnel.tga

{
alpha tunnelVisionSolidAlpha[ parm3 ] - (time-parm0)*0.25
blend blend
centerscale 0.65+0.05*sinTable[time], 0.65+0.05*sinTable[time]
rotate time * 0.07
map textures/decals/tunnel.tga
clamp
}

{
alpha tunnelVisionSolidAlpha[ parm3 ] - (time-parm0)*0.25
blend blend
centerscale 0.65+0.05*sinTable[time], 0.65+0.05*sinTable[time]
rotate time * -0.06
map textures/decals/tunnel.tga
clamp
}

}
 

RTL-Kevin

Cacodemon
Hmmm daraus kann ich nix lesen, das ist das (Carmack)Script, oder? Oder Konsolenbefehle? Auf jeden Fall total komische Syntax.
 
Das scheint ein ganz "normaler" Shader zu sein, wenn ich das jetzt richtig erkenne.

Mit Shader kannst Du mehrere Texturschichten übereinanderlegen und jede mit einem Effekt (z.B. leuchten, Wellen, etc.) versehen. Dadurch kann man dann auch den von dir beschriebenen Effekt erreichen.
 

RTL-Kevin

Cacodemon
Aha ist ja interessant. Und was für eine Sprache ist das? Ein Skript vom Carmack oder irgendeine HighLevel Shadersprache? Tut mir leid dass ich so blöd frag aber ich hab noch nix mit Shadern geprogrammiert :gaga:
 

Onan

Arch-Vile
Also es ist ein Script von id, und ich nehme an es ist ihre eigene High-level shader Sprache (Befehle wie qer_editorimage zum Definieren der textur im Editor...), aber wie genau die Schnittstelle zu OpenGl funktioniert, weiß ich leider noch nicht. Wird Zeit, dass ich endlich mal das buch lese, was Mastercoder mir vorgeschlagen hat.
 
M

Major Fleischer

Guest
Apropos MasterCoder. Was ist mit ihm, konntest Du ihn mal überreden hier vorbei zu schauen?
 

Onan

Arch-Vile
Also folgendes: es ist eine eigen HLSL von id, und OpenGL wird dabei gar nicht benutzt. In der engine ist ein Interpreter, der diese Befehle in den Assembler-code der GPU übersetzt.
 
Jo, da bin ich schon :)

Also, es ist so!
Für solche Effekte wird meistens der Accumulation Buffer verwendet:

1. Du schreibst das originale Bild rein
2. Du schreibst es leicht rotiert und bewegt rein
3. Du schreibst noch ein paar Jitter-Matrizen rein... die sorgen für gleichmäßige unschärfe, und damit man die verschiebung des bildes nicht sieht
4. du kopierst den accumulation buffer in den darzustellenden color buffer

bei jeder write-aktion kannst du einstellen, zu wieviel prozent der jeweilige farbwert überschrieben wird.... eben um die transparenz zu erzeugen

Interessant an der in Doom verwendeten Technik (die ascheinend die register combiner der textureinheiten benutzen, als accumulation buffer), die Zeit einzubringen, was natürlich eine "animierte" Unschärfe gibt.
Wofür diese zusätzliche Textur da ist, weiß ich nicht
 
M

Major Fleischer

Guest
Hey, das ging ja schneller als gedacht :D Willkommen :wink:
 
Hehe, jo, guten tach :wink:
bin grad noch ein bissel mit meinem computer im kampf aber werde bald auch hier regelmäßig mal reingucken :daumen:

coole smileys übrigens :) :lol:
 
E

[ENTEN]Clean

Guest
Hey hey, scheinst ja mal jemand zu sein, der direkt mit der Sprache rausrückt ! :daumen:

298.gif


Ca, der Saubermann [ENTEN]Clean :niko:
 
Top