跳到主要内容
← Built-In functions

Built-In functions

Atan

23: Sin

实时渲染 · 2D 片段 GLSL

第 31 课:Atan

我的解:23: Sin

我的解

uniform vec2 iResolution;
#define M_PI 3.1415926535897932384626433832795

void main() {
  vec2 uv = gl_FragCoord.xy / iResolution.xy;
  vec2 ratio = vec2(iResolution.x/iResolution.y, 1.0);
  float dist = distance(uv*ratio, vec2(0.5)*ratio);
  float t = 1.0 - step(0.5, dist);

  vec2 green = vec2(0.0, 1.0);
  vec2 red = vec2(1.0, 0.0);

  vec2 dxdy = uv*ratio-vec2(0.5)*ratio;
  float angle = atan(dxdy.y, dxdy.x);

  float normalizedAngle = abs(angle/M_PI);

  vec2 mixed = mix(red,green, normalizedAngle);

  gl_FragColor = vec4(mixed*t,0.0, 1.0);
}

复盘笔记

  • 23: Sin