Seite 35 von 69

Re: Anti-Jammer-Thread

Verfasst: 30.05.2013, 01:14
von Krishty
Ich habe mir typisierte und überladene C++-Präprozessormakros gebaut. Fuck yea. Der Menü-ohne-Ressource-Compiler-Thread wird noch sowas von krank …

Re: Anti-Jammer-Thread

Verfasst: 30.05.2013, 04:53
von Krishty
Microsoft erhört mein Jammern. Leider haben sie mein Problem überhaupt nicht verstanden und durch meine Meldung stattdessen einen anderen, ähnlichen Fehler gefunden. Aber was nicht ist kann ja noch werden. Wenn man einmal im Jahr jemanden aus dem Compiler-Team vor sich hat, sollte man sich bemühen, ihn nicht wieder zu verscheuchen.

Und wo ich gerade nach meinen anderen Fehlern suche, sehe ich, dass die es ja sogar auf StackOverflow geschafft haben :)

Re: Anti-Jammer-Thread

Verfasst: 31.05.2013, 01:40
von CodingCat
Der CUDA 5.5 Release Candidate ist da. Ob ihrs glaubt oder nicht: MIT VC12-UNTERSTÜTZUNG! Sogar ein NSIGHT 3.1 für VC12 liegt bei. Davon habe ich allerdings in meiner IDE bis jetzt nichts zu Gesicht bekommen. Kommt dann hoffentlich mit dem offiziellen 3.1-Release; die Release-Notes sichern es jedenfalls auch schonmal zu. Natürlich kann ich immer noch nicht umsteigen, weil der neue CUDA-5.5-Compiler sich gleich mal weigert, B40Cs heftigen Template-Code ordnungsgemäß zu kompilieren.

Re: Anti-Jammer-Thread

Verfasst: 31.05.2013, 02:09
von eXile
So wie ich das sehe ist das Release jedoch komplett ohne Graphics Debugger (die Nsight-Tools bestehen ja aus der Dreifaltigkeit von CUDA Debugger, Graphics Inspector and Graphics Debugger, und Analysis and Profiling Tools); die aktuellen Release-Notes zählen den Graphics Debugger noch nicht einmal auf.

Re: Anti-Jammer-Thread

Verfasst: 31.05.2013, 15:28
von Schrompf
Ich habe gerade eine Suchfunktion in den Spladitor eingebaut. Himmel, wie konnte ich bisher nur ohne leben. Es war durchaus ein bisschen manuelle Arbeit, alle Objekte, Komponenten und Skripte durchzuackern, hier und da mittels dynamic_cast von Hand spezialisiert. Aber das Ergebnis war es wert.
Spladitor hat geschrieben:>such ziel2
Suchtext gefunden in Film "fabrikstart", Schritt 0
Suchtext gefunden in Eigenname von Objekt 384 bei 32.7, 86.0
Suchtext gefunden in Trigger-Film von Trigger 619 bei 91.6, 30.3

Re: Anti-Jammer-Thread

Verfasst: 05.06.2013, 08:56
von Jonathan
CodingCat hat geschrieben:Der CUDA 5.5 Release Candidate ist da. Ob ihrs glaubt oder nicht: MIT VC12-UNTERSTÜTZUNG!
Whohoo! Ich wollte das schon immer testen (VC2012), brauchte aber für die Uni Cuda. Und eine Parallelinstallation hat irgendwie nicht geklappt, bzw. ich hatte keine Lust, es einzurichten. Aber dann kann es jetzt ja endlich losgehen :)

Re: Anti-Jammer-Thread

Verfasst: 05.06.2013, 11:23
von antisteo
Horni is back!
[youtube]Q6znp5Pcplg[/youtube]

Re: Anti-Jammer-Thread

