Die Suche ergab 426 Treffer

von Spiele Programmierer
13.07.2020, 20:44
Forum: Grafikprogrammierung
Thema: GLSL - komponentenweise bedingte Zuweisung.
Antworten: 3
Zugriffe: 756

Re: GLSL - komponentenweise bedingte Zuweisung.

mix hat entsprechende Überladungen für genau diesen Zweck.
von Spiele Programmierer
06.07.2020, 00:41
Forum: Grafikprogrammierung
Thema: Vulkan API - Erfahrungsaustausch
Antworten: 17
Zugriffe: 4367

Re: Vulkan API - Erfahrungsaustausch

Die Vulkan-API ist schon recht sperrig, aber ich denke eig. das es in richtigem Anwendungscode nicht so ins Gewicht fällt. Man muss nur ein paar schlanke Hilfsfunktionen schreiben, um die üblichen Fälle zu vereinfachen. In OpenGL habe ich immer das Problem, das mir nicht klar ist an welchen Stellen ...
von Spiele Programmierer
25.06.2020, 14:25
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: static_cast - Wieso ist VisualStudio unzufrieden?
Antworten: 3
Zugriffe: 1165

Re: static_cast - Wieso ist VisualStudio unzufrieden?

Ich würde das ignorieren. An dem Code ist nichts auszusetzen und wie du schon selbst sagst ist die Alternative sogar objektiv (marginal) schlechter. Ich glaube man kann in den Projekteinstellungen auch irgendwie einzelne Checks deaktivieren. Wenigstens das. Ansonsten halt einfach beobachten, wie oft...
von Spiele Programmierer
23.06.2020, 22:20
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: static_cast - Wieso ist VisualStudio unzufrieden?
Antworten: 3
Zugriffe: 1165

Re: static_cast - Wieso ist VisualStudio unzufrieden?

Ich glaube, das siehst du schon richtig. Der hypothetische Bug den VS hier bemängelt ist genau dieser Überlauf (und schon bei +2147483647 übrigens). Man kann das übrigens abschalten unter "Tools" -> "Options" -> "Text Editor" -> "C/C++" -> "Advanced"...
von Spiele Programmierer
08.06.2020, 17:24
Forum: Allgemeines Talk-Brett
Thema: Jammer-Thread
Antworten: 7532
Zugriffe: 1472530

Re: Jammer-Thread

Ja, braucht man tatsächlich. Darum gibt es z. B. std::chrono::time_point und std::chrono::duration . Für sowas möchte man übrigens auch oft unterschiedliche Datentypen, weil bei Geschwindigkeiten Gleitkommazahlen ganz gut funktionieren und bei Positionen Festkommazahlen, aber nicht umgekehrt. Ja da...
von Spiele Programmierer
08.06.2020, 15:48
Forum: Allgemeines Talk-Brett
Thema: Jammer-Thread
Antworten: 7532
Zugriffe: 1472530

Re: Jammer-Thread

Wenn du deine Koordinaten versehentlich relativ zum Fahrzeug des Spielers speicherst, sagt dir auch direkt der Compiler, dass du deinen LocalPoint zu GlobalPoint konvertieren musst, statt dass du zwanzig Minuten debuggst, warum die Sounds dauernd um dich zu kreisen scheinen. vec3 für alles ist sowi...
von Spiele Programmierer
07.06.2020, 15:50
Forum: Allgemeines Talk-Brett
Thema: Jammer-Thread
Antworten: 7532
Zugriffe: 1472530

Re: Jammer-Thread

