Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Sa Jul 19, 2025 21:05

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Bumpmaping
BeitragVerfasst: Di Nov 24, 2009 11:01 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
HI,

ich hab mich gestern mit Bumpmaping beschäftigt und irgendwie bekomm ich's nich so richtig auf die Reihe. Ich hab mich strikt ans Tutorial gehalten, aber ich bekomm nur nen schwarzen Bildschirm. Jmd ne Idee was ich falsch mach? hier mein Code dazu:
Code:
  1.   //variablen initialisieren
  2.   Tex := TglBitmap2D.Create();
  3.   Tex.LoadFromFile('test2.jpg');
  4.   Tex.GenTexture();
  5.  
  6.   Bump := TglBitmap2D.Create();
  7.   Bump.LoadFromFile('test2.jpg');
  8.   Bump.ToNormalMap();
  9.   Bump.GenTexture();
  10.  
  11.   L1 := TglLight.Create;
  12.   L1.SetAmbient(glVector4f(0.8, 0.8, 0.8, 1.0));
  13.   L1.SetDiffuse(glVector4f(0.8, 0.8, 0.8, 1.0));
  14.   L1.SetPosition(glVector4f(1.0, 1.0, 5.0, 1.0));
  15.  
  16.   M1 := TglMaterial.Create;
  17.   M1.SetAmbient(glVector4f(0.5, 0.5, 0.5, 1.0));
  18.   M1.SetDiffuse(glVector4f(1.0, 1.0, 1.0, 1.0));
  19.   M1.Shininess := 50;
  20.  
  21.   //rendern
  22.   L1.Activate(GL_LIGHT0);
  23.   M1.Activate;
  24.  
  25.   glTranslatef(0,0,-Cam[2]);
  26.   glRotatef(Cam[0], 1, 0, 0);
  27.   glRotatef(Cam[1], 0, 1, 0);
  28.  
  29.   glActiveTextureARB(GL_TEXTURE0_ARB); Bump.Bind();
  30.   glActiveTextureARB(GL_TEXTURE1_ARB); Tex.Bind();
  31.   glEnable(GL_REGISTER_COMBINERS_NV);
  32.   glCombinerParameteriNV(GL_NUM_GENERAL_COMBINERS_NV, 1);
  33.   glCombinerInputNV(GL_COMBINER0_NV, GL_RGB, GL_VARIABLE_A_NV,
  34.                     GL_TEXTURE1_ARB, GL_EXPAND_NORMAL_NV, GL_RGB);
  35.   glCombinerInputNV(GL_COMBINER0_NV, GL_RGB, GL_VARIABLE_B_NV,
  36.                     GL_PRIMARY_COLOR_NV, GL_EXPAND_NORMAL_NV, GL_RGB);
  37.   glCombinerOutputNV(GL_COMBINER0_NV, GL_RGB, GL_SPARE0_NV, GL_DISCARD_NV,
  38.                      GL_DISCARD_NV, GL_NONE, GL_NONE, true, false, false);//hier ist mir aufgefallen, das der Compiler meckert wenn ich wie im Tutorial GL_TRUE/GL_FALSE einsetz...
  39.  
  40.   glFinalCombinerInputNV(GL_VARIABLE_A_NV, GL_TEXTURE0_ARB, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
  41.   glFinalCombinerInputNV(GL_VARIABLE_B_NV, GL_TEXTURE1_ARB, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
  42.   glFinalCombinerInputNV(GL_VARIABLE_C_NV, GL_ZERO, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
  43.   glFinalCombinerInputNV(GL_VARIABLE_D_NV, GL_ZERO, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
  44.   glFinalCombinerInputNV(GL_VARIABLE_E_NV, GL_ZERO, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
  45.   glFinalCombinerInputNV(GL_VARIABLE_F_NV, GL_ZERO, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
  46.  
  47.   RenderCube;


MfG & Thx Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bumpmaping
BeitragVerfasst: Di Nov 24, 2009 16:30 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich habs auch nach dem Tutorial gemacht ... Leider mit geringen / keinem Erfolg. Außerdem sind die Funktionen (zumindest theoretisch) auf nVidia beschränkt. Wenn also jemand eine Lösung dazu weiß... Ich bin damals zu Shadern übergelaufen.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bumpmaping
BeitragVerfasst: Di Nov 24, 2009 18:03 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Also Bumpmapping schreit förmlich nach Shadern. Dürfte wahrscheinlich wesentlich einfacher sein als irgendwelche komischen Extensions zu benutzen.

Vorgehen:
  1. fange mit einem einfachen Per-Pixel-Light-Shader an, siehe Shadersammlung
  2. gebe deinem Mesh zusätzlich zur Normale auch noch eine Tangente mit auf den Weg
  3. füge die Normalmap als Textur im Fragmentshader hinzu
  4. konstruiere im Fragmentshader aus Normale, Tangente und cross(Normale, Tangente) eine Matrix (alle drei Vektoren müssen normalisiert werden)
  5. lade die Normale aus der Normalmap...also Farbwert (RGB) lesen und in Normale (XYZ) umwandeln, meist -0.5 und dann normalisieren.
  6. transformiere die Normale aus der Normalmap mit der konstruierten Matrix
  7. verwende den resultierenden Vektor als Normale bei der Lichtberechnung

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bumpmaping
BeitragVerfasst: Di Nov 24, 2009 19:08 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Uff,

da muss ich mich erstma in die Shader einarbeiten... naja wollt ich früher oder später sowieso machen^^
Spricht was dagegen das ich gleich den BumpMapShader nehm, bzw was hat deine Methode für Vorteile?

MfG Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bumpmaping
BeitragVerfasst: Di Nov 24, 2009 20:40 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Der von dir verlinkte Shader funktioniert, wenn ich das auf den ersten Blick richtig sehe, nur auf einer ebenen Fläche. Die Normalen der Normalmap müssen transformiert werden, das wird in den meisten Samples vergessen...sobald man dann echte Objekte (schon bei einer Kugel würde es Probleme geben) mit einer Bumpmap versehen möchte steht man auf den Schlauch.

Zudem handelt es sich nicht um einen GLSL-Shader, sondern um einen Cg-Shader, würde also eh nur wenig helfen.

Mir fällt da übrigens ein das natürlich auch die Vertex-Normale und -Tangente noch mit gl_NormalMatrix transformiert werden müssen bevor man die Matrix baut.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bumpmaping
BeitragVerfasst: Di Nov 24, 2009 22:17 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
Das Tutorial ist wirklich nicht mehr zeitgemäß. Die Lichtrichtung muss für jeden Vertex in seiner Farbe gespeichert werden. Weiß ich jetzt nicht ob du daran gedacht hast, kann man in dem Code ja nicht sehen.

Ansonsten kann ich den anderen nur zustimmen. GLSL ist um einiges intuitiver und ich hab' es bisher in keinster Weise bereut, es gelernt zu haben.
Was aber ein bischen nervig werden kann, ist die Berechnung der Tangente, die in die Richtung zeigen soll wo bei der Textur oben (oder unten?) ist. Einen ganz wasserdichten Weg hab' ich da auch noch nicht gefunden.
In dem Zusammenhang ist es vielleicht auch gut, sich anzuschauen wie das mit den Attributen und VBOs funktioniert, was mich damals auch einige Zeit gekostet hat.
Mit anderen Worten: Es kann unter Umständen lange dauern bis das alles dann so funktioniert wie es soll, ABER es lohnt sich.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bumpmaping
BeitragVerfasst: Mi Nov 25, 2009 09:30 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Es darf gern auch ein funktionierender GLSL Bumpmap Shader in die Übersicht gestellt werden. 8)

Wir sind da gar nicht so.... :mrgreen:

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bumpmaping
BeitragVerfasst: Mi Nov 25, 2009 16:43 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jan 04, 2008 21:29
Beiträge: 419
Wohnort: Lübeck
Für nen Bumpmapping-shader in glsl hab ich da mal ein Beispiel, das bei mir ganz gut funktioniert hat, ALLERDINGS hab ich bei mir für die Tangente das Tangent Attribute benutzt, wofür ich kritisiert worden bin, weil es hieß, dass es das nicht geben würde und auch nicht funktionieren kann. Bei mir jedenfalls zeigte es korrekte Resultate. Aus diesem Grund habe ich das Attribute provisorisch in ein Uniform umgewandelt, so, dass man die Tangente im Vorwege selbst errechnen muss.
Des Weiteren berechne im Fragmentshader die Normale, in dem ich die Y-Komponente der Bumpmap umdrehe. Das hat was damit zu tun, dass meine Bumpmap früher in die falsche Richtung zeigte. Je nachdem, wie die Bumpmap erstellt wird muss das geändert werden.
Ich werde den Shader selbst nicht in die Shadersparte stellen, da ich mir bei dem Stück nicht sicher bin, ob es tatsächlich allgemeingültig funktioniert, nur weil es bei mir funktionierte. Den Code der Anwendung in der das lief habe ich nicht mehr zu Verfügung, jedoch kann ich auf Wunsch eine Win32.exe bereitstellen, allerdings ohne passende Texturen, da ich selbst welche zu eigenen Zwecken irgendwo bei Google genommen habe ohne auf irgendwelche Rechte zu achten.

Hier der Vertexshader:
Code:
  1.  
  2. varying vec3 Pos;
  3. varying vec3 lightvec;
  4. varying vec3 T,B,N;
  5.  
  6. uniform vec3 Tangent;
  7.  
  8. void main(void)
  9. {
  10.   Pos          =  vec3(gl_ModelViewMatrix * gl_Vertex);
  11.   lightvec   = normalize(gl_LightSource[0].position.xyz - Pos);
  12.  
  13.   N = normalize(gl_NormalMatrix * gl_Normal);
  14.   T = normalize(gl_NormalMatrix  * Tangent);
  15.   B = cross (T,N);
  16.  
  17.   gl_Position     = gl_ModelViewProjectionMatrix * gl_Vertex;
  18.   gl_TexCoord[0]  = gl_MultiTexCoord0;
  19. }
  20.  


Und passend dazu der Fragmentshader:
Code:
  1.  
  2. uniform sampler2D colormap;
  3. uniform sampler2D bumpmap;
  4.  
  5. varying vec3 Pos;
  6. varying vec3 lightvec;
  7. varying vec3 T,B,N;
  8.  
  9. void main(void)
  10. {
  11.     vec3 normal     = normalize((texture2D(colormap,vec2(gl_TexCoord[0])).xyz) -0.5);
  12.     normal          = T * normal.x + B * (normal.y*-1.0) + N * normal.z;
  13.     vec3 basecolor      = texture2D(colormap,vec2(gl_TexCoord[0])).xyz;
  14.  
  15.     float lambertTerm       = dot(normal,lightvec);
  16.     vec4 finalcolor     = gl_LightSource[0].ambient * vec4(basecolor,1.0) * (1.0-lambertTerm);
  17.  
  18.     if (lambertTerm >= 0.0)
  19.     {
  20.         finalcolor += gl_LightSource[0].diffuse * vec4(basecolor,1.0) * lambertTerm;       
  21.  
  22.         vec3 E = normalize(-Pos);
  23.         vec3 R = reflect(-lightvec, normal);
  24.         float specular = pow( max( dot( R, E), 0.0), 16.0);
  25.         finalcolor += gl_LightSource[0].diffuse * texture2D(bumpmap,vec2(gl_TexCoord[0])).a * specular;
  26.     }
  27.  
  28.     gl_FragColor          = vec4(finalcolor.xyz,1.0);
  29. }
  30.  


An der Stelle im Fragmentshader, an der ich das Specular berechne, benutze ich derzeit eine Konstante, aber die kann variabel gestaltet werden, um einen härteren oder weicheren Glanz zu erzeugen. Die Sichtbarkeit des Specular ist der Alphawert der Colormap (könnte man auch in den Alphawert der Bumpmap packen).

Alles in allem wünsche ich viel Spaß damit.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
Klar Soweit?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bumpmaping
BeitragVerfasst: Mi Nov 25, 2009 16:58 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
ALLERDINGS hab ich bei mir für die Tangente das Tangent Attribute benutzt, wofür ich kritisiert worden bin, weil es hieß, dass es das nicht geben würde und auch nicht funktionieren kann.

Die Tangente muss genau wie die Normale pro Vertex geliefert werden. Das mit dem Uniform ist daher etwas sinnlos. Im Standbild wirst du da zwar vermutlich keine Probleme feststelle, aber wenn du die Objekte in einer Animation rotierst möglicherweise schon. Vermutlich hattest du damals so was hier verwendet:
Code:
  1. attribute vec3 aTangent;

Selbst definierte Attribute gibt es noch nicht solange, vermutlich wurdest du deshalb damals kritisiert. Müsste aber Teil von OpenGL 2.1 sein und sollte somit mittlerweile überall verfügbar sein. In OpenGL 3.x und OpenGL ES 2.0 bzw. WebGL gibt es gar nichts anderes mehr.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bumpmaping
BeitragVerfasst: Mi Nov 25, 2009 17:04 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jan 04, 2008 21:29
Beiträge: 419
Wohnort: Lübeck
@Coolcat: Stimmt, das mit der Tangente pro Vertex macht Sinn! Kann sein, dass ich das deshalb nicht gemerkt habe, weil ich wie im Beispiel nur Klötze damit gerendert habe und da eine Tangente pro Face reicht. Man müsste also die Tangente im Vertexshader anhand der Vertexnormale und Texturkoordinaten errechnen. Ich glaub ich hab da auch noch nen Code schnippsel zu. Da muss ich dann aber erstmal ne ganze Weile suchen. Also wenn jemand sowas fix parat hat, dann kann man das oben im Code sicherlich schnell einbauen.

_________________
Klar Soweit?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bumpmaping
BeitragVerfasst: Mi Nov 25, 2009 20:24 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
Sellmann hat geschrieben:
Man müsste also die Tangente im Vertexshader anhand der Vertexnormale und Texturkoordinaten errechnen.


Direkt im Shader wird wohl nicht gehen, weil man auch die Texturkoordinaten von den angrenzenden Vertices braucht und auf die kann man im Vertexshader meines Wissens nicht zugreifen. Möglicherweise geht das mit Geometry-Shadern, ist aber auch ein bischen sinnlos, die immer wieder neu zu berechnen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bumpmaping
BeitragVerfasst: Di Dez 01, 2009 21:46 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jan 04, 2008 21:29
Beiträge: 419
Wohnort: Lübeck
bei nicht-animierten Modellen macht das natürlich kein Sinn, dann sollte man die Tangenten tatsächlich im vorraus berechnen und fix mit übergeben. Ist das Modell allerdings in ständiger Animation, so ändern sich die Normalen höchstwahrscheinlich, da sich das Mesh ja verformen könnte und dann muss man die Normalen eh neu berechnen und kann dann auch die Tangenten im Geometry Shader gleich mit berechnen. Ich glaube das ist besser, als wenn man das auf der CPU macht.

Bis ich das ausprobieren kann dauerts wohl (leider) noch ne Weile...

Nebenbei: Falls jemand nen Ansatz hat, um aus vorhandener Normal, Texturkoordinaten und Adjazenzvertieces die Tangenten zu berechnen, ist herzlich dazu eingeladen den Schritt zu ergänzen, denn ohne ist ein Bump-Mapping-Shader nutzlos (bzw. sehr eingeschränkt nutzbar).

_________________
Klar Soweit?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bumpmaping
BeitragVerfasst: Mi Dez 02, 2009 00:16 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
Nebenbei: Falls jemand nen Ansatz hat, um aus vorhandener Normal, Texturkoordinaten und Adjazenzvertieces die Tangenten zu berechnen, ist herzlich dazu eingeladen den Schritt zu ergänzen, denn ohne ist ein Bump-Mapping-Shader nutzlos (bzw. sehr eingeschränkt nutzbar).

Wie wäre es die Ableitung der Texturkoordinaten zu verwenden? Im Fragmentshader gibt es die Funktionen dFdx() und dFdy() um die Ableitung zu berechnen. Dazu wird Information von benachbarten Pixeln verwendet. Damit hätte man den Gradienten (x,y) der Texturkoorinaten der Schlüsse auf die Ausrichtung der Textur zulässt. Durch das Kreuzprodukt von Normale und Gradient (x,y,0) könnte man damit eine Tangente gewinnen. Diese Tangente muss man dann glaub ich noch um 45 Grad entlang der Normale drehen, damit das richtig ist. Keine Ahnung ob das funktioniert, aber könnte ja mal jemand implementieren ;) Hätte den Vorteil das man keinen Geometryshader braucht.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bumpmaping
BeitragVerfasst: Mi Dez 16, 2009 11:26 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,

ich hab mich gestern erfolgreich in glSlang eingearbeitet. Und jetz hab ich 2 Fragen:
1. Wo hin genau zeigt jetzt die Tangente? Wenn ich das richtig verstanden habe ist das die Normale des Triangles, oder?
2. Wie übergeb ich die jetzt am bessten? Über ne Uniform und dann jedesmal bevor ich glVertex aufruf, oder geht das doch anders?

€: Hab grad was dazu gefunden: wenn die zeichnung (siehe anhang) so stimmt, dann müsste man das VectorProdukt von Gradient und Normale um 90° mit der Normalen als Achse drehen, um auf die tangente zu kommen, is das so richtisch?

MfG Bergmann.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bumpmaping
BeitragVerfasst: Mi Dez 16, 2009 11:56 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jan 04, 2008 21:29
Beiträge: 419
Wohnort: Lübeck
Normal, Tangent und Bitangente beschreiben das Koordinatensystem der Textur auf der Fläche. Wenn ich mich nicht irre, dann ist die Tangente die räumlich betrachtete X-Achse der Textur auf der Fläche und die Bitangente die räumliche Y-Achse der Textur auf Fläche. Die Normale ist dem entsprechend die räumliche Z-Achse der Fläche UND Textur, die man glücklicherweiße ganz einfach aus dem Kreuzprodukt der FlächenKanten bekommt. Die Normale steht also Senkrecht auf der Fläche (im übertragenden Sinne, denn je nach umliegenden Faces kann die endgültige Normale auch ein Mittelwert der umliegenden Face-Normalen sein). Bei den 3 Vektoren darf man natürlich das normalisieren nicht vergessen, sonst kommt da murks rauß.

Die Normalen kann man im immediate-mode vor glVertex3f mit dem Befehl glNormal3f(); übergeben. Bei VBOs braucht man dafür ein Format, dass Normalen berücksichtigt, dass ist aber in der Regel kein Problem, da es mehrere passende Formate dafür gibt.

Ob das mit dem Gradient funktioniert weiß ich nicht genau, ich arbeite immer noch an einem Ansatz um Tangente und Bitangente aus den Texturkoordinaten und Vertex-Koordinaten zu errechnen, da diese ausschlaggebend dafür sind.

_________________
Klar Soweit?


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 14 Queries | GZIP : On ]