第 4 课:Screen-Aligned Billboards
实现
uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
uniform mat4 projectionMatrix;
in int index;
in vec3 position;
in vec2 uv;
const float dx[4] = float[](-0.25, 0.25, 0.25, -0.25);
const float dy[4] = float[](-0.25, -0.25, 0.25, 0.25);
out vec2 vUv;
void main() {
vUv = uv;
vec4 positionInViewSpace = viewMatrix * modelMatrix * vec4(position, 1.0);
positionInViewSpace.xy += vec2(dx[index], dy[index]);
gl_Position = projectionMatrix * positionInViewSpace;
}