课程来源:games101图形学入门Lecture07-08
Lingqi Yan
UC Santa Barbara
PC端的读者可使用右侧文章目录进行导航

Shading

Definition 定义

  • In Merriam-Webster Dictionary 在字典里
    shad·ing, [ˈʃeɪdɪŋ], noun
    The darkening or coloring of an illustration or diagram with parallel lines or a block of color.
  • In this course 在图形学里
    The process of applying a material to an object.将材质应用于物体的过程。

A Simple Shading Model


高光:一个表面特别光滑,往这个表面上打光,就会出现高光。
漫反射:光打在粗糙的位置上的反射。(例如:墙面)
那么,杯子的背面呢?如果它不能被右侧光源照到,按照物理,它应该是黑的,为何它也有颜色呢?
因为它会接收到来自于环境的反射光,例如从墙面上反射的光。所以我们也称之为:环境光。环境光也是一个十分复杂的光源。

Shading is Local

Shading是局部的

我们对于一个点(shading point)考虑光的反射。

Inputs:

  • v⃗\vec{v}v:View Direction 观察方向
  • l⃗\vec{l}l:Light Direction 光源方向
  • n⃗\vec{n}n:Surface Direction 法线
  • color(颜色),shininess(它的表面有多亮,和亮度无关,和材质有关)…

因为我们只考虑方向,所以这几个向量都是单位向量。


No shadows will be generated! (shading ≠ shadow)
我们不考虑阴影,只考虑着色,就是说只考虑它自己,阴影如何生成不在这里介绍。

1.Diffuse Reflection 漫反射

Light is scattered uniformly in all directions
光在各个方向上均匀地散射
Surface color is the same for all viewing directions
对于所有观看方向的表面颜色都是相同的

But how much light (energy) is received?
但是接收了多少光(能量)呢?

  • Lambert’s cosine law
  • 朗伯余弦定律:一个面元的辐亮度或光亮度在其表面上半球的所有方向相等时,则有 I(θ)=Incosθ。式中,I(θ)和In分别表示面元在 θ 角(与表面法线夹角)方向及其法线方向的辐射强度或光强度。

Light Falloff 光衰减

在这里需要引入一个光衰减的概念,以便理解后面的公式。
根据能量守恒定律,我们只考虑它离光源的远近,不就知道当前位置的光的能量了么。
意思就是求图中的半径就可以了。

因此,漫反射光可以如下计算。
这个时候可能会问,如果n⋅ln·ln⋅l是负数时怎么办?既然是负数,那么这个shading point是接收不到这个点光源的光的,或者说这个光必须穿过其他物体才能被这个shading point接收到,那么我们就不考虑这种情况。

扩散系数不一样,表现也不一样。如下图所示:

2.Specular Term (Blinn-Phong) 镜面反射

Intensity depends on view direction.
Bright near mirror reflection direction.
当我们观察点接近镜面反射的方向,我们就能看见高光。

V close to mirror direction – half vector near normal
当h向量(半程向量)接近n向量时,说明我们的视线接近镜面反射的方向。
Measure “near” by dot product of unit vectors 用单位向量的点积测量“近”

通过h⃗\vec{h}h和n⃗\vec{n}n来判断是否接近,就是Blinn-Phone模型

对于夹角余弦,给它加上一个指数,就能控制看到高光的夹角角度范围。
一般,在Blinn-Phone模型里,这个指数在100~200之间。

如下图所示,理解高光向。

3.Ambient Term 环境光照

Shading that does not depend on anything. 不依赖于任何东西的Shading。
Add constant color to account for disregarded illumination and fill in black shadows.
This is approximate / fake!

环境光照是一种间接光照,它可能从很多其他物体上反射过来,从四面八方打到Shading point上。因此,对于本文最上方的杯子的逆光处一样,它可以接收到环境光,进而在我们的眼里(摄像机里)不是黑色的。

可想而知,环境光照是一个很复杂的东西。

所以我们做一个大胆的假设——来自环境的光就是一个固定强度的光 IaI_aIa​,我们就可以近似的得到一个环境光,一个常数。这个常数的作用,就是保证没有地方是黑的,每个地方都是有颜色的。

总结

那么,我们将这几种光结合到一起。

Blinn-Phong Reflection Model

L=La+Ld+Ls=kaIa+kd(I/r2)max(0,n⃗⋅l⃗)+ks(I/r2)max(0,n⃗⋅h⃗)pL = L_a + L_d + L_s \\= k_a I_a + k_d (I/r^2) max(0, \vec{n} · \vec{l}) + k_s (I/r^2) max(0, \vec{n} · \vec{h})^pL=La​+Ld​+Ls​=ka​Ia​+kd​(I/r2)max(0,n⋅l)+ks​(I/r2)max(0,n⋅h)p

