Texture errors in CubeMap
Posted
by
shade4159
on Game Development
See other posts from Game Development
or by shade4159
Published on 2013-10-29T22:52:34Z
Indexed on
2013/10/30
4:17 UTC
Read the original article
Hit count: 300
I am trying to apply this texture as a cubemap. This is my result:
Clearly I am doing something with my texture coordinates, but I cannot for the life of me figure out what. I don't even see a pattern to the texture fragments. They just seem like a jumble of different faces. Can anyone shed some light on this?
Vertex shader:
#version 400
in vec4 vPosition;
in vec3 inTexCoord;
smooth out vec3 texCoord;
uniform mat4 projMatrix;
void main()
{
texCoord = inTexCoord;
gl_Position = projMatrix * vPosition;
}
My fragment shader:
#version 400
smooth in vec3 texCoord;
out vec4 fColor;
uniform samplerCube textures
void main()
{
fColor = texture(textures,texCoord);
}
Vertices of cube:
point4 worldVerts[8] = {
vec4( 15, 15, 15, 1 ),
vec4( -15, 15, 15, 1 ),
vec4( -15, 15, -15, 1 ),
vec4( 15, 15, -15, 1 ),
vec4( -15, -15, 15, 1 ),
vec4( 15, -15, 15, 1 ),
vec4( 15, -15, -15, 1 ),
vec4( -15, -15, -15, 1 )
};
Cube rendering:
void
worldCube(point4* verts, int& Index, point4* points, vec3* texVerts)
{
quadInv( verts[0], verts[1], verts[2], verts[3], 1, Index, points, texVerts);
quadInv( verts[6], verts[3], verts[2], verts[7], 2, Index, points, texVerts);
quadInv( verts[4], verts[5], verts[6], verts[7], 3, Index, points, texVerts);
quadInv( verts[4], verts[1], verts[0], verts[5], 4, Index, points, texVerts);
quadInv( verts[5], verts[0], verts[3], verts[6], 5, Index, points, texVerts);
quadInv( verts[4], verts[7], verts[2], verts[1], 6, Index, points, texVerts);
}
Backface function (since this is the inside of the cube):
void quadInv( const point4& a, const point4& b, const point4& c, const point4& d ,
int& Index, point4* points, vec3* texVerts)
{
quad( a, d, c, b, Index, points, texVerts, a.to_3(), b.to_3(), c.to_3(), d.to_3());
}
And the quad drawing function:
void quad( const point4& a, const point4& b, const point4& c, const point4& d,
int& Index, point4* points, vec3* texVerts, const vec3& tex_a, const vec3& tex_b, const vec3& tex_c, const vec3& tex_d)
{
texVerts[Index] = tex_a.normalized(); points[Index] = a; Index++;
texVerts[Index] = tex_b.normalized(); points[Index] = b; Index++;
texVerts[Index] = tex_c.normalized(); points[Index] = c; Index++;
texVerts[Index] = tex_a.normalized(); points[Index] = a; Index++;
texVerts[Index] = tex_c.normalized(); points[Index] = c; Index++;
texVerts[Index] = tex_d.normalized(); points[Index] = d; Index++;
}
Edit: I forgot to mention, in the image, the camera is pointed directly at the back face of the cube. You can kind of see the diagonals leading out of the corners, if you squint.
© Game Development or respective owner