《The Cg Tutorial》阅读笔记——光照 Lighting
本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/p/4796306.html
光照 Lighting
一、常见的几种光照模型
二、基本的光照模型
1. 数学公式描述:
表面颜色 = 自发光颜色 + 环境反射颜色 + 漫反射颜色 + 镜面反射(高光)颜色
Surface Color = Emissive Color + Ambient Color + Diffuse Color + Specular Color
2. 自发光 Emissive Term
【释义】“自发光”用于描述物体表面在没有光源的情况下散射出的色彩。具有“自发光”属性的物体不等同于光源,它们不具有照亮场景中其他物体的能力。
【数学表达式】
Emissive = Ke
- Ke是材质的发射属性。
本人博客地址,防止无脑抄袭,影响阅读见谅:http://www.cnblogs.com/dbylk
3. 环境 Ambient Term
【释义】“环境”用于描述场景中四处可见、没有特定方向的入射光在物体表面发生散射产生的色彩。
【数学表达式】
Ambient = Ka * GlobalAmbient
- Ka是材质的环境属性。
- GlobalAmbient是场景中环境光的色彩。
4. 漫反射 Diffuse Term
【释义】“漫反射”用于描述具有特定方向的入射光在物体表面发生散射所产生的色彩。
【数学表达式】
Diffuse = Kd * LightColor * max(N · L, 0)
- Kd是材质的漫射属性。
- LightColor是漫射光的色彩。
- N是物体表面的单位法向量。
- L是由着色点出发,指向光源的单位向量。
5. 镜面反射 Specular Term
【释义】“镜面反射”用于描述具有特定方向的入射光在物体表面发生折射所产生的色彩。镜面光的特点是会随着视点的移动发生改变。
【数学表达式】
Specular = Ks * LightColor * Facing * (max(N · normalize(V + L), 0)Shininess
- Ks是材质的镜面属性。
- LightColor是漫射光的色彩。
- N是物体表面法线的单位向量。
- V是由着色点出发,指向视点的单位向量。
- L是由着色点出发,指向光源的单位向量。
- normalize(V + L)的结果为V与L的中间向量。
- 当N · L大于0时,Facing = 1;否则Facing = 0。
- Shininess定义了材质表面的光泽度,此值越大越不容易发生镜面反射。
《The Cg Tutorial》阅读笔记——光照 Lighting的更多相关文章
- exploit writing tutorial 阅读笔记总结
近日阅读Corelan Team编写的exploit writing tutorial系列,大致了解了一下原理,记了一些笔记.此系列文章有中文翻译版,在看雪论坛上发表. 英文版地址:https://w ...
- 《The Cg Tutorial》阅读笔记——动画 Animation
这段时间阅读了英文版的NVidia官方的<The Cg Tutorial>,借此来学习基本的图形学知识和着色器编程. 在此做一个阅读笔记. 本文为大便一箩筐的原创内容,转载请注明出处,谢谢 ...
- Three.js源码阅读笔记-5
Core::Ray 该类用来表示空间中的“射线”,主要用来进行碰撞检测. THREE.Ray = function ( origin, direction ) { this.origin = ( or ...
- Detectron2源码阅读笔记-(一)Config&Trainer
代码结构概览 核心部分 configs:储存各种网络的yaml配置文件 datasets:存放数据集的地方 detectron2:运行代码的核心组件 tools:提供了运行代码的入口以及一切可视化的代 ...
- 阅读笔记 1 火球 UML大战需求分析
伴随着七天国庆的结束,紧张的学习生活也开始了,首先声明,阅读笔记随着我不断地阅读进度会慢慢更新,而不是一次性的写完,所以会重复的编辑.对于我选的这本 <火球 UML大战需求分析>,首先 ...
- [阅读笔记]Software optimization resources
http://www.agner.org/optimize/#manuals 阅读笔记Optimizing software in C++ 7. The efficiency of differe ...
- 《uml大战需求分析》阅读笔记05
<uml大战需求分析>阅读笔记05 这次我主要阅读了这本书的第九十章,通过看这章的知识了解了不少的知识开发某系统的重要前提是:这个系统有谁在用?这些人通过这个系统能做什么事? 一般搞清楚这 ...
- <<UML大战需求分析>>阅读笔记(2)
<<UML大战需求分析>>阅读笔记(2)> 此次读了uml大战需求分析的第三四章,我发现这本书讲的特别的好,由于这学期正在学习设计模式这本书,这本书就讲究对uml图的利用 ...
- uml大战需求分析阅读笔记01
<<UML大战需求分析>>阅读笔记(1) 刚读了uml大战需求分析的第一二章,读了这些内容之后,令我深有感触.以前学习uml这门课的时候,并没有好好学,那时我认为这门课并没有什 ...
随机推荐
- reload函数
reload函数 python2中reload()是内置函数,可以直接调用: reload() python3中将reload()函数放到了imp包中,需要先引入imp包: from imp impo ...
- Web框架简介
Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- python 课堂笔记-while
#Author:zyl age_of_oldboy = 56 count = 0 while count < 3: guess_age = int(input("guess age:& ...
- iOS clang 编译 oc 代码
clang -x objective-c -rewrite-objc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iP ...
- hadoop28---netty传对象
Netty中,通讯的双方建立连接后,会把数据按照ByteBuf的方式进行传输,例如http协议中,就是通过HttpRequestDecoder对ByteBuf数据流进行处理,转换成http的对象.基于 ...
- CentOS6升级Apache-httpd2.4.29
本文档解决AppacheHttp由版本2.2.x升级到版本2.4.29的问题,安装需要先进行依赖软件包的安装,请检查相应依赖软件包安装情况,如系统已经正确安装相应依赖软件包,可略过,本文所述版本升级不 ...
- H5中的语义化标签
H5中的语义化标签也就是之前的id = “header”演变而来的 只不过之前是id 现在变成了标签而已 什么是语义化: 根据内容结构化(内容语义化) 选择合适的标签(代码语义化) 便于开发者阅读和写 ...
- Spark1.x和2.x如何读取和写入csv文件
看很多资料,很少有讲怎么去操作读写csv文件的,我也查了一些.很多博客都是很老的方法,还有好多转来转去的,复制粘贴都不能看.下面我在这里归纳一下,以免以后用到时再费时间去查.前端实现文件下载和拖拽上传 ...
- Linux下解压分包文件zip(zip/z01/z02)【转】
本文转载自:https://www.cnblogs.com/EasonJim/p/7227109.html?utm_source=itdadao&utm_medium=referral Lin ...
- 2-Color Dutch National Flag Problem
2-Color Dutch National Flag Problem 问题 a[0..n-1]中包含红元素或蓝元素;重新放置使得 红元素均在蓝元素之前. 循环不变式 每一次循环,a[0...k-1] ...