Jump to content
Unity Insider Forum

Recommended Posts

Hi!

Mal wieder ne Frage zum Lightmapping. Irgendwie versteh ich net, warum mir Unity mir hier immer das Leben schwer macht. -,-

Ich habe eine Scene mit 500 x 500, mit folgenden Einstellungen:

Vor einer Weile hatte ich endlich mal halbwegs vernümpftige Werte gefunden, damit die Scene gut ausgeleuchtet ist, ich hatte hier die Scene gebacken, musste aber Anfang der Woche feststellen, dass die Lightmapping Datei bei der kleinen Scene schon fast 1 GB groß war. Drum mal den "neuen" Progressive CPU Render Mode ausprobiert. Nach satten 5h für die kleine Scene hab ich nun das Ergebnis. Furchtbar. Überall schwarz, kaputte Schatten und nun 3.3 GB Lichtdaten. Weis einer, was hier für Werte passen könnten oder was hier falsch ist?

Zweites Problem, mache ich eine RealTime Berechnung, steht zwar unten da, dass er irgendetwas berechnet, nach ca. 1 mini. ist er aber fertig und es ist keine Datei für die Lichtdaten da.

EDIT: Na jetzt versteh ich gar nichs mehr. Unter Realtime Lightning steht nun: Realtime Global Illumination (Deprecated)

Jetzt lese ich nach - wird nicht mehr unterstützt? Gibts jetzt keine Realtime Berechnung mehr? Kann mir das mal einer erklären?^^

Light und Reflection hab ich auf Real Time. Ich dachte immer dies muss man auf Realtime stellen, dazu im Lightning auf Realtime Global Illumination. *verwirrt ist*

 

Grüße Kojote

 

Link to post
Share on other sites

Ich hab selber Lightmapping nie 100%-ig gemeistert, aber vielleicht hilft dir schon eine kleine Begriffserklärung:

  • Baked = Etwas wird (idR im Editor) gebaut, das dann zur Laufzeit Ressourcen spart.
  • Static Lightmapping = Es werden Texturen generiert, die zur Laufzeit auf Objekte draufmultipliziert werden. Das ist günstiger, als echte Lichtberechnungen. Dafür kann das Licht sich aber nicht ändern, weil dafür die Texturen komplett neu gemacht werden müssen, was inakzeptabel lange dauert.
  • Realtime Lighting = Die Engine berechnet anhand der Renderer und Lights in der Szene, wie sehr Dinge angestrahlt werden. Schatten gibt's auch. Kostet schon ein bisschen was, wird halt auch jeden Frame immer neu gemacht. Dafür kann sich halt alles jederzeit ändern.
  • Global Illumination = Licht kann von Oberflächen abprallen. Die Cornell-Box zeigt das immer gut: Weißes Licht + rote Wand = rotes Licht, das von dort aus weiter fliegt und wieder andere Dinge beleuchten kann. Statische Lightmaps können sowas gut beinhalten, deshalb brauchen die so lange zum backen.
  • Realtime Global Illumination = Global Illumination, aber halt nicht statisch, sondern mit der Fähigkeit, dass das Licht oder die beleuchtete Geometrie sich ändern. Grafikkarten, die "echte" RTGI schaffen, sind die Raytracing-KIarten, die es nicht ohne Grund erst seit recht kurzer Zeit gibt. Mit Raytracing haste das einfach "gratis". Ohne Raytracing-fähige Karten kannst du die Framerate bei Realtime-Raytracing vergessen... es sei denn, du trickst. Und genau diese Trickserei meint Unity mit "Realtime Global Illumination", was es halt schon länger gibt als Raytracing-Karten. Was Unity hier macht ist, einen Lightmapper anzuschmeißen, der wesentlich mehr Daten für jede Oberfläche generiert als nur "welche Farbe". Stattdessen baut das Ding mit finsterer Magie ein Netzwerk aus Oberflächen-"Texeln" auf, die sich gegenseitig soundso beleuchten könnten. Und wenn du da mit einem dynamischen Light durchgehst, dann wird einigermaßen schnell berechnet, wie sich Licht ausbreitet, indem das Licht ein Texel anstrahlt, in die Lightmap-Daten geguckt wird welche Texel vom abprallenden Licht betroffen würden, und dann diese Texel auch andere Beleuchtung kriegen.
    Warum das deprecated ist, weiß ich nicht genau, aber ich gehe stark davon aus, dass das ein Mix aus zwei Faktoren ist: 1. Die Dinger waren für Unity schon immer ein Krampf zu maintainen. Enlighten, und ich glaube der Nachfolger auch, wurden beide von externen Firmen entwickelt, wenn ich mich recht erinnere. Es gab immer Probleme und Stress mit den Dingern. Nicht unwahrscheinlich, dass du genau diese Art von Stress gerade spürst. 2. Raytracing ist die Zukunft! Vielleicht ist Unity einfach vorausschauend und macht sich die Mühe nicht, wenn in 5 Jahren sowieso x% der Leute eine Raytracing-Karte haben.

