43 lines
1.1 KiB
GLSL
43 lines
1.1 KiB
GLSL
#version 450
|
|
|
|
layout(location = 0) in vec3 fragColor;
|
|
layout(location = 1) in vec3 fragLineStart;
|
|
layout(location = 2) in vec3 fragLineEnd;
|
|
|
|
layout(location = 0) out vec4 outColor;
|
|
|
|
layout(binding = 0) uniform UniformBufferObject {
|
|
mat4 proj;
|
|
mat4 model;
|
|
mat4 view;
|
|
} ubo;
|
|
|
|
layout(binding = 1) uniform DashParameters {
|
|
float dashSize;
|
|
float gapSize;
|
|
float dashOffset;
|
|
float uAASize;
|
|
int useWorldSpace;
|
|
} dashParams;
|
|
|
|
void main() {
|
|
vec2 fragPos = gl_FragCoord.xy;
|
|
|
|
// 网格参数
|
|
float gridSize = 14.0; // 网格大小
|
|
float dotRadius = 6.0; // 点状半径
|
|
|
|
// 计算当前片段所在的网格和网格中心坐标
|
|
vec2 gridCoord = fragPos / gridSize;
|
|
vec2 gridCenter = (floor(gridCoord) + 0.5) * gridSize;
|
|
|
|
// 计算片段到网格中心的距离
|
|
float distanceToCenter = length(fragPos - gridCenter);
|
|
|
|
// 如果距离超过点状半径,丢弃(创建点状虚线)
|
|
if (distanceToCenter > dotRadius && fragColor.y > 0.5) {
|
|
discard;
|
|
}
|
|
|
|
outColor = vec4(fragColor, 1.0);
|
|
} |