mirror of
https://github.com/yquake2/ref_vk.git
synced 2024-11-29 23:22:11 +00:00
4b536019c3
This was first developed in a feature branch in the main yquake2 repo. It was merged into master in early 2021, but the experiences of the following month showed that it is not ready for prime time. There're glitches with 3rd party assets, restarts are still shaky, etc. Having the code in a separate repo allows us to: * Release Vulkan independent if YQ2. * Give commit access to contributors interested in Vulkan. This code is the same as in yquake/yquake2 ecdf912713eef55d6c5d5a772259b44e3fc232c4.
37 lines
853 B
GLSL
37 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;
|
|
}
|