Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Weil ich mir mal ein wenig die WPF anschauen wollte hab ich eines meiner kleinen Tools etwas aufgepeppt und denke dass es für den ein oder anderen ebenfalls sehr nützlich sein könnte, darum will ich es hier kurz vorstellen.
Wer mit Shadern arbeitet kennt sicher das Szenario: Man braucht eben mal schnell einen passenden Blurfilter, aber woher nehmen? Google liefert einem mit etwas Mühe vielleicht das ein oder andere Paper in dem sich ein annähernd passender Kernel findet, aber eigentlich möchte man dann doch gern mal mit 16 statt nur 12 Samples probieren...
Da es mir schnell zu blöd wurde mir meine Kernel hinzuschätzen oder zu ergooglen hab ich mir kurzerhand ein Tool geschrieben das mir Filterkernel mit genau den Parametern wie ich sie gerade haben will erzeugt, fertig für copy 'n' paste in meinen HLSL Code:
Wie man schon an den Tabs im Screenshot sieht sind im Moment Generatoren für Gauss und Poisson Disc Kernel implementiert. Je nach Filtertyp kann man die entsprechenden Parameter variieren und bekommt das Ergebnis gleich in einer interaktiven Vorschau präsentiert. Mit einem Klick auf "Gimme!" generiert das Tool dann den HLSL Code der in der Textbox darunter ausgegeben und auch gleich in die Zwischenablage kopiert wird.
Im Fall vom Gauss Kernel ist das Ergebnis ein Array aus float2 Vektoren deren x-Koordinate den Offset und y-Koordinate das Gewicht eines Sample darstellt. w0 ist das Gewicht für den mittleren Sample (Offset 0, in der Visualisierung grün dargestellt), die Gewichte sind normiert (also in Summe 1). Der Size Parameter gibt die Sampleanzahl an, Scale ist ein Skalierungsfaktor für die Sampleposition und Sigma entsprechend die Standardabweichung der Gauss-Kurve. Die Vorschau passt sich den Abmessungen des Kernels an, zur Orientierung werden der maximale Offset sowie w0 rechts unten bzw. oben in der Mitte angezeigt.
Beim Poisson Disc Kernel gibt es nur den Parameter Taps der eben die Anzahl der Filtertaps (also der Samples) angibt. Das Ergebnis ist ebenfalls ein float2 Array das in diesem Fall die uv Offsets enthält. Die Visualisierung zeigt direkt die durch die Offsets gegebenen Samplepunkte innerhalb des Einheitskreises (schwarz). Ein Klick auf das Diagramm generiert einen neuen Filter mit der gerade eingestellten Samplezahl.
Das ganze ist in C# basierend auf dem .NET Framework 3.5 geschrieben, downloaden könnt ihr es hier.
Wieder mal typisch; Für das was andere Leute im Kopf (Mathematiker) oder auf dem Papier (Physiker) machen, brauchen die Informatiker ein Tool . Funktioniert soweit ich das beurteilen kann einwandfrei. Einzig die Tatsache, dass bei den Slidern eine "vernünftigte" Skaleneinteilung bzw. angaben fehlt, fällt mir auf.
Wue cooles Tool
Wollte ohnehin in nicht allzu entfernter Zeit neue Postproshader anrühren (will ein paar Sachen ausprobieren, außerdem kann ich meine alten nicht brauchen, weil ich die neuen in Cg schreiben werd). Da werd ich sicher auf das Tool zurückgreifen.
Funktioniert tadellos. Wirklich interessant wäre noch eine Art Anwendungsvorschau.
Einzig die Tatsache, dass bei den Slidern eine "vernünftigte" Skaleneinteilung bzw. angaben fehlt, fällt mir auf.
Ja, wenn ich den WPF Slidern irgendwie beibringen könnte eine Skala hinzumalen wär das nett, mal schauen...
Zitat von »"k|haos"«
Und die WPF wollte ich mir auch nochmal etwas genauer anschauen, hab da bisher auch nur bisschen mit rumgespielt.
Viel mehr als ein bisschen rumspielen war das auch noch net, ich find die WPF aber ziemlich cool. Schade is nur dass es kein native Interface dafür gibt, oder Direct3D interop
Zitat von »"Wümpftlbrümpftl"«
Wirklich interessant wäre noch eine Art Anwendungsvorschau.
Hehe, jo das hab ich mir auch schon gedacht, mal sehen
Einzig die Tatsache, dass bei den Slidern eine "vernünftigte" Skaleneinteilung bzw. angaben fehlt, fällt mir auf.
Ja, wenn ich den WPF Slidern irgendwie beibringen könnte eine Skala hinzumalen wär das nett, mal schauen...
afaik nicht. der direkteste weg wäre über ein grid mit zweri zeilen und entsprechenden spalten wie gewünscht + bindings für spaltenzahl, überspannung erste zeile und beschriftung, fertig