Kürzlich stellte ich eine Frage, wie 2D-Linien mit DirectX am schnellsten gerendert werden können , und eine der Antworten erwähnte dieses Papier über schnelle vorgefilterte Linien, bei denen Pixel-Shader zum Zeichnen von Drahtgittern verwendet werden. In diesem Artikel werden Quads pro Liniensegment gezeichnet. Anschließend wird mit einem Pixel-Shader eine Linie gezeichnet, indem der Abstand zwischen Pixel und Linie in der Mitte des Quadrats berechnet wird, bevor mit Linienfarbe oder transparent gefüllt wird.
Ich frage mich also, wie das gemacht werden kann. Mir war nicht bewusst, dass der Pixel-Shader Kenntnisse über die Eingabegeometrie (z. B. das Quad) erhalten kann, mit der er erstellt wird. Ist folgendes möglich? Idealerweise in DirectX9, aber auch in DX10- oder OpenGL-Lösungen!
BEARBEITEN
Es stellt sich heraus, dass ich das Quad nicht so zeichne, aber so. Die Frage ist also: Wie kann ich Informationen über x1y1 x2y2 in den Pixel-Shader übertragen, um die Entfernung zur Linienkante zu berechnen und ein schönes Antialias-Liniensegment zu erhalten?
quelle
Antworten:
Siehe Pseudocode Überprüfen Sie zunächst, ob sich das aktuelle Pixel im Bereich befindet:
Holen Sie sich ein Tutorial für einen generischen Pixel-Shader und schreiben Sie den Code neu. Um die Entfernung eines Punktes von einem Segment zu berechnen, können Sie googeln.
quelle