Zusammenfassend musst du einmal schauen, was du haben willst. Brauchst du RTGI? Denn da bist du direkt an der Bleeding Edge des Grafik-Universums mit. Da sind Kopfschmerzen vorprogrammiert, und du wirst eine Menge recherchieren und arbeiten müssen, bis das sitzt. Wenn du auch Realtime Lighting (also ohne Lightmaps)oder  Static Lightmaps (also ohne groß dynamisches Licht) benutzen kannst, stelle den Lightmapper entsprechend ein.

Du kannst auch einen Mix bauen: Statische Objekte haben schöne Lightmaps, dynamische Objekte werden von dynamischen Lichtern angestrahlt. Mit einem Händchen für Light Probes kannst du dynamischen Objekten ebenfalls schöne Beleuchtung geben. Das einzige, wofür man RTGI braucht wäre die Kombination aus dynamischem Licht (also bewegte Lichtquellen, an/aus oder Farbänderungen) und hübscher Global Illumination mit abprallendem Licht.

  • Thanks 1
Link to post
Share on other sites

Erst mal Danke für die Antwort, jetzt versteh ich erst mal ein paar Begriffe besser. Ich dachte halt immer das RTGI die normale Realtime Beleuchtung ist.

Ich habe zumindest jetzt die Backzeit von 13 h auf 2 h bekommen, immerhin etwas. Wobei ich sage, wenn sie in den Unity Tutotials ihre Räume rendern und da für einen ziemlich vollen Innenraum 20 min. benötigen, sind 2h für ein 500x500 Terrain noch vertretbar. Vermute mal es liegt daran das ich RTGI deaktivier habe und auch in den Lightmapping Settings Prioritize View und Multiple Importance Samping deaktiviert habe.

Habe bisher nur eine Lichtquelle, die Sonne. Diese habe ich auf Baked gestellt, meine Mapobjekte sind alle auf Static geflaggt. Sonden habe ich auch gleichmässig verteilt. Bei den Objekten habe ich im Lightning Cast Shadow On, Recieve Shadow On, Constribute Global Illumination On und Receive Global Ilumination auf Lightmaps gestellt.

Im Grund wäre mir eine simple Real Time Berechnung das liebste. Es ist ein Low Poly Spiel, von daher brauche ich keine extrem aufwendigen Licht- und Schatten-Spiele. Alternativ halt gebacken.

So, in der Zwischenzeit ist er fertig geworden, das Ergebnis ist ein Trauerspiel:

as657vdb.jpg

Wie man sieht, extreme Fraktale auf den Texturen und vieles ist einfach dunkel geblieben. 🤨

EDIT:

Was ich gerade erst bemerke, die UV Charts sehen extrem merkwürdig aus, diese waren immer eine Farbe, bei großen Objekten mal zwei oder drei Farben, jetzt ein Farbklantsch mit Mustern:

rg7p8xqs.jpg

 

 

Link to post
Share on other sites

Also in den alten Einstellungen hatte ich das nicht gebraucht und ist jetzt auch nicht an. 😕 Kommen daher die Fraktale? Blöd gefragt muss das aktiviert werden?

Hab mirs gerade mal angeschaut, ich kanns dann gleich mal gerne mit dem Häcken probieren, darunter sind noch weiter Einstellungen, Lightmap UVs settings. Die Standardeinstellungen so belassen?

 

Link to post
Share on other sites