Verfasst: 05.06.2013, 16:35
von CodingCat
Jonathan hat geschrieben:
CodingCat hat geschrieben:Der CUDA 5.5 Release Candidate ist da. Ob ihrs glaubt oder nicht: MIT VC12-UNTERSTÜTZUNG!
Whohoo! Ich wollte das schon immer testen (VC2012), brauchte aber für die Uni Cuda. Und eine Parallelinstallation hat irgendwie nicht geklappt, bzw. ich hatte keine Lust, es einzurichten. Aber dann kann es jetzt ja endlich losgehen :)
CodingCat hat geschrieben:Natürlich kann ich immer noch nicht umsteigen, weil der neue CUDA-5.5-Compiler sich gleich mal weigert, B40Cs heftigen Template-Code ordnungsgemäß zu kompilieren.
Kurzes Update: Bug Report wurde schon am Montag entgegengenommen und Bug ist nach NVIDIAs eigener Aussage sofort behoben worden. Hoffen wir, dass sich dies im nächsten Update bestätigt.

Re: Anti-Jammer-Thread

Verfasst: 11.06.2013, 11:27
von antisteo
Die IE-User, die sich auf meine Seite verlaufen, sehen zwar keine rundgelutschten Buttons, dafür aber haben sie eine Absprungrate von 0%.(Durchschnitt: 28,57 %)

Re: Anti-Jammer-Thread

Verfasst: 11.06.2013, 17:25
von Krishty
KA, ob das in diesen Thread gehört, aber:
https://connect.microsoft.com/VisualStudio/feedback/details/788471/no-nrvo-for-pod-with-floating-point-members hat geschrieben:Hi, thanks for the source code. The codegen differences you're seeing are indeed because we chose a slightly different optimization path due to the identification of POD versus non-POD. If you are curious, register allocation is affected and we introduce more spills -- those are the spills you see in the assembly code.

This is an optimization bug, and we will address that in a future release. It's getting pretty late in the product cycle for the next major release, but we will try to get it in.

In the mean time, if it's possible to use an empty constructor for performance.

Thanks for taking the time to get the repro case for us. I'm closing this MSConnect item. Feel free to re-activate it if you need anything else.

Re: Anti-Jammer-Thread

Verfasst: 11.06.2013, 17:30
von Schrompf
Hey, die nehmen mal einen Bugreport von Dir ernst! Und sie bedanken sich sogar (völlig zu Recht) für Deine Mühen, den Fehler schön klar zu reproduzieren. Das nützt uns allen was :-)

Re: Anti-Jammer-Thread

Verfasst: 11.06.2013, 17:31
von Krishty
Aber dass sie tatsächlich getrennte Optimizer-Pfade für POD haben und nicht wissen, ob der Fehler zum nächsten Major Release behoben werden kann, macht es wieder mulmig.

Re: Anti-Jammer-Thread

Verfasst: 11.06.2013, 18:29
von Krishty
Vielleicht gibt es irgendwann ein echtes OutputDebugStringW(): What is the freaking point of OutputDebugStringW, anyway? (Sorting it all Out)

(Das aktuelle konvertiert den String einfach zu ANSI und leitet ihn an OutputDebugStringA() weiter.)

Re: Anti-Jammer-Thread

Verfasst: 11.06.2013, 19:27
von NoFake3D
Multi-Sample-Kantenglättung (MSAA) für Windows 8-Store-Apps funktioniert doch (siehe hier):
http://msdn.microsoft.com/en-us/library ... .105).aspx

Der Link ist eigentlich für Windows Phone 8 gedacht. Das Ganze funktioniert auch für Windows 8-Store-Apps.
Allerdings musste ich die ResolveSubresource-Methode vor ClearRenderTargetView und ClearDepthStencilView einfügen.

Re: Anti-Jammer-Thread

Verfasst: 16.06.2013, 02:40
von CodingCat
Mal wieder eine grenzwertige Template-Spielerei, die das automatische Initialisieren und Enumerieren von Klassenattributen erlaubt:

Code: Alles auswählen

#include <iostream>
#include <string>

namespace memenum
{
    template <int Counter>
	struct member_iterator : member_iterator<Counter - 1> { static int const value = Counter; };
	template <>
	struct member_iterator<0> { static int const value = 0; };

	template <class This, class Op>
	void call_for_members(This*, member_iterator<__COUNTER__>, Op const&) { }

	template <class T>
	struct member_wrapper
	{
		T value;
		member_wrapper(T const &v) : value(v) { }
	};

