"As you can see, we've had our eye on you for..some time now..." 8-)kaiserludi hat geschrieben:Jetzt werden sie dich jagen, da du die Matrix durchschaut hast!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.
Anti-Jammer-Thread
- dot
- Establishment
- Beiträge: 1734
- Registriert: 06.03.2004, 18:10
- Echter Name: Michael Kenzel
- Kontaktdaten:
Re: Anti-Jammer-Thread
Re: Anti-Jammer-Thread
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)
(einzige Schattenseite: Ich arbeite Vollzeit an meinem Hobby-Projekt in den Ferien)
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
- Krishty
- Establishment
- Beiträge: 8268
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Anti-Jammer-Thread
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
Wird das irgendein komisches R5G6B5-Format wie in den guten alten Tagen?Krishty hat geschrieben:Gamma-korrigiertes Dithering von 24-Bit-Texturen auf 16 Bits, fick ja! Wer braucht schon 32 Bits …
Lanczos bringt am meisten beim Upsampling; beim Downsampling würde ich ihn nur einsetzen, wenn du tatsächlich Aliasing-Artefakte kriegst.Krishty hat geschrieben:Als Nächstes: Gamma-korrigierte Mip-Map-Erzeugung mit Lanczos und Berücksichtigung des Texturadressierungsmodus.
Jo, mach das. :)Krishty hat geschrieben:Und sobald ich das alles verstanden und verifiziert habe, entsprechende BC1 (bzw. DXT1)-Kompression.
- Krishty
- Establishment
- Beiträge: 8268
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Anti-Jammer-Thread
Sogar ganz genau das (DXGI_FORMAT_B5G6R5_UNORM).eXile hat geschrieben:Wird das irgendein komisches R5G6B5-Format wie in den guten alten Tagen?Krishty hat geschrieben:Gamma-korrigiertes Dithering von 24-Bit-Texturen auf 16 Bits, fick ja! Wer braucht schon 32 Bits …
Was würdest du mir stattdessen empfehlen?eXile hat geschrieben:Lanczos bringt am meisten beim Upsampling; beim Downsampling würde ich ihn nur einsetzen, wenn du tatsächlich Aliasing-Artefakte kriegst.Krishty hat geschrieben:Als Nächstes: Gamma-korrigierte Mip-Map-Erzeugung mit Lanczos und Berücksichtigung des Texturadressierungsmodus.
- Krishty
- Establishment
- Beiträge: 8268
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Anti-Jammer-Thread
Waaaaaaaaaaaartet. Warum gibt es von dem Format keine sRGB-Version? Will mich Microsoft total verarschen?!
Re: Anti-Jammer-Thread
Aus der gles3 spec isses auch rausgeflogen...wahrscheinlich hat ein groesserer Hersteller Problemchen damit?
Gerade fuer geringe Bittiefen haette ich es als vorteilhaft gesehen.
Gerade fuer geringe Bittiefen haette ich es als vorteilhaft gesehen.
- Krishty
- Establishment
- Beiträge: 8268
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Anti-Jammer-Thread
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:
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).
WTF?!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))
Zuletzt geändert von Krishty am 31.08.2012, 18:47, insgesamt 1-mal geändert.
- dot
- Establishment
- Beiträge: 1734
- Registriert: 06.03.2004, 18:10
- Echter Name: Michael Kenzel
- Kontaktdaten:
Re: Anti-Jammer-Thread
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
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)
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)
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
Re: Anti-Jammer-Thread
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 schreibt man jetzt 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.
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;
Code: Alles auswählen
threads.dispatch(@MyFunction);
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.
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
- Schrompf
- Moderator
- Beiträge: 4884
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas Ziegenhagen
- Wohnort: Dresden
- Kontaktdaten:
Re: Anti-Jammer-Thread
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; }
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Re: Anti-Jammer-Thread
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. :)
- CodingCat
- Establishment
- Beiträge: 1857
- Registriert: 02.03.2009, 21:25
- Wohnort: Student @ KIT
- Kontaktdaten:
Re: Anti-Jammer-Thread
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.
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.
Code: Alles auswählen
typedef TVektor GrenzPunktArray[AnzGrenzPunkte];
const GrenzPunktArray& GetGrenzPunkte() const { return mGrenzPunkte; }
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
- Schrompf
- Moderator
- Beiträge: 4884
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas Ziegenhagen
- Wohnort: Dresden
- Kontaktdaten:
Re: Anti-Jammer-Thread
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.
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;
}
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
- Schrompf
- Moderator
- Beiträge: 4884
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas Ziegenhagen
- Wohnort: Dresden
- Kontaktdaten:
Re: Anti-Jammer-Thread
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.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Re: Anti-Jammer-Thread
Das arktische Meer oder was warmes? :)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.
Ohne Input kein Output.
-
- Establishment
- Beiträge: 472
- Registriert: 01.03.2009, 19:09
Re: Anti-Jammer-Thread
Die Punkte Strand und Freundin lassen denk ich auf was warmes schließen :P
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben
- Aramis
- Moderator
- Beiträge: 1458
- Registriert: 25.02.2009, 19:50
- Echter Name: Alexander Gessler
- Wohnort: 2016
- Kontaktdaten:
Re: Anti-Jammer-Thread
Na dann mal frohe Erholung :-)
- CodingCat
- Establishment
- Beiträge: 1857
- Registriert: 02.03.2009, 21:25
- Wohnort: Student @ KIT
- Kontaktdaten:
Re: Anti-Jammer-Thread
Für diesen Satz müsste ich nicht mal das entsprechende Paper referenzieren.There is a non-zero probability that some sequentially generated rays will receive the same hash value.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
- kimmi
- Moderator
- Beiträge: 1405
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: Anti-Jammer-Thread
Gute Erholung!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.
Gruß Kimmi
- Chromanoid
- Moderator
- Beiträge: 4263
- Registriert: 16.10.2002, 19:39
- Echter Name: Christian Kulenkampff
- Wohnort: Lüneburg
Re: Anti-Jammer-Thread
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.pdfCodingCat hat geschrieben:Für diesen Satz müsste ich nicht mal das entsprechende Paper referenzieren.There is a non-zero probability that some sequentially generated rays will receive the same hash value.
- CodingCat
- Establishment
- Beiträge: 1857
- Registriert: 02.03.2009, 21:25
- Wohnort: Student @ KIT
- Kontaktdaten:
Re: Anti-Jammer-Thread
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.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
- Chromanoid
- Moderator
- Beiträge: 4263
- Registriert: 16.10.2002, 19:39
- Echter Name: Christian Kulenkampff
- Wohnort: Lüneburg
Re: Anti-Jammer-Thread
Ah verstehe :), also nicht den Mathekram ;), aber dass der Satz doch schon recht überflüssig ist ^^
- CodingCat
- Establishment
- Beiträge: 1857
- Registriert: 02.03.2009, 21:25
- Wohnort: Student @ KIT
- Kontaktdaten:
Re: Anti-Jammer-Thread
Previous work is previous, future work is next.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
- CodingCat
- Establishment
- Beiträge: 1857
- Registriert: 02.03.2009, 21:25
- Wohnort: Student @ KIT
- Kontaktdaten:
Re: Anti-Jammer-Thread
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° ...
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° ...
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
- Krishty
- Establishment
- Beiträge: 8268
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Anti-Jammer-Thread
Besser spät als nie:Artificial Mind auf Seite 37 hat geschrieben:Ok das würde mich echt interessieren wenn du das findest.Krishty hat geschrieben: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.Artificial Mind hat geschrieben: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.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.
Was das Gehirn dann aus diesen RGB-Signalen macht, ist ihm natürlich freigestellt, aber ich finde "absolut gesehen" sehen wir gleich.
(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.)
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.
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.
- CodingCat
- Establishment
- Beiträge: 1857
- Registriert: 02.03.2009, 21:25
- Wohnort: Student @ KIT
- Kontaktdaten:
Re: Anti-Jammer-Thread
Bachelorarbeit gerade noch fertig bekommen. Jetzt darf ich wieder implementieren. ;)
(Ich weiß noch nicht, wie es mit Veröffentlichen aussieht, bei Interesse einfach PM ...)
(Ich weiß noch nicht, wie es mit Veröffentlichen aussieht, bei Interesse einfach PM ...)
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite