Seite 23 von 69

Re: Anti-Jammer-Thread

Verfasst: 29.08.2012, 00:43
von dot
kaiserludi hat geschrieben:
eXile hat geschrieben:Lüge, Lüge, alles Lüge! Wir sind das ganze Leben lang angelogen worden.

GIFs unterstützen sehr wohl mehr als 256 Farben.
Jetzt werden sie dich jagen, da du die Matrix durchschaut hast!
"As you can see, we've had our eye on you for..some time now..." 8-)

Re: Anti-Jammer-Thread

Verfasst: 30.08.2012, 22:00
von antisteo
Konstruktive Betatester, die uns Bugreports schreiben, ein motiviertes Team, das diese Bugs behebt und ein Projektleiter, der über seinen Schatten gesprungen ist und die Grafikengine noch mal angepackt hat.
(einzige Schattenseite: Ich arbeite Vollzeit an meinem Hobby-Projekt in den Ferien)

Re: Anti-Jammer-Thread

Verfasst: 31.08.2012, 11:23
von Krishty
Gamma-korrigiertes Dithering von 24-Bit-Texturen auf 16 Bits, fick ja! Wer braucht schon 32 Bits … Als Nächstes: Gamma-korrigierte Mip-Map-Erzeugung mit Lanczos und Berücksichtigung des Texturadressierungsmodus. Und sobald ich das alles verstanden und verifiziert habe, entsprechende BC1 (bzw. DXT1)-Kompression.

Re: Anti-Jammer-Thread

Verfasst: 31.08.2012, 16:23
von eXile
Krishty hat geschrieben:Gamma-korrigiertes Dithering von 24-Bit-Texturen auf 16 Bits, fick ja! Wer braucht schon 32 Bits …
Wird das irgendein komisches R5G6B5-Format wie in den guten alten Tagen?
Krishty hat geschrieben:Als Nächstes: Gamma-korrigierte Mip-Map-Erzeugung mit Lanczos und Berücksichtigung des Texturadressierungsmodus.
Lanczos bringt am meisten beim Upsampling; beim Downsampling würde ich ihn nur einsetzen, wenn du tatsächlich Aliasing-Artefakte kriegst.
Krishty hat geschrieben:Und sobald ich das alles verstanden und verifiziert habe, entsprechende BC1 (bzw. DXT1)-Kompression.
Jo, mach das. :)

Re: Anti-Jammer-Thread

Verfasst: 31.08.2012, 17:26
von Krishty
eXile hat geschrieben:
Krishty hat geschrieben:Gamma-korrigiertes Dithering von 24-Bit-Texturen auf 16 Bits, fick ja! Wer braucht schon 32 Bits …
Wird das irgendein komisches R5G6B5-Format wie in den guten alten Tagen?
Sogar ganz genau das (DXGI_FORMAT_B5G6R5_UNORM).
eXile hat geschrieben:
Krishty hat geschrieben:Als Nächstes: Gamma-korrigierte Mip-Map-Erzeugung mit Lanczos und Berücksichtigung des Texturadressierungsmodus.
Lanczos bringt am meisten beim Upsampling; beim Downsampling würde ich ihn nur einsetzen, wenn du tatsächlich Aliasing-Artefakte kriegst.
Was würdest du mir stattdessen empfehlen?

Re: Anti-Jammer-Thread

Verfasst: 31.08.2012, 17:36
von Krishty
Waaaaaaaaaaaartet. Warum gibt es von dem Format keine sRGB-Version? Will mich Microsoft total verarschen?!

Re: Anti-Jammer-Thread

Verfasst: 31.08.2012, 18:23
von Jörg
Aus der gles3 spec isses auch rausgeflogen...wahrscheinlich hat ein groesserer Hersteller Problemchen damit?
Gerade fuer geringe Bittiefen haette ich es als vorteilhaft gesehen.

Re: Anti-Jammer-Thread

Verfasst: 31.08.2012, 18:40
von Krishty
Steht irgendwo, ob bei DXT die sRGB-linear-Konvertierung vor oder nach der Endpunkt-Interpolation stattzufinden hat? Falls davor, müssen die Transistoren eh dasein.

Es gibt da sowieso einige Kuriositäten:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd607323 hat geschrieben:UNORM -> FLOAT
The starting n-bit value is converted to float (0.0f, 1.0f, 2.0f, etc.) and then divided by (2^n-1).
SRGB -> FLOAT
• Take the starting n-bit value, convert it a float (0.0f, 1.0f, 2.0f, etc.); call this c.
• c = c * (1.0f / (2^n-1))
WTF?!

