跳到主要内容
← Vertex Transformations

Vertex Transformations

Vertex Attributes - Circle

失误的原因是没有认知到要外推position这件事,也就是line18的`dir*0.5`

实时渲染 · 网格 GLSL

第 9 课:Vertex Attributes - Circle

实现:失误的原因是没有认知到要外推position这件事,也就是line18的dir*0.5

实现

// Already availabe:
// attribute vec3 position;
// attribute vec2 uv;

attribute vec3 nextPosition;

varying vec2 vUv;

void main() {
  vUv = uv;
  vec2 ratio = vec2(projectionMatrix[0][0] / projectionMatrix[1][1], 1.0);

  vec2 dir = nextPosition.xy - position.xy;
  vec2 tang = normalize(dir);
  vec2 normal = vec2(-tang.y, tang.x);
  float signal = sign((uv.x - 0.5) * (uv.y - 0.5));

  vec2 dudv = dir*0.5 + normal*signal*0.25;

  gl_Position = vec4(position.xy * ratio + dudv * ratio, 0.0, 1.0);
}

复盘笔记

  • 失误的原因是没有认知到要外推position这件事,也就是line18的dir*0.5
  • <2025/06/05>