Überlegungen zur Leistung (Direct3D 10)

Verwenden von Effektpools

Es ist üblich, dass Renderingpipelines viele Shader verwenden, um verschiedene Objekttypen und Spezialeffekte zu rendern. Der Shader ist eine Mischung aus Zuständen, die von allen Shadern gemeinsam sind, z. B. eine Weltmatrix oder eine Lichtposition, und andere Zustände, die für jeden Shader spezifisch sind, z. B. die diffuse Farbe eines Objekts oder die Berechnung der glanzbehafteten Hervorhebung. Ein Effektpool ist ein Ort im Arbeitsspeicher zum Speichern des Zustands, der für viele Shader sowie für gängige Geräteobjekte wie Shader, Renderzustandsobjekte und Konstantenpuffer verwendet wird. Die Leistungsverbesserung resultiert aus der einmaligen Aktualisierung des allgemeinen Zustands für alle Shader, die diesen Zustand benötigen.

Ein Effektpool ist ein freigegebener Speicherort für den Effektzustand. Ein Pool wird ähnlich wie ein Effekt erstellt. Sie kann aus dem Arbeitsspeicher (oder einer Datei oder einer Ressource) erstellt werden. Dies führt zu zwei verschiedenen Arten von Effekten: einem globalen Effekt, der nicht vom Zustand in einem anderen Effekt abhängt, und einem untergeordneten Effekt, der vom Zustand in einem anderen Effekt abhängt.

Sie geben an, ob ein Effekt ein globaler Effekt (Standardfall) oder ein untergeordneter Effekt (durch Angabe des D3D10_EFFECT_COMPILE_CHILD_EFFECT-Flags ) ist, wenn der Effekt erstellt wird. Ein globaler Effekt kann als Effektpool dienen; Ein untergeordneter Effekt kann kein Effektpool sein.

Rendern eines Effekts

Effekte (Direct3D 10)