#version 330 core
layout(location=0) in vec3 vertex_position_modelspace;
layout(location=1) in vec3 normal_position_modelspace;
layout(location=2) in vec2 texture_position_modelspace;
uniform float time_counter;
uniform mat4 perspective;
uniform mat4 modelspace;
uniform mat4 modelspace2;
uniform mat4 camera;
uniform mat4 camera2;

out vec2 texcoord_out;
out vec4 vertex_out;
out vec3 normal_out;
out vec3 view_dir;
out vec3 color_out;

void main() {
	vec4 pos, model, tmp;
	normal_out = normal_position_modelspace;
	texcoord_out.y = 1 - texture_position_modelspace.y;
	texcoord_out.x = texture_position_modelspace.x;

	model = vec4(vertex_position_modelspace, 1);
	
	//pos = /* camera2 * camera * */modelspace * model;
	pos = model; // * modelspace /*camera * camera2*/;

	color_out.x = abs(fract(sin(dot(pos.yz ,vec2(12.9898,78.233))) * 43758.5453));
	color_out.y = abs(fract(sin(dot(pos.yz ,vec2(12.9898,78.233))) * 43758.5453));
	color_out.z = abs(fract(sin(dot(pos.yz ,vec2(12.9898,78.233))) * 43758.5453));
	
	vertex_out = pos;
	tmp = normalize(vec4(0, 0, 1.0, 1) * modelspace);
	view_dir = tmp.xyz;

	gl_Position.x = pos.x * 100;
	gl_Position.y = pos.y * 100;
	gl_Position.z = 0.999;
	gl_Position.w = 1.0;
}
