GAMES202 6 Real-time Enviroment Mapping 2
Background Knowledges 一些理解:Product-integral=滤波=卷积=加权平均:
卷积 $\int_{\Omega}f(x)g(x)dx$
滤波 考虑傅里叶变换,先乘积再积分和频域上的滤波结果相同
加权平均,把 $f(x)$ 看成权重函数, $g(x)$ 看成被积函数
Fourier Transfer 傅里叶变换:
低频信号:分布在频域图中间,表示的是模糊
高频信号:分布在周围,表示的更多是图像的边界
Basis Function 基函数:
可以类比于线性空间的标准正交基。傅里叶级数的每个项都是标准正交基
可以用一套基函数的线性组合来表达该函数空间中的任何函数,比如说三角函数代表的傅里叶展开,以及幂级数代表的泰勒展开。
Real Time Environment Lighting (& global illumination)Spherical Harmonics 球面谐波函数(SH)What 是什么:
一系列 定义在球面上的 二维 函数 $B_i(\omega)$
另外一个理解:一维情况下的傅里叶函数
长得和电子云波函数一样卧槽,每 ...
GAMES202 5 Real-time Enviroment Mapping
Distance Field Soft Shadow (DFSS)先复习了一下GAMES101的Distance Function在几何1里面讲的
sdf有向距离场
Distance Field的运用
Ray marching (sphere tracing) to perform ray-SDF intersection
通过sdf给出的“安全距离”,
Use SDF to determine the (approx.) percentage of occlusion
a “safe” angle seen from the eye 从安全距离得到安全角度(最小的那个)
安全角度越小,阴影就越黑
怎么算安全角:
不用 $arcsin(\frac{SDF(p)}{|p-o|})$ 而是用 $min{\frac{k\cdot SDF(p)}{|p-o|},1.0}$
优点:
快(但是生成也需要时间)
高质量
缺点:
需要预计算
需要存储
会有artifact
Shading from Environment Lighting 环境光照技术:Image-B ...
GAMES202 4 Real-Time Shadows 2
A deeper look at pcffilter/convolution:
$[\omega*f](p)=\sum_{q\in \mathcal{N}}^{}\omega(p,q)f(q)$
in PCSS: 实际上也是一个卷积运算来求得Visibility函数
$V(x)=\sum_{q\in \mathcal{N} (p)}^{}\omega(p,q)\cdot \chi^+[D_{SM}(q)-D_{sence}(x)]$
PCF是在图像(模型几何结构的二维投影)层面处理,而非是先shadow map之后再在shadow map上面做模糊。
Revisiting PCSSPCSS的完整算法
Step 1 Blocker Search 遮挡物搜索,在一个确切距离中得到平均遮挡深度。
Step 2 Penumbra Estimate 半影估计,用平均遮挡深度来决定filter size
Step 3 Percentage Closer Filter 用产生的Adaptive filter size进行PCF
哪一步更慢?
第一步和第三步,每次都要看遮挡物,PCF也会比较 ...
Makefile & Cmake 使用
先放一个现成的CMakeLists.txt模板## 只需修改前三行set(_PROJECT_NAME_ "project_name_x") # 设置project的名字set(_EXE_NAME_ "exe_name_x") # 设置target的名字set(_SRC_FILE_NAME_ "file_path_x") # 设置target源代码所在的位置cmake_minimum_required(VERSION 3.15)project(${_PROJECT_NAME_})set(CMAKE_CXX_STANDARD 17)set(CMAKE_CXX_STANDARD_REQUIRED ON)# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -O3")add_executable(${_EXE_NAME_})aux_source_directory(${_SRC_FILE_NAME_& ...
GAMES202 3 Real-Time Shadows 1
Shadow Mapping 生成硬阴影2 pass Algorithm 渲染两边的算法
第一遍,从光源出发,生成sm(Shadow Map)
第二遍,从相机出发,使用sm检测其是否在阴影里
一个完全在图像中的算法:
优点:一旦图像已经生成,不需要知道图像的几何场景
缺点:会产生自遮挡现象,以及锯齿
自遮挡(self occlusion):Shadow Map中的像素会把一个平面采样分成一块一块的阶梯状深度,但是在从相机出发而言,就会认为,地板之间会发生相互遮挡
处理:添加一个可变的Bias,如果不超出这个bias,就忽略遮挡的影响。(但也相应引入detached shadow不接触的阴影)
另一种方法:second-depth shadow mapping,记录次小深度,用中点深度进行遮挡比较。但是没人用,因为模型不能是全平面,
锯齿(Alias)
实时渲染不相信复杂度(哈哈哈哈)(只相信时间,RTR中常数也十分重要)
Approximation in RTR实时渲染中的一个重要的约等于,主要是把积分中的两个函数拆开来:
$\int_{\Omega}f(x)g(x) ...
Stochastic Process 1 Markov Property (马尔可夫性)
离散时间马尔可夫链 (Markov Chain)一般来讲,为了化简一些过程,需要对对象进行一些假设,使其简单(无记忆性)、被大量随机过程满足、应用广泛。一个较好的假设,是现在的结果只依赖于最近一次的结果。
定义:设具有可数样本空间E的随机序列 ${X_m}_{m=0}^\infty$ 满足:
$\forall k, \forall m_1<\cdots <m_{k+1},$
$\mathbb{P}(X_{m_{k+1}}=n_{k+1}|X_{m_{k+1}}=n_{k+1},\cdots ,X_{m_1}=n_1)=\mathbb{P}(X_{m_{k+1}}=n_{k+1}|X_{m_{k+1}}=n_{k+1})$;
则称 ${X_m}_{m=0}^\infty$ 为离散时间Markov链。化简条件后:
$\forall k,\ \ \mathbb{P}(X_{m_{k+1}}=n_{k+1}|X_{m_{k+1}}=n_{k+1},\cdots ,X_{m_1}=n_1)=\mathbb{P}(X_{m_{k+1}}=n_{k+1}|X_{m_{k+1}}=n_{k ...
GAMES202 1&2 Overview & Recap of CG Basis
Lecture 1&2 Overview & Recap of CG BasisContents
Shadows
Global Illum
Physically-based Shading
Real-time Ray Tracing
Graphics Pipeline 渲染管线 复习OpenGL:
一系列通过CPU调用GPU的API
语言不重要
跨平台
替代品:DirectX,Vulkan
缺点:
版本比较碎片化
C style, 使用不是很简单
(之前)不好Debug
如何理解:
和101里面的光栅化一一对应
放置/摆放物体,视图变换啥的,GL有矩阵相乘的API
VBO 存储模型的向量、坐标、纹理坐标
之前的obj文件
使用一个画架easel(GL里面的framebuffer)可以渲染多张图
还有一种是直接渲染到屏幕(垂直同步),但是容易造成画面撕裂。使用双/三重缓冲避免
目前只需要用到vertex shader和fragment shader
大致渲染过程,每一次pass
指定物体、相机、MVP等等
指定framebuffer、输入输出text ...
GAMES101 19,20,21,22 (完结)
19 Cameras, Lenses and Light Fields 相机棱镜和光场Camera Structure
shutter 快门
sensor 传感器,感知Irradiance
针孔相机 Pinhole Image Formation没有模糊
Feild of view (FOV) 视场取决于Lens和Sensor(宽度是h)的距离(f)。 $Fov=2 arctan(\frac{h}{2f})$
Exposure 曝光
$ H=T\times E$
exposure=time*irradiance
Aperture size 光圈(E)f数(F-Number F-STop)直径分之一,越大光圈越小。光圈大远景模糊,浅景深(景深是光像清晰的一段范围)
Shutter speed 快门曝光时间(T)Motion Blur 运动模糊
ISO Gain 感光度。太大放大噪声
F-Stop和Shutter时间要Trade off
Gauss Ray Tracing Construction / Thin lens equation$\frac{1}{f}=\frac{1}{z_ ...
GAMES101 18 Advanced Topics in Rendering
18 Advanced Topics in RenderingAdvanced Light TransportUnbiased light transport methodsBidirectional Path Tracing (BDPT)生成两个子路径,分别从光源和摄像机出发光线,并将两者断电连接起来。
Metropolis Light Transport (MLT)
用马尔可夫链生成样本,给一条路径,生成一系列相似的路径。被积函数和pdf形状一致的时候variance最小。(马尔可夫链可以用任何函数生成样本)
适用于局部取样、复杂光路、焦散、SDS(Specular-Diffuse-Specular)
缺点是收敛速度问题不清楚、有些像素收敛快,有的慢
Biased light transport methodPhoton Mapping
caustics(焦散),
Step 1 Photon Tracing 光子一直跑,知道遇到diffuse的地方
Step 2 photon collecting 从视角跑,直到遇到diffuse的地方
Step 3 Calculation - ...
GAMES101 17 Material and Appearance
17 Material and AppearanceMaterial = BRDF
Diffuse / Lambertain Material
albedo (color): $f_r=\rho/\pi,albedo\ is\ \rho $
Glossy MaterialIdeal Reflective / Refractive Material 反射和折射材料Snell’s Law
Law of Refraction 斯涅尔定律(折射定律)
Snell’s Circle (水中的全反射,一个锥形)
Fresnel Reflection / Term 菲涅尔项
Reflectance depends on incident angle (and polarization of light)
不同角度反射和折射的量不同。也取决于光的偏振方向。但是太不好算了
菲涅尔项的approximation: schlick’s approximation
Microfacet Theory 微表面模型 基于物理
对于细节很多的材质。远处看是材质,近处看是几何
表面法线分布集中——Glossy, ...