Ja, ist eine gute Einstellung, wenn du die Lightmap UVs nicht manuell gebaut hast. Damit wird einfach ein weiteres Set UV-Koordinaten gebaut, die schön gleichmäßig über das gesamte Modell verteilt sind. Standardeinstellungen sollten erstmal okay sein.

Link to post
Share on other sites

Daran lags leider auch nicht. :(

Hat wer noch eine Idee? Ich vermute sehr stark das es mit den UV-Charts zu tun hat, diese ware in der 2018er Version in einer farbe einheitlich auf einem Stein, jetzt sind auf einem Stein dutzende Farben. Wurde erst ein Stein gerendert, wird nun jede kleine Fläche einzeln gerendert. Das treibt natürlich die Berechnungszeit und die Light-Data größe ins extreme. Blos wo stelle ich da was ein?

EDIT: In den Objekten kann man ja jedem einzelnen Objekt unter Lightmapping die Lightmap Parameter einstellen. Ich habe hier jetzt Scene Default Parameter drin.

Resolution: 1

Cluster Resolution: 0.5

Irradiance Budget: 128

Irradiance Quality: 8192

Modelling Tolerance 0.01

Wäre es bei Realtime GI und bei Baked GI:

Blur Radius: 2

Anti-Alising Samples: 8

Direct Light Quality: 64

Bei Baked AO:

Quality: 256

Anti-Alising Samples: 16

Mir sagte man mal, dass man hier normal nix einstellen müsste und die Voreinstellung zu 99% "schon so passen". Muss ich hier etwas ändern?

Link to post
Share on other sites

Da das nicht nur lange dauert, sondern auch Schatten sind, wo keine hingehören und deine Steine alle entweder komplett hell oder komplett dunkel sind, sind kaputte Lightmap UVs in der Tat sehr wahrscheinlich. Die entscheidende Ansicht in der Scene View dafür ist "Baked Global Illumination/UV Charts". Da solltest du überall schön gleich große Quadrate auf den Objekten sehen.

grafik.png

Jedes Quadrat repräsentiert ein Texel, also ein Pixel auf der Lightmap. Je mehr du davon in der Szene hast, desto länger dauert das Builden. Es ist nicht unüblich, nur sehr wenige Texel zu haben, während man arbeitet, um einen Einfruck zu gewinnen, und dann über die Nacht oder eine Woche hinweg eine Serverfarm laufen zu lassen, um für den Release ne richtig geile Lightmap zu produzieren. Da kann man dann auch schonmal echt kleine Werte nehmen:

grafik.png

Und dann sieht das auch gleich eher so aus:

grafik.png

Wenn du jedenfalls kein schönes Schachbrettmuster siehst, stimmt etwas mit deinen Lightmap UVs nicht.

Link to post
Share on other sites

Die Ansicht kenne ich und genau so sah es bei mir in Version 2018 aus! Große Flächen die einheitliche Farbe haben. Wie es in 2019 aussieht, hatte ich ja schon oben gezeigt. Dutzende Farben auf dem kleinsten Stein und eigenartige Muster.

Ich hab mir jetzt mal die Importeinstellungen angesehen und da mal etwas herum probiert. Jetzt habe ich zwar nicht mehr solche merkwürdigen Muster, sondern nur noch 100erte Dreiecke. Geht schon in die richtige Richtung, trotzdem zu viel.

fkfdiyht.jpg

nzz5bpst.jpg

Den Wert Lightmap Resolution, der kommt aus der Lightning.

Öhmmmm... Also Lightmap Resolution scheint gerade echt nen Knackpunkt zu sein. Ich hab den Wert jetzt mal wie du sagtest auf 0.1 gestellt und er war in Sekunden mit der Berechnung fertig. Gut er hat nur 1 Lightmap mit 64 kb größe erstellt. xD

Die Steine haben jetzt alle eine einzelne Farbe. So ein kleines Raster wie bei dir ist nicht da, das selbe Raster wie bei dir bekomme ich mit dem Wert 5, jedoch hab ich dann wieder viele Farben.

Wert 5:

hqugzwcq.jpg

 

Wert 1:

7jfgwlfg.jpg

 

Wert 0.1:


zrjcjil6.jpg

 

EDIT:

OK, ich lass mal jetzt nicht nur die Steine sondern die ganze Scene mit allen Details rendern. LOL, hat 50 Sekunden gedauert! O_o

Und das lag nur an dem Lightmap Resolution Wert, der jetzt bei mir auf 1 ist und vorher bei 40? 🤔

Die Scene sieht ansonsten vom Licht her gut aus. Nur an seltenen Stellen blutet der Schatten etwas aus:

dun3ra76.jpg

Jetzt hab ich eine Lightmap 1024 mit 16 MB. 😵

 

Link to post
Share on other sites

Die sehen so aus:

 

nzz5bpst.jpg

Zusätzlich noch ma ne Frage, wie verhällt sich das nun mit Realtime und Baked Light.

Directional Light kann Realtime oder Baked sein, genau so die Reflection Probe.

Ich habe nun in Lightning folgendes:

nkgzsymh.jpg

Wird das Realtime und Baked nun nur über die Einstellungen in den Lichtern und der Reflection Probe eingestellt?

Und wann benötige ich eigentlich die Lichtsonden, nur beim Baked Light?

Link to post
Share on other sites
vor 37 Minuten schrieb Kojote:

Directional Light kann Realtime oder Baked sein

Realtime = Wird in Lightmaps ignoriert, beleuchtet alle Objekte (statisch oder nicht) in Echtzeit. Schatten ggf. auch in Echtzeit. Kostet halt Performance, dafür kannst du alles mit dem Licht machen.

Baked = macht zur Laufzeit exakt gar nichts, wird dafür aber in die Berechnung der Lightmaps einbezogen.

Mixed = Wird für statische Objekte in die Lightmap-Berechnung einbezogen, beleuchtet obendrauf noch dynamische Objekte in Echtzeit.

vor 40 Minuten schrieb Kojote:

Und wann benötige ich eigentlich die Lichtsonden, nur beim Baked Light?

Light Probes sind statische Objekte. Jede Probe verhält sich wie eine weiße Kugel, die dann auch entsprechend angestrahlt wird. Das einfallende Licht auf einer Light Probe ist Teil der Lightmap und wird zusammen mit dem Rest der Lightmap einmalig generiert. Da du bei der Lightmap GI drinhaben kannst, ist das auch die schöne Art von Beleuchtung; eine Probe neben einer roten Wand wird zur Seite der Wand hin auch rötlich erscheinen.

Wenn jetzt ein dynamisches Objekt durch eine Light Probe Group durchläuft, schaut Unity, zwischen Welchen Probes sich das Objekt befindet. Eine Menge aus vier Probes spannt dabei ein Tetrahedon auf, indem sich der Ankerpunkt des dynamischen Objekts befindet. Dann wird innerhalb des Tetrahedons geschaut, wie nah sich das Objekt an den jeweiligen Eckpunkten befindet und dann wird zwischen den Lightmaps der Probes interpoliert. Das Ergebnis wird dann auf das dynamische Objekt gepinselt. Grob gesagt: Wenn du also in der Nähe der Probes läufst, die von der roten Wand rot angestrahlt werden, dann wird dein Character auch von derselben Seite rot angestrahlt. Die Probes geben also auf clevere Art ihren Teil der Lightmap an Objekte weiter, die durch ihre Gruppe laufen.

Um die Frage zu beantworten: Ja, Light Probes ergeben nur Sinn, wenn man auf sie auch eine Lightmap draufbackt.

Aber zu deinem Problem: Die Import Settings sehen imo in Ordnung aus. Wird langsam echt knifflig. Wo hast du die 3D-Modelle her, sind die frei Verfügbar oder hast du die gemacht? Dann könnte ich mir vielleicht so einen Stein mal ansehen.

Link to post
Share on other sites

Also mitlerweile sehen die UV-Charts so aus:

rcs5nnqo.jpg

Ein wenig ausbluten ist zwar immer noch da, aber ich hatte da mal was zu gelesen, dass kann man glaube ich mit dem Bias zu korrigieren.

Zu den Realtime, herrscht da ein größerer Unterschied von Lowpoly zu Hightpoly. Ich kann mir vorstellen, dass die Realtime Berechnung auf einem Low Poly Terrain wesentlich weniger Ressourcen frisst als in einer High Poly Landschaft oder sehe ich das falsch?

Also Mixed verstehe ich nun nicht, ist das jetzt ein Mix aus Gebackenem Licht und Realtime Licht?

OK, dass mit den Lightmaps verstehe ich nun auch etwas besser. Also wären die eigentlich nur Sinnvoll wenn man keine Realtime Beleuchtung hat. Im Endeffekt macht ja RT Beleuchtung eigentlich das selbe wie die Lichtsonden oder sehe ich das falsch? Frage wäre noch mal, wie groß sollte der Abstand der Sonden zu einander sein und in welcher Höhe? Ich denke mal bei einem Menschen auf Fußhöhe, auf Höhe des Bauchs und dann über dem Kopf, eigentlich auch nur da wo der Spieler hinkommt, oder? Dürfen Lichtsonden eigentlich auch in der Wand sein oder nur knapp davor?

Was noch falsch läuft, tja da bin ich echt überfragt, wie gesagt 2018 habe ich es auch hinbekommen, dass die Steine alle eine einheiteliche Farbe hatten.🤨

Die Qualität und Geschwindigkeit ist auch schon bei weitem bessr mit dem neuen Lightmap Resolution Wert. Aber was noch an den UV-Charts gemacht werden muss, damit die passen, tja ... Mir fällt da auch echt nix mehr ein. Wobei ich sagen muss die Qualität der Schatten und allgemein der Scene sind in Realtime wesentlich besser als wenn es gebacken wird.

Link to post
Share on other sites
vor 1 Stunde schrieb Kojote:

Zu den Realtime, herrscht da ein größerer Unterschied von Lowpoly zu Hightpoly. Ich kann mir vorstellen, dass die Realtime Berechnung auf einem Low Poly Terrain wesentlich weniger Ressourcen frisst als in einer High Poly Landschaft oder sehe ich das falsch?

Kommt drauf an. Bei Forward Lighting ist die Arbeit in der Tat grob gesagt Geometriekomplexität mal Anzahl Lichtquellen. Deshalb gibt's ja auch die Begrenzung von dynamischen Lichtern auf idR acht Stück bei Forward Rendering. Allerdings wird ja vorsortiert und Meshes, deren AABB (die kleinstmögliche, ungedrehte Box, die du um das Objekt packen kannst, sodass es vollständig enthalten ist) nichtmal mit dem Lichtradius in Berührung kommt, dann wird da gar nicht erst was gemacht. Directional Lights sind nur halt überall.

Deshalb kann man mit Deferred Rendering so viel mehr dynamische Lichter haben: Deferred Rendering malt erst alles auf das Bild und macht dann die Lichtberechnung auf deinen Pixeln statt auf deinen Vertices. Da ist dann die Komplexität deiner Geometrie, also die Anzahl deiner Faces, egal - weil die Lichtberechnung so oder so auf X*Y vielen Pixeln passiert.

vor 1 Stunde schrieb Kojote:

Also Mixed verstehe ich nun nicht, ist das jetzt ein Mix aus Gebackenem Licht und Realtime Licht?

Genau.

  • Statisches Objekt + Mixed oder Baked Light = Lightmap draufgemalt
  • Statisches Objekt + Realtime Light = Echtzeit-Lichtberechnung
  • Dynamisches Objekt + Mixed oder Realtime Light =  Echtzeit-Lichtberechnung
  • Dynamisches Objekt + Bakes Light = Gar nichts
vor 1 Stunde schrieb Kojote:

OK, dass mit den Lightmaps verstehe ich nun auch etwas besser. Also wären die eigentlich nur Sinnvoll wenn man keine Realtime Beleuchtung hat.

Naja, Mixed Lighting halt. Damit sparst du performance bei statischen Lichtern auf statischen Oberflächen, kannst aber weiterhin dynamische Objekte haben. Und du kannst ja auch Lightmaps bauen und zusätzlich auf "Realtime" gestellte Lichter haben, die sich durch die Szene bewegen oder ihre Farbe verändern. Realtime-Lichter können auch statische Objekte anleuchten, die schon eine Lightmap draufhaben.

vor 1 Stunde schrieb Kojote:

Im Endeffekt macht ja RT Beleuchtung eigentlich das selbe wie die Lichtsonden oder sehe ich das falsch?

Jein - Light Probes haben eine höhere Qualität dank Global Illumination. Beispiel "an einer roten Wand entlang laufen". Das kann Realtime-Licht nicht, es sei denn, du hast Raytracing laufen.

vor 1 Stunde schrieb Kojote:

Frage wäre noch mal, wie groß sollte der Abstand der Sonden zu einander sein

Das machst du ganz von deiner Geometrie abhängig. So als Beispiel: grafik.pngRechts haben wir eine lange rote Wand. Das Licht prallt an der Wand ab und beleuchtet die Kugel rot. (Das ist genau das, was Realtime-Licht ohne Raytracing nicht kann.)

Würde die Kugel jetzt viel näher dran oder viel weiter weg sein, würde das an der Beleuchtung der Kugel nichts ändern. Entsprechend ändert sich an der Beleuchtung eines Charakter nichts, wenn er diese Wand entlang läuft. Da kann man also einfach links und rechts jeweils eine Probe (naja, zwei übereinander halt) hinsetzen und das passt.

grafik.png

Wenn du aber jetzt die Wand änderst, sodass ein Segment in der Mitte eine andere Farbe hat, dann sollte sich ja die Beleuchtung ändern, je nachdem, wo man steht:

grafik.png

Entsprechend solltest du hier mehr Light Probes platzieren, damit die Beleuchtung der Objekte, die sich da durchbewegen, immer einigermaßen stimmt. Aktuell würde der Charakter auch vor dem blauen Wandsegment rot angestraht werden, weil zwischen dem rechten und dem linken Ball interpoliert wird, und die sind beide rot.

Sollte dann etwa so aussehen:

grafik.png

Im Zweifelsfall gilt: Mehr Lightprobes gleich präzisere Ausleuchtung, aber dafür dauert das backen auch länger, weil für jede Probe eine Lightmap gebacken werden muss. Wie viel Einfluss das auf die Echtzeit-Performance hat, weiß ich leider nicht. Ein bisschen sollte das schon ausmachen, weil dann ja in einem komplexeren Gebilde die Position des Objekts gefunden werden muss, aber vermutlich steht da eine intelligente Beschleunigungsstruktur hinter, sodass es nicht allzu schlimm ist. Also mach so viele rein, wie sinnvoll scheint.

vor 1 Stunde schrieb Kojote:

und in welcher Höhe? Ich denke mal bei einem Menschen auf Fußhöhe, auf Höhe des Bauchs und dann über dem Kopf, eigentlich auch nur da wo der Spieler hinkommt, oder?

Jeder Renderer zieht die Beleuchtung erst einmal von einem einzigen Punkt. Das ist aber auch absolut ausreichend für normal große Dinge. Licht streut halt, und selbst wenn die obere Hälfte meiner Wand blau und die untere rot wäre, wäre ein Mensch, der davor langgeht, primär lila. Eine einzelne Probe würde aber schon oben mehr blau und unten mehr rot sein. Von daher: Einfach nur das minimum von zwei Probes übereinander und fertig. Mehr Probes in der Vertikalen brauchst du nur, wenn es auch nennenswerte vertikale Bewegung gibt. Jetpacks oder so.

vor 1 Stunde schrieb Kojote:

Dürfen Lichtsonden eigentlich auch in der Wand sein oder nur knapp davor?

Vor der Wand. Wenn sie in der Wand drin sind, werden sie je nach Rundungsfehler nicht mehr von dem abprallenden Licht getroffen und das Licht, das von der Wand kommt, geht verloren. Also schön aus der statischen Geometrie raushalten.

vor 1 Stunde schrieb Kojote:

Was noch falsch läuft, tja da bin ich echt überfragt, wie gesagt 2018 habe ich es auch hinbekommen, dass die Steine alle eine einheiteliche Farbe hatten.🤨

Die Qualität und Geschwindigkeit ist auch schon bei weitem bessr mit dem neuen Lightmap Resolution Wert. Aber was noch an den UV-Charts gemacht werden muss, damit die passen, tja ... Mir fällt da auch echt nix mehr ein. Wobei ich sagen muss die Qualität der Schatten und allgemein der Scene sind in Realtime wesentlich besser als wenn es gebacken wird.

Ja, Realtime-Licht ist halt unabhängig von den Lightmap UVs, da zählt nur die Geometrie - und mit der kann nicht so viel schiefgehen. Ich binm da leider auch etwas überfragt. Ich tippe aber nach wie vor auf ein Problem mit deinen Modellen.

grafik.png

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...