着色 Shading

shading:The darkening or coloring of an illustration or diagram with parrel lines or a block of color.
用平行线或色块使插图或图表变暗或上色
着色:对不同物体应用不同材质(material)的过程。

基本定义

着色点

计算某一着色点(shading point)对于相机的光照。
输入(v,n,l,长度都是1):

  • 观察方向,v
  • 表面法线,n
  • 光照方向,l
  • 物体表面的参数(颜色、shiniess…)


注意:
着色具有局部性(不用考虑阴影)。

漫反射

当一束平行的入射光线射到粗糙的表面时,表面会把光线向着四面八方反射,所以入射线虽然互相平行,由于各点的法线方向不一致,造成反射光线向不同的方向无规则地反射,这种反射称之为“漫反射”或“漫射”。对于漫反射,所有观测方向颜色是相同的

高光

高光,指画面调子最亮的一个点,表现的是物体直接反射光源的部分,多见于质感比较光滑的物体。

环境光

环境光为场景提供恒定照明。 它会无差别地点亮所有对象顶点。 环境光在所有方向都是恒定的,并且会无差别地为某个对象的所有像素上色。 这是一种快速计算,但会让对象看上去扁平且不逼真
注意:
分析出漫反射、高光、环境光就可以定义出材质。

计算shading point能接收多少光

shading point法线角度的不同,会使得吸收的光照不同

根据点距光源距离求光强

光的能量会随着距离衰减,如下图所示。

获取漫反射(Diffuse)的反射光

下面的公式是到达的能量乘接收的能量,即为最终反射的能量。(着色与观测方向无关)

计算出一个三维向量表示颜色。漫反射与观察的方向没有关系。

光照方向比较亮,接收的能力较多,背面接收的能力少相对较暗。

高光项(Specular Term)

入射光通过反射进入人眼就会形成高光,为了方便表示,使用法线与半程向量(入射光和反射光的中线)的夹角余弦来表示高光的强弱。


用夹角余弦不合适,变化的太慢,高光面积太大。

镜面反射系数是亮度,p增大,高光点变小。

环境光项 Ambient Term

环境光很复杂,所以假设任何一个点接收的环境光都是相同的为Ia
环境光其实是一个常数

Blinn-Phong 反射模型

将三项相加,得到反射模型的结果。

着色频率 Shading Frequency

色频率

着色模型(频率)就是如何运用(也可以不用)光照模型计算的结果显示由多边形表示的曲面。就是说着色应用在哪些点上

这三个球几何构造完全相同,着色频率不同。第一个着色应用在平面上,第二个着色应用在顶点上,第三个着色应用在像素上。

Flat Shading —— 对每一个三角形着色

一个三角形面一个颜色(三角形的法线通过两边的叉积获得)

Gouraud Shading —— 对每个顶点着色

求出每个顶点的法线后,构成三角形,对三角形内部的颜色做插值。

常使用周围平面法线的加权平均来计算顶点的法线。

获得逐像素的法线

通过重心坐标获得法线

三种渲染的结果


三种着色模型没有最好的,对于点比较密集的图像,使用Face着色效果也不错,而且计算量小。

图形管线 Graphics Pipeline / 实时渲染管线 Real-time Rending


总结: 首先输入空间点信息,经过MVP变换投影到屏幕上,这些点形成三角形,但是屏幕是离散的像素点,通过光栅化将三角形离散为许多像素点(fragment),通过着色赋予颜色,最终形成一张图。这些操作已经在GPU中写好了。

顶点和三角形变换处理

MVP变换

光栅化

将三角形离散为多个像素点。

判断是否可见(深度缓存)

Shading 在顶点和像素都会发生

对顶点做shading得在第一步,对三角形,像素做着色得在第四步(即产生像素了才能着色)

shader就是控制像素和顶点如何着色的。

Shader Programs

对每个顶点和每个像素都会执行(不用写for循环)。有顶点着色器 (vertex shader)和片段着色器(fragment shader) (也称为像素着色器)

GLSL着色器例子



