跳到主要内容
← Advanced Rendering

Advanced Rendering

Screen-Aligned Billboards

shader-learning 自学第 4 课:Screen-Aligned Billboards

实时渲染 · 网格 GLSL

第 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;
}