28 lines
802 B
GLSL
28 lines
802 B
GLSL
#version 330 core
|
|
layout(location=0) in vec3 aPosition;
|
|
layout(location=1) in vec3 aNormal;
|
|
layout(location=2) in vec3 aDirection;
|
|
uniform vec3 uChunkPosition;
|
|
uniform vec3 uBodyOrigin;
|
|
uniform float uRadius;
|
|
uniform mat4 uViewProjection;
|
|
uniform mat4 uBodyToWorld;
|
|
uniform float uFar;
|
|
uniform vec3 uMaterialAnchor;
|
|
out vec3 vMaterial;
|
|
out vec3 vBody;
|
|
out vec3 vDirection;
|
|
out vec3 vNormal;
|
|
out vec3 vWorld;
|
|
out float vFragDepth;
|
|
void main() {
|
|
vWorld=uChunkPosition+mat3(uBodyToWorld)*aPosition;
|
|
vMaterial=aPosition+uMaterialAnchor;
|
|
vBody=uBodyOrigin+aPosition/uRadius;
|
|
vDirection=aDirection; vNormal=aNormal;
|
|
vec4 clip=uViewProjection*vec4(vWorld,1);
|
|
vFragDepth=clip.w+1.0;
|
|
gl_Position=clip;
|
|
gl_Position.z=(2.0*log2(max(.0001,vFragDepth))/log2(uFar+1.0)-1.0)*clip.w;
|
|
}
|