Source

LWJGL Shader Tutorials / src / main / java / com / ra4king / opengl / arcsynthesis / gl33 / chapter4 / example2 / example4.2.vert

Full commit
#version 330

layout(location = 0) in vec4 position;
layout(location = 1) in vec4 color;

smooth out vec4 theColor;

uniform vec2 offset;
uniform float zNear;
uniform float zFar;
uniform float frustumScale;

void main()
{
	vec4 cameraPos = position + vec4(offset, 0.0, 0.0);
	vec4 clipPos;
	
	clipPos.xy = cameraPos.xy * frustumScale;
	clipPos.z = cameraPos.z * (zNear + zFar) / (zNear - zFar) + (2 * zNear * zFar) / (zNear - zFar);
	clipPos.w = -cameraPos.z;
	
	gl_Position = clipPos;
	theColor = color;
}