Before going into geometry shader loop, coordinates you provide are not cube coordinates if it's what you are trying to achieve.
Your code:
float3(1, -1, 1),
float3(-1, -1, 1),
float3(1, 1, 1),
float3(-1, 1, 1),
float3(1, 1, 1),
float3(-1, 1, 1),
float3(1, 1, -1),
float3(-1, 1, -1),
5th point covers 3rd point and 6th point covers 4th point.
Edit: Sorry just realized I misunderstood the question.
Edit2: Not sure it's what causes the problem but vertex positions leaving the geometry shader must be transformed to homogeneous clip space. This is how it's usually done: (pseudocode)
struct VStoGS
{
float3 position : POSITION;
//other stuff
};
struct GStoPS
{
float4 positionH : SV_POSITION; //for homogeneous clip space transform
float3 positionW : POSITION; //for world space transform
//other stuff
};
And in geometry shader:
foreachvertex
{
gsOutput[i].positionW = mul(float4(vertex[i].pos, 1.0f), world).xyz;
gsOutput[i].positionH = mul(float4(vertex[i].pos, 1.0f, worldViewProj);
//other stuff
}
Edit3: positionW is only needed for extra stuff in PS so that's not it.