Почему этот вершинный шейдер GLSL не компилируется?

Я пишу свой собственный шейдер с помощью OpenGL и не понимаю, почему этот шейдер не компилируется. Может ли кто-нибудь еще взглянуть на это?

В качестве вершины я передаю 2 числа с плавающей запятой (разделенных байтами) в этом формате:

Float 1:

Byte 1: Position X
Byte 2: Position Y
Byte 3: Position Z
Byte 4: Texture Coordinate X


Float 2:

Byte 1: Color R
Byte 2: Color G 
Byte 3: Color B
Byte 4: Texture Coordinate Y

А это мой шейдер:

in vec2 Data;
varying vec3 Color;
varying vec2 TextureCoords;

uniform mat4 projection_mat;
uniform mat4 view_mat;
uniform mat4 world_mat;

void main() 
{
    vec4 dataPosition = UnpackValues(Data.x);
    vec4 dataColor = UnpackValues(Data.y);

    vec4 position = dataPosition * vec4(1.0, 1.0, 1.0, 0.0);
    Color = dataColor.xyz;

    TextureCoords = vec2(dataPosition.w, dataColor.w)

    gl_Position = projection_mat * view_mat * world_mat * position;
}

vec4 UnpackValues(float value)
{
    return vec4(value % 255, (value >> 8) % 255, (value >> 16) % 255, value >> 24);
}

Если вам нужно еще информация, я буду рад подчиниться.

5
задан Azzi777 22 July 2011 в 01:42
поделиться