本文为大便一箩筐的原创内容,转载请注明出处,谢谢: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的更多相关文章

  1. exploit writing tutorial 阅读笔记总结

    近日阅读Corelan Team编写的exploit writing tutorial系列,大致了解了一下原理,记了一些笔记.此系列文章有中文翻译版,在看雪论坛上发表. 英文版地址:https://w ...

  2. 《The Cg Tutorial》阅读笔记——动画 Animation

    这段时间阅读了英文版的NVidia官方的<The Cg Tutorial>,借此来学习基本的图形学知识和着色器编程. 在此做一个阅读笔记. 本文为大便一箩筐的原创内容,转载请注明出处,谢谢 ...

  3. Three.js源码阅读笔记-5

    Core::Ray 该类用来表示空间中的“射线”,主要用来进行碰撞检测. THREE.Ray = function ( origin, direction ) { this.origin = ( or ...

  4. Detectron2源码阅读笔记-(一)Config&Trainer

    代码结构概览 核心部分 configs:储存各种网络的yaml配置文件 datasets:存放数据集的地方 detectron2:运行代码的核心组件 tools:提供了运行代码的入口以及一切可视化的代 ...

  5. 阅读笔记 1 火球 UML大战需求分析

    伴随着七天国庆的结束,紧张的学习生活也开始了,首先声明,阅读笔记随着我不断地阅读进度会慢慢更新,而不是一次性的写完,所以会重复的编辑.对于我选的这本   <火球 UML大战需求分析>,首先 ...

  6. [阅读笔记]Software optimization resources

    http://www.agner.org/optimize/#manuals 阅读笔记Optimizing software in C++   7. The efficiency of differe ...

  7. 《uml大战需求分析》阅读笔记05

    <uml大战需求分析>阅读笔记05 这次我主要阅读了这本书的第九十章,通过看这章的知识了解了不少的知识开发某系统的重要前提是:这个系统有谁在用?这些人通过这个系统能做什么事? 一般搞清楚这 ...

  8. <<UML大战需求分析>>阅读笔记(2)

    <<UML大战需求分析>>阅读笔记(2)> 此次读了uml大战需求分析的第三四章,我发现这本书讲的特别的好,由于这学期正在学习设计模式这本书,这本书就讲究对uml图的利用 ...

  9. uml大战需求分析阅读笔记01

    <<UML大战需求分析>>阅读笔记(1) 刚读了uml大战需求分析的第一二章,读了这些内容之后,令我深有感触.以前学习uml这门课的时候,并没有好好学,那时我认为这门课并没有什 ...

随机推荐

  1. javascript教程5:--BOM操作

    1.BOM 简介 所谓的 BOM 即浏览器对象模型(Browser Object Model).BOM 赋予了 JS 操作浏览器的能力,即 window 操作.DOM 则用于创建删除节点,操作 HTM ...

  2. Appium自动化环境搭建(windows+Android)

    开始安装: 1.首先搭建好Android开发环境(eclipse+jdk+android的sdk包+Level17或以上的版本api) 2.设置ANDROID_HOME系统变量为你的Android S ...

  3. Java中Collections和Collection的区别

    java.util.Collection Collection 层次结构 中的根接口.Collection 表示一组对象,这些对象也称为 collection 的元素.一些 collection 允许 ...

  4. Java保留字和关键字

    Java的关键字:java的关键字对Java的编译器有着特殊的意义,它们表示一种数据类型或者程序的结构相关. Java的保留字:为Java预留的关键字,现在还没用到,但在新Java的版本升级中可能会用 ...

  5. java return redirect

    return “/user/new” 或 return “/user/edit” 如果new页面有下拉(举例)组件,在return之前如果没有准备select所需要的数据,则return到new的页面 ...

  6. Soap 教程

    SOAP 构建模块 一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素: · 必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息 · 可选的 Header 元素 ...

  7. HDU - 3605 Escape (缩点+最大流/二分图多重匹配)

    题意:有N(1<=N<=1e5)个人要移民到M(1<=M<=10)个星球上,每个人有自己想去的星球,每个星球有最大承载人数.问这N个人能否移民成功. 分析:可以用最大流的思路求 ...

  8. top下的快捷键

    M —根据驻留内存大小进行排序 P —根据CPU使用百分比大小进行排序 T —根据时间/累计时间进行排序 c —切换显示命令名称和完整命令行 t —切换显示进程和CPU信息 m —切换显示内存信息 l ...

  9. Jconsle

    1. jconsole 远程连接: JConsole很好用,可以解决很多疑难杂症.但远程连接需要设置一下Java opt才可以使用.以下是步骤: 1). 在java opt下添加如下内容: 如果是无须 ...

  10. Entity FrameWork 配置 之连接字符串隐藏或重用

    C/S项目中使用EF,默认回生成app.config文件夹,软件打包安装成功之后就回生成一个对应exe.config.里面会包含配置的一些信息. 这里介绍给大家一种隐藏连接字符串的方式. 代码如下: ...