1 Blinn-Phone 与 冯氏光照模型有什么区别?
答:在冯氏光照模型中观察向量和反射向量夹角大于90度点积为负数,镜面分量为0,高光区域会出现明显断层。Blinn-phone光照模型唯一不同就是取得是观察向量和反射向量之间的半程向量,它不会大于90度。
2 Gamma 校正作用及如何使用?
答:电压与亮度不会是一条直线,通过乘一个gamma值校正成直线。使用法一:glEnable(GL_FRAMRBUFFER_SRBG);开启openGl自动校正;使用法二:在着色器中乘这个gamma值。
3 什么叫阴影映射以及如何实现?
答:为了增加真实感将被物体阻挡的光线表面渲染出来。以光得位置进行渲染看到的东西被点亮看不见的就在阴影中了,首先渲染深度贴图,使用深度贴图来计算片段是否在阴影中。
4 什么法线贴图,如何实现?
答:使物体表面显示更具有细节,为每一个片段都添加法线; 用2D纹理来存储法线向量,然后光照点乘这法线向量,不必花费太多性能开销提升画质。
5 什么是视差贴图如何实现?
答:它也能提升物体的细节,使之具有深度感。修改纹理片段坐标,比实际更高或者更低。
6 什么是HDR如何实现?
答:高动态范围,暗的更暗,亮的更亮。由于openGl亮度显示控在0.0-1.0之间,当超过1.0时也会被限制在1.0,HDR先允许亮度超过1.0,然后再做一次mapping使其输出在1.0以内。
7 如何实现泛光光晕效果?
答:渲染一个有光场景,提取场景中HDR颜色缓冲以及这个场景明亮区域可见图片并将其模糊处理,然后叠加到HDR场景中。
8 什么是延迟着色法以及如何实现?
答:对于一个场景很复杂的对象通常是多层画面的叠加,正向着色会对每一片段进行渲染,这样会很多片段被后面的覆盖;延迟着色将计算量非常大的渲染(比如光照)推迟到后期处理。它在几何处理阶段获取个片段位置,大小等等几何信息并将其存储在G缓冲中。然后再光照处理阶段使用G缓冲数据而不是从顶点着色器那里获取输入变量(uniform)。
9 什么叫环境光遮蔽,如何通过SSAO模拟环境光遮蔽原理?
答:在房间或者褶皱处光线会暗一点叫做环境光遮蔽。SSAO根据四边形周围深度值计划遮蔽因子,它用来减少或者低消片段环境光分量。