一、纹理
原模型网格->逐面Shading->逐像素Phong Shading->纹理贴图->换个纹理再贴图->环境光照。
(1)环境贴图
纹理就是一张图,纹理是GPU里的一块内存,可以进行点查询、范围查询、滤波。
环境光贴图、环境光映射:
我们可以用纹理去描述整个环境光是什么样的,用环境光去渲染其他物体。对于环境光,我们都认为来自无限远处,即环境光从同一个方向来且强度相同。
讲环境光记录在球上会发现不均匀,会发生扭曲。
使用立方体来记录环境光信息。本质都是为了描述来自不同方向的光的信息。
(2)凹凸贴图
纹理可以定理物体任何一个点的任何一种属性。比如在下图中,我们开可以用一个纹理贴图表示球上的凹凸不平。表示一个球可能只用一两百个三角形,但是表示一个凹凸的球需要的三角形数量远远增大。使用纹理表示每个点的相对凸起高度,在着色时根据相对突起使得每个顶点沿着法线移动相对突起的距离即可渲染出下图结果。类似的使用还有法线贴图,这些都是给定一个假定的属性,使得规则的模型产生更复杂的质感。
(3)法线贴图
不改变三角形属性,通过定义表面法线,计算出凹凸感。
(4)位移贴图
凹凸贴图边缘会暴露是光滑的,实际上没有改变几何,使用法线欺骗人的眼睛。
位移贴图的效果更好,但是它要求模型的三角形足够细,即三角形定义的间隔比定义的纹理的频率还要高才行。
DictritinX可以动态曲面细分,即可以动态产生更多三角形去采样。
(5)三维纹理
定义三维空间中任何一个顶点的值。而它并没有图,只有一个函数,输入纹理的坐标,即可返回需要的属性。
(6)记录信息
纹理可以记录信息,可以存储计算的信息,诸如预先计算复杂的颜色值,然后将着色结果记录于贴图中。
二、几何
光滑曲面几何:
复杂的几何:
布料几何:
水滴几何:
庞大的几何:
复杂的几何:
隐式和显式几何
隐式几何
隐式几何给出顶点位置应该满足的函数,不直接给出顶点位置。
优点:判断一个点和几何的相对位置。缺点:无法直接看出是什么形状,无法直接找到几何对应空间中哪些点。
显式几何
直接给出顶点的位置,可能给的是直接的xyz,有可能是给的参数uv。
给出参数uv映射到空间的点xyz。显示表示无法判断任意一个点相对几何形体的位置。
隐式几何的应用、
隐式几何不直观,无法直接看出是什么形体。对于复杂的几何,我们也难以找到对应的函数关系。
定义最基本几何之间的运算,通过运算去构成复杂的形体,得到隐式表达关系。
距离函数:指空间中任何一个点到物体曲面的最小距离,可以定义正负,正为在曲面外,负为在曲面外。
如下图所示。一个物体最初处于视口左侧三分之一处,下一次它运动到了三分之二处,我们如何得到中间移动时它表面的位置呢?很简,那不就是1/3-2/3,那我们怎样去表示这种运动呢?如下面所示。我们使用距离函数来表示物体边界或表面,定义距离函数来判断空间中任意一个点与表面的相对关系,我们只要移动表面就能表示这个运动过程了。
如下图所示,我们有平面空间中的两个多边形,我们分别定义它们的距离函数表示它们自己的表面(边界)。然后对它们距离函数进行混合,根据混合后得到的距离函数再去还原几何形体(等于0点在表面上,小于0为内部),就可以表示出下图的结果。
隐式的几何表示有很多种,距离函数的表示能力非常强大,可以表示出如下形体:
水平集
使用距离函数表示水滴💧过程:
分形:物体具有自相似性。