In C++20 hat man sich nach 20 Jahren Verspätung nun dazu durchgerungen, Strukturen mit Variablennamen initialisieren zu können wie man das in C schon seit C99 kann. Einge Features von C wurden leider noch rausgeworfen, aber man wird wenigstens so was schreiben können: struct process_object_args { fl...
von Spiele Programmierer
23.03.2020, 21:14
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: C++ Callbacks
Antworten: 11
Zugriffe: 10180

Re: C++ Callbacks

Gegenüber Boost signal ist es bestimmt schonmal eine ordentliche Vereinfachung so wie ich Boost einschätzte. ^^ Mit einem simplen Callback habe ich std::function<...> gemeint. Die Performance ist natürlich nicht toll (bei std::function ja auch schon), aber eig. wollte ich auf die Wartbarkeit hinaus....
von Spiele Programmierer
23.03.2020, 17:46
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: C++ Callbacks
Antworten: 11
Zugriffe: 10180

Re: C++ Callbacks

Du kannst den Typ in Rückgabeparameter und Argumente mittels Template-Spezialisierung auflösen. Beispiel: template<typename T> class EventCallback {}; template<typename ret_val, typename... params> class EventCallback<ret_val (params...)> { ... } Dann wird z.B. void(int,long,double) entsprechend zu...
von Spiele Programmierer
06.10.2019, 23:13
Forum: Allgemeines Talk-Brett
Thema: Jammer-Thread
Antworten: 7532
Zugriffe: 1472530

Re: Jammer-Thread

Diffst Du nie? Das stirbt nämlich bei einer als "binär" getaggten Datei. Nicht in dieser Datei, ne. Oder habt ihr wirklich so viele Textdateien bei denen es auf die Art des Zeilenumbruch ankommt? Äh, doch?! Wenn ich eine LF-Datei unter Windows öffne und was reinschreibe, übernimmt der neu...
von Spiele Programmierer
06.10.2019, 17:01
Forum: Allgemeines Talk-Brett
Thema: Jammer-Thread
Antworten: 7532
Zugriffe: 1472530

Re: Jammer-Thread

Na das Problem ist doch viel mehr dass es die Versionsgeschichte zerstört wenn immer von \r\n zu \n hin und her gewechselt wird zwischen Linux und Windows commits. Das es unterschiedliche Zeilenumbrüche gibt ist zwar wirklich nervig, aber die Versionskontrolle kann das Problem auch nicht einfach ign...
von Spiele Programmierer
05.10.2019, 00:03
Forum: Allgemeines Talk-Brett
Thema: Anti-Jammer-Thread
Antworten: 2058
Zugriffe: 673674

Re: Anti-Jammer-Thread

Krishty hat geschrieben: 04.10.2019, 13:08falls ihr Logs oder exportierte 3D-Daten difft oder in Tests verwendet.
Ich würde für sowas %.9g für floats und %.17g für doubles empfehlen, damit die Konvertierung keinen Fehler hinzufügt (mal von Bugs abgesehen. Ist aber, glaub ich, inzwischen gefixt).
von Spiele Programmierer
12.09.2019, 14:43
Forum: Allgemeines Talk-Brett
Thema: Jammer-Thread
Antworten: 7532
Zugriffe: 1472530

Re: Jammer-Thread

Ich habs zum Glück nur in einer VM, aber bei mir kein Problem.
Wie genau äußert sich, dass es nicht geht? Hast du keine Spalte "Typ"? Ich kann hier sogar eine explizite "Dateierweiterung"s-Spalte aufmachen und nach der sortieren.
von Spiele Programmierer
05.09.2019, 21:04
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: C++ Event bekommen wenn virtuelle Funktion angetriggert wird
Antworten: 13
Zugriffe: 2831

Re: C++ Event bekommen wenn virtuelle Funktion angetriggert wird

Schrompf hat recht, es reicht nicht die Vtable der Basisklasse zu verändern sondern du musst alle Vtables der abgeleiteten Klassen ändern. Das Überschreiben von Funktionen funktioniert ja gerade dadurch, dass in der abgeleiteten Klasse die Basisklassen-Vtable der Instanz mit der Vtable der abgeleite...
von Spiele Programmierer
24.06.2019, 20:16
Forum: Grafikprogrammierung
Thema: YUV420planar zu BGR Konvertierung ist kritisch langsam
Antworten: 24
Zugriffe: 4789

Re: YUV420planar zu BGR Konvertierung ist kritisch langsam

Ich habe auch versucht, zu verstehen, was du getrieben hast. Wie schon teilweise erwähnt, kann ich folgende Grundgedanken nachvollziehen - ich versuche mal aufzulisten: * 8 16Bit Pixel passen in eine 128bit SSE Struktur * daher: Handling der Pixel zu je 4 Stück bei zwei Zeilen -> 8 Pixel auf einmal...
von Spiele Programmierer
23.06.2019, 12:35
Forum: Grafikprogrammierung
Thema: YUV420planar zu BGR Konvertierung ist kritisch langsam
Antworten: 24
Zugriffe: 4789

Re: YUV420planar zu BGR Konvertierung ist kritisch langsam

Sieht ziemlich ähnlich zu meinem Code aus. Inbesondere auch 16*2 Pixel auf einmal und 9.6 Festkomma. Unterschied ist, dass ich in meinem Code am Ende ja noch die ganze Sache mit dem Shuffle machen musste, weil Top-OR die RGB-Werte am Ende Interleaved abgelegt haben wollte. Außerdem: Then it's time t...
von Spiele Programmierer
22.06.2019, 19:33
Forum: Grafikprogrammierung
Thema: YUV420planar zu BGR Konvertierung ist kritisch langsam
Antworten: 24
Zugriffe: 4789

Re: YUV420planar zu BGR Konvertierung ist kritisch langsam

Freut mich wenn es bei dir auch so flott läuft. :-). Und ich denke du musst SSSE3 anschalten, nicht SSE3. Falls du es noch nicht kennst, der "Intrinsic-Browser" von Intel ist übrigens sehr nützlich: https://software.intel.com/sites/landingpage/IntrinsicsGuide/#!=undefined . Da steht u.a. a...
von Spiele Programmierer
22.06.2019, 18:31
Forum: Grafikprogrammierung
Thema: YUV420planar zu BGR Konvertierung ist kritisch langsam
Antworten: 24
Zugriffe: 4789

