mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2024-11-30 08:20:51 +00:00
38 lines
853 B
GLSL
38 lines
853 B
GLSL
|
#version 450
|
||
|
#extension GL_ARB_separate_shader_objects : enable
|
||
|
|
||
|
layout(location = 0) in vec3 inVertex;
|
||
|
layout(location = 1) in vec4 inColor;
|
||
|
|
||
|
layout(push_constant) uniform PushConstant
|
||
|
{
|
||
|
mat4 mvpMatrix;
|
||
|
} pc;
|
||
|
|
||
|
layout(binding = 0) uniform UniformBufferObject
|
||
|
{
|
||
|
float pointSize;
|
||
|
float pointScale;
|
||
|
float minPointSize;
|
||
|
float maxPointSize;
|
||
|
float att_a;
|
||
|
float att_b;
|
||
|
float att_c;
|
||
|
} ubo;
|
||
|
|
||
|
layout(location = 0) out vec4 color;
|
||
|
|
||
|
out gl_PerVertex {
|
||
|
vec4 gl_Position;
|
||
|
float gl_PointSize;
|
||
|
};
|
||
|
|
||
|
void main() {
|
||
|
gl_Position = pc.mvpMatrix * vec4(inVertex, 1.0);
|
||
|
|
||
|
float dist_atten = ubo.pointScale / (ubo.att_a + ubo.att_b * gl_Position.w + ubo.att_c * gl_Position.w * gl_Position.w);
|
||
|
gl_PointSize = clamp(ubo.pointScale * ubo.pointSize * sqrt(dist_atten), ubo.minPointSize, ubo.maxPointSize);
|
||
|
|
||
|
color = inColor;
|
||
|
}
|