# DX11 DX11 - Vertex To Pixel Shaders - Return Types

This topic is 2028 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Hello once again!

I have a question that hasn't really been bothering me, but it interests me!

So consider the following simple shader:

cbuffer ConstantObjectBuffer : register(c1)
{
matrix worldMatrix;
matrix viewMatrix;
matrix projectionMatrix;

matrix rotationMatrix;
}

cbuffer ConstantFrameBuffer : register(c0)
{
float4 lDir;
float4 lColor;
}

struct VOut
{
float4 position : SV_POSITION;
float4 color : COLOR;
};

VOut VShader(float4 position : POSITION, float4 normal : NORMAL)
{
VOut output;
output.position = mul(position, worldMatrix);
output.position = mul(output.position, viewMatrix);
output.position = mul(output.position, projectionMatrix);

float4 n = normalize(mul(rotationMatrix, normal));
float diffusebrightness = saturate(dot(n, lDir));
output.color = lColor * diffusebrightness;

return output;
}

{
return input.color;
}


Now in the vertex shaders parameters, it has the vertex position and normal, simple right? But these needs to be defined in the input layout, which I fully understand. But the structure that the vertex shader returns to the pixel shader, called VOut, also have these type definitions. Now what I mean with 'type definitions' (NOT A REAL THING  ), is the following:

In the vertex function VOut VShader(float4 position : POSITION, float4 normal : NORMAL), you see that we have a 4 component float called position, and after that we define the input layout schematic: "POSITION". Now the "POSITION" is what I call a type definition  .

So back to the vertex returning VOut. In the structure VOut I also define different variables, like .color, and give it a schematic : COLOR, now if I did this in the vertex shader it would crash! But not in this return structure.... So what is the point in defining the non-existing schematic in the vertex return structure?

PS. I know that you have to define SV_POSITION as a schematic, as it's kinda fundamental!

THANKS!

##### Share on other sites

Hey Migi0027,

The semantic does exist. It exists for the pixel shader.

You could write the pixel shader like this if you wanted:

float4 PShader(float4 color : COLOR) : SV_TARGET
{
return color;
}


The SV_POSITION semantic exists for the non-programmable rasterization stage.

Edited by Racoonacoon

##### Share on other sites

So the semantic is automatically created for each variable, which is sen't to the pixel shader?

Because I could type in some crazy names and it would still work.

##### Share on other sites

{

return COLOR;

}

if (COLOR == !=COLOR)

return 0;

}

1. 1
2. 2
Rutin
16
3. 3
4. 4
5. 5

• 26
• 9
• 11
• 9
• 9
• ### Forum Statistics

• Total Topics
633714
• Total Posts
3013490
×