Re: Anti-Jammer-Thread

Verfasst: 31.08.2012, 18:46
von dot
Afaik gab es zumindest früher mal Hardware, die die sRGB -> linear Konvertierung erst nach dem Texture Filtering gemacht hat, falls du das meinst. Dürfte zu D3D9 Zeiten wohl sogar ziemlich üblich gewesen sein. Wie es da heute aussieht, weiß ich nicht genau, NVIDIA macht es glaub ich seit der GeForce 8 richtig...

Re: Anti-Jammer-Thread

Verfasst: 31.08.2012, 19:27
von antisteo
Seit langer Zeit wieder mal parallelen Code geschrieben.
Irgendwann muss die Engine ja auch mit größeren Datenmengen klarkommen.
(Mein Threadmodell erinnert ein bisschen an ein NodeJS mit Multithreading... alles möglichst asynchron und Daten sind da, wenn sie da sind; keine (wartenden) Locks)

Re: Anti-Jammer-Thread

Verfasst: 01.09.2012, 15:19
von antisteo
Juhuu,

nachdem ein paar Race Conditions gefixt sind und keine OpenGL-Befehle wie glDeleteBuffer mehr in den Nebenthreads ausgeführt werden, läuft die Engine jetzt um Größenordnungen flüssiger.
Freepascal hat neben Prozedurvariablen (procedure(...), function(...):typ) auch schon fast an Closures erinnernde "procedure of object", mit denen sich prima komfortabel arbeiten lässt.

Statt

Code: Alles auswählen

MyFunction;
schreibt man jetzt

Code: Alles auswählen

threads.dispatch(@MyFunction);
und schon wird die Funktion im Kontext des aktuellen Objekts asynchron in einem anderen Thread ausgeführt.
Sollte das Objekt befreit werden, will man natürlich alle auf dieses Objekt bezogenen asynchronen Aufrufe abwürgen oder fertig rechnen lassen. Dazu gibts die Funktion waitfor(object, kickout).

Als einzige Sache habe ich den Marching Cubes in den Threadpool gesteckt und schon rechnen 2 Threads mit je 25% an der Aufgabe mit. Framerategewinn: 50-200%. Jetzt gibt es flüssig fließendes Wasser :)
Nächste Aufgabe: Heightmap->Voxelmap-Konverter parallelisieren. Das dürfte die Ladezeiten noch mal drastisch senken.

Re: Anti-Jammer-Thread

Verfasst: 02.09.2012, 14:06
von Schrompf
Wie man eine Funktion definiert, die ein Array von Elementen per Referenz zurück gibt.

Code: Alles auswählen

   
/// Gibt die Grenzpunkte des Sichtvolumens zurück. Funky, hm? Hab ich auch erst googeln müssen.
const TVektor (&GetGrenzPunkte() const)[AnzGrenzPunkte] { return mGrenzPunkte; }

Re: Anti-Jammer-Thread

Verfasst: 02.09.2012, 16:07
von eXile
Aber hatten wir das nicht gerade schon? – Bloß um zu vermeiden, dass du gleich, genauso wie ich, von CodingCat wegen Nichtbenutzung von typedef runtergeputzt wirst. :)

Re: Anti-Jammer-Thread

Verfasst: 02.09.2012, 16:55
von CodingCat
Runtergeputzt?! ;) typedef ist natürlich in Bezug auf Lesbarkeit die zu bevorzugende Alternative, je nach Kontext jedoch ggf. nicht ohne Weiteres möglich, z.B. wenn der Array-Typ unmittelbar von Template-Parametern der gerade definierten Funktion abhängt.

Code: Alles auswählen

typedef TVektor GrenzPunktArray[AnzGrenzPunkte];
const GrenzPunktArray& GetGrenzPunkte() const { return mGrenzPunkte; }
Zum Glück funktioniert das so ganz intuitiv. Ich war eben selbst überrascht, dass sich die const-ness auf die Array-Elemente überträgt, weil die volle Schreibweise TVektor (const &GrenzPunktArray)[AnzGrenzPunkte] meines Wissens nach eigentlich ein Syntaxfehler ist, richtig ist nur const TVektor (&GrenzPunktArray)[AnzGrenzPunkte]. Wieder ein Punkt, in dem sich der Array-Typkonstruktor vom Zeiger-Typkonstruktor unterscheidet.

Re: Anti-Jammer-Thread

