2017-07-27 2 views
0

In den meisten Programmen, die ich gesehen habe, die Eckpunktdaten im Pixelshader verwenden, gibt es eine Tendenz, sie als float4-Vektor zu verarbeiten. Diese Einschränkung scheint bei den anderen Shadern nicht vorhanden zu sein. In dem Programm, das ich gerade schreibe, werden z. B. float2s in den VS eingegeben und float3's in den GS ohne Probleme. Aber wenn ich versuche, diese Daten in die PS einzugeben, werden alle Formen mit Ausnahme von float4 zurückgewiesen. Sind andere Vektortypen nicht in die PS erlaubt? Wenn ja warum?Position in den Pixelshader eingeben

Antwort

1

In einem Pixelshader ist der SV_Position ein vom System generierter Wert, der ein float4 sein muss. Wenn Sie die Semantik SV_Position in einem Vertex-Shader verwenden, handelt es sich im Grunde genommen nur um einen Alias ​​für die alte Semantik POSITION und kommt vom Input Assembler in jedem Format, das das Eingabe-Layout angibt. Die Bindung zwischen einem Scheitelpunkt und einem Geometrieshader muss übereinstimmen, kann aber einen beliebigen Wert haben.

Mit anderen Worten, es hat eine besondere Bedeutung für einen Pixel-Shader, weil es die Pixelposition ist, die von der Rasterer-Stufe berechnet wird.

Verwandte Themen