	#define DEFINE_MEMBER(type, memname, ...) \
		struct _##memname##_type : ::memenum::member_wrapper<type> \
		{ \
			static int const counter = __COUNTER__; \
			_##memname##_type() : ::memenum::member_wrapper<type>(__VA_ARGS__) { } \
			char const* name() const { return #memname; } \
		} memname; \
		template <class This, class Op> \
		friend void call_for_members(This *self, ::memenum::member_iterator<_##memname##_type::counter> i, Op const &op, typename This::_##memname##_type* = nullptr) \
		{ \
			call_for_members(self, ::memenum::member_iterator<_##memname##_type::counter - 1>(), op); \
			op(self->memname); \
		}

	#define MAKE_MEMBER_ITERATOR() ::memenum::member_iterator<__COUNTER__>()

} // namespace

namespace test
{
	
	struct foo
	{
		DEFINE_MEMBER(int, a, 2);
		DEFINE_MEMBER(float, b, 2.5f);

	public:
		struct Printer
		{
			template <class T>
			void operator ()(T &member) const
			{
				std::cout << member.name() << " = " << member.value << std::endl;
			}
		};
		void print() const
		{
			call_for_members(this, MAKE_MEMBER_ITERATOR(), Printer());
		}

		struct Multiplier
		{
			int factor;

			template <class T>
			void operator ()(T &member) const
			{
				member.value *= factor;
			}
		};
		void multiply(int factor)
		{
			Multiplier multi = { factor };
			call_for_members(this, MAKE_MEMBER_ITERATOR(), multi);
		}
	};

	struct bar
	{
		DEFINE_MEMBER(char, c, 'd');
		DEFINE_MEMBER(std::string, d, "hello world");

	public:
		struct Printer
		{
			template <class T>
			void operator ()(T &member) const
			{
				std::cout << member.name() << " = " << member.value << std::endl;
			}
		};
		void print() const
		{
			call_for_members(this, MAKE_MEMBER_ITERATOR(), Printer());
		}
	};

} // namespace

int main()
{
	test::foo test1;
	test1.print();
	test1.multiply(5);
	test1.print();

	const test::bar test2;
	test2.print();
}
// Output:
// a = 2
// b = 2.5
// a = 10
// b = 12.5
// c = d
// d = hello world
Wenn wir jetzt noch generische Lambdas hätten, würden wir auch die Funktor-structs los. Wohlgemerkt ist __COUNTER__ nicht Teil des Standards, wird aber von gcc, clang und VC++ unterstützt. Nebenbei ließe sich __COUNTER__ hier auch durch __LINE__ ersetzen, dies könnte den Compiler in großen Dateien allerdings mit entsprechend langen Klassenhierarchien ggf. zum Schwitzen bringen.

Läuft auch in Visual C++. In Action: http://ideone.com/uv4Ab4

Nachtrag: Jetzt auch mit impliziter const-correctness.

Re: Anti-Jammer-Thread

Verfasst: 16.06.2013, 11:43
von Chromanoid
gerade gefunden :)
Bild

Re: Anti-Jammer-Thread

Verfasst: 19.06.2013, 03:53
von Schrompf
Nachtschicht! Und ich habe dabei ne Menge Punkte von meiner Aufgabenliste erledigt bekommen. Darunter das von wirklich jedem Tester angemeckerte Phänomen, dass man durch dünne Objekte durchballert, wenn man direkt davor steht, weil der grafische Startpunkt des Schusses dann schon jenseits des Hindernisses liegt.

Das wird. Aber nicht mehr heute, ich geh jetzt erstmal ins Bett. Und bevor noch Gerüchte aufkommen: "morgen" ist immer nach dem Aufstehen, ungeachtet der Uhrzeit. Release zum Mittwoch sollte also immernoch klappen.

Re: Anti-Jammer-Thread

Verfasst: 20.06.2013, 01:14
von Specialist
Relaunch der BugSoft-Website ist endlich fertig - inklusive Responsive Webdesign.

http://www.bug-soft.net

Re: Anti-Jammer-Thread

Verfasst: 20.06.2013, 20:33
von NytroX
Heute für einen Kunden einen Webservice gebaut.
Schätzung dafür war 2 Tage, blöderweise war DueDate heute.
Also in 10 min schnell was zusammengefrickelt, deployed und zum Test gegeben ("nachkorrigieren" geht ja immer noch, dafür hab ich dann noch ne Woche Zeit... :mrgreen: )

Kunde ruft an: "Ah, geht, Danke."
Ich: "?WTF?!??" :shock:

Re: Anti-Jammer-Thread

Verfasst: 23.06.2013, 17:16
von TDK
Das neue Texture Tool funktioniert mit meiner Engine echt prima: BPTC, RGTC, BC3 und BGRA Format, automatische Mip-Map-Erzeugung, Kompression mit Snappy, ZLIB oder Automatisch was schneller ist und es werden alle gängigen Bildtypen unterstützt, passende Flags für Normal und Height Maps, kann auch für Videos genutzt werden.... och herrlich!

Für den Jammer-Thread: Es wird OpenGL 4.3 benötigt.

Re: Anti-Jammer-Thread

Verfasst: 25.06.2013, 00:35
von Chromanoid
Habe gerade das erste mal Adobe Scout ausprobiert. Man kann sich jeden Frame-Aufbau Schritt für Schritt genau anschauen und tausend andere tolle Dinge sehen. Macht richtig Spaß damit sein Projekt zu untersuchen. Mein gerade neulich erst vertikal aufgestellter zweiter Bildschirm ist wie dafür gemacht :).

Re: Anti-Jammer-Thread

Verfasst: 25.06.2013, 16:23
von Krishty
Stephan Theisgen und ich wurden aus dem Artikel übers Rendern von Sternen zitiert:

Müller, Daniel – Photorealistisches Rendering atmosphärischer Effekte in geovirtuellen 3D-Umgebungen in Echtzeit (Kapitel 4.3 Rendering von Sternen)

Re: Anti-Jammer-Thread

Verfasst: 25.06.2013, 16:25
von Schrompf
Glückwunsch! Aber warum heißt der in Deinem Beitrag Daniel Müller und auf der verlinkten Seite Danial Limberger?

Re: Anti-Jammer-Thread

Verfasst: 27.06.2013, 12:29
von TheBenji
NytroX hat geschrieben:Heute für einen Kunden einen Webservice gebaut.
Schätzung dafür war 2 Tage, blöderweise war DueDate heute.
Also in 10 min schnell was zusammengefrickelt, deployed und zum Test gegeben ("nachkorrigieren" geht ja immer noch, dafür hab ich dann noch ne Woche Zeit... :mrgreen: )

Kunde ruft an: "Ah, geht, Danke."
Ich: "?WTF?!??" :shock:
Sowas erklaert die oftmals hervorragende Codequalitaet ...

Re: Anti-Jammer-Thread

Verfasst: 27.06.2013, 20:45
von kaiserludi
TheBenji hat geschrieben:
NytroX hat geschrieben:Heute für einen Kunden einen Webservice gebaut.
Schätzung dafür war 2 Tage, blöderweise war DueDate heute.
Also in 10 min schnell was zusammengefrickelt, deployed und zum Test gegeben ("nachkorrigieren" geht ja immer noch, dafür hab ich dann noch ne Woche Zeit... :mrgreen: )

Kunde ruft an: "Ah, geht, Danke."
Ich: "?WTF?!??" :shock:
Sowas erklaert die oftmals hervorragende Codequalitaet ...
Der Maintenancecode, der das Projekt dann irgendwann mal übernimmt, postet es dan auf http://thedailywtf.com

Re: Anti-Jammer-Thread

Verfasst: 28.06.2013, 05:15
von Krishty
Schrompf hat geschrieben:Glückwunsch! Aber warum heißt der in Deinem Beitrag Daniel Müller und auf der verlinkten Seite Danial Limberger?
Keine Ahnung. Das scheint nur ein Dateiname zu sein; vielleicht hat er das in Limberg verfasst oder vorgestellt oder sein Betreuer heißt so.

Re: Anti-Jammer-Thread

Verfasst: 29.06.2013, 01:20
von CodingCat
VC 2013 RTM soll tatsächlich inline non-static data member initialization und = default beinhalten. Damit betreten wir mit C++11 endlich eine neue Ära, in der sich zusammengesetzte Datentypen sinnvoll definieren und in Arrays/vectors verwenden lassen. Automatisch definierte Move-Konstruktoren und -Zuweisungen bekommen wir wohl noch nicht, weil dafür erst stringent noexcept implementiert werden müsste, aber immerhin ertrinken wir nicht mehr in sinnloser Redundanz. Templated typedefs bekommen wir nebenbei auch noch, die das Leben in Template-Umgebungen etwas einfacher machen.

Implizite Move-Funkationalität kommt voraussichtlich mit einem VC2013 CTP, dann nähert sich C++ in seiner Eleganz tatsächlich Sprachen wie Haskell.

Re: Anti-Jammer-Thread

Verfasst: 13.07.2013, 02:24
von eXile

Re: Anti-Jammer-Thread

Verfasst: 13.07.2013, 08:45
von Krishty
Ich werde nie verstehen, warum Microsoft mit der Calling Convention so ins Klo gegriffen haben. Um Agners Optimizing software in C++ auf Seite 7 und 49 zu zitieren:
64-bit Windows allows only four function parameters to be transferred in registers, whereas 64-bit Linux, BSD and Mac allow up to fourteen parameters to be transferred in registers (6 integer and 8 floating point).

In 64-bit Linux, the first six integer parameters and the first eight floating point parameters are transferred in registers, totaling up to fourteen register parameters. In 64-bit Windows, the first four parameters are transferred in registers, regardless of whether they are integers or floating point numbers.
Und jetzt führen sie ein Schlüsselwort dagegen ein. Fick-fack-fantastisch, ihr bescheuerten Armleuchter! Wer hätte beim Entwurf von x64 auch schon gedacht, dass die Leute mit float oder double rechnen würden!

Wer sehen will, wie man’s richtig macht, sollte das System V Application Binary Interface AMD64 Architecture Processor Supplement auf Seite 17 bemühen:
Passing
Once arguments are classified, the registers get assigned (in left-to-right order) for passing as follows:
  1. If the class is MEMORY, pass the argument on the stack.
  2. If the class is INTEGER, the next available register of the sequence %rdi, %rsi, %rdx, %rcx, %r8 and %r9 is used12.
  3. If the class is SSE, the next available SSE register is used, the registers are taken in the order from %xmm0 to %xmm7.
  4. If the class is SSEUP, the eightbyte is passed in the upper half of the least used SSE register.
  5. If the class is X87, X87UP or COMPLEX_X87, it is passed in memory.
Würde mich wundern, wenn __vectorcall _vectorcall anders aussähe.

Re: Anti-Jammer-Thread

Verfasst: 21.07.2013, 13:41
von Schrompf
Ich glaube, ich habe jetzt alle Zeichen zusammen, um die meisten europäischen Sprachen zu unterstützen. Ich habe mir ein paar Nonsense-Sätze mit Google Translate übersetzen lassen und dann nochmal per Wikipedia und Konsorten alle Zeichen des jeweiligen Alphabets zusammengesucht. Dann ein winziges Tool, dass mir nur eine Liste aller auftretenden Zeichen gibt, und jetzt habe ich alles zusammen, um Fonts aus dem Internet auf Tauglichkeit zu prüfen und einen Texturatlas daraus zu erstellen.

Geheimtipp: die meisten Fonts versagen schon kurz nach Englisch. Deswegen nutzt Splatter aktuell nur für Englisch und Deutsch den stylischen handselektierten Font und schaltet auf einen Windows-eigenen Font namens Calibri um, sobald man eine Sprache abseits dieser beiden auswählt.

Und als Backup, oder vielleicht, weil es auch jemandem von euch mal was bringt: mein Testtext mit angehängter Gesamt-Zeichenliste.
Deutsch:
Guten Tag. Verehrte Damen und Herren, bitte erfreut euch des Lebens und sagt mir Bescheid, wenn sich etwas an der allgemeinen Lebenssituation geändert haben sollte. Genau genommen brauche ich nur eine möglichst vollständige Liste aller Zeichen in UTF8-Kodierung, aber das Gelaber hier sollte es tun. Oder reicht es nicht? Ich hoffe doch!
Zeichen: äöüßÄÖÜ

Russisch:
Добрый день. Дамы и господа, пожалуйста, радости в жизни, и дайте мне знать, если что-то изменилось в общей жизненной ситуации.На самом деле, мне просто нужно полный список всех символов в кодировке UTF8, но чушь здесь должен это делать. Или это не достаточно? Я надеюсь на это!
Zeichen: ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё

Spanisch:
Buen día. Señoras y señores, por favor regocijo en la vida y que me haga saber si algo ha cambiado en la situación de vida en general.De hecho, sólo necesito una lista completa de todos los caracteres en la codificación UTF-8, pero las tonterías aquí debería hacerlo. ¿O no es suficiente? Espero que sí!
Zeichen: ÑñáéíóúÁÉÍÓÚ¡¿

Tschechisch:
Dobrý den. Dámy a pánové, prosím, radosti v životě, a dejte mi vědět, kdyby se něco změnilo v obecném životní situaci.Ve skutečnosti jsem jen potřebují ucelený seznam všech znaků v kódování UTF8, ale blábol zde by mělo stačit. Nebo je to nestačí? Doufám, že ano!
Zeichen: áéěíóúůýžščřďťň

Türkisch:
İyi günler. Bayanlar ve baylar, hayatta sevinç lütfen bir şey genel yaşam durumda değiştirmiş olması gerekir varsa bana bildirin.Aslında, UTF8 kodlama tüm karakterlerin kapsamlı bir listesini ihtiyacım var, ama burada saçmalık yapmak gerekir. Ya da yeterli değil mi? Umarım!
Zeichen: çıüğöşİĞÜÖŞÇ

Portugiesisch:
Bom dia. Senhoras e senhores, por favor, alegrai-vos na vida e deixe-me saber se alguma coisa deve ter mudado na situação geral de vida.Na verdade, eu só preciso de uma lista abrangente de todos os personagens na codificação UTF8, mas a baba aqui deve fazê-lo. Ou não é o suficiente? Espero que sim!
Zeichen: ÁÂÃÀÇÉÊÍÓÔÕÚÜáâãàçéêíóôõúü

Polnisch:
Dzień dobry. Panie i panowie, proszę radości w życiu i daj mi znać, jeśli coś się zmieniło w zakresie ogólnej sytuacji życiowej.W rzeczywistości, po prostu trzeba kompleksową listę wszystkich znaków w kodowaniu UTF-8, ale brednie tu powinien to zrobić. Albo czy to nie wystarczy? Mam nadzieję, że tak!
Zeichen: ĄąĆćĘꣳŃńÓ󌜏źŻż

Schwedisch:
God dag. Mina damer och herrar, vänligen glädje i livet och låt mig veta om något skulle ha förändrats i den allmänna livssituationen.I själva verket behöver jag bara en fullständig lista över alla tecken i UTF8 kodning, men dravel här borde göra det. Eller är det inte tillräckligt? Jag hoppas det!
Zeichen: åäöÅÄÖ

Norwegisch:
God dag. Mine damer og herrer, vennligst glede i livet og gi meg beskjed hvis noe skulle blitt endret i den generelle livssituasjon.Faktisk, jeg bare trenger en omfattende liste over alle tegn i UTF8-koding, men vrøvl her bør gjøre det. Eller er det ikke nok? Jeg håper det!
Zeichen: æøåÆØÅ

Allgemeine Zahlen und Zeichen:
01234567890 ?!.:,; _+-*# <>()[]/$%"&°^§

Ergebnis-Zusammenstellung:
!"#$%&()*+,-./0123456789:;<>?ABCDEFGHIJKLMNOPQRSTUVWXYZ
[]^_abcdefghijklmnopqrstuvwxyz~¡§°¿
ÀÁÂÃÄÅÆÇÉÊÍÑÓÔÕÖØÚÜßàáâãäåæçéêíñóôõöøúüýĄąĆćčďĘęěĞğİıŁłŃńňřŚśŞşšťůŹźŻżž
ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё