По какой-то причине рендеринг, кажется, игнорирует семантику для первого аргумента и всегда передает положение пикселя. Даже если другой аргумент имеет семантику SV_POSITION
, позиция по-прежнему передается в качестве первого аргумента. Для этого есть причина?Первый аргумент для пиксельного шейдера HLSL
Vertex шейдеров:
cbuffer transforms
{
float4x4 view, projection;
};
void main(
in float4 inPos : POSITION, in float3 inNorm : NORMAL,
out float4 outPos : SV_POSITION, out float3 outNorm : TEXCOORD0
)
{
outPos = mul(projection, mul(view, inPos));
outNorm = inNorm;
}
Пиксельный шейдер:
void main(
float4 inPos : SV_POSITION, in float3 inNorm : TEXCOORD0,
out float4 outClr : SV_TARGET
)
{
outClr.xyz = inNorm * 0.5 + 0.5;
outClr.w = 1.0;
}
Таким образом, даже если дескриптор входного элемента использует '' POSITION ', 0', я должен все же указать 'SV_Position' в VS? –