Verfasst: 02.09.2012, 20:53
von Schrompf
Stimmt, Danke für die Hinweise. Hab's in einen typedef verpackt, liest sich jetzt viel besser.

Nebenbei: es hat mich verwundert, dass die Template Argument Deduction oder wie sie heißt dann die Größe des Arrays ableiten kann. Der Compiler ist doch schlauer, als ich manchmal vermute.

Code: Alles auswählen

/// Prüft das gegebene Punkte-Array
template <size_t Anzahl>
bool IstPunkteMengeDrin( const TVektor (&pPunkte)[Anzahl]) const
{
  for( size_t a = 0; a < AnzEbenen; ++a )
  {
    size_t anzahlAussen = 0;
    for( size_t b = 0; b < Anzahl; ++b )
      anzahlAussen += mEbenen[a].TestePunkt( pPunkte[b]) ? 1 : 0;

    if( anzahlAussen == Anzahl )
      return false;
  }
  return true;
}

Re: Anti-Jammer-Thread

Verfasst: 02.09.2012, 20:54
von Schrompf
Und noch was für den Anti-Jammer-Thread: Schrompf fährt die nächsten anderthalb Wochen ans Meeeeeeer. Kein Internet, kein Rechner, dafür Wellen, Strand, Freundin und ein paar dicke Bücher.

Re: Anti-Jammer-Thread

Verfasst: 03.09.2012, 09:59
von joggel
[Edit wegen dummes Bild...]
Glückwunsch! Schöne Erholung :)

Re: Anti-Jammer-Thread

Verfasst: 03.09.2012, 13:48
von BeRsErKeR
Schrompf hat geschrieben:Und noch was für den Anti-Jammer-Thread: Schrompf fährt die nächsten anderthalb Wochen ans Meeeeeeer. Kein Internet, kein Rechner, dafür Wellen, Strand, Freundin und ein paar dicke Bücher.
Das arktische Meer oder was warmes? :)

Re: Anti-Jammer-Thread

Verfasst: 03.09.2012, 13:50
von Matthias Gubisch
Die Punkte Strand und Freundin lassen denk ich auf was warmes schließen :P

Re: Anti-Jammer-Thread

Verfasst: 03.09.2012, 23:58
von Aramis
Na dann mal frohe Erholung :-)

Re: Anti-Jammer-Thread

Verfasst: 07.09.2012, 00:35
von CodingCat
There is a non-zero probability that some sequentially generated rays will receive the same hash value.
Für diesen Satz müsste ich nicht mal das entsprechende Paper referenzieren.

Re: Anti-Jammer-Thread

Verfasst: 07.09.2012, 10:23
von kimmi
Schrompf hat geschrieben:Und noch was für den Anti-Jammer-Thread: Schrompf fährt die nächsten anderthalb Wochen ans Meeeeeeer. Kein Internet, kein Rechner, dafür Wellen, Strand, Freundin und ein paar dicke Bücher.
Gute Erholung!

Gruß Kimmi

Re: Anti-Jammer-Thread

Verfasst: 08.09.2012, 14:40
von Chromanoid
CodingCat hat geschrieben:
There is a non-zero probability that some sequentially generated rays will receive the same hash value.
Für diesen Satz müsste ich nicht mal das entsprechende Paper referenzieren.
Im Bereich "räumliches" Hashing gibt es afaik einige Versuche "perfekte" Hashmechanismen zu nutzen (wenn man die Daten schon vorher kennt), vielleicht daher die Erläuterung. Ich bin vor Längerem mal über dieses Paper gestolpert http://research.microsoft.com/en-us/um/ ... cthash.pdf

Re: Anti-Jammer-Thread

Verfasst: 08.09.2012, 14:56
von CodingCat
In diesem Fall ging es einfach um das Zuweisen von Morton Codes im 5D Strahlenraum, um kohärente Strahlen anhand gleicher/ähnlicher Hashes identifizieren zu können. Was sie damit sagen wollten war eigentlich nur, dass direkt hintereinander erzeugte Strahlen oftmals auch Kohärenz aufweisen. Oftmals aber auch nicht, je nachdem, was für Strahlen man denn erzeugt.

Re: Anti-Jammer-Thread

Verfasst: 08.09.2012, 15:06
von Chromanoid
Ah verstehe :), also nicht den Mathekram ;), aber dass der Satz doch schon recht überflüssig ist ^^

Re: Anti-Jammer-Thread

Verfasst: 09.09.2012, 03:28
von CodingCat
Previous work is previous, future work is next.