Re: YUV420planar zu BGR Konvertierung ist kritisch langsam

Ok habe bisschen rumgebastellt und massiv die Performance verbessert. In Zahlen in meinen (sehr provisorischen) Benchmark: - Ganz ursprünglich: ~600 ms - Ursprüngliche SSE Version: ~100 ms - Verbesserte SSE Version: ~12 ms Hier der relevante Code: #include <emmintrin.h> #include <tmmintrin.h> // Fac...
von Spiele Programmierer
22.06.2019, 17:16
Forum: Grafikprogrammierung
Thema: YUV420planar zu BGR Konvertierung ist kritisch langsam
Antworten: 24
Zugriffe: 4789

Re: YUV420planar zu BGR Konvertierung ist kritisch langsam

Ich gucks mir mal an. Momemtan hat mich die RIESIGE Liste von SSE Befehlen erstmal erschlagen und ich muss schauen, was es da alles so gibt. Danke hierfür. Jo, absolut verständlich. :) Macht aber auch irgendwie einen Reiz aus wenn man sich mal einen Überblick verschafft hat. Und zum Teil gibt es au...
von Spiele Programmierer
22.06.2019, 15:35
Forum: Grafikprogrammierung
Thema: YUV420planar zu BGR Konvertierung ist kritisch langsam
Antworten: 24
Zugriffe: 4789

Re: YUV420planar zu BGR Konvertierung ist kritisch langsam

Da kann man auf jeden Fall noch mehr rauskitzeln. Eine Sache die auf jeden Fall geht wäre auf 16 Bit Integer zu gehen via _mm_mullo_epi16 , _mm_mulhi_epi16 und _mm_madd_epi16 . Man kann dann ja doppelt so viele Daten pro SIMD-Befehl verarbeiten. Wenn ich das gerade richtig sehe, werden im Moment auc...
von Spiele Programmierer
28.03.2019, 01:08
Forum: Allgemeines Talk-Brett
Thema: Jammer-Thread
Antworten: 7532
Zugriffe: 1472530

Re: Jammer-Thread

Hä? Habe nutze auch Thunderbird: Bei mir gibts kein Zwangsupdates. Da kommt ein Fenster, dass einem über das Update informiert und freundlich nachfragt, ob das Update heruntergeladen werden soll. Wenn man "ja" sagt wird nicht mal Thunderbird geschlossen, sondern es gibt noch die Option bei...
von Spiele Programmierer
03.10.2018, 18:59
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: [Visual C++] /d2noftol3 & dtol3()
Antworten: 8
Zugriffe: 3301

Re: [Visual C++] /d2noftol3 & dtol3()

Ob es eine Möglichkeit gibt, _ftol3 mit einer eigenen Version zu ersetzen? Diese Details finde ich ja immer besonders. interessant. Ich habe jetzt nochmal ein wenig darüber nachgedacht, und einen neuen Vorschlag (ohne x87): #include <emmintrin.h> unsigned int roundedToUInt4B(double f) { return (unsi...
von Spiele Programmierer
03.10.2018, 00:33
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: [Visual C++] /d2noftol3 & dtol3()
Antworten: 8
Zugriffe: 3301

