24 lines
736 B
GLSL
24 lines
736 B
GLSL
#version 330 core
|
|
layout(location=0) in vec3 aPosition;
|
|
layout(location=1) in vec3 aColor;
|
|
layout(location=2) in float aSize;
|
|
uniform vec3 uOrigin;
|
|
uniform vec3 uAxisX;
|
|
uniform vec3 uAxisY;
|
|
uniform vec3 uAxisZ;
|
|
uniform vec3 uForward;
|
|
uniform vec3 uRight;
|
|
uniform vec3 uUp;
|
|
uniform float uAspect;
|
|
uniform float uTanHalfFov;
|
|
uniform float uNearFade;
|
|
out vec3 vColor;
|
|
void main(){
|
|
vec3 delta=uAxisX*aPosition.x+uAxisY*aPosition.y+uAxisZ*aPosition.z-uOrigin;
|
|
float d=length(delta),z=dot(delta,uForward);
|
|
vec2 xy=vec2(dot(delta,uRight)/uAspect,dot(delta,uUp))/uTanHalfFov;
|
|
gl_Position=z>0.0?vec4(xy,z*.999999,z):vec4(2,2,2,1);
|
|
gl_PointSize=clamp(aSize,1.0,4.5);
|
|
vColor=aColor*smoothstep(uNearFade,uNearFade*2.0,d);
|
|
}
|