Outer Glow als HLSL-Shader

8

Ich arbeite immer noch an einem Bildbearbeitungsprojekt, das HLSL-Shader verwendet, um Photoshop-ähnliche Filter wie Schlagschatten, Abschrägung usw. hinzuzufügen. Jetzt suche ich nach einem Ansatz, um einen äußeren Glow-Effekt in HLSL zu implementieren.

Ich experimentiere gerade mit folgender Idee:

1) Skalieren Sie die aktuelle Textur, um das Glühen zu erzeugen (Parameter: glowSize, der die Größe der Kontur festlegt)

2) Horizontale Unschärfe

3) Verwische vertikale Effekte, ändere die Farbe der Unschärfe in leuchtende Farben und füge die ursprüngliche Textur hinzu

Ich verwende den folgenden Multi-Pass-HLSL-Shader zum Rendern des Glow:

%Vor%

Das Ergebnis dieses Codes sieht in Ordnung aus, wenn einfache Formen wie eine Ellipse verwendet werden, funktioniert aber nicht, wenn der Shader auf Text angewendet wird:

Es ist offensichtlich, dass es ein Problem mit der Skalierung gibt. Ich habe keine Ahnung, wie man die ursprüngliche Textur skaliert, um sie als Umriss zu verwenden. Ist das überhaupt möglich? Irgendwelche anderen Ideen, wie man einen äußeren Glühen- oder Umrißfilter in HLSL einführt?

Vielen Dank im Voraus.

    
barnacleboy 25.09.2012, 14:36
quelle

1 Antwort

10

Ihre Skalierungsstrategie kann in dieser Situation nicht angewendet werden. Werfen Sie den Skalierungsschritt weg, verwenden Sie nur Weichzeichnungsschritte und den Kompositionsschritt. Es wird klappen.

Lassen Sie mich Ihnen zeigen, wie der Unschärfe-Shader einen Leuchteffekt erzeugt.

A: Es gibt ein Originalbild.

B: Ändern Sie die Farbe des Bildes und wenden Sie den Unschärfe-Shader an.

C: Kombinieren Sie das unscharfe Bild mit dem Originalbild.

Wenn Sie eine leuchtende Größe steuern möchten, verwenden Sie stattdessen eine Kerngröße von Weichzeichnungsschritten anstelle der Skalierung. Ich habe Gaußsche Unschärfen verwendet, um Bilder zu erstellen.

  • Kernelgröße 5

  • Kernelgröße 10

  • Kernelgröße 15

    
Dish 26.09.2012, 08:41
quelle