Shader 学习 · 模块
Built-In functions
GLSL 内建函数与常用写法:step / fract / mix / smoothstep / dot / clamp…
- 01 FragmentShader 过 2D 片段
- 02 Vector Math 只是加法,过 2D 片段
- 03 Swizzling 这个词是交换的意思,向量输出接口可以随意调换顺序,简单 2D 片段
- 04 UV坐标和统一变量 gl_FragCoord.xy 是某线程在像素渲染时,该像素的显示器坐标 2D 片段
- 05 Step 这个方法是判断step(a, b)中,b是否大于a,如果大于a,那么返回1,否则返回0 2D 片段
- 06 反向step float invertedStep = 1.0 - step(0.5, uv.x); 代码复盘
- 07 max ![[Pasted image 20250510120408.png]] 2D 片段
- 08 Step Union ![[Pasted image 20250510121700.png]] 2D 片段
- 09 Fract 差不多 2D 片段
- 10 Tile Pattern 处理器在实际的扫每一个像素,思考不能从uv开始,而是从“每个像素就是一个线程”开始,在某个像素,我希望它画画,希望它执行pattern代码,那么超出的uv值就缺乏意义,我现在只是希望在我定义的grid中,在对应位置的像素/线程上调用pattern代码并给出预期的输出 2D 片段
- 11 Fract - Grid 我的设计则是之前作业的合集:将uv按照想要的比例放大,并用fract检查相对坐标,获取repeateduv, 并写了一个方法描述图案,最后计算了marginscale, 根据需要的像素,在屏幕上的大小,乘以固定方向的比例,再丢进图案方法。 2D 片段
- 12 Mod 核心思路:step(mod(floor(uv.x), 3.0), 1.0); 2D 片段
- 13 Mix 要求是从0.25的位置开始算 2D 片段
- 14 Mix - Bilinear Interpolation 简单 2D 片段
- 15 Smoothstep 没有区别 2D 片段
- 16 ABS 顺序不一样,但是就是一个思路 2D 片段
- 17 ABS - Rhomb 函数的平移,对称,合并 2D 片段
- 18 Ceil 完全一致 2D 片段
- 19 Int/Floor 我这里在第三次迭代找到了答案,这一次我用的if先跑通然后再做的简化,不能被方法的抽象困住了 2D 片段
- 20 Distance/Length 忘了其实已经标准化了,中心坐标就是vec(0.5)。 2D 片段
- 21 Aspect Ratio 思路一致,他的更好用 2D 片段
- 22 Atan 23: Sin 2D 片段
- 23 Sin `<2025/05/18>` 2D 片段
- 24 向量标准化 normalize 等价 v/length(v) 2D 片段
- 25 Dot 简单,但是要注意,我们实际操作的空间是normalized,显示的画面是扁的,操作的画面是1:1的,所以要换算回来再算。 2D 片段
- 26 Clamp y=x的实现:把x当y用就好了 2D 片段
- 27 Texture eezz 纹理
- 28 材质镜像 我这结论是基本和chatgpt聊出来的 纹理
- 29 Discard Discard 方法用来忽略uv栅格 2D 片段
- 30 Time sin 的值域-1.0 到1.0,除2是0.5-0.5, 加0.5是0-1。 纹理
- 31 Sprite Animation 唯一区别是 float y = mod(floor(frame / 2.0), 4.0);他多做了个mod4。 纹理
- 32 Radial Shutter Animation 使用两个不同频率的 `cos()` 控制遮罩与切图节奏,导致不同步; 纹理
- 33 dFdx/dFdy dFdx/dFdy本质上是显卡线程之间的通讯。检查隔壁线程在这个值上的区别 纹理
- 34 CrossProduct 这个是标准答案了 网格
- 35 Branch Divergence 从结果来看没有区别? 纹理
- 36 MIP Mapping shader-learning 自学第 45 课:MIP Mapping 代码复盘
- 37 MIP Mapping Level Calculation shader-learning 自学第 46 课:MIP Mapping Level Calculation 代码复盘