周期为T的函数f(x)可以用傅里叶级数来表示,但是无法表示im[非周期函数]。非周期函数可以看做周期T -> infinity的周期函数。 当T -> infinity时,则 omega (2 pi) / T -> 0 代入傅里叶级数中,得到: f(x) & sum(n -infinity) ^(infinity) dn dot.c e^(i n omega x) \ & sum(n -infinity)^infinity
傅里叶函数集cal(Phi)是正交函数集,其中任意两个函数的内积都为0。cal(Phi)的定义如@eq-fourier-function 所示。
cal(Phi) {1, sin(w t), cos(w t), sin (2 w t), cos(2 w t), dots.c, sin(n w t), cos (n w t)}
在移动端,地形渲染的瓶颈在于纹理采样数过多。因此,为了优化性能,我们需要减少渲染时的纹理采样数量。基于对美术场景的观察,我们可以发现:im[美术场景地形的大部分区域基本都仅仅只使用到了一层的地表纹理,只有少部分过渡区域才会使用到多层纹理混合。例如,草地与泥地的过渡区域。] 基于该观察,我们可以执行以下优化: - 对地表区域进行分割,分割出使用单层纹理的地表区域以及使用多层纹理的地表区域 - 对于单层地表纹理区域,在Shader中采样一
球谐函数是定义在球面坐标系上的一组 基函数 (basis function),与傅里叶基函数类似。对于任意的周期函数f(x),傅里叶基函数{1, sin x, cos x, dots, sin (m x), cos( m x), dots }的线性组合都能够用来对函数f(x)进行拟合。类似的,对于定义在球面上的函数f(theta, phi),球谐函数的线性组合可以用来对函数f(theta, phi)进行拟合,如 @spherical-h
计算机应用常常需要使用简单函数的线性组合来拟合某个复杂函数。例如,在游戏开发中,为了实现某些渲染效果,通常会在shader中使用到正弦函数。但是,由于GPU计算正弦函数的指令数较多,性能开销比较高,开发者通常会考虑使用多项式函数x^n的线性组合来拟合正弦函数,从而减少计算指令数,提高渲染性能。 假设我们需要计算正弦函数f(x) sin(x)在区间[-pi, pi]上的值。为了减少性能开销, 我们考虑使用多项式函数x^n的线性组合来逼近
当物体运动或者相机运动时,我们需要通过reprojection操作来获得某个pixel在前一帧中的屏幕空间位置,然后从该位置获取history color。然而,并不是在任何情况下,history color都是正确的。 相机/物体运动导致的history color失效 如 @fig:occlusion-history-color 所示,当相机在场景中运动时,当前帧中,某个pixel对应的场景采样点为红色点,为了得到该采样点的his
Super sampling技术通过在一个像素中分布多个样本(sample)的方式来进行反走样,而TAA(Temporal antialiasing)的基本思想是将一个像素中的多个样本分布在多帧中,然后通过将多帧中的样本信息进行加权平均来得到与super sampling相同的效果。 在静态场景下,即场景中的所有物体(几何物体、相机、灯光等)的属性都不变的情况下,TAA能够取得与super sampling相同的效果,而且TAA的效率相
在代码中,类与类、类与方法或者其他软件实体之间总是存在着某些依赖关系。例如,假设某个类A的对象a需要完成某个功能,然而,它需要通过与类B的对象b的协作才能够完成该功能。在这个过程中,类B则成为类A的一个依赖。类B的对象b则成为了一个service对象(服务的提供者),类A的对象a则是一个client对象(服务的使用者)。 在编写代码时,如果类A对类B存在依赖,即类A完成某个功能需要类B提供的某项服务。那么,我们就需要思考一个问题—我们该
第 1 页 / 共 1 页