Seite 6 von 254

Re: Jammer-Thread

Verfasst: 25.06.2010, 14:21
von Schrompf
Nun, grundsätzlich finde ich die DX10-API auch im Längen konsequenter und angenehmer. Ich teile nur Deine intensive Abneigung gegen DX9 nicht. Ich mag auch nicht die Hälfte meiner Zielgruppe einbüßen und bleibe daher bei DX9. Vorerst :-)

Aber mal nebenbei gefragt: arbeitest Du gerade für Deinen Wettbewerbsbeitrag mit DX9?

Re: Jammer-Thread

Verfasst: 25.06.2010, 14:25
von Zudomon
Schrompf hat geschrieben:Aber mal nebenbei gefragt: arbeitest Du gerade für Deinen Wettbewerbsbeitrag mit DX9?
Haha... jetzt haste ihn bestimmt voll erwischt... bist du denn auch fleißig dabei?

Re: Jammer-Thread

Verfasst: 25.06.2010, 14:29
von Krishty
Naja, nach Steam-Hardware-Survey haben 62 % D3D10 und 33 % D3D9 – eher ein Drittel deiner Zielgruppe … also mach dir nicht zu spät Gedanken ;)
Schrompf hat geschrieben:Aber mal nebenbei gefragt: arbeitest Du gerade für Deinen Wettbewerbsbeitrag mit DX9?
Exakt. Wenn die Vorgabe ein Vista-Rechner mit D3D9-Hardware gewesen wäre, hätte ich D3D11 im Techlevel-9-Modus gefahren, dafür mein Framework benutzen können und wäre nun schon fast fertig. Aber so hänge ich nach einer Woche immernoch an den Caps fest.

Re: Jammer-Thread

Verfasst: 25.06.2010, 15:09
von Schrompf
@Zudomon: Ja, ich bin fleißig dabei, soweit es die Zeit zulässt. Allerdings mit ein paar versteckten Trümpfen :-) Und unter Benutzung unseres hauseigenen Frameworks, dass sich bislang größtenteils sehr gut der Aufgabe gewachsen zeigt.

@Krishty: Ich würde eben jenes Framework auch stressfrei mit Dir teilen, aber ich vermute, es genügt Deinen Anforderungen nicht. Und ich persönlich hätte auf die Anforderungen hier geschissen, wenn sie ein derartiges Hindernis darstellen. Unser Beitrag wird z.B. die 10MB-Downloadgrößen-Begrenzung sprengen... wie schlimm das zu bewerten ist, überlasse ich dann halt den Zuschauern, aber aufhalten tut mich das nicht.

Du hast übrigens Recht: meine "50%-Verlust"-Angabe ist inzwischen veraltet, sehe ich gerade. Wenn nicht ein paar Leute aus unserem Team dazu gehören würden... und wenn ich soviel Zeit für eine komplette Restrukturierung hätte... dann wär das doch toll! Ist es aber nicht.

Re: Jammer-Thread

Verfasst: 25.06.2010, 15:31
von Krishty
Schrompf hat geschrieben:@Krishty: Ich würde eben jenes Framework auch stressfrei mit Dir teilen, aber ich vermute, es genügt Deinen Anforderungen nicht.
„Es genügt meinen Anforderungen nicht“ im Sinne von „ich bin zu stolz, Hilfe anzunehmen“ ;)
Schrompf hat geschrieben:Und ich persönlich hätte auf die Anforderungen hier geschissen, wenn sie ein derartiges Hindernis darstellen. Unser Beitrag wird z.B. die 10MB-Downloadgrößen-Begrenzung sprengen... wie schlimm das zu bewerten ist, überlasse ich dann halt den Zuschauern, aber aufhalten tut mich das nicht.
Nein, so will ich das nicht machen … was einen nicht umbringt macht einen nur härter. Solange ich meine Wut über D3D9 hier abreagieren kann, muss ich es nicht im Beitrag tun, indem ich auf die Regeln pfeife.

Re: Jammer-Thread

Verfasst: 25.06.2010, 15:45
von Schrompf
Krishty hat geschrieben:
Schrompf hat geschrieben:@Krishty: Ich würde eben jenes Framework auch stressfrei mit Dir teilen, aber ich vermute, es genügt Deinen Anforderungen nicht.
„Es genügt meinen Anforderungen nicht“ im Sinne von „ich bin zu stolz, Hilfe anzunehmen“ ;)
Nein, eher "Es erreicht bei weitem nicht die Perfektion in Sache Code-Qualität, die Du sonst anzustreben scheinst.". :-)

Re: Jammer-Thread

