You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
870 B
33 lines
870 B
#version 450
|
|
|
|
layout(binding = 0) uniform Uniforms {
|
|
mat4 scene_from_model;
|
|
mat4 projection_from_scene;
|
|
vec2 screen_size;
|
|
float lod;
|
|
} uniforms;
|
|
|
|
layout(location = 0) in vec3 in_position;
|
|
layout(location = 1) in vec3 in_position2;
|
|
layout(location = 2) in vec3 in_normal;
|
|
layout(location = 3) in vec3 in_color;
|
|
|
|
layout(location = 0) out vec4 out_position;
|
|
layout(location = 1) out vec3 out_normal;
|
|
layout(location = 2) out vec3 out_color;
|
|
|
|
void main() {
|
|
float lod = clamp(
|
|
2.0 * dot(transpose(uniforms.scene_from_model)[0].xyz, in_position) + 0.5,
|
|
0.0, 1.0
|
|
);
|
|
vec3 position = mix(in_position2, in_position, lod);
|
|
out_position =
|
|
uniforms.projection_from_scene *
|
|
uniforms.scene_from_model *
|
|
vec4(position, 1.0);
|
|
out_normal = in_normal;
|
|
out_color = in_color;
|
|
|
|
gl_Position = out_position;
|
|
}
|
|
|