【Shading】Shading 着色相关推荐

  1. OpenGL toon shading卡通着色的实例

    OpenGL toon shading卡通着色 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <vmath.h> #include ...

  2. 着色Shading(2)(着色的继续、管线和纹理映射)(笔记)

    文章目录 前言 四.高光项(Specular Term) 高光是什么 Blinn-Phong高光项 五.环境光照项(Ambient Term) 环境光照是什么 六.Blinn-Phong反射模型的总结 ...

  3. 【OpenGL4.0】GLSL-Flat Shading平面着色

    Per-vertex渲染技术是针对每个顶点进行渲染计算,然后把计算得到的颜色值和这个顶点关联起来.然后在多边形的面上进行颜色插值以后的平滑的渲染效果.这也叫做Gouraud Shading.在早起的O ...

  4. 【计算机图形学入门】笔记8:Shading 2着色(着色频率、图形管线、纹理映射)

    08Shading 2着色(着色频率.图形管线.纹理映射) 前置知识 1.Specular Term 高光 2.Ambient Term 环境光照项 3.最终的成像公式 2.着色频率 1.Flat s ...

  5. 技术美术个人笔记(六)——shading model着色模型

    UE材质编辑器中预设着色模型有 下面摘取记录官方文档中较为常用的几种着色模型,在官方翻译的基础上给出自己的理解,需更详细直观的说明可参见官方文档:虚幻官方文档 文章目录 Unlit无光照/自发光 De ...

  6. Learn OpenGL 笔记6.9 Deferred Shading(延迟着色)

    到目前为止,我们进行照明的方式称为forward rendering前向渲染或forward shading前向着色.我们渲染对象,根据场景中的所有光源对其进行照明.我们为场景中的每个对象分别为每个对 ...

  7. 着色 Shading,漫反射,高光,环境光,Blinn-Phong 反射模型,Flat Shading,Gouraud Shading,图形管线 Graphics Pipeline渲染总结

    着色 Shading shading:The darkening or coloring of an illustration or diagram with parrel lines or a bl ...

  8. 渲染(render)和着色(shading)

    Shader和renderer:shader中文为着色器,进行shading(着色):renderer为渲染器进行render(渲染).渲染是指以软件由模型生成图像的过程.模型是用计算机语言或者数据结 ...

  9. [GAMES101]现代计算机图形学课程总结3:Shading

    文章目录 概要 Shading的定义 Shading是局部的 输入 不产生阴影(shading不等于shadow) Blinn-Phong Reflectance Model 漫反射 (Diffuse ...

  10. GAMES-101-个人总结归纳-Shading

    (注:此文以个人知识框架为基础拓开,为方便后期回顾,在保留原课程内容框架的基础上,个别概念的介绍可能过于简单,感兴趣读者可到 GAMES 平台深入学习) 目录 概要 Illumination & ...

最新文章

  1. 老李推荐:第14章4节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-端口转发 1...
  2. BZOJ4245 : [ONTAK2015]OR-XOR
  3. 云计算与分布式的一些关键词
  4. mysql error -1_【Mysql】SQLException: Got error -1 from storage engine 问题解决!
  5. 2018年五大最佳前端框架比较,程序员会怎么选?
  6. 微信升级最新版本后,可在一对一聊天场景中访问外部链接
  7. python123程序设计实验答案_Python程序设计第二次实验报告
  8. ps画布扩展颜色灰色不可用的原因和解决方法
  9. 华为悬红“奥林帕斯奖”,促进数据产业基础技术研究与生态建设
  10. 揭秘全球最大网站 Facebook 背后应用软件
  11. 基于情感词典的网络文本情感倾向分类模型
  12. 解决拼音汉字混合搜索,由于同音字导致搜出不相干的内容
  13. scratch win10 环境搭建
  14. odoo学习必看-提问的智慧《How To Ask Questions The Smart Way》
  15. 5G/NR PRACH、PUSCH功率控制
  16. mysqlcheck命令时提示: bash: mysqlcheck: command not found
  17. Duplicate class okhttp3...
  18. 前端工程师高手说说CSS学习中的瓶颈
  19. Indigenous students at U of T honoured for efforts in language revitalization, health equity
  20. Day32 Web自动化进阶

热门文章

  1. 国内最常用的坐标系大全
  2. python基础学习_02数据类型+占位符+运算符+IF分支基础
  3. H5视频会议,直播,通话,教学,支持Webrtc、rtmp、sip、rtsp转协议、IPCAM、白板、桌面共享、免插件、web全平台、视频融合系统研发笔记。...
  4. R 绘制带有数字标签的多分类柱状图
  5. 经济基础知识(中级)【1】
  6. GitHub 克隆加速
  7. (诛仙剑C-SKY)1-初识
  8. 作为应届大学生的我和准职业人的差距
  9. MFC combo, radio控件使用
  10. MATLAB与DSP(C6657)的TCP/IP通信实现