原理

在光栅化时,GPUs会在同一时刻并行运行很多Fragment Shader,但是并不是一个Pixel一个Pixel去执行的,而是将其组织在2x2的一组Pixels分块中,去并行执行。而偏导数(dFdx、dFdy)就正好是计算的这一块像素中的变化率

GLSL
// 以下v可以是任何类型
dFdx(v) = 该像素点右边的v值 - 该像素点的v值;
dFdy(v) = 该像素点下边的v值 - 该像素点的v值;
fwidth(v) = abs(dFdx(v)) + abs(dFdy(v));
点击展开查看更多

fwidth即计算出当前像素在横坐标和纵坐标的总变化率。

应用

1. 判断 Mipmap

2. 寻边

版权声明

作者: Chaim

链接: https://chaim.eu.org/posts/dfdxdfdyfwidth/

许可证: CC BY-NC-SA 4.0

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Please attribute the source, use non-commercially, and maintain the same license.

开始搜索

输入关键词搜索文章内容

↑↓
ESC
⌘K 快捷键