vertexShaderSource
enum vertexShaderSource =
"
#version 420 core
layout(location = 0) in vec3 in_position;
layout(location = 1) in vec3 in_normal;
layout(location = 2) in vec4 in_color;
layout(location = 3) in vec2 in_texcoord;
layout(std140, binding = 4) uniform InstanceData {
mat4 transformations[" ~ to!string(maxInstances) ~ "];
};
//==============
out vec2 _normal;
out vec2 _texture;
out vec3 _color;
//==============
out gl_PerVertex {
vec4 gl_Position;
};
vec2 encode(vec3 n) {
float f = sqrt(8*n.z+8);
return n.xy / f + 0.5;
}
void main() {
// mat4 transformation = mat4(1.0);
// transformation[0][0] = 0.005;
// transformation[1][1] = 0.005;
// transformation[2][2] = 0.005;
gl_Position = transformations[0] * vec4(in_position.x, in_position.y, in_position.z, 1.0);
_normal = encode(in_normal);
_texture = in_texcoord;
_color = in_color.xyz;
};
";
three gl renderer
manifest constantsstructs