Seite 34 von 74

Re: Anti-Jammer-Thread

Verfasst: 20.05.2013, 22:34
von antisteo
TDK hat geschrieben:Ich bin so stolz auf mich, was mein neuer Speichermanager alles ermöglicht.

Anstatt mir dauernd temporäre Dateien anlegen zu lassen, um wegwerf-Müll zwischenzuspeichern, habe ich mir nun eine Klasse memory_file entwickelt, die das alles auch im RAM regeln kann. Das System ist sogar so erweitert, dass ich auch gleich eine Datei von der Platte lesen kann bzw. speichern kann. Endlich habe ich eine Klasse für alles! Danke Gott, der mir Hirn verschafft hat.
Dazu gibt es aber schon Memory Mapping und sonstige Mechanismen des Betriebssystems. Wenn du nicht gerade vor einem Win 3.11 im Real Mode sitzt, sollte das auch für dein Betriebssystem verfügbar sein.

Re: Anti-Jammer-Thread

Verfasst: 22.05.2013, 00:39
von Jonathan
Krishty hat geschrieben:Wow; Turnitin.com indiziert ZFX.

Vielleicht sollten wir uns langsam überlegen, unter welcher Lizenz der Inhalt dieser Seite zur Verfügung gestellt wird – was ich hier schreibe, veröffentliche ich grundsätzlich gemeinfrei und sporne Kopien an. Also nicht, dass mal jemand auf den Deckel bekommt, weil er Quelltext aus meinen Jammer-Beiträgen kopiert hat …
Ich sehe es schon kommen, dass in 2 Jahren irgendjemand hier aus dem Forum gefeuert wird, weil er seinen eigenen Code, den er irgendwann mal unter einem Pseudonym hier veröffentlicht hat, für irgendetwas benutzt hat, was dann als Plagiat abgestempelt wird...

Andererseits: Wenn man korrekt gearbeitet hat, wird man das im Zweifelsfalle auch ganz gut belegen können - vielleicht muss man nicht vor jeder neuen Technik Angst haben.

Re: Anti-Jammer-Thread

Verfasst: 22.05.2013, 19:05
von Krishty
Windows 8 bietet in allen Editionen einen virtuellen Adressraum von 128 GiB. Windows 7 Home Premium bot nur 16 GiB (die fettesten Ausführungen boten auch 192 GiB; nun 512). Memory-map ALL files!!!

Re: Anti-Jammer-Thread

Verfasst: 24.05.2013, 12:21
von Schrompf
Ich habe gerade den letzten Feinschliff am Splatter-Abspann angebracht. Gibt immernoch unendlich viel zu tun, aber so langsam kommt alles zusammen.

Ich habe am Ende übrigens auf zfx.info verwiesen, falls jemand "Interesse an der technischen Seite der Spielentwicklung" hat. Weil ich euch alle so lieb hab. Und euch ganz ehrlich für weiterempfehlenswert halte.

Re: Anti-Jammer-Thread

Verfasst: 28.05.2013, 21:10
von Artificial Mind
[youtube]Irf-HJ4fBls[/youtube]
Es ist wieder diese Zeit des Jahres :) (Anti-Jammer wegen Unterhaltungswert ;) )

Re: Anti-Jammer-Thread

Verfasst: 28.05.2013, 21:27
von joggel
Die meinen das wirklich ernst.
Die waren auch letztes Jahr auf der Intergeo und hatten dort einen Stand...

Re: Anti-Jammer-Thread

Verfasst: 28.05.2013, 21:47
von Schrompf
Nunja, für Point Clouds wären sie mit ihrer Technologie ja wirklich geeignet. Wirklich große Datenmengen, alles schön statisch, keinerlei weiterführendes Shading notwendig. Der ganze Rest ist durchaus denkbar - ein schlaues Indexing ist dann alles, was Du brauchst.

Re: Anti-Jammer-Thread

Verfasst: 28.05.2013, 21:52
von Alexander Kornrumpf
Schrompf hat geschrieben:Nunja, für Point Clouds wären sie mit ihrer Technologie ja wirklich geeignet. Wirklich große Datenmengen, alles schön statisch, keinerlei weiterführendes Shading notwendig. Der ganze Rest ist durchaus denkbar - ein schlaues Indexing ist dann alles, was Du brauchst.
Wenn es ein Scam wäre, würde es ja ziemlich schnell auffliegen sobald sie ein Produkt in der realen Welt verkaufen.

Re: Anti-Jammer-Thread

Verfasst: 28.05.2013, 21:59
von joggel
Ich kann mir auch schwer vorstellen aus einer beliebigen Punktwolke, komplexe Geometrie (also Polygone) zu generieren. Mit einer zusätzlichen nachbearbeitung oder so etwas wäre das vlt. möglich. Dann könnte man vlt. aus einer Punktwolke solche Grafiken generieren, wie diese Insel, aus den ersten Videos.... halt mit cleveren Indexing oder ähnlichem...

Re: Anti-Jammer-Thread

Verfasst: 28.05.2013, 22:06
von Chromanoid
Muss ne ziemlich coole Indexstruktur sein, wenn das wirklich so funktioniert. Mmh das mit dem schnell über Netzwerk Laden lässt mich an Bloomfilter denken.

Re: Anti-Jammer-Thread

Verfasst: 28.05.2013, 22:31
von dot
Ich glaub, wie schon damals, als die ihr erstes Video rausgebracht haben, gesagt, dass diese clevere Indexstruktur dem Rest der Welt als "Sparse Voxel Octree" bekannt ist und dass die kaum was anderes machen, als Beamtracing in den Octree. Nun haben sie ihre perfekte Nische gefunden; an Arroganz könnten sie wohl immer noch etwas zurückdrehen, aber ist ja zumindest schonmal viel besser als noch vor ein paar Jahren...

Re: Anti-Jammer-Thread

Verfasst: 28.05.2013, 22:54
von antisteo
Könnte man nicht einfach herausfinden, was ihre Indexstruktur ist, indem man einen Renderer schreibt, der exakt diese Artifakte wie im Video erzeugt? Dann sieht man ja, was davon Fake ist und wie hoch der Preis für die flüssige Darstellung ist.

Re: Anti-Jammer-Thread

Verfasst: 28.05.2013, 23:02
von Chromanoid
Könnte man nicht einen Sparse Voxel Octree mit einem Bloomfilter (bzw. mehreren) kombinieren um Pfaddurchwanderungen im Vorhinein zu filtern, das müsste doch recht gut funktionieren um einen Großteil der Abfragen, die durch leeren Raum gehen auszuschließen.

Ah hier steht was ich meine (3D Abfragen per Bloomfilter lösen, nicht die o.g. Kombination): http://www.cse.buffalo.edu/~jcorso/pubs ... _bloom.pdf

Re: Anti-Jammer-Thread

Verfasst: 29.05.2013, 10:05
von antisteo
Könnte es sein, dass die für jede mögliche Betrachtungsposition gecachet haben, in welcher Entfernung das erste sichtbare Hindernis für jede Sichtrichtung erscheint?

Re: Anti-Jammer-Thread

Verfasst: 29.05.2013, 13:24
von Chromanoid
Ich glaube das würde dann aber einen immensen Anstieg der Datenmenge bedeuten...

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.