赞
踩
目录
前记:本节内容非常多,而且我贴了很多每个小点详细的学习链接大伙可以去看。
Light Probe+Refkection Probe的优缺点
LE7--渲染系统4:渲染管线,后处理:https://blog.csdn.net/m0_56399931/article/details/124790469
LE6--渲染系统3:游戏中的地形/天空/云渲染:LE6--渲染系统3:yo地形/天空/云渲染_This is MX的博客-CSDN博客
LE5--渲染系统2:光照、材质、Shadow:Games104笔记---LE5--渲染系统2:光照、材质、Shadow_This is MX的博客-CSDN博客
LE4--渲染系统1:渲染基础:Games104笔记---LE4--渲染系统1:渲染基础_This is MX的博客-CSDN博客_渲染系统
LE3--基础架构2:数据组织与管理:Games104笔记---LE3--基础架构2:数据组织与管理_This is MX的博客-CSDN博客
LE2--基础架构1:引擎架构分层整体Pipeline:Games104笔记---LE2--基础架构1:引擎架构分层整体Pipeline_This is MX的博客-CSDN博客
LE1--现代游戏引擎导论:Games104笔记---LE1--现代游戏引擎导论_This is MX的博客-CSDN博客
详细的可以看这篇文章:实时高清渲染:全局光照(Global Illumination)[1]_This is MX的博客-CSDN博客_lambertian散射
Le表示的是从物体表面p点从视角方向v发射出去的Radiance,积分部分称为反射方程,其中L0(p,v)表示的是从物体表面位置p输出的Radiance,v为视角方向,Ω为p点法线所在的半球,l是光线方向,n是p点法线,f(l,v)为BRDF,Li(p,l)表示的是从光线方向输入到p点的Radiance,n·l就是法线和光线方向的点乘,并且如果是复数会规范到0
辐射率/辐亮度,指的是单位投影面积、单位立体角上的辐射亮度
辐照度,指单位面积接收到的辐射通量
辐射通量,又称辐射功率,指单位时间内通过某一截面的辐射能量
辐射强度,表示的是在单位球面上,一个光源向每单位立体角所投送的辐射通量。
立体角,可以为我们描述投射到单位球体上的一个截面的大小或者面积。投射到这个单位球体上的截面的面积就被称为立体角
一种理想的漫射面,它所有方向的反射能量都相等,是指在一个固定的照明分布下从所有的视场方向上观测都具有相同亮度的表面,朗伯表面不吸收任何入射光.
也叫理想散射或朗伯散射,不管照明分布如何,朗伯表面在所有的表面方向上接收并发散所有的入射照明,结果是每一个方向上都能看到相同数量的能量。
1.光的可见性,阴影怎么做的好。
阴影的文章可以看这个:
实时高清渲染:Shadows_This is MX的博客-CSDN博客
https://blog.csdn.net/m0_56399931/article/details/123593345
2.半球的积分怎么做
3.每个点都可以是光源
这个部分一般使用CubeMap进行使用,
可以看一下这个文章
Shader入门-------基础光照_This is MX的博客-CSDN博客
布林冯模型主要有自发光,漫反射,高光反射,漫反射使用n·l,高光反射部分使用pow(n·h , k),其中h为半角向量 h= normalize(v+l),k为高光反射强度
Blinn-Phone的问题:
布林冯模型的能量是不守恒的,封闭的黑体也能有光照(
球谐函数表示的是将函数在球面上的展开
他的二阶导永远是0
SH的作用是减少存储预计算的数据量 : 如果是常规的做法是从cubemap的每个像素从中心计算法向半球的积分当作irradiance,然后存储这些结果到另一张cubemap上。但是我们用sh的话就不用存储这些结果到cubemap上,只需要把它转化为sh的系数(求投影),然后用的时候把系数带进去就能获取到irradiance
优点:
非常高效的运行时,烘烤了很多关于环境的Gl细节。
缺点:
长时间且昂贵的预计算;只能处理静态场景和静态灯光;封装和GPU的存储成本
会对光照探针周围的点均匀的放采样点
会对光照探针周围的点均匀的放采样点,但是采样点会比Light Probe少,但是精度会高
probe怎么做呢,在探针位置,放一个相机,然后往世界六个方向生成cubemap
优点:在运行时非常高效,可以应用于静态和动态对象 处理漫反射和镜面阴影
缺点:一堆SH光探测器需要一些预计算,不能处理gi的精细细节,例如重叠结构上的软阴影
这项理论认为,达到微观尺度之后任何平面都可以用被称为微平面(Microfacets)的细小镜面来进行描绘。根据平面粗糙程度的不同,这些细小镜面的取向排列可以相当不一致:
产生的效果就是:一个平面越是粗糙,这个平面上的微平面的排列就越混乱。他的法线分布也更加混乱。
这些微小镜面这样无序取向排列的影响就是,当我们特指镜面光/镜面反射时,入射光线更趋向于向完全不同的方向发散(Scatter)开来,进而产生出分布范围更广泛的镜面反射。而与之相反的是,对于一个光滑的平面,光线大体上会更趋向于向同一个方向反射,造成更小更锐利的反射:
一般使用Cook-TorranceBRDF模型
Cook-Torrance BRDF的镜面反射部分包含三个函数,此外分母部分还有一个标准化因子 。字母D,F与G分别代表着一种类型的函数,各个函数分别用来近似的计算出表面反射特性的一个特定部分。三个函数分别为法线分布函数(Normal Distribution Function),菲涅尔方程(Fresnel Rquation)和几何函数(Geometry Function):
法向分布函数(D):
几何函数(G):
菲涅尔函数(F):
应遵循的原则
•应该使用直观的而不是物理参数
•参数越少越好
•参数应该在合理范围内为0到1
•应该允许参数超出其合理范围
•所有参数的组合应该尽可能地稳健和合理
MR
优点:①更容易编写,并且能够有更少由于提供不正确的介电FO数据而导致的错误
②使用较少的内存,因为金属和粗糙度都是灰度图
缺点:①在Map创建中,没有对FO的控制。然而,大多数实现都有一个镜面控件来覆盖基准4%的值
②边缘走样更明显,特别是在较低的分辨率
SG
优点:①边缘伪影不那么明显
②在镜面贴图中有对FO的控制
缺点:①因为镜面贴图提供了对介电FO的控制,所以更容易使用不正确的值。如果在着色器中处理不当,可能会破坏守恒定律
②使用更多的纹理内存与额外的RGB贴图
这个去看这个很好:
是以cubemap做为环境光照,去计算渲染方程
这一个部分主要是求出irradiance,这个需要我们对不同粗糙度的情况都计算一遍,然后存放到mipmap中,对于中间粗糙度的情况可以进行插值。我们知道,给定一个物体表面,若其表面的粗糙程度越高,则反射的内容越模糊。当我们进行积分采样时,我们没有必要再在半球方向做一个均匀的采样,因为超出反射波瓣的采样是无效的。我们应该偏向反射波瓣采样,这就涉及重要性采样,这个就不在这细讲了。
这里我们需要预计算BRDF,生成一个LUT(查找纹理),其中他的u为余弦值(n·l),v为粗糙度,基本做法就算生成一张和屏幕一样大的纹理,然后进行渲染就行,其中会把这张纹理的Texcoord.x作为余弦值,Texcoord.y作为粗糙度,传给BRDF作为参数进行计算。
Shadow详细的看这个:
实时高清渲染:Shadows_This is MX的博客-CSDN博客
操作方法,先用一个pass渲染深度,然后另一个pass将观察到的转移到灯光空间下,当前这个点的z值与深度图中的图进行比较,如果深度图的值为遮挡物,遮挡物的值比着色点的深度接近相机则为阴影
精度不一样,会产生自遮挡,和悬浮的问题
Shadow Acne(阴影自重叠):
通常通过添加偏移来解决这个问题
Peter Panning (阴影悬浮/漏光):
可以通过以下两种方法进行解决:
第一种是只渲染物体的背面(即剔除物体的正面可以解决这个问题),但是有个问题,当物体的正面和背面几乎处于同一个位置的时候(例如纸张),这个方法就会出现问题。所以只渲染背面和添加偏移的使用最好视具体情况而定,例如,Sousa等人发现,将正面用于日光阴影,将背面用于室内灯光,可以达到最佳的应用效果。
第二种是渲染两次Shadow map,一次是正面的一次是背面的,然后深度取他们的平均值,但是这个的缺陷也很明显就算两个Shadow map的额外开销
详细的去看这个
实时高清渲染:Shadows_This is MX的博客-CSDN博客
详细的看这个
https://blog.csdn.net/m0_56399931/article/details/123593345
基本的思想是对视锥体进行分层,远处的精度降低,近处提高。
级联层之间,因为分辨率不匹配。在级联重叠的地方可以看到可见的接缝。
我们需要在着色中器根据像素在混合带中的位置在这两个值之间线性插值。
PCSS主要涉及的是计算PCF的fliter大小,这个公式为
示意图
PCSS的计算主要分为三步:
VSSM可以当作是PCSS的进阶,VSSM针对性解决PCSS的第一步和第三步速度慢的问题,通过切比雪夫不等式可以快速推出可见度:
其中pmax是光照下样本的最大百分比,σ^2是方差,t是receiver深度,M1是阴影图中的平均预期深度。深度平方阴影图的样本M2,称为第二阶矩,用于计算方差:
渲染的光照/材质/阴影
1.Games104
2.实时高清渲染:全局光照(Global Illumination)[1]_This is MX的博客-CSDN博客_lambertian散射
3.Shader入门-------基础光照_This is MX的博客-CSDN博客
4.实时高清渲染:Shadows_This is MX的博客-CSDN博客
5.https://blog.csdn.net/m0_56399931/article/details/123593345
7.实时渲染Real-time Rendering:Image Based Lighting | YangWC's Blog
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。