Geometry Shader problems

Started by
12 comments, last by noxic 14 years, 5 months ago
Hi everyone! My first post here on gamedev^^ I have a problem with my shader which I will try and explain. Would appreciate some help, since I can't figure out this problem. Quite recently I updated my DirectX SDK to Aug 2009. When I did that, a project I had stoped working (it was working with the SDK I had before). Some of the shader code: struct GS_OUTPUT { float4 Position : SV_POSITION; // vertex position float4 Color : COLOR0; // color }; int the Geometry shader: { . . . GS_OUTPUT output; output.Color = float4(vertlist[triTable[cubeindex][i+2]].Normal, 1.0); output.Position = vertlist[vertlist[triTable[cubeindex][i+2]].Position; //Gives error X4580: emitting a system-interpreted value which is not written in every execution path of the shader Stream.Append( output ); . . . } while this works: { . . . GS_OUTPUT output; output.Color = float4(vertlist[triTable[cubeindex][i+2]].Normal, 1.0); //instead of cubeindex, I for example put 1 and instead of i+2 I put 3, then it works. output.Position = vertlist[vertlist[triTable[1][3]].Position; Stream.Append( output ); . . . } Does it have something to do with SV_POSITION since it works for Color? I have tried to google the problem, but can't find anything helpful :/ Thanks a lot in advance!
Advertisement
It would help to have your whole shader so that we can try out a few things and narrow down your problem.

