games(101)-shading
Shading (Lectures 07~~08)
内容:- shading
- Blinn-Phong Reflectance Model 光照模型(着色模型)
- Diffuse(漫反射)
- Specular(镜面反射)
- Ambient(环境光)
- Shading Frequencies 着色频率
- flat shading
- Gouraud Shading
- Phong Shading
Shading
shading:译为"着色",也可以翻译为"明暗绘制、光影效果(与光照息息相关)"。另一种理解方式就是给物体施加不同的材质的过程。
金属和木头为什么会让人觉得不同?本质上就是光线到达这些物体之后,光线经过与这些物体的复杂的相互作用之后最终到达人眼中的光线产生了差异。也就是说,我们就可以通过研究这些光线与物体之间作用的机理进而表示出不同的材质的物体。
归其本质上来说:Shading意味着各种各样的数学模型/数学算法。
不同的材质对应的就是不同的着色方法。对于纹理来说,纹理用于定义着色时各个不同点的属性
光线和各个物体之间的复杂的相互作用可以看成是一个递归的过程,光线照射到物体A,物体A反射一部分光到物体B,然后物体B又反射一部分光到物体A,循环往复....
从数学的角度上来看,这样的一个递归过程可以用一个积分方程来描述,也就是绘制方程(rendering equation),理论上可以用它求出场景中所有物体的明暗值。但是,这个方程一般不能求出其解析解,而且数值方法对于实时渲染又不够快。
除此以外,我们还可以用辐射度方法和光线追踪(Ray Tracing)这样的近似解法,但是同样的,速度也是一个问题。当然,还存在各种各样的shading模型或者算法。
一种对物理规律和运算效率的折中的方法,就是 Blinn-Phong Reflectance Model,就是Blinn在Phong的基础上进行优化的模型,当然,这只是一种经验模型,但是对于简单的场景也足够使用。而且我们讨论的局部光照模型(只关心自己,不关心其他物体的存在),光源为点光源。
Blinn-Phong Reflectance Model
Diffuse
预先定义:
对于漫反射,我们将其视作一个理想化的模型,对于每一个shading point来说,光线照射到这个平面之后,会均匀的往四周反射。
则:
- diffuse模型与观察方向没有关系
- max(0,n dot l)指的是一个shading point所能接收到的光或者理解为能量
- (I/r的平方)指的是到达shading point的光或能量(推导略)
- 最前面的系数理解为反射系数,是介于0到1的三个RGB分量,为1则说明完全反射,为0说明全部吸收一点都不反射出去,在纹理映射中影响到的就是这个值。
Specular
v方向和反射方向的接近(phong) → 半程向量或者半角向量和法线的接近程度(Blinn-Phong,简化了计算量)(h称为半程向量或者半角向量)
- p影响到的是高光大小,一般是100~200
- ks称为镜面反射系数,通常认为是白的一个颜色,考虑到高光是白的
- 多少能量被吸收shading point了,也就是还有一个n和l的点乘给忽略了,原因是这毕竟是一个经验模型,从简忽略了。
Ambient
真正的Ambient模型十分复杂,涉及到全局光照,从简(不对)的模型就是:
- 在这个模型下的环境光简化成了一个常量,就是给场景提升了一个亮度。
Blinn-phong:模型:
.
Shading Frequencies
着色频率:shading的对象(平面、点、像素)不同。
flat shading
- 对三角形平面进行着色,每个平面共用一个结果
- 要求出这个三角形的法线
Gouraud Shading
- 求出每个顶点的法线然后进行着色,对三个顶点进行着色后的结果进行插值,在三角形内部形成平滑的过渡效果。
Phong Shading
-
三角形三个顶点求出法线,然后三角形内部的每一个像素上插值出一个独特的法线方向,对每一个像素进行着色。
-
flag shading不一定差,但是前提是几何模型要复杂,只不过提升了计算量。
逐顶点的法线:
任何一个顶点的法线认为是相邻的面的法线的(加权,权指的是面积)平均。
给顶点的法线,求中间像素的法线:
重心坐标插值得到,法线表示的是方向要归一化。
- 内容来源:
- games101
- 交互式计算机图形学
- https://www.notion.so/Lec-07-09-Shading-2408446d1ea240e7a3efd0bf36b67bdf
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具