Re: Anti-Jammer-Thread

Verfasst: 09.09.2012, 14:05
von CodingCat
Und nochmal exakt 100 ms weniger PLUS, viel wichtiger, Bounded Memory. Inspiriert von Bikker12. Wenn man das jetzt noch mit kompakten Strahlen und evtl. Bounded Queues mit DX 11.1 (oder DX 12? :-/) optimiert ...

Und wieder alles Benchmarken. Shit shit shit, wieso fällt mir das Beste immer zum Schluss ein ... obendrein dreht das das Ergebnis der ganzen Arbeit mal eben um 180° ...

Re: Anti-Jammer-Thread

Verfasst: 14.09.2012, 17:49
von Krishty
Artificial Mind auf Seite 37 hat geschrieben:
Krishty hat geschrieben:
Artificial Mind hat geschrieben:
BeRsErKeR hat geschrieben:Farben sind eh nur Projektionen deines Gehirns. Es steht nicht mal fest ob wir die gleiche Farbe (absolut gesehen) "sehen" wenn wir die gleiche Sache "betrachten". ;) Sie trägt halt nur den gleichen Namen.
Eigentlich steht das relativ gut fest. Die Zapfen in deinem Auge haben relativ klar definierte Frequenzspektren, auf die sie reagieren und der Aufbau des Auges ist bei den meisten Menschen gleich.
Was das Gehirn dann aus diesen RGB-Signalen macht, ist ihm natürlich freigestellt, aber ich finde "absolut gesehen" sehen wir gleich.
Ich habe letztens Joachim Bublaths Die neue Welt der Gene gelesen; und da stand drin, dass das Rotempfinden bei 25 % der männlichen Bevölkerung genetisch bedingt abweichen würde. Ich habe das Buch nicht hier; ich werde aber bis nächstes Wochenende versuchen, die Stelle wiederzufinden. Genau, wie das Geruchsempfinden für einen bestimmten Harnstoff in der Bevölkerung 50-50 verteilt ist, falls ich mich recht an mein Biologiebuch aus der 7. Klasse erinnere.

(Streng genommen gilt bei einem 3:1-Verhältnis immernoch bei den meisten gleich, so einfach sollte man es sich dann aber doch nicht machen.)
Ok das würde mich echt interessieren wenn du das findest.
Aber selbst wenn es bei 25% anders ist, dann gibt es eben zwei Genkonfigurationen, die das Rot-Empfinden steuern, aber es ist nicht so, dass es bei jedem irgendwie unterschiedlich sein könnte/ist.
Besser spät als nie:
http://www.deutsches-museum.de/fileadmin/Content/data/Insel/Information/KT/heftarchiv/1995/19-3-41.pdf hat geschrieben:Sorgfältige mikrospektrophotometrische Untersuchungen hatten Augenärzte in den 80er Jahren nämlich zu der Vermutung kommen lassen, daß es bei ihren Patienten nicht ein, sondern zwei langwellige Rezeptoren gab, die unterschiedliche Empfindlichkeiten für die Farbe Rot bewirkten. Und in der Tat:

Als die Genetiker nachforschten, ob diesem zweiten langwelligen Rezeptor auch ein zweites langwelliges Gen zugeordnet werden kann, wurden sie rasch fündig. Es stellte sich heraus, daß der entscheidende Unterschied zwischen den Genen und den dazugehörigen Rezeptoren auf einen einzigen Baustein zurückzuführen ist, und zwar auf den Baustein Nr. 180 im Rezeptor.

62 Prozent der untersuchten Patienten beziehungsweise Probanden verfügen hier über ein Molekül, das die Biochemiker Serin nennen, und 38 Prozent tragen das Molekül Alanin an dieser Stelle. Wer ein langwelliges Gen besitzt, das an der 180. Stelle des langwelligen Rezeptors Serin (und nicht Alanin) aufweist, zeigt eine höhere Empfindlichkeit für die Farbe, die gewöhnlich als Rot gekennzeichnet wird.

Re: Anti-Jammer-Thread

Verfasst: 14.09.2012, 23:08
von Andre
Black Mesa wurde endlich released!

http://release.blackmesasource.com/

Half-life <3

Re: Anti-Jammer-Thread

Verfasst: 14.09.2012, 23:55
von CodingCat
Bachelorarbeit gerade noch fertig bekommen. Jetzt darf ich wieder implementieren. ;)

(Ich weiß noch nicht, wie es mit Veröffentlichen aussieht, bei Interesse einfach PM ...)