哈喽,上次我们有分享过Diffuse漫反射的基本光照原理,现在我们来聊一下另外一个反射,Unity中specular镜面高光反射解析。
在OpenGL中,光照使用的是简化的模型,即对现实的情况进行近似,这样处理起来会容易一些而且看起来效果也差不多。而这些光照模型都是基于我们对光的物理特性的理解。
要处理光照模型,我们有常见的三种多边形的着色方法,分别是Flat Shading,Gouraud Shading和Phong Shading。三种效果图如下:

1、Flat Shading
Flat shading是最简单的着色模型,打光时每个多边形只会呈现一个颜色,这个颜色由面法向量和光照计算得来。

在该模型中,每个多边形中只有多边形的面存在法向量,而其各个顶点没有。所以早期的flat shading计算是按照面为单位来进行计算的,计算结果并不很准确。
2、Gouraud Shading
Gouraud shading着色器模型,多边形的每个顶点都有一个法向量,它在着色时对每个法向量进行点乘反射计算,再通过双线性插值计算三角形区域中其它像素的颜色(比如中间像素的颜色)。

3、Phong Shading
Phong shading是三者之中最复杂的着色方法。它的特点是结合了多边形物体表面反射光的亮度,并以特定位置的表面法线作为像素参考值,以插值方式来估计其他位置像素的色值。在这种情况下,多边形中每个顶点都有一个法向量,通过这些法向量与光照计算,来得到每个点的颜色。在使用有限数量的多边形时,对顶点法向量进行插值可以给出近似平滑的曲面效果,所以phong会计算更多的点乘反射,运行也比上面两种更加复杂。

相比之下,flat着色模型比较简单,但是后面两种计算方法虽然都需要应用多边形的法向量计算出其公共顶点的法向量,也都需要计算各顶点处的光强,但在逐像素计算上还是有所区别。
Phong shading在计算的时候会将插值以后的像素点对应的法向量再次与光照进行计算,得到其着色,而gouraud shading的计算只是对多边形的每个顶点计算好着色,然后再使用双线性插值方法对上面像素进行计算,不会再将其与光照进行反射计算。
4、Obj File计算
上述三种模型在计算的时候法向量是从哪里来的呢,我们打开一个简单的obj格式的box文件如下;
V(Geometric vertices),表示物体中各个顶点的信息;

Vt(Texture vertices),表示贴图坐标点;

Vn(Vertex normals),顶点法线;

F(Face),所有顶点组成的面的信息

而这些数据中没有面法线的值,所以flat shading在计算光照的过程中,需要单独根据点法线对面法线进行计算。对GouraudShading 和 Phong Shading来说,就只需要取值然后一顿猛算就对了.
5、Specular高光反射
Phong shading的模型主要由三个分量组成:环境(Ambient),漫反射(Diffuse)和镜面或者高光反射(Specular),所以下面这张图中,前三个加起来就会得到最后一个的效果。

环境光照指的是即使在黑暗的情况下,环境中也仍然有一些光亮,所以物体几乎永远不会是完全黑暗的,所以我们用这个环境光照来给物体一些颜色。
而diffuse已经在上次分享过原理以及计算过程了,所以只需要加上我们这次探讨的specular就可以完成phong的实现。
Specular是模拟光泽物体上面出现的亮点,而镜面光照的颜色相比于物体的颜色会更倾向于光的颜色。
如果我们的物体是一面镜子,无论从哪个方向去看,都会看到镜面光照的最大值,真相如图:

对于specular,我们计算的是反射向量和视线方向的角度差,如果夹角越小,那么镜面光的影响就会越大。它的作用效果就是,当我们去看光被物体所反射的那个方向的时候,我们会看到一个高光。而具体在shader graph中的计算过程,我留着下一节来聊叭。
来源:Thepoly 公众号
热门课程
专业讲师指导 快速摆脱技能困惑相关文章
多种教程 总有一个适合自己专业问题咨询
你担心的问题,火星帮你解答入职两周当组长主动上调薪资学长开公司招人又是被AI班喜报砸晕的一天
杭州那家九州传媒,不是什么小作坊,此前他们的负责人曾对媒体说过他们有一万余人的招聘缺口,而且最近几个月一直在持续性地疯狂招人 ......
AI短剧备案新规落地AIGC设计师薪资暴涨50AI设计日报0609
广电总局及网信部门明确AI内容标注及备案要求,行业进入规范化发展阶段与此同时,IP+AI的规模化路径也得到验证:阅文集团百部A......
每年这个时候全国都在关注同一件事高考这是这个国家一年一度最盛大的集体奔赴它被反复提起不是
在火星时代,我们见过太多带着这股劲头来的年轻人:有的刚结束高考就来学设计;有的读两年大学发现不对,趁暑假来学UE;还有的工作几......
虚幻引擎交互开发工程师班
影视游戏虚幻美术视效大师班
同学您好!