【Shading】Shading 着色
课程来源: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=kaIa+kd(I/r2)max(0,n⋅l)+ks(I/r2)max(0,n⋅h)p
【Shading】Shading 着色相关推荐
- OpenGL toon shading卡通着色的实例
OpenGL toon shading卡通着色 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <vmath.h> #include ...
- 着色Shading(2)(着色的继续、管线和纹理映射)(笔记)
文章目录 前言 四.高光项(Specular Term) 高光是什么 Blinn-Phong高光项 五.环境光照项(Ambient Term) 环境光照是什么 六.Blinn-Phong反射模型的总结 ...
- 【OpenGL4.0】GLSL-Flat Shading平面着色
Per-vertex渲染技术是针对每个顶点进行渲染计算,然后把计算得到的颜色值和这个顶点关联起来.然后在多边形的面上进行颜色插值以后的平滑的渲染效果.这也叫做Gouraud Shading.在早起的O ...
- 【计算机图形学入门】笔记8:Shading 2着色(着色频率、图形管线、纹理映射)
08Shading 2着色(着色频率.图形管线.纹理映射) 前置知识 1.Specular Term 高光 2.Ambient Term 环境光照项 3.最终的成像公式 2.着色频率 1.Flat s ...
- 技术美术个人笔记(六)——shading model着色模型
UE材质编辑器中预设着色模型有 下面摘取记录官方文档中较为常用的几种着色模型,在官方翻译的基础上给出自己的理解,需更详细直观的说明可参见官方文档:虚幻官方文档 文章目录 Unlit无光照/自发光 De ...
- Learn OpenGL 笔记6.9 Deferred Shading(延迟着色)
到目前为止,我们进行照明的方式称为forward rendering前向渲染或forward shading前向着色.我们渲染对象,根据场景中的所有光源对其进行照明.我们为场景中的每个对象分别为每个对 ...
- 着色 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 ...
- 渲染(render)和着色(shading)
Shader和renderer:shader中文为着色器,进行shading(着色):renderer为渲染器进行render(渲染).渲染是指以软件由模型生成图像的过程.模型是用计算机语言或者数据结 ...
- [GAMES101]现代计算机图形学课程总结3:Shading
文章目录 概要 Shading的定义 Shading是局部的 输入 不产生阴影(shading不等于shadow) Blinn-Phong Reflectance Model 漫反射 (Diffuse ...
- GAMES-101-个人总结归纳-Shading
(注:此文以个人知识框架为基础拓开,为方便后期回顾,在保留原课程内容框架的基础上,个别概念的介绍可能过于简单,感兴趣读者可到 GAMES 平台深入学习) 目录 概要 Illumination & ...
最新文章
- 老李推荐:第14章4节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-端口转发 1...
- BZOJ4245 : [ONTAK2015]OR-XOR
- 云计算与分布式的一些关键词
- mysql error -1_【Mysql】SQLException: Got error -1 from storage engine 问题解决!
- 2018年五大最佳前端框架比较,程序员会怎么选?
- 微信升级最新版本后,可在一对一聊天场景中访问外部链接
- python123程序设计实验答案_Python程序设计第二次实验报告
- ps画布扩展颜色灰色不可用的原因和解决方法
- 华为悬红“奥林帕斯奖”,促进数据产业基础技术研究与生态建设
- 揭秘全球最大网站 Facebook 背后应用软件
- 基于情感词典的网络文本情感倾向分类模型
- 解决拼音汉字混合搜索,由于同音字导致搜出不相干的内容
- scratch win10 环境搭建
- odoo学习必看-提问的智慧《How To Ask Questions The Smart Way》
- 5G/NR PRACH、PUSCH功率控制
- mysqlcheck命令时提示: bash: mysqlcheck: command not found
- Duplicate class okhttp3...
- 前端工程师高手说说CSS学习中的瓶颈
- Indigenous students at U of T honoured for efforts in language revitalization, health equity
- Day32 Web自动化进阶
热门文章
- 国内最常用的坐标系大全
- python基础学习_02数据类型+占位符+运算符+IF分支基础
- H5视频会议,直播,通话,教学,支持Webrtc、rtmp、sip、rtsp转协议、IPCAM、白板、桌面共享、免插件、web全平台、视频融合系统研发笔记。...
- R 绘制带有数字标签的多分类柱状图
- 经济基础知识(中级)【1】
- GitHub 克隆加速
- (诛仙剑C-SKY)1-初识
- 作为应届大学生的我和准职业人的差距
- MFC combo, radio控件使用
- MATLAB与DSP(C6657)的TCP/IP通信实现