首页 > 其他分享 >unityshader学习笔记5

unityshader学习笔记5

时间:2022-10-09 17:33:12浏览次数:41  
标签:辐照度 光线 光源 物体 笔记 学习 表面 unityshader 方向

Unity中的光照:

光源

光是由光源发射出来的,实时渲染中,通常把光源当成一个没有体积的点,用L来表示它的方向.

在光学里,用辐照度来量化光.

对于平行光来说,它的辐照度可通过计算在垂直于L的单位面积上单位时间内穿过的能量来得到.

在计算光照模型时,我们需要知道一个物体表面的辐照度,而物体表面往往是和L不垂直的,可以使用光源方向L和表面法线n之间的夹角的余弦值来得到. 

 

因为辐照度是和照射表面时光线之间的距离d/cosθ成反比的,因此辐照度就和cosθ成正比.

cosθ可以使用光源方向L和表面法线n的点积来得到,这就是使用点积来计算辐照度的由来.

 

吸收和散射

光线由光源发射出来后,就会与物体相交.通常相交结果有两个:散射和吸收.

散射只改变光线的方向,不改变光线的密度和颜色.

吸收只改变光线的密度和颜色,不改变方向.

光线在物体表面经过散射后,有两种方向:

折射(透射),散射到物体内部

反射,散射到物体外部

对于不透明物体,折射进入物体内部的光线还会继续与内部的颗粒进行相交,其中一些光线最后会重新发射出物体表面,而另一些则被物体吸收.那些从物体表面重新发射出的光线将具有和入射光线不同的方向分布和颜色.

为了区分这两种不同的散射方向,我们在光照模型中使用了不同的部分来计算它们:

高光反射:表示物体表面是如何反射光线的.

漫反射:表示有多少光线会被折射、吸收和散射出表面.

 

根据入射光线的数量和方向,我们可以计算出射光线的数量和方向,通常使用出射度来描述它.

辐照度和出射度之间是满足线性关系的,而它们之间的比值就是材质的漫反射和高光反射属性.

 

着色

着色指的是,根据材质属性、光源信息,使用一个等式去计算沿某个观察方向的出射度的过程.我们把这个等式称为光照模型.

 

漫反射

漫反射光照符合兰伯特定律:反射光线的强度与表面法线和光源方向之间夹角的余弦值成正比.

漫反射计算公式:

 

n:表面法线

I:是指光源的单位矢量

mdiffuse:材质的漫反射颜色

clight:光源颜色

需要防止法线和光源方向点乘的结果为负值,防止物体被从后面来的光源照亮.

 

CG提供了一个函数,防止取负值

saturate(x) 把x截取在[0,1]范围内,如果x是一个矢量,那么会对它的每一个分量进行这样的操作.

 

辐照度计算: 光线方向与法线方向的点乘

如果L的向量与N一样(N Dot L=1),那么表示模型的这个点正对着光源,应该最亮,相反,如果两个向量呈相反方向(N Dot L=-1),那么则表示这个点背对光源,应该最暗。

 

标签:辐照度,光线,光源,物体,笔记,学习,表面,unityshader,方向
From: https://www.cnblogs.com/xianguoguo/p/16772937.html

相关文章

  • 01- Shell脚本学习--入门
    原文链接:https://github.com/52fhy/shell-book/blob/master/chapter1.md01-Shell脚本学习--入门标签:Shell[TOC]简介Shell是一种脚本语言,那么,就必须有解释器来执行......
  • 统计学习方法学习笔记-09-EM算法及其推广
    首先叙述EM算法,然后讨论EM算法的收敛性,作为EM算法的应用,介绍高斯混合模型的学习,最后介绍EM算法的推广-GEM算法EM算法的引入目的:概率模型有时候既含有观测变量,也含有隐变......
  • 【博学谷学习记录】超强总结,用心分享|MySql连接查询超详细总结
    一、概述在实际开发中,大部分情况下都不是在单表中进行数据操作,一般都是多张表进行联合查询。通常一个业务就会对应的有好几张表。MySql中的连接查询分为交叉连接,内连......
  • 第三章学习笔记
    本章讨论了Unix/Linux中的进程管理;阐述了多任务处理原则;介绍了进程概念;以一个编程示例来说明多任务处理、上下文切换和进程处理的各种原则和方法。多任务处理系统支持......
  • Python学习实验报告03——序列
    实验要求:完成课本实例部分及实战部分实验内容:Part1实例:实例01:创建一个文件命名为tips,导入日期时间类,定义一个包含七条励志文字的列表,获取当前星期作为索引输出每日一......
  • k8s笔记1
    1、watch后的命令不能使用别名alias#watchkgetpod-nkube-system-owidesh:k:未找到命令#watchkubectlgetpods--all-namespaces2、 k8s-master02状态:NotReady,......
  • 详解线性分类-逻辑回归(Logistic Regression)【白板推导系列笔记】
    一点最大后验估计的理解,不知道该写哪,就放这里了最大后验估计是根据经验数据获得对难以观察的量的点估计。与最大似然估计类似,但是最大的不同是,最大后验估计的融入了要估计......
  • 《Unix&Linux系统编程》第三章学习笔记
    第3章Unix/Linux进程管理3.1多任务处理多任务处理指同时执行几个独立的任务。在单CPU系统中一次只能执行一个任务。多任务处理是通过在不同任务之间多路复用CPU的执行......
  • SQL学习笔记
    1.创建数据库、显示数据库、使用数据库mysql>   create database test;mysql>   showdatabases;mysql>   usetest;2.创建数据表、插入数据+-----......
  • 测试基础学习 - mysql
    mysql介绍MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,属于Oracle旗下产品。MySQL将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度......