跳到主要内容
← Built-In functions

Built-In functions

Dot

简单,但是要注意,我们实际操作的空间是normalized,显示的画面是扁的,操作的画面是1:1的,所以要换算回来再算。

实时渲染 · 2D 片段 GLSL

第 34 课:Dot

我的解:简单,但是要注意,我们实际操作的空间是normalized,显示的画面是扁的,操作的画面是1:1的,所以要换算回来再算。

我的解

uniform vec2 iResolution;
void main() {
  vec2 uv = gl_FragCoord.xy / iResolution.xy;
  vec2 apex = vec2(0.5, 0.75);
  vec2 ratio = vec2(iResolution.x,iResolution.y);

  vec2 v2apex = uv*ratio - apex*ratio;
  vec2 v_H = vec2(0.0, -1.0);

  vec2 n_v2apex = normalize(v2apex);
  vec2 n_h = normalize(v_H);

  float result = 0.0;
  float cosValue = dot(n_v2apex,n_h);
  float projOnHVec = dot(n_h, v2apex);

  float red = step(cos(radians(60.0)),cosValue);
  red *= (1.0 - step(0.5, apex.y-uv.y));

  gl_FragColor = vec4(red, 0.0, 0.0, 1.0);
}

复盘笔记

  • 简单,但是要注意,我们实际操作的空间是normalized,显示的画面是扁的,操作的画面是1:1的,所以要换算回来再算。