Verfasst: 26.06.2010, 14:56
von Krishty
Warum kriegt es kaum jemand gebacken, eine vernünftige BMP zu schreiben? Dass BITMAPFILEHEADER::bfSize bei den meisten Programmen falsch ist, ist ja noch zu verschmerzen. Dass aber so eindeutig definierte Konstanten wie BITMAPINFOHEADER::biSize von Gimp und Photoshop verhauen werden macht es einem wirklich schwer, die Programme noch ernst zu nehmen … warum nicht gleich eine falsche Magic Number schreiben …

Re: Jammer-Thread

Verfasst: 26.06.2010, 15:12
von Aramis
Die BMP–Dokumentation ist selber das exakte Gegenteil einer sauberen Spezifikation – tausende unnuetze Features und Felder, deren Bedeutung im Nirvana verschwunden ist, oder nur von Windows irgendwo intern gebraucht werden.

Was erwartest du da eigentlich? :-)

Re: Jammer-Thread

Verfasst: 26.06.2010, 15:20
von Krishty
Stimmt. Aber wenn in der Spezifikation steht, das Feld habe immer mit 40 anzufangen, muss man doch schon arg was missverstehen, um da 56 hinzuschreiben … ist doch wirklich keine Rocket Science …

Edit: Welcher Schwachsinnige ist eigentlich dafür verantwortlich, dass wir in den letzten Jahrzehnten nur BGR benutzt haben? Welche Niete war danach noch so blöd, den Alpha-Kanal hinten dran zu klemmen? Und was haben die sich dann noch dabei gedacht, das im D3DFORMAT „ARGB“ statt „BGRA“ zu nennen?!? Das kann doch nur böse Absicht sein, oder?!? Genau wegen sowas hasse ich D3D9 …

Edit II: Wirklich schade, dass D3D9 unter XP keine 1-Bit-Texturen unterstützt. Gerade von einer API, die noch aus der „guten alten Zeit“ entstanden ist, hätte ich Unterstützung effizienter Formate erwartet … in D3D10 kann man durch die komplette Anwendung hindurch, angefangen bei Vertices und aufgehört bei Lookup-Tables, 25 bis 50 % Bandbreite sparen einfach weil es effizientere Formate (mit 1, 4 oder 8 Bits in brauchbaren Kombinationen) gibt (in D3D9 kann man auch 8- oder 16-Bit-Komponenten für Vertices definieren, aber steht dann wieder vor der Kompatibilitätskeule. Und an bitweises Entpacken von Vertexkomponenten kommt es nicht ran). D3D9 hatte über seine Lebenszeit scheinbar doppelt soviele Formate wie DXGI – die waren aber wohl zum Großteil nicht nur überflüssig sondern auch furchtbar ineffizient. Uuuuh, D3D10 unterstützt kein treibergesteuertes AAA … dafür kann es acht mal soviele Pixel in eine gleich große Alphamap packen …

Re: Jammer-Thread

Verfasst: 27.06.2010, 02:15
von Seraph
Du musst viel ruhiger werden und das alles etwas lockerer sehen. ;)

Re: Jammer-Thread

Verfasst: 27.06.2010, 02:29
von Krishty
Wie, bin ich etwa nicht ruhig? Dann warte noch ein paar Wochen, bis der Druck bei der Action wirklich ins Unermessliche steigt und alles, was selbst ich selber im Moment noch als Belanglosigkeit abtue, zu einem Kardinalproblem hochstilisiert wird. Dieser Thread steht bei mir jetzt sowieso unter am meisten aktiv in – und gemäß „ist der Ruf erst ruiniert, lebt es sich ganz ungeniert“ wird er dann auch ordentlich vollgeschaufelt. Das hier wird das reinste Geplänkel dagegen sein. Ihr könntet mir eigentlich auch einen Mecker-Feed mit Alterskontrolle einrichten, den ich dann minütlich vollfluche …

Die letzten beiden Stunden hatte ich wieder mit was feinem zu tun: Kompiliert man mehr als eine Quelldatei, treten plötzlich ganz neue Linkerfehler auf als bei einer einzigen! Doppelt definierte Symbole, die sich nur dadurch beheben lassen, dass man sie ein drittes Mal definiert(!). Irgendwer hat da seinen Job nicht getan … aber genau, wenn man in der Klemme sitzt, die Logik versagt und Analysen nichts mehr bringen, geht man es ruhig an. Steckt uns ja schon seit Jahrmillionen in den Genen mit Fluchtreflex, Panikreaktion und Nervenzusammenbruch.

Re: Jammer-Thread

Verfasst: 27.06.2010, 02:35
von Aramis
Ihr könntet mir eigentlich auch einen Mecker-Feed mit Alterskontrolle einrichten, den ich dann minütlich vollfluche …
Ich kann dir einen Twitter-Account einrichten. Interesse? :-)