推荐:https://www.shadertoy.com/

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

  1. 问题六十八:着色模型(shading model)(1)——反射模型(reflection model)(2.2)——高光反射(specular reflection)

    和diffuse reflection对应的是specular reflection.一直以来,本人都将"specular reflection"理解为"镜面反射&quo ...

  2. 问题六十八:Phong反射模型的C++实现

    1 Phong反射模型 这一章节,我们将实现Phong反射模型. 环境光的部分:先不解释,后面来填这个坑: 漫反射光和高光反射光部分: 入射光(光源)的辐射率: 入射光和表面法向量的夹角的余弦值: 可 ...

  3. Q99:当Bezier曲面(Utah Teapot)同时遇上“噪声纹理”和“Phong反射模型”

    1,理论介绍 完整标题应该是:当"三角形网格细分后的"Bezier曲面(Utah Teapot)同时遇上"噪声纹理"和"Phong反射模型" ...

  4. 问题六十八:着色模型(shading model)(1)——反射模型(reflection model)(2.1)——漫反射(diffuse reflection)

    68.1.2.1.1 漫反射光 前面,我们有这么一张图: 为了突出光子和表面里面的原子相互作用,还是用画得更为夸张的图好了.(注意:只关注蓝色光线.) 关于"漫反射光"(上图中的蓝 ...

  5. 问题六十八:BRDF——(着色模型(shading model)(1)——反射模型(reflection model)(3.2))

    1 BRDF 1.1 BRDF 在前一章节,我们已经知道,在给图形着色时,反射光线的辐射率(Radiance)即为颜色值.结合之前的反射模型,我们知道:反射光线在某方向的辐射率可以根据入射光线的强度和 ...

  6. 问题六十八:着色模型(shading model)(1)——反射模型(reflection model)(1)——概述

    "反射模型"和"光照模型" 这两个概念好像经常被等价使用.作者为了更好理解其他相关概念,对"反射模型"和"光照模型"做如 ...

  7. 问题六十八:着色模型(shading model)(1)——反射模型(reflection model)(3.1)——辐射学(Radiometry)

    前面,我们已经学习了各种反射模型.罗列如下. 漫反射模型: 高光反射模型: 根据这些模型,我们已经可以进行编程,然后生成图形.但是,为了加强这些模型的数学基础,我们引入辐射学(Radiometry)的 ...

  8. Blinn-Phong反射模型

    前言 在这一章中,实现光线与对象表面之间的相互作用.目的是在渲染流水线中增加着色功能,所以这里只讨论最基础的局部光照模型.与全局光照不同,在局部光照模型中,着色点的颜色值只取决于着色点表面的材质属性. ...

  9. 【译】【PyOpenGL教程-介绍着色器】 漫反射、环境光、平行光

    漫反射.环境光.方向光 原文地址:http://pyopengl.sourceforge.net/context/tutorials/shader_5.html 本教程在以往教程的基础上添加了: 环境 ...

最新文章

  1. sqlite的速度_内存不够用还要速度快,终于找到可以基于 File 的 Cache 了
  2. X86嵌入式主板在IOT网关产品的应用
  3. 线程八锁,同步锁的应用
  4. 将数据库中一张表中数据复制到另一张表
  5. “云手机”是否会成为未来的主流?
  6. Android widget开发有感
  7. redies基本数据结构
  8. SEO小白利用老域名将2个百度指数1000+的词快速上排名的案例
  9. 三星手机如何通过Exchange账户同步联系人到手机中?
  10. 西安建筑科技大学计算机系专业怎么样,西安建筑科技大学好就业吗?附西安建筑大学就业年薪...
  11. python数据库-3
  12. TL-WR886N密码JS加密
  13. 前NASA气象学家洛夫洛克宣判地球死刑
  14. Windows电脑系统锁屏界面壁纸如何获取
  15. 中国重型搅拌机市场深度研究分析报告
  16. ubuntu 升级后无法连接wifi问题(Wireless 8265 / 8275网卡)
  17. WordCount操作步骤
  18. python渐变色代码_Python 生成纯色或渐变色图片
  19. ARTS Week 33
  20. iOS图片打马赛克的实现方式--------终极解决方案

热门文章

  1. python 迅雷 批量下载电影天堂电影
  2. 智微JMS901量产工具软件+固件,JMS901双接口U盘成功量产教程分享
  3. mysql创建用户名和密码
  4. 解决Java.lang.NoClassDefFoundError:com/lowagie/text/Elemen的问题
  5. idea 启动报错: Failed to create JVM.JVM.Path XXXXXXX\jbr\ 我的解决办法
  6. Android的数据存储之一------SharedPreferences
  7. 首架无人机运送移植器官 有助于克服延误状况
  8. 计算机基础职中,职业高中计算机基础试卷一
  9. 吻过你这三个地方的男人,定是对你动了真情,错不了
  10. 虚拟机 Centos8 服务器密码忘了