Effekte (Direct3D 10)
Ein DirectX-Effekt ist eine Auflistung von Pipelinestatus, die von Ausdrücken festgelegt wird, die in HLSL- geschrieben wurden, und einige Syntax, die speziell für das Effektframework ist. Verwenden Sie nach dem Kompilieren eines Effekts die Effektframework-APIs zum Rendern. Effektfunktionen können von einem einfachen Vertex-Shader reichen, der Geometrie und einen Pixel-Shader transformiert, der eine Volltonfarbe ausgibt, zu einer Renderingtechnik, die mehrere Durchläufe erfordert, jede Phase der Grafikpipeline verwendet und den Shaderzustand sowie den Pipelinestatus bearbeitet, der nicht mit den programmierbaren Shadern verknüpft ist.
Der erste Schritt besteht darin, den Zustand zu organisieren, den Sie in einem Effekt steuern möchten. Dazu gehören Shaderstatus (Vertex, Geometrie und Pixelshader), Textur- und Samplerzustand, der von den Shadern und anderen nicht programmierbaren Pipelinestatus verwendet wird. Sie können einen Effekt im Arbeitsspeicher als Textzeichenfolge erstellen, aber in der Regel wird die Größe groß genug, um den Effektstatus in einer Effektdatei zu speichern (eine Textdatei, die in einer FX-Erweiterung endet). Um einen Effekt zu verwenden, müssen Sie ihn kompilieren (um die HLSL-Syntax sowie die Syntax des Effektframeworks zu überprüfen), den Effektstatus über API-Aufrufe initialisieren und die Renderschleife so ändern, dass die Rendering-APIs aufgerufen werden.
- Organisationsstatus in einem Effekt
- Effektsystemschnittstellen
- Spezialisiert auf Schnittstellen
- Rendern eines Effekts
Ein Effekt kapselt den gesamten Renderzustand, der von einem bestimmten Effekt benötigt wird, in einer einzigen Renderingfunktion, die als Technik bezeichnet wird. Bei einem Pass handelt es sich um einen Teilsatz einer Technik, die den Renderzustand enthält. Um einen Mehrfachdurchlaufrenderingeffekt zu implementieren, implementieren Sie einen oder mehrere Übergaben innerhalb einer Technik. Angenommen, Sie wollten einige Geometrien mit einem Satz von Tiefen-/Schablonenpuffern rendern und dann einige Sprites darüber zeichnen. Sie könnten das Geometrierendering im ersten Durchlauf und die Sprite-Zeichnung im zweiten Durchlauf implementieren. Um den Effekt zu rendern, rendern Sie einfach beide Übergeben in der Renderschleife. Sie können eine beliebige Anzahl von Techniken in einem Effekt implementieren. Je größer die Anzahl der Techniken ist, desto größer ist die Kompilierungszeit für den Effekt. Eine Möglichkeit, diese Funktionalität auszunutzen, besteht darin, Effekte mit Techniken zu erstellen, die auf unterschiedlicher Hardware ausgeführt werden sollen. Auf diese Weise kann eine Anwendung die Leistung basierend auf den erkannten Hardwarefunktionen ordnungsgemäß herabstufen.
Verwandte Themen