Files
OpenVulkano/openVulkanoCpp/Shader/pointCloud.vert
2021-10-12 00:54:11 +02:00

46 lines
1.0 KiB
GLSL

#version 450
#extension GL_ARB_separate_shader_objects : enable
layout(location = 0) in vec4 position;
layout(location = 1) in vec4 normal;
layout(location = 2) in vec4 color;
layout(location = 3) in float weight;
layout(location = 0) out vec4 outColor;
layout(binding = 0) uniform NodeData
{
mat4 world;
} node;
layout(std140, push_constant) uniform CameraData
{
mat4 viewProjection;
mat4 view;
mat4 projection;
vec4 camPos;
} cam;
void main()
{
//vec4 worldPos = node.world * position;
vec4 worldPos = node.world[3] + position;
worldPos.w = 1;
//float discardHelper = 0;
float discardHelper = normal.a * 3;
vec3 camDir = (worldPos - cam.camPos).xyz;
// normal culling
if (dot(normal.xyz, camDir) > 0)
{
discardHelper += 3;
}
outColor = color;
//outColor = normal / 2 + 0.5f;
//outColor = vec4(weight/10, weight / 50, weight / 100, 1);
//gl_Position = normalize(cam.viewProjection * worldPos);
gl_Position = cam.viewProjection * worldPos;
gl_PointSize = max(1, 4 - dot(camDir, camDir) / 2);
gl_Position.z += discardHelper;
}