Re: Jammer-Thread

Verfasst: 27.06.2010, 02:41
von Krishty
Aramis hat geschrieben:Ich kann dir einen Twitter-Account einrichten. Interesse? :-)
Sobald ich sowas in die Hände kriege, maule ich nicht mehr nur über die Idiotie in der Programmierung, sondern breche auch alles über Social Media und Web 2.0 aus, was im Moment noch still in mir vor sich hinrottet … dann komme ich ja zu garnichts mehr :(

Re: Jammer-Thread

Verfasst: 28.06.2010, 21:36
von Jörg
Warum macht es C++ einem so schwer? :

Code: Alles auswählen

struct A {
	float x[4];
	float y;
};

template<unsigned long long int x> struct T {
	static void f() {;}
};

void g() {
	T<(unsigned long long)&(((A*)0)->y)>::f();
	T<(unsigned long long)(((A*)0)->x)>::f();
}
Comeau bockt, VC schluckt die Haelfte, g++ mags auch net.
Wie kann man das umgehen?

Re: Jammer-Thread

Verfasst: 28.06.2010, 22:12
von Lord Delvin
Jörg hat geschrieben:Warum macht es C++ einem so schwer? :

Code: Alles auswählen

struct A {
	float x[4];
	float y;
};

template<unsigned long long int x> struct T {
	static void f() {;}
};

void g() {
	T<(unsigned long long)&(((A*)0)->y)>::f();
	T<(unsigned long long)(((A*)0)->x)>::f();
}
Comeau bockt, VC schluckt die Haelfte, g++ mags auch net.
Wie kann man das umgehen?
Sieht so aus, als wüsstest du entweder nicht genau, was du schreiben willst oder du machst es dir unnötig schwer. Sind irgendwie viel zu viele Klammern.

Re: Jammer-Thread

Verfasst: 28.06.2010, 22:22
von CodingCat
Jörg hat geschrieben:Warum macht es C++ einem so schwer? :

Code: Alles auswählen

struct A {
	float x[4];
	float y;
};

template<unsigned long long int x> struct T {
	static void f() {;}
};

void g() {
	T<(unsigned long long)&(((A*)0)->y)>::f();
	T<(unsigned long long)(((A*)0)->x)>::f();
}
Comeau bockt, VC schluckt die Haelfte, g++ mags auch net.
Wie kann man das umgehen?
"Lösung": (das schluckt VS :P)

Code: Alles auswählen

T<(unsigned long long)&(((A*)0)->x)>::f();
Richtige Lösung:

Code: Alles auswählen

T<offsetof(A, y)>::f();
T<offsetof(A, x)>::f();
offsetof kannte ich bis eben auch nicht, wurde von jokester in #sppro vorgeschlagen. ;-)

Re: Jammer-Thread

Verfasst: 28.06.2010, 22:30
von Aramis
Achtung: offsetof ist in C++ nur definiert fuer standard-layout classes:
isocpp0xdraft 18.2.4 hat geschrieben: The macro offsetof(type, member-designator) accepts a restricted set of type arguments in this International
Standard. If type is not a standard-layout class (Clause 9), the results are undefined
isocpp0xdraft 9.9 hat geschrieben: A standard-layout class is a class that:
— has no non-static data members of type non-standard-layout class (or array of such types) or reference,
— has no virtual functions (10.3) and no virtual base classes (10.1),
— has the same access control (Clause 11) for all non-static data members,
— has no non-standard-layout base classes,
— either has no non-static data members in the most-derived class and at most one base class with
non-static data members, or has no base classes with non-static data members, and
— has no base classes of the same type as the first non-static data member.10
Der &((T*)0)->x–Trick ist sowieso UB. Ich meine allerdings mal irgendwo gelesen zu haben dass die meisten Compiler ihn akzeptieren und sicherstellen dass das Ergebnis brauchbar ist, eben weil er so bekannt ist. Er steckt natuerlich auch im Normalfall hinter offsetof :-)

Re: Jammer-Thread

Verfasst: 29.06.2010, 07:21
von Jörg
Cool, ich wusste nicht, dass offsetof den Weg in den Standard gefunden hat. Kannte das nur als Macro mit eben jenen casts.
Aber leider hab' ich da im Konkreten auch noch virtuelle Funktionen drin. So ein Mist auch, dass genau das als undefiniert zaehlt.
Muss ich wohl alles Relevante in eine struct {} abkapseln, dann bleibt es konform.

Danke fuer's Ausgraben!!!

Re: Jammer-Thread

