Microsoft stellt list zur Verfügung, in dem die Eingabe- und Ausgabesemantik von Vertex- und Pixel-Shadern erläutert wird. Inzwischen habe ich einige Codebeispiele gesehen, die die dokumentierten Datentypen nicht verwenden. Sie verwenden float3
als Eingabe COLOR
zum Pixel-Shader oder float2
als Eingabe POSITION
zum Vertex-Shader. Auch wenn eine 2-Komponenten-Position oder eine 3-Komponenten-Farbe Sinn für mich tun machen, kann ich nicht, dass dies dokumentiert, die mich fragen,Welche Schriftgrößen kann ich für bestimmte Semantiken verwenden?
- macht
Kann ich
float3
als Vertex-Shader-Eingabe verwendePOSITION
(wenn ich wissen, dass ich die W-Komponente nicht verwenden werde, ohne Fehler zu erwarten? Wenn ich andere als die dokumentierten Datentypen verwenden kann, gibt es eine Liste, die jeden erlaubten Datentyp für eine Semantik oder eine Regel wie "So lange der verwendete Datentyp kleiner oder gleich groß wie der dokumentiert, du kannst es benutzen "?
Codebeispiele nicht nach der Dokumentation:
StackOverflow - Passing colors through a pixel shader in HLSL
C++/DirectX11 Tutorials - S02E05 - Creating and loading Shaders um 9:33
Ahh, das ist großartig! Nach dem Nachdenken macht das einen Sinn. Da die Eingabestruktur des Shaders und die Vertexstruktur im Code gleich strukturiert sind, kopiert DirectX die Rohstruktur einfach auf die GPU und muss daher die spezifischen Komponentengrößen nicht kennen. Vielen Dank :) – Cubinator73