Several questions come to mind such as how many components in vertlist[vertlist[triTable[cubeindex][i+2]].Position and what is your [maxvertexcount()] attribute for the geometry shader. Also, providing the whole thing might let us help suggest a work around if there is a real issue.
Here is the entire shader code. Hope this helps better to solve it. The shader is for the Marching Cubes algorithm.
I have not come up with this code myself, so I will not take "credit" for it. I've looked at Nvidias Metaballs sample, and at this http://brugevin.boris.free.fr/phpBB2/viewtopic.php?t=52 example since I wanted to learn about this algorithm. I understand almost everything of this algorithm, so I will try and code my own soon.


cbuffer cb0 : register(b0){    float isolevel;   };Buffer<float4> VertexBuffer	: register(t0);cbuffer cb1 : register(b1){	static const int edgeTable[256]=	{0x0  , 0x109, 0x203, 0x30a, 0x406, 0x50f, 0x605, 0x70c,	0x80c, 0x905, 0xa0f, 0xb06, 0xc0a, 0xd03, 0xe09, 0xf00,	0x190, 0x99 , 0x393, 0x29a, 0x596, 0x49f, 0x795, 0x69c,	0x99c, 0x895, 0xb9f, 0xa96, 0xd9a, 0xc93, 0xf99, 0xe90,	0x230, 0x339, 0x33 , 0x13a, 0x636, 0x73f, 0x435, 0x53c,	0xa3c, 0xb35, 0x83f, 0x936, 0xe3a, 0xf33, 0xc39, 0xd30,	0x3a0, 0x2a9, 0x1a3, 0xaa , 0x7a6, 0x6af, 0x5a5, 0x4ac,	0xbac, 0xaa5, 0x9af, 0x8a6, 0xfaa, 0xea3, 0xda9, 0xca0,	0x460, 0x569, 0x663, 0x76a, 0x66 , 0x16f, 0x265, 0x36c,	0xc6c, 0xd65, 0xe6f, 0xf66, 0x86a, 0x963, 0xa69, 0xb60,	0x5f0, 0x4f9, 0x7f3, 0x6fa, 0x1f6, 0xff , 0x3f5, 0x2fc,	0xdfc, 0xcf5, 0xfff, 0xef6, 0x9fa, 0x8f3, 0xbf9, 0xaf0,	0x650, 0x759, 0x453, 0x55a, 0x256, 0x35f, 0x55 , 0x15c,	0xe5c, 0xf55, 0xc5f, 0xd56, 0xa5a, 0xb53, 0x859, 0x950,	0x7c0, 0x6c9, 0x5c3, 0x4ca, 0x3c6, 0x2cf, 0x1c5, 0xcc ,	0xfcc, 0xec5, 0xdcf, 0xcc6, 0xbca, 0xac3, 0x9c9, 0x8c0,	0x8c0, 0x9c9, 0xac3, 0xbca, 0xcc6, 0xdcf, 0xec5, 0xfcc,	0xcc , 0x1c5, 0x2cf, 0x3c6, 0x4ca, 0x5c3, 0x6c9, 0x7c0,	0x950, 0x859, 0xb53, 0xa5a, 0xd56, 0xc5f, 0xf55, 0xe5c,	0x15c, 0x55 , 0x35f, 0x256, 0x55a, 0x453, 0x759, 0x650,	0xaf0, 0xbf9, 0x8f3, 0x9fa, 0xef6, 0xfff, 0xcf5, 0xdfc,	0x2fc, 0x3f5, 0xff , 0x1f6, 0x6fa, 0x7f3, 0x4f9, 0x5f0,	0xb60, 0xa69, 0x963, 0x86a, 0xf66, 0xe6f, 0xd65, 0xc6c,	0x36c, 0x265, 0x16f, 0x66 , 0x76a, 0x663, 0x569, 0x460,	0xca0, 0xda9, 0xea3, 0xfaa, 0x8a6, 0x9af, 0xaa5, 0xbac,	0x4ac, 0x5a5, 0x6af, 0x7a6, 0xaa , 0x1a3, 0x2a9, 0x3a0,	0xd30, 0xc39, 0xf33, 0xe3a, 0x936, 0x83f, 0xb35, 0xa3c,	0x53c, 0x435, 0x73f, 0x636, 0x13a, 0x33 , 0x339, 0x230,	0xe90, 0xf99, 0xc93, 0xd9a, 0xa96, 0xb9f, 0x895, 0x99c,	0x69c, 0x795, 0x49f, 0x596, 0x29a, 0x393, 0x99 , 0x190,	0xf00, 0xe09, 0xd03, 0xc0a, 0xb06, 0xa0f, 0x905, 0x80c,	0x70c, 0x605, 0x50f, 0x406, 0x30a, 0x203, 0x109, 0x0};};cbuffer cb2 : register(b2){	static const int triTable[256][16] =	{{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{0, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{1, 8, 3, 9, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{0, 8, 3, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{9, 2, 10, 0, 2, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{2, 8, 3, 2, 10, 8, 10, 9, 8, -1, -1, -1, -1, -1, -1, -1},	{3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{0, 11, 2, 8, 11, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{1, 9, 0, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{1, 11, 2, 1, 9, 11, 9, 8, 11, -1, -1, -1, -1, -1, -1, -1},	{3, 10, 1, 11, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{0, 10, 1, 0, 8, 10, 8, 11, 10, -1, -1, -1, -1, -1, -1, -1},	{3, 9, 0, 3, 11, 9, 11, 10, 9, -1, -1, -1, -1, -1, -1, -1},	{9, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{4, 3, 0, 7, 3, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{0, 1, 9, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{4, 1, 9, 4, 7, 1, 7, 3, 1, -1, -1, -1, -1, -1, -1, -1},	{1, 2, 10, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{3, 4, 7, 3, 0, 4, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1},	{9, 2, 10, 9, 0, 2, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1},	{2, 10, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4, -1, -1, -1, -1},	{8, 4, 7, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{11, 4, 7, 11, 2, 4, 2, 0, 4, -1, -1, -1, -1, -1, -1, -1},	{9, 0, 1, 8, 4, 7, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1},	{4, 7, 11, 9, 4, 11, 9, 11, 2, 9, 2, 1, -1, -1, -1, -1},	{3, 10, 1, 3, 11, 10, 7, 8, 4, -1, -1, -1, -1, -1, -1, -1},	{1, 11, 10, 1, 4, 11, 1, 0, 4, 7, 11, 4, -1, -1, -1, -1},	{4, 7, 8, 9, 0, 11, 9, 11, 10, 11, 0, 3, -1, -1, -1, -1},	{4, 7, 11, 4, 11, 9, 9, 11, 10, -1, -1, -1, -1, -1, -1, -1},	{9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{9, 5, 4, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{0, 5, 4, 1, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{8, 5, 4, 8, 3, 5, 3, 1, 5, -1, -1, -1, -1, -1, -1, -1},	{1, 2, 10, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{3, 0, 8, 1, 2, 10, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1},	{5, 2, 10, 5, 4, 2, 4, 0, 2, -1, -1, -1, -1, -1, -1, -1},	{2, 10, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8, -1, -1, -1, -1},	{9, 5, 4, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{0, 11, 2, 0, 8, 11, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1},	{0, 5, 4, 0, 1, 5, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1},	{2, 1, 5, 2, 5, 8, 2, 8, 11, 4, 8, 5, -1, -1, -1, -1},	{10, 3, 11, 10, 1, 3, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1},	{4, 9, 5, 0, 8, 1, 8, 10, 1, 8, 11, 10, -1, -1, -1, -1},	{5, 4, 0, 5, 0, 11, 5, 11, 10, 11, 0, 3, -1, -1, -1, -1},	{5, 4, 8, 5, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1},	{9, 7, 8, 5, 7, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{9, 3, 0, 9, 5, 3, 5, 7, 3, -1, -1, -1, -1, -1, -1, -1},	{0, 7, 8, 0, 1, 7, 1, 5, 7, -1, -1, -1, -1, -1, -1, -1},	{1, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{9, 7, 8, 9, 5, 7, 10, 1, 2, -1, -1, -1, -1, -1, -1, -1},	{10, 1, 2, 9, 5, 0, 5, 3, 0, 5, 7, 3, -1, -1, -1, -1},	{8, 0, 2, 8, 2, 5, 8, 5, 7, 10, 5, 2, -1, -1, -1, -1},	{2, 10, 5, 2, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1},	{7, 9, 5, 7, 8, 9, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1},	{9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 11, -1, -1, -1, -1},	{2, 3, 11, 0, 1, 8, 1, 7, 8, 1, 5, 7, -1, -1, -1, -1},	{11, 2, 1, 11, 1, 7, 7, 1, 5, -1, -1, -1, -1, -1, -1, -1},	{9, 5, 8, 8, 5, 7, 10, 1, 3, 10, 3, 11, -1, -1, -1, -1},	{5, 7, 0, 5, 0, 9, 7, 11, 0, 1, 0, 10, 11, 10, 0, -1},	{11, 10, 0, 11, 0, 3, 10, 5, 0, 8, 0, 7, 5, 7, 0, -1},	{11, 10, 5, 7, 11, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{0, 8, 3, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{9, 0, 1, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{1, 8, 3, 1, 9, 8, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1},	{1, 6, 5, 2, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{1, 6, 5, 1, 2, 6, 3, 0, 8, -1, -1, -1, -1, -1, -1, -1},	{9, 6, 5, 9, 0, 6, 0, 2, 6, -1, -1, -1, -1, -1, -1, -1},	{5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8, -1, -1, -1, -1},	{2, 3, 11, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{11, 0, 8, 11, 2, 0, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1},	{0, 1, 9, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1},	{5, 10, 6, 1, 9, 2, 9, 11, 2, 9, 8, 11, -1, -1, -1, -1},	{6, 3, 11, 6, 5, 3, 5, 1, 3, -1, -1, -1, -1, -1, -1, -1},	{0, 8, 11, 0, 11, 5, 0, 5, 1, 5, 11, 6, -1, -1, -1, -1},	{3, 11, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9, -1, -1, -1, -1},	{6, 5, 9, 6, 9, 11, 11, 9, 8, -1, -1, -1, -1, -1, -1, -1},	{5, 10, 6, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{4, 3, 0, 4, 7, 3, 6, 5, 10, -1, -1, -1, -1, -1, -1, -1},	{1, 9, 0, 5, 10, 6, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1},	{10, 6, 5, 1, 9, 7, 1, 7, 3, 7, 9, 4, -1, -1, -1, -1},	{6, 1, 2, 6, 5, 1, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1},	{1, 2, 5, 5, 2, 6, 3, 0, 4, 3, 4, 7, -1, -1, -1, -1},	{8, 4, 7, 9, 0, 5, 0, 6, 5, 0, 2, 6, -1, -1, -1, -1},	{7, 3, 9, 7, 9, 4, 3, 2, 9, 5, 9, 6, 2, 6, 9, -1},	{3, 11, 2, 7, 8, 4, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1},	{5, 10, 6, 4, 7, 2, 4, 2, 0, 2, 7, 11, -1, -1, -1, -1},	{0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1},	{9, 2, 1, 9, 11, 2, 9, 4, 11, 7, 11, 4, 5, 10, 6, -1},	{8, 4, 7, 3, 11, 5, 3, 5, 1, 5, 11, 6, -1, -1, -1, -1},	{5, 1, 11, 5, 11, 6, 1, 0, 11, 7, 11, 4, 0, 4, 11, -1},	{0, 5, 9, 0, 6, 5, 0, 3, 6, 11, 6, 3, 8, 4, 7, -1},	{6, 5, 9, 6, 9, 11, 4, 7, 9, 7, 11, 9, -1, -1, -1, -1},	{10, 4, 9, 6, 4, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{4, 10, 6, 4, 9, 10, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1},	{10, 0, 1, 10, 6, 0, 6, 4, 0, -1, -1, -1, -1, -1, -1, -1},	{8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 10, -1, -1, -1, -1},	{1, 4, 9, 1, 2, 4, 2, 6, 4, -1, -1, -1, -1, -1, -1, -1},	{3, 0, 8, 1, 2, 9, 2, 4, 9, 2, 6, 4, -1, -1, -1, -1},	{0, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{8, 3, 2, 8, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1},	{10, 4, 9, 10, 6, 4, 11, 2, 3, -1, -1, -1, -1, -1, -1, -1},	{0, 8, 2, 2, 8, 11, 4, 9, 10, 4, 10, 6, -1, -1, -1, -1},	{3, 11, 2, 0, 1, 6, 0, 6, 4, 6, 1, 10, -1, -1, -1, -1},	{6, 4, 1, 6, 1, 10, 4, 8, 1, 2, 1, 11, 8, 11, 1, -1},	{9, 6, 4, 9, 3, 6, 9, 1, 3, 11, 6, 3, -1, -1, -1, -1},	{8, 11, 1, 8, 1, 0, 11, 6, 1, 9, 1, 4, 6, 4, 1, -1},	{3, 11, 6, 3, 6, 0, 0, 6, 4, -1, -1, -1, -1, -1, -1, -1},	{6, 4, 8, 11, 6, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{7, 10, 6, 7, 8, 10, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1},	{0, 7, 3, 0, 10, 7, 0, 9, 10, 6, 7, 10, -1, -1, -1, -1},	{10, 6, 7, 1, 10, 7, 1, 7, 8, 1, 8, 0, -1, -1, -1, -1},	{10, 6, 7, 10, 7, 1, 1, 7, 3, -1, -1, -1, -1, -1, -1, -1},	{1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7, -1, -1, -1, -1},	{2, 6, 9, 2, 9, 1, 6, 7, 9, 0, 9, 3, 7, 3, 9, -1},	{7, 8, 0, 7, 0, 6, 6, 0, 2, -1, -1, -1, -1, -1, -1, -1},	{7, 3, 2, 6, 7, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{2, 3, 11, 10, 6, 8, 10, 8, 9, 8, 6, 7, -1, -1, -1, -1},	{2, 0, 7, 2, 7, 11, 0, 9, 7, 6, 7, 10, 9, 10, 7, -1},	{1, 8, 0, 1, 7, 8, 1, 10, 7, 6, 7, 10, 2, 3, 11, -1},	{11, 2, 1, 11, 1, 7, 10, 6, 1, 6, 7, 1, -1, -1, -1, -1},	{8, 9, 6, 8, 6, 7, 9, 1, 6, 11, 6, 3, 1, 3, 6, -1},	{0, 9, 1, 11, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{7, 8, 0, 7, 0, 6, 3, 11, 0, 11, 6, 0, -1, -1, -1, -1},	{7, 11, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{3, 0, 8, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{0, 1, 9, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{8, 1, 9, 8, 3, 1, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1},	{10, 1, 2, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{1, 2, 10, 3, 0, 8, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1},	{2, 9, 0, 2, 10, 9, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1},	{6, 11, 7, 2, 10, 3, 10, 8, 3, 10, 9, 8, -1, -1, -1, -1},	{7, 2, 3, 6, 2, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{7, 0, 8, 7, 6, 0, 6, 2, 0, -1, -1, -1, -1, -1, -1, -1},	{2, 7, 6, 2, 3, 7, 0, 1, 9, -1, -1, -1, -1, -1, -1, -1},	{1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6, -1, -1, -1, -1},	{10, 7, 6, 10, 1, 7, 1, 3, 7, -1, -1, -1, -1, -1, -1, -1},	{10, 7, 6, 1, 7, 10, 1, 8, 7, 1, 0, 8, -1, -1, -1, -1},	{0, 3, 7, 0, 7, 10, 0, 10, 9, 6, 10, 7, -1, -1, -1, -1},	{7, 6, 10, 7, 10, 8, 8, 10, 9, -1, -1, -1, -1, -1, -1, -1},	{6, 8, 4, 11, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{3, 6, 11, 3, 0, 6, 0, 4, 6, -1, -1, -1, -1, -1, -1, -1},	{8, 6, 11, 8, 4, 6, 9, 0, 1, -1, -1, -1, -1, -1, -1, -1},	{9, 4, 6, 9, 6, 3, 9, 3, 1, 11, 3, 6, -1, -1, -1, -1},	{6, 8, 4, 6, 11, 8, 2, 10, 1, -1, -1, -1, -1, -1, -1, -1},	{1, 2, 10, 3, 0, 11, 0, 6, 11, 0, 4, 6, -1, -1, -1, -1},	{4, 11, 8, 4, 6, 11, 0, 2, 9, 2, 10, 9, -1, -1, -1, -1},	{10, 9, 3, 10, 3, 2, 9, 4, 3, 11, 3, 6, 4, 6, 3, -1},	{8, 2, 3, 8, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1},	{0, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{1, 9, 0, 2, 3, 4, 2, 4, 6, 4, 3, 8, -1, -1, -1, -1},	{1, 9, 4, 1, 4, 2, 2, 4, 6, -1, -1, -1, -1, -1, -1, -1},	{8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 10, 1, -1, -1, -1, -1},	{10, 1, 0, 10, 0, 6, 6, 0, 4, -1, -1, -1, -1, -1, -1, -1},	{4, 6, 3, 4, 3, 8, 6, 10, 3, 0, 3, 9, 10, 9, 3, -1},	{10, 9, 4, 6, 10, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{4, 9, 5, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{0, 8, 3, 4, 9, 5, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1},	{5, 0, 1, 5, 4, 0, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1},	{11, 7, 6, 8, 3, 4, 3, 5, 4, 3, 1, 5, -1, -1, -1, -1},	{9, 5, 4, 10, 1, 2, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1},	{6, 11, 7, 1, 2, 10, 0, 8, 3, 4, 9, 5, -1, -1, -1, -1},	{7, 6, 11, 5, 4, 10, 4, 2, 10, 4, 0, 2, -1, -1, -1, -1},	{3, 4, 8, 3, 5, 4, 3, 2, 5, 10, 5, 2, 11, 7, 6, -1},	{7, 2, 3, 7, 6, 2, 5, 4, 9, -1, -1, -1, -1, -1, -1, -1},	{9, 5, 4, 0, 8, 6, 0, 6, 2, 6, 8, 7, -1, -1, -1, -1},	{3, 6, 2, 3, 7, 6, 1, 5, 0, 5, 4, 0, -1, -1, -1, -1},	{6, 2, 8, 6, 8, 7, 2, 1, 8, 4, 8, 5, 1, 5, 8, -1},	{9, 5, 4, 10, 1, 6, 1, 7, 6, 1, 3, 7, -1, -1, -1, -1},	{1, 6, 10, 1, 7, 6, 1, 0, 7, 8, 7, 0, 9, 5, 4, -1},	{4, 0, 10, 4, 10, 5, 0, 3, 10, 6, 10, 7, 3, 7, 10, -1},	{7, 6, 10, 7, 10, 8, 5, 4, 10, 4, 8, 10, -1, -1, -1, -1},	{6, 9, 5, 6, 11, 9, 11, 8, 9, -1, -1, -1, -1, -1, -1, -1},	{3, 6, 11, 0, 6, 3, 0, 5, 6, 0, 9, 5, -1, -1, -1, -1},	{0, 11, 8, 0, 5, 11, 0, 1, 5, 5, 6, 11, -1, -1, -1, -1},	{6, 11, 3, 6, 3, 5, 5, 3, 1, -1, -1, -1, -1, -1, -1, -1},	{1, 2, 10, 9, 5, 11, 9, 11, 8, 11, 5, 6, -1, -1, -1, -1},	{0, 11, 3, 0, 6, 11, 0, 9, 6, 5, 6, 9, 1, 2, 10, -1},	{11, 8, 5, 11, 5, 6, 8, 0, 5, 10, 5, 2, 0, 2, 5, -1},	{6, 11, 3, 6, 3, 5, 2, 10, 3, 10, 5, 3, -1, -1, -1, -1},	{5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2, -1, -1, -1, -1},	{9, 5, 6, 9, 6, 0, 0, 6, 2, -1, -1, -1, -1, -1, -1, -1},	{1, 5, 8, 1, 8, 0, 5, 6, 8, 3, 8, 2, 6, 2, 8, -1},	{1, 5, 6, 2, 1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{1, 3, 6, 1, 6, 10, 3, 8, 6, 5, 6, 9, 8, 9, 6, -1},	{10, 1, 0, 10, 0, 6, 9, 5, 0, 5, 6, 0, -1, -1, -1, -1},	{0, 3, 8, 5, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{10, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{11, 5, 10, 7, 5, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{11, 5, 10, 11, 7, 5, 8, 3, 0, -1, -1, -1, -1, -1, -1, -1},	{5, 11, 7, 5, 10, 11, 1, 9, 0, -1, -1, -1, -1, -1, -1, -1},	{10, 7, 5, 10, 11, 7, 9, 8, 1, 8, 3, 1, -1, -1, -1, -1},	{11, 1, 2, 11, 7, 1, 7, 5, 1, -1, -1, -1, -1, -1, -1, -1},	{0, 8, 3, 1, 2, 7, 1, 7, 5, 7, 2, 11, -1, -1, -1, -1},	{9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 11, 7, -1, -1, -1, -1},	{7, 5, 2, 7, 2, 11, 5, 9, 2, 3, 2, 8, 9, 8, 2, -1},	{2, 5, 10, 2, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1},	{8, 2, 0, 8, 5, 2, 8, 7, 5, 10, 2, 5, -1, -1, -1, -1},	{9, 0, 1, 5, 10, 3, 5, 3, 7, 3, 10, 2, -1, -1, -1, -1},	{9, 8, 2, 9, 2, 1, 8, 7, 2, 10, 2, 5, 7, 5, 2, -1},	{1, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{0, 8, 7, 0, 7, 1, 1, 7, 5, -1, -1, -1, -1, -1, -1, -1},	{9, 0, 3, 9, 3, 5, 5, 3, 7, -1, -1, -1, -1, -1, -1, -1},	{9, 8, 7, 5, 9, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{5, 8, 4, 5, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1},	{5, 0, 4, 5, 11, 0, 5, 10, 11, 11, 3, 0, -1, -1, -1, -1},	{0, 1, 9, 8, 4, 10, 8, 10, 11, 10, 4, 5, -1, -1, -1, -1},	{10, 11, 4, 10, 4, 5, 11, 3, 4, 9, 4, 1, 3, 1, 4, -1},	{2, 5, 1, 2, 8, 5, 2, 11, 8, 4, 5, 8, -1, -1, -1, -1},	{0, 4, 11, 0, 11, 3, 4, 5, 11, 2, 11, 1, 5, 1, 11, -1},	{0, 2, 5, 0, 5, 9, 2, 11, 5, 4, 5, 8, 11, 8, 5, -1},	{9, 4, 5, 2, 11, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{2, 5, 10, 3, 5, 2, 3, 4, 5, 3, 8, 4, -1, -1, -1, -1},	{5, 10, 2, 5, 2, 4, 4, 2, 0, -1, -1, -1, -1, -1, -1, -1},	{3, 10, 2, 3, 5, 10, 3, 8, 5, 4, 5, 8, 0, 1, 9, -1},	{5, 10, 2, 5, 2, 4, 1, 9, 2, 9, 4, 2, -1, -1, -1, -1},	{8, 4, 5, 8, 5, 3, 3, 5, 1, -1, -1, -1, -1, -1, -1, -1},	{0, 4, 5, 1, 0, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{8, 4, 5, 8, 5, 3, 9, 0, 5, 0, 3, 5, -1, -1, -1, -1},	{9, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{4, 11, 7, 4, 9, 11, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1},	{0, 8, 3, 4, 9, 7, 9, 11, 7, 9, 10, 11, -1, -1, -1, -1},	{1, 10, 11, 1, 11, 4, 1, 4, 0, 7, 4, 11, -1, -1, -1, -1},	{3, 1, 4, 3, 4, 8, 1, 10, 4, 7, 4, 11, 10, 11, 4, -1},	{4, 11, 7, 9, 11, 4, 9, 2, 11, 9, 1, 2, -1, -1, -1, -1},	{9, 7, 4, 9, 11, 7, 9, 1, 11, 2, 11, 1, 0, 8, 3, -1},	{11, 7, 4, 11, 4, 2, 2, 4, 0, -1, -1, -1, -1, -1, -1, -1},	{11, 7, 4, 11, 4, 2, 8, 3, 4, 3, 2, 4, -1, -1, -1, -1},	{2, 9, 10, 2, 7, 9, 2, 3, 7, 7, 4, 9, -1, -1, -1, -1},	{9, 10, 7, 9, 7, 4, 10, 2, 7, 8, 7, 0, 2, 0, 7, -1},	{3, 7, 10, 3, 10, 2, 7, 4, 10, 1, 10, 0, 4, 0, 10, -1},	{1, 10, 2, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{4, 9, 1, 4, 1, 7, 7, 1, 3, -1, -1, -1, -1, -1, -1, -1},	{4, 9, 1, 4, 1, 7, 0, 8, 1, 8, 7, 1, -1, -1, -1, -1},	{4, 0, 3, 7, 4, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{9, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{3, 0, 9, 3, 9, 11, 11, 9, 10, -1, -1, -1, -1, -1, -1, -1},	{0, 1, 10, 0, 10, 8, 8, 10, 11, -1, -1, -1, -1, -1, -1, -1},	{3, 1, 10, 11, 3, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{1, 2, 11, 1, 11, 9, 9, 11, 8, -1, -1, -1, -1, -1, -1, -1},	{3, 0, 9, 3, 9, 11, 1, 2, 9, 2, 11, 9, -1, -1, -1, -1},	{0, 2, 11, 8, 0, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{3, 2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{2, 3, 8, 2, 8, 10, 10, 8, 9, -1, -1, -1, -1, -1, -1, -1},	{9, 10, 2, 0, 9, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{2, 3, 8, 2, 8, 10, 0, 1, 8, 1, 10, 8, -1, -1, -1, -1},	{1, 10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{1, 3, 8, 9, 1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{0, 9, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{0, 3, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}};};struct VS_INPUT{	float4 Index1		: POSITION;		float4 Index2		: COLOR;	};struct VS_OUPUT{	float VertexIndex[8]	: INDEX;	// cube index};struct GS_OUTPUT{	float4 Position		: SV_POSITION;	// vertex position		float4 Color		: COLOR0;		// color};struct SurfaceVertex{    float4 Position;    float3 Normal;};//Estimate where isosurface intersects grid edge with endpoints v0, v1SurfaceVertex CalcIntersection(float4 v0, float4 nf0, float4 v1, float4 nf1){	SurfaceVertex p;		float t = (isolevel - nf0.w) / (nf1.w - nf0.w);	p.Position = lerp(v0, v1, t);	p.Normal = lerp(nf0.xyz, nf1.xyz, t);			return p;}VS_OUPUT VSmain( VS_INPUT input ){	VS_OUPUT output = (VS_OUPUT)0;		[unroll]	for(int i=0;i<4;i++)	{		output.VertexIndex = input.Index1;		output.VertexIndex[i+4] = input.Index2;	}    return output;}//15 vertices are the maximum number that needs to be created, since it can be at most 5 triangles (5*3 = 15).[maxvertexcount(15)]void GSmain( point VS_OUPUT input[1], inout TriangleStream<GS_OUTPUT> Stream ){		uint cubeindex = 0;		[unroll] //Avoids flow-control constructs. 	for(int i = 7; i > -1; i--)	{		//construct bit field with a bit set for every vertex inside surfaceindex		//for example 1111 1111 = 255 etc.                		cubeindex |= (uint(VertexBuffer.Load( input[0].VertexIndex*2+1 ).w < isolevel) << i);	}	SurfaceVertex vertlist[12];			if(edgeTable[cubeindex] != 0x0)	{				//12-bits number, where 1-bit equals an edge. 			//THIS Stopped working when I downloaded the new SDK		/*if (edgeTable[cubeindex] & 1)		  vertlist[0] = CalcIntersection(VertexBuffer.Load( input[0].VertexIndex[0]*2 ), VertexBuffer.Load( input[0].VertexIndex[0]*2+1 ),										VertexBuffer.Load( input[0].VertexIndex[1]*2 ), VertexBuffer.Load( input[0].VertexIndex[1]*2+1 ));		if (edgeTable[cubeindex] & 2)		  vertlist[1] = CalcIntersection(VertexBuffer.Load( input[0].VertexIndex[1]*2 ), VertexBuffer.Load( input[0].VertexIndex[1]*2+1 ),										VertexBuffer.Load( input[0].VertexIndex[2]*2 ), VertexBuffer.Load( input[0].VertexIndex[2]*2+1 ));		if (edgeTable[cubeindex] & 4)		  vertlist[2] = CalcIntersection(VertexBuffer.Load( input[0].VertexIndex[2]*2 ), VertexBuffer.Load( input[0].VertexIndex[2]*2+1 ),										VertexBuffer.Load( input[0].VertexIndex[3]*2 ), VertexBuffer.Load( input[0].VertexIndex[3]*2+1 ));		if (edgeTable[cubeindex] & 8)		  vertlist[3] = CalcIntersection(VertexBuffer.Load( input[0].VertexIndex[3]*2 ), VertexBuffer.Load( input[0].VertexIndex[3]*2+1 ),										VertexBuffer.Load( input[0].VertexIndex[0]*2 ), VertexBuffer.Load( input[0].VertexIndex[0]*2+1 ));		if (edgeTable[cubeindex] & 16)		  vertlist[4] = CalcIntersection(VertexBuffer.Load( input[0].VertexIndex[4]*2 ), VertexBuffer.Load( input[0].VertexIndex[4]*2+1 ),										VertexBuffer.Load( input[0].VertexIndex[5]*2 ), VertexBuffer.Load( input[0].VertexIndex[5]*2+1 ));		if (edgeTable[cubeindex] & 32)		  vertlist[5] = CalcIntersection(VertexBuffer.Load( input[0].VertexIndex[5]*2 ), VertexBuffer.Load( input[0].VertexIndex[5]*2+1 ),										VertexBuffer.Load( input[0].VertexIndex[6]*2 ), VertexBuffer.Load( input[0].VertexIndex[6]*2+1 ));		if (edgeTable[cubeindex] & 64)		  vertlist[6] = CalcIntersection(VertexBuffer.Load( input[0].VertexIndex[6]*2 ), VertexBuffer.Load( input[0].VertexIndex[6]*2+1 ),										VertexBuffer.Load( input[0].VertexIndex[7]*2 ), VertexBuffer.Load( input[0].VertexIndex[7]*2+1 ));		if (edgeTable[cubeindex] & 128)		  vertlist[7] = CalcIntersection(VertexBuffer.Load( input[0].VertexIndex[7]*2 ), VertexBuffer.Load( input[0].VertexIndex[7]*2+1 ),										VertexBuffer.Load( input[0].VertexIndex[4]*2 ), VertexBuffer.Load( input[0].VertexIndex[4]*2+1 ));		if (edgeTable[cubeindex] & 256)		  vertlist[8] = CalcIntersection(VertexBuffer.Load( input[0].VertexIndex[0]*2 ), VertexBuffer.Load( input[0].VertexIndex[0]*2+1 ),										VertexBuffer.Load( input[0].VertexIndex[4]*2 ), VertexBuffer.Load( input[0].VertexIndex[4]*2+1 ));		if (edgeTable[cubeindex] & 512)		  vertlist[9] = CalcIntersection(VertexBuffer.Load( input[0].VertexIndex[1]*2 ), VertexBuffer.Load( input[0].VertexIndex[1]*2+1 ),										VertexBuffer.Load( input[0].VertexIndex[5]*2 ), VertexBuffer.Load( input[0].VertexIndex[5]*2+1 ));		if (edgeTable[cubeindex] & 1024)		  vertlist[10] = CalcIntersection(VertexBuffer.Load( input[0].VertexIndex[2]*2 ), VertexBuffer.Load( input[0].VertexIndex[2]*2+1 ),										VertexBuffer.Load( input[0].VertexIndex[6]*2 ), VertexBuffer.Load( input[0].VertexIndex[6]*2+1 ));		if (edgeTable[cubeindex] & 2048)		  vertlist[11] = CalcIntersection(VertexBuffer.Load( input[0].VertexIndex[3]*2 ), VertexBuffer.Load( input[0].VertexIndex[3]*2+1 ),										VertexBuffer.Load( input[0].VertexIndex[7]*2 ), VertexBuffer.Load( input[0].VertexIndex[7]*2+1 ));	*/				//THIS WORKS after I downloaded the new SDK		float4 buffer1 = VertexBuffer.Load( input[0].VertexIndex[0]*2);		float4 buffer2 = VertexBuffer.Load( input[0].VertexIndex[0]*2+1);		float4 buffer3 = VertexBuffer.Load( input[0].VertexIndex[1]*2);		float4 buffer4 = VertexBuffer.Load(input[0].VertexIndex[1]*2+1);				if (edgeTable[cubeindex] & 1)		    vertlist[0] = CalcIntersection(buffer1, buffer2,										buffer3, buffer4);				buffer1 = VertexBuffer.Load( input[0].VertexIndex[1]*2);		buffer2 = VertexBuffer.Load( input[0].VertexIndex[1]*2+1 );		buffer3 = VertexBuffer.Load( input[0].VertexIndex[2]*2 );		buffer4 = VertexBuffer.Load( input[0].VertexIndex[2]*2+1 );			if (edgeTable[cubeindex] & 2)		    vertlist[1] = CalcIntersection(buffer1, buffer2,										buffer3, buffer4);				buffer1 = VertexBuffer.Load( input[0].VertexIndex[2]*2 );		buffer2 = VertexBuffer.Load( input[0].VertexIndex[2]*2+1 );		buffer3 = VertexBuffer.Load( input[0].VertexIndex[3]*2 );		buffer4 = VertexBuffer.Load( input[0].VertexIndex[3]*2+1 );			if (edgeTable[cubeindex] & 4)		    vertlist[2] = CalcIntersection(buffer1, buffer2,										buffer3, buffer4);				buffer1 = VertexBuffer.Load( input[0].VertexIndex[3]*2 );		buffer2 = VertexBuffer.Load( input[0].VertexIndex[3]*2+1 );		buffer3 = VertexBuffer.Load( input[0].VertexIndex[0]*2 );		buffer4 = VertexBuffer.Load( input[0].VertexIndex[0]*2+1 );						if (edgeTable[cubeindex] & 8)		    vertlist[3] = CalcIntersection(buffer1, buffer2,										buffer3, buffer4);				buffer1 = VertexBuffer.Load( input[0].VertexIndex[4]*2 );		buffer2 = VertexBuffer.Load( input[0].VertexIndex[4]*2+1 );		buffer3 = VertexBuffer.Load( input[0].VertexIndex[5]*2 );		buffer4 = VertexBuffer.Load( input[0].VertexIndex[5]*2+1 );					if (edgeTable[cubeindex] & 16)	  	    vertlist[4] = CalcIntersection(buffer1, buffer2,										buffer3, buffer4);				buffer1 = VertexBuffer.Load( input[0].VertexIndex[5]*2 );		buffer2 = VertexBuffer.Load( input[0].VertexIndex[5]*2+1 );		buffer3 = VertexBuffer.Load( input[0].VertexIndex[6]*2 );		buffer4 = VertexBuffer.Load( input[0].VertexIndex[6]*2+1 );					if (edgeTable[cubeindex] & 32)		  		    vertlist[5] = CalcIntersection(buffer1, buffer2,										buffer3, buffer4);				buffer1 = VertexBuffer.Load( input[0].VertexIndex[6]*2 );		buffer2 = VertexBuffer.Load( input[0].VertexIndex[6]*2+1 );		buffer3 = VertexBuffer.Load( input[0].VertexIndex[7]*2 );		buffer4 = VertexBuffer.Load( input[0].VertexIndex[7]*2+1 );					if (edgeTable[cubeindex] & 64)		    vertlist[6] = CalcIntersection(buffer1, buffer2,										buffer3, buffer4);				buffer1 = VertexBuffer.Load( input[0].VertexIndex[7]*2 );		buffer2 = VertexBuffer.Load( input[0].VertexIndex[7]*2+1 );		buffer3 = VertexBuffer.Load( input[0].VertexIndex[4]*2 );		buffer4 = VertexBuffer.Load( input[0].VertexIndex[4]*2+1 );						if (edgeTable[cubeindex] & 128)			vertlist[7] = CalcIntersection(buffer1, buffer2,										buffer3, buffer4);				buffer1 = VertexBuffer.Load( input[0].VertexIndex[0]*2 );		buffer2 = VertexBuffer.Load( input[0].VertexIndex[0]*2+1 );		buffer3 = VertexBuffer.Load( input[0].VertexIndex[4]*2 );		buffer4 = VertexBuffer.Load( input[0].VertexIndex[4]*2+1 );				if (edgeTable[cubeindex] & 256)		    vertlist[8] = CalcIntersection(buffer1, buffer2,										buffer3, buffer4);				buffer1 = VertexBuffer.Load( input[0].VertexIndex[1]*2 );		buffer2 = VertexBuffer.Load( input[0].VertexIndex[1]*2+1 );		buffer3 = VertexBuffer.Load( input[0].VertexIndex[5]*2 );		buffer4 = VertexBuffer.Load( input[0].VertexIndex[5]*2+1 );					if (edgeTable[cubeindex] & 512)		    vertlist[9] = CalcIntersection(buffer1, buffer2,										buffer3, buffer4);				buffer1 = VertexBuffer.Load( input[0].VertexIndex[2]*2 );		buffer2 = VertexBuffer.Load( input[0].VertexIndex[2]*2+1 );		buffer3 = VertexBuffer.Load( input[0].VertexIndex[6]*2 );		buffer4 = VertexBuffer.Load( input[0].VertexIndex[6]*2+1 );						if (edgeTable[cubeindex] & 1024)							vertlist[10] = CalcIntersection(buffer1, buffer2,										buffer3, buffer4);												buffer1 = VertexBuffer.Load( input[0].VertexIndex[3]*2 );		buffer2 = VertexBuffer.Load( input[0].VertexIndex[3]*2+1 );		buffer3 = VertexBuffer.Load( input[0].VertexIndex[7]*2 );		buffer4 = VertexBuffer.Load( input[0].VertexIndex[7]*2+1 );					if (edgeTable[cubeindex] & 2048)			vertlist[11] = CalcIntersection(buffer1, buffer2,										buffer3, buffer4);						GS_OUTPUT output;				for(int i = 0; triTable[cubeindex] != -1; i += 3)		{							output.Color = float4(vertlist[triTable[cubeindex][i+2]].Normal, 1.0);						output.Position = vertlist[triTable[cubeindex][i+2]].Position;			Stream.Append( output ); //error X4580: emitting a system-interpreted value which is not written in every execution path of the shader								output.Color = float4(vertlist[triTable[cubeindex][i+1]].Normal, 1.0);						output.Position = vertlist[triTable[cubeindex][i+1]].Position;			Stream.Append( output );						output.Color = float4(vertlist[triTable[cubeindex]].Normal, 1.0);						output.Position = vertlist[triTable[cubeindex]].Position;			Stream.Append( output );			Stream.RestartStrip();		}	}	}float4 PSmain(GS_OUTPUT input) : SV_TARGET{	return input.Color;}


[Edited by - noxic on November 8, 2009 10:01:35 AM]
Use source tags.
Thank you XVincentX. Using it now.
vertlist is only written inside conditional statements so I think you need to initialize it at the beginning to all zeros or something to make the compiler happy. I knows that it could happen where all conditionals are false (though I understand that in your algorithm, that should never happen, it however doesn't know that). Vertlist ultimately is written to the SV_Position output, so you'll always need to ensure that all 4 components are initialized.
You're right DieterVW. Thank you for your advice! I now initialize both vertlist and all four buffer variables outside the conditional statement.

Now it looks like this.

SurfaceVertex vertlist[12];	for(int i = 0; i <= 11; i++){	vertlist.Normal = float3(0.0f, 0.0f, 0.0f);	vertlist.Position = float4(0.0f, 0.0f, 0.0f, 0.0f);}float4 buffer1 = float4(0.0f, 0.0f, 0.0f, 0.0f);float4 buffer2 = float4(0.0f, 0.0f, 0.0f, 0.0f);float4 buffer3 = float4(0.0f, 0.0f, 0.0f, 0.0f);float4 buffer4 = float4(0.0f, 0.0f, 0.0f, 0.0f);		if(edgeTable[cubeindex] != 0x0){        .        .        .}		


However, that doesn't help to solve the problem.
What I think is wired, is that I don't get the error if I have it like this.
The index numbers are just random (though of course only numbers that are valid for the vertlist array)

Example that works (Not acceptable though, but I doesn't get the error):

GS_OUTPUT output;		for(int i = 0; triTable[cubeindex] != -1; i += 3){					output.Color = float4(vertlist[triTable[cubeindex][i+2]].Normal, 1.0);				output.Position = vertlist[1].Position; //index 1	Stream.Append( output ); 				output.Color = float4(vertlist[triTable[cubeindex][i+1]].Normal, 1.0);				output.Position = vertlist[1].Position; //index 1	Stream.Append( output );				output.Color = float4(vertlist[triTable[cubeindex]].Normal, 1.0);				output.Position = vertlist[1].Position; //index 1	Stream.Append( output );	Stream.RestartStrip();}


I can't use neither "cubeindex" or "i" in verlist[triTable[cubeindex]].Position.
Tried to do it like this:

int temp = triTable[cubeindex];
output.Position = vertlist[temp].Position;

and a lot more. Haven't come up with anything that works though.

This is how I wanna have it, but that gives "error X4580: emitting a system-interpreted value which is not written in every execution path of the shader":

GS_OUTPUT output;		for(int i = 0; triTable[cubeindex] != -1; i += 3){					output.Color = float4(vertlist[triTable[cubeindex][i+2]].Normal, 1.0);				output.Position = vertlist[triTable[cubeindex][i+2]].Position;//error	Stream.Append( output );						output.Color = float4(vertlist[triTable[cubeindex][i+1]].Normal, 1.0);				output.Position = vertlist[triTable[cubeindex][i+1]].Position;//error	Stream.Append( output );				output.Color = float4(vertlist[triTable[cubeindex]].Normal, 1.0);				output.Position = vertlist[triTable[cubeindex]].Position;//error	Stream.Append( output );	Stream.RestartStrip();}


"output.Color = float4(vertlist[triTable[cubeindex]].Normal" works whether I use "cubeindex" and "i" or for example "3" as index. Since the error message says "system-interpreted value", it's obviously something wrong with "SV_POSITION" i.e. vertlist[...].Position.
I hope someone will be able to help me with this problem.
I still haven't figure the problem out, so I'm trying again. If you need more info, I'll fix that.

This works:

for(int j = 0; j <= 11; j++){	.	.        .	output.Position = vertlist[j].Position; //using j as index.	Stream.Append( output );        .        .        .}	


This doesn't work:

for(int k = 0; triTable[cubeindex][k] != -1; k += 3) {		.	.        .	output.Position = vertlist[triTable[cubeindex][k]].Position; 	Stream.Append( output ); //error X4580: emitting a system-interpreted value which is not written in every execution path of the shader        .        .        .}	The for-loops are different, yes, but I don't get it. triTable[cubeindex][k] will return an int from -1 to 11, so shouldn't be a problem. I can't come up with any solution really :/Thanks a lot in advance! Any help will be appreciated!
I don't have any experience in this field, but try >= 0 instead of != -1 or something, that will make the compiler know that it will always be a valid index in the correct range.
Thanks Erik Rufelt! That's better than ' != -1 '. It doesn't help me to solve the problem though.
I think it's something with cubeindex, since I can now use 'k' as an index.

I can for example have it like this:

GS_OUTPUT output;        for(int k = 0; triTable[cubeindex][k] >= 0; k += 3) {				uint temp = 1;				output.Position = vertlist[triTable[temp][k+2]].Position; //this works, and I can remove temp and put for example '1' directly.	Stream.Append( output );}			


This doesn't work:

GS_OUTPUT output;        for(int k = 0; triTable[cubeindex][k] >= 0; k += 3) {				int temp = 1;				output.Position = vertlist[triTable[cubeindex][k+2]].Position; //with cubeindex, it doesn't work.	Stream.Append( output );}			


Must be something wrong when I construct the bit field that the compiler doesn't like, or something else :/ Atleast it seems I can't use it as an array index. Since I can't use 'cubeindex' as an array index, it might be somethiing with this code I think.

cubeindex code:

uint cubeindex = 0;	[unroll] //Avoids flow-control constructs. for(int i = 7; i > -1; i--){	//construct bit field with a bit set for every vertex inside surfaceindex	//for example 1111 1111 = 255 etc. 		cubeindex |= (uint(VertexBuffer.Load( input[0].VertexIndex*2+1 ).w < isolevel) << i);}	


Feels like I've tried so many things though, but nothing helps. Will continue testing ;>

This topic is closed to new replies.

Advertisement