Verfasst: 01.07.2010, 21:59
von Krishty
MSPaint ist geradezu kriminell buggy, sobald man keine 24-Bits benutzt. Ich meine damit: Es wird eure Bilder zerstören. Allein das ständige BitTiefen-Geraffel halbiert meine Arbeitsleistung …

Zum würgen.

Re: Jammer-Thread

Verfasst: 01.07.2010, 23:12
von Chromanoid
paint.net ist zu empfehlen :)

Re: Jammer-Thread

Verfasst: 01.07.2010, 23:44
von Krishty
Leider nicht – Paint ist bei 24-Bit-Bitmaps zwar extrem buggy, aber Paint.NET unterstützt sie schlicht und einfach überhaupt nicht.

Ich benutze es aber sporadisch für Farbkorrekturen und Dithering, als gute Ergänzung zu Gimp (bei dem übrigens das Noise-Tool nicht gammakorrekt arbeitet und 32-Bit-Bitmaps ebenfalls beim wiederholten Speichern mucken).

Re: Jammer-Thread

Verfasst: 02.07.2010, 00:35
von Chromanoid
du immer mit deinen spezialfällen ;P

Re: Jammer-Thread

Verfasst: 02.07.2010, 01:13
von Krishty
1-, 8- und 32-Bit-Bitmaps sind die einzigen Formate, die für die Grafikprogrammierung einigermaßen relevant sind … und es sind zugleich ganz genau die Formate, die am wenigsten von Software unterstützt werden … wirklich zum heulen.

Immerhin defaultet Paint unter Windows 7 zu PNG. Vielleicht ist die Welt der Grafikformate ja dann in 20 Jahren eine bessere … naja, jemand, der BMPs rumschiebt, sollte vielleicht nicht mit Idealismus anfangen.

Re: Jammer-Thread

Verfasst: 02.07.2010, 08:13
von Schrompf
Paint.Net arbeitet bei uns hier prächtig im 32Bit-Modus. Man kann zwar nicht ganz so gezielt den Alphakanal bearbeiten wie bei dem seligen IconXP damals, aber man hat doch erstaunlich viel Kontrolle, ohne irgendwas mit Ebenen anzufangen. Man muss nur bei den Zeichenmodi jedes Werkzeugs immer den Modus auf "Ersetzen" oder so setzen - im Standardmodus interpretiert er den Alphakanal nur als Auftrageintensität.

Re: Jammer-Thread

Verfasst: 02.07.2010, 14:29
von Krishty
Ich kann nur in 24 oder 8 bpp speichern, nicht in 32. Versuche ich, eine 32-bpp-BMP zu öffnen, erscheint „Fehler beim Öffnen der Datei“. Benutze das aktuelle Paint.NET 3.5.5. Ihr arbeitet sicher mit PNG oder DDS, oder?

Re: Jammer-Thread

Verfasst: 02.07.2010, 15:04
von Schrompf
Exakt, PNG und DDS. Du kannst wie gesagt auch den Load/Save-Code dafür kriegen, wenn Du magst. Aber der ist bei PNG halt nicht so schön zu isolieren, weil man halt die zlib dazu braucht.

Re: Jammer-Thread

Verfasst: 02.07.2010, 15:22
von Krishty
Danke, aber Code ist nicht das Problem. Für PNG habe ich schon exzellenten Code, das Format ist aber für die Action zu unwirtschaftlich. DDS könnte tatsächlich eine Option sein … aber nur, falls ich ein Programm finde, was sie in 1 bpp speichern kann. Ansonten muss ich bei BMP bleiben.

Re: Jammer-Thread

Verfasst: 02.07.2010, 15:28
von Schrompf
Ahso. Na denn viel Erfolg noch.

PS: DDS kann alle Formate, die auch DX9-Grafikkarten verarbeiten können. 1Bit-Formate gehören da nicht dazu, soweit ich weiß. Das Minium ist DXT1 mit 4Bit pro Pixel. Oder Du zauberst halt selbst ein Format mit Bitschieberei im Shader.

Re: Jammer-Thread

Verfasst: 02.07.2010, 15:31
von Krishty
Schrompf hat geschrieben:PS: DDS kann alle Formate, die auch DX9-Grafikkarten verarbeiten können. 1Bit-Formate gehören da nicht dazu, soweit ich weiß. Das Minium ist DXT1 mit 4Bit pro Pixel.
Das habe ich befürchtet -.-
Schrompf hat geschrieben:Oder Du zauberst halt selbst ein Format mit Bitschieberei im Shader.
Geht wegen Texturfilterung und SM 2.0 nicht.

Re: Jammer-Thread

Verfasst: 02.07.2010, 15:45
von Schrompf
Naja, Du könntest zwei Farbkomponenten separat benutzen. Damit kämst Du mit DXT1 dann auf zwei Bit pro Datum.