blob: 29955bb3de7294b7a28fbc6319be5db65b9a306e [file] [log] [blame]
#version 150 core
in vec3 vertexPosition;
in vec3 vertexNormal;
out VertexData {
vec3 position;
vec3 normal;
} v_out;
out float gl_ClipDistance[8];
struct Section {
vec4 equation;
vec3 center;
};
struct SectionsData {
int sectionsCount;
Section sections[8];
};
uniform SectionsData sectionsData;
uniform mat4 modelView;
uniform mat4 modelMatrix;
uniform mat3 modelViewNormal;
uniform mat4 mvp;
void main()
{
v_out.normal = normalize( modelViewNormal * vertexNormal );
v_out.position = vec4(modelView * vec4( vertexPosition, 1.0 )).xyz;
vec3 worldPos = vec4(modelMatrix * vec4(vertexPosition, 1.0)).xyz;
for (int i = 0; i < sectionsData.sectionsCount; ++i) {
gl_ClipDistance[i] = dot(vec4(worldPos, 1.0), sectionsData.sections[i].equation);
}
gl_Position = mvp * vec4( vertexPosition, 1.0 );
}