您正在查看: 图形 分类下的文章

Radix4 Radix8等更高级的FFT的推导以及Unity中的实现和性能分析

一、Radix2的傅里叶变换的缺陷

首先,我们解释一下什么是Radix2,Radix4,Radix8等的傅里叶变换。在上一篇中,我们得出我们可以将N的傅里叶变换的输入拆为奇数和偶数,然后奇数和偶数分别进行傅里叶变换,再通过蝶形变换组合为N的傅里叶变换的结果。简单的公式形式化描述如下

$$
DFT(N) = DFT_1(\frac N 2) \oplus DFT_2(\frac N 2), \oplus表示蝶形变换
$$

我们可以知道,一次蝶形变换中所做的计算非常少,每一轮GPU派发很多任务,然后每个任务仅执行一次2个数据的蝶形变换,然后就结束写回Buffer了。这样我们的瓶颈往往会卡在DrawCall上。

Continue Reading...

Radix2 FFT推导以及Unity中实现

一、连续傅里叶变换 和 离散傅里叶变换

假设$f$是复平面上的勒贝格可积的函数,则定义$f$的连续傅里叶变换$F$是
对于任意实数$w$,

$$
F(\omega) =
\int_{-\infty} ^{\infty} f(t) e^ { -i \omega t }dt
\tag{1}

$$

在这里,我们解释$\omega$为角频率,$F(\omega)$是复数,并且是信号在该频率成分处的幅度和相位。

Continue Reading...

Shader复习与深入-Per Pixel Lighting

*转自 http://www.zwqxin.com/archives/shaderglsl/review-per-pixel-lighting-shader.html *

抛开光线跟踪和辐射度算法,现在的实时渲染主要用的是GOURAUD模型和PHONG模型,粗俗地说,就是一个是顶点级别的一个是像素级别的,对应per vertex lighting和per pixel lighting。细节点说,就是一个是对顶点插值,一个是对法线插值。具体的区别网络上到处可见辨析。我真正“接触”per pixel lighting,是在初学GLSL的时候。

Continue Reading...

透视投影

透视投影

概述

投影变换完成的是如何将三维模型显示到二维视口上,这是一个三维到二维的过程。你可以将投影变换看作是调整照相机的焦距,它模拟了为照相机选择镜头的过程。投影变换是所有变换中最复杂的一个。

Continue Reading...