第 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的,所以要换算回来再算。