Re: [Visual C++] /d2noftol3 & dtol3()

Godbolt kann 32 bit, einfach -m32 machen. ;) https://gcc.godbolt.org/z/KDNROV Clang macht cvttss2si zweimal: Einmal für den Fall dass es ganz normal geht für 0 - 0x7fffffff und ein zweites mal, einfach Verschoben, falls die Zahl in den Bereich 0x80000000 - 0xffffffff fällt und wählt dann das Ergebni...
von Spiele Programmierer
01.10.2018, 17:55
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: [C++] teure Ressource in Lambda moven
Antworten: 3
Zugriffe: 1642

Re: [C++] teure Ressource in Lambda moven

Hast du denn sichergestellt, dass deine std::function<> nicht allokiert? Die übernimmt Ownership von deinem Lambda und wenn das zu groß ist, wird auch allokiert. Beim MSVC ab einer Pointergröße und bei Clang/GCC mit libstdc++ ab 2 Pointergrößen im Captureblock. (Quelle: Rumprobieren auf dem Compiler...
von Spiele Programmierer
30.09.2018, 23:10
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: [C++] teure Ressource in Lambda moven
Antworten: 3
Zugriffe: 1642

Re: [C++] teure Ressource in Lambda moven

Das Problem ist, dass man std::function<> selbst kopieren kann. Und um jetzt die std::function<> kopieren zu können, muss das zugewiesene Lambda natürlich auch kopierbar sein. Das ist nunmal Teil des Interfaces. Du könntest dein Funktionsobject ja z.B. in eine andere Funktion he­r­ein­rei­chen. Spät...
von Spiele Programmierer
14.10.2017, 02:09
Forum: Algorithmen und Datenstrukturen
Thema: Bitschubsen für Fortgeschrittene, Teil I
Antworten: 4
Zugriffe: 2677

Re: Bitschubsen für Fortgeschrittene, Teil I

Um schnell geeignete Primzahlen zu bekommen ist diese Seite ganz praktisch: https://asecuritysite.com/encryption/random3?val=64 Als Alternative könntest du die 3 Koordinaten erst zusammenbauen und dann gemeinsam durch einen Hash schicken. uint64_t seed = nvp.z ^ ((uint64_t)nvp.x << 40) ^ ((uint64_t)...
von Spiele Programmierer
11.08.2017, 00:16
Forum: Artikel, Tutorials und Materialien
Thema: [C++] Mikrooptimierungs-Log
Antworten: 103
Zugriffe: 108158

Re: [C++] Mikrooptimierungs-Log

Hm, also vielleicht verstehe ich dich falsch, aber auf Godbolt scheint es zu gehen:
Click
von Spiele Programmierer
10.08.2017, 22:48
Forum: Artikel, Tutorials und Materialien
Thema: [C++] Mikrooptimierungs-Log
Antworten: 103
Zugriffe: 108158

Re: [C++] Mikrooptimierungs-Log

Das ist wirklich schrecklich. und was mache ich mit Strict Aliasing und 16-Bit-Zahlen? Zu Bjarne Stroustrup beten und ihm zum Opfer meinen Computer verbrennen? Strict Aliasing ist immer eine sehr komplizierte Angelegenheit. Aber ich bin mir ziemlich sicher, dass dieser Code auch jetzt Strict Aliasin...
von Spiele Programmierer
07.08.2017, 23:26
Forum: Artikel, Tutorials und Materialien
Thema: [C++] Mikrooptimierungs-Log
Antworten: 103
Zugriffe: 108158

Re: Jammer-Thread

Verdammt – ich muss hier noch /fp:fast an gehabt haben; da hast du völlig recht!
Also auf Godbolt kompilert Visual C++ das tatsächlich zu andps ohne weitere Flags... :roll:
von Spiele Programmierer
07.08.2017, 22:58
Forum: Artikel, Tutorials und Materialien
Thema: [C++] Mikrooptimierungs-Log
Antworten: 103
Zugriffe: 108158

Re: Jammer-Thread

Hm, habe ich was verpasst? Warum ist minps besser als minss ? Bei float absoluteOf(float x) { return x > 0 ? x : -x; } muss ich leider GCC/Clang rechtgeben, denn die elegante Version mit and verändert das Vorzeichen wenn x = NaN ist. Clang optimiert den Code erfolgreich mit -ffinite-math-only und GC...