advance shading——菲涅耳现象
(计算光照的时候,从两点出发考虑,光的传播方向,以及光的在这个方向上的能量。)
光与表面交互的模型包含两类:和物体表面(surface)以及和物体的内部(body)。而subsurface指的是在物体内部(body)进行第二次反射和折射。
和物体表面的只有反射和折射,没有能量损失。fresnel是关于表面的反射。external reflect 指的是从光疏介质到光密介质,而internal refract指的是从光密介质到光疏介质(通常指的是光线进入物体后,再从物体的另一面射出)。
fresnel effect 菲妮儿效应指的是当反射角(视线和法线的夹角)变大时,其反射的能量越来越大,则看到一片白光,当反射角比较小,反射的能量比较小,这个时候能看到物体内部的情况。比如下图中的水面远的时白色,近的时透明的,可以看到水底。
在external reflect中fresnel effect:
通常,折射和入射光线的能量之间的关系为下图:
其中Lt是反射的能量,Li是入射的能量,Rf(0i)指的是反射能量比0i是反射角,它的范围是0到1。通常使用如下代替该公式
其中n1和n2是折射系数。为了近似模拟计算Rf(0i)(它的真实曲线可以参考real time rendering 233 page)可以使用如下两个公式:
其中第二公式中的n代表的是物体的折射系数,1是空气的折射系数,如果不是空气,改用其他的折射系数。
internal effect 中的 fresnel effect :
internal effect 是会发生全反射的,如下图:
但是这里的frenel的能量计算公式和external的一样,只不过Rf(0i)不一样,real time rendering page238 的图片显示了不同.
在计算Rf(0)可以用下面的公式,0c是全反射角
公式7.33依然可以使用,用来 逼近Rf(0i),只不过要用折射角代替入射角。
内部的有能量损失
advance shading——菲涅耳现象的更多相关文章
- advance shading——基础(辐射度测定)
辐射度测定(radiometry) <real time rendering>在这章上来就说了一大堆光照方面的物理术语,不知该怎么翻译.后来在维基百科上看到这个表,清楚了很多(这里的w是瓦 ...
- advance shading--BRDF
其实,双向反射(reflect)分布函数(BRDF)是一个四元函数,这个函数最终只是计算一个比值,这个值确定了射入物体表面的光中有多少被物体表面反射,并最终被眼睛所看到.反射的愈多,眼睛收到的光强越大 ...
- 【转】 ISP-镜头阴影校正(LSC)
转自:https://blog.csdn.net/xiaoyouck/article/details/77206505 介绍镜头阴影校正(Lens Shading Correction)是为了解决由于 ...
- Camera噪声问题
Camera噪声问题 Camera RGB 域的噪声 以上部分属于sensor processing,接下来的部分属于color.luminance processing. gamma gamma是在 ...
- 主流智能手机屏幕材质介绍 及 LCD闪屏现象分析
TN TN(Twisted Nematic) 即扭曲向列型面板,属于有源矩阵液晶显示器中的一种.由于TFT是主动式矩阵LCD可让液晶的排列方式具有记忆性,不会在电流消失后马上恢复 ...
- 基于Shading Model(对光照变化一定不变性)的运动目标检测算法
光照模型(Shading Model)在很多论文中得到了广泛的应用,如robust and illumination invariant change detection based on linea ...
- 什么是镜头shading
shading分为两种: Lens Shading:由于Lens的光学特性,Sensor影像区的边缘区域接收的光强比中心小,所造成的中心和四角亮度不一致的现象. color shading:由于LEN ...
- 【计算机视觉】基于Shading Model(对光照变化一定不变性)的运动目标检测算法
光照模型(Shading Model)在很多论文中得到了广泛的应用,如robust and illumination invariant change detection based on linea ...
- xamarin MasterDetailPage点击Master时卡顿现象
在很多项目中经常会使用到MasterDetailPage的布局方式,而且一般做为主页面来开发,在开发中,发现一个并不算Bug的问题,但是却发生了,以此记录下来,方便大家探讨. 现象是这样的,我开发了一 ...
随机推荐
- Data Provider 中没有.net framework Data provider for Mysql 的解决方法
近来做的一个项目中,数据库用的是 MySql, 而在项目使用 Entity Data Model 来做数据服务层,可是在项目中添加 Data Entty Model 时,一般我们都会选择从数据库中直接 ...
- viewer 照片查看器
viewer 照片查看器 效果: api: https://github.com/fengyuanchen/viewerjs#methods npm: npm install viewerjs 使用: ...
- 编写一个基于Soap DataModule的三层数据库应用
服务器端:建立一个Web App Debugger executable类型,不需要接口,添加一个SoapData Module,放上AdoCon,AdoDataSet,DataSetProvider ...
- jstl遍历list的jsp
jstl,核心标签库,使用,<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%& ...
- scala-- 内建控制结构
内建控制结构 scala 内建的控制结构很少,只有 if while for try match 和函数调用 几种. 因为scala 从语法层面支持函数字面量.几乎所有的scala控制结构都会产生 ...
- apply和call用法
资料来源:http://blog.csdn.net/business122/article/details/8000676 Js apply方法详解 我在一开始看到javascript的函数apply ...
- redis lua 用来传输日志
2.8 Lua Script Redis2.6内置的Lua Script支持,可以在Redis的Server端一次过运行大量逻辑,就像存储过程一样,避免了海量中间数据在网路上的传输. Lua自称是在S ...
- "诗词大闯关"调查过程心得体会
为了充分满足客户需求来更好地完成我们的项目--"诗词大闯关",我们根据项目内容,制定了调查表.我们小组以网上问卷调查的形式制作了调查表,并收集了122份有效的问卷调查表. 通过这次 ...
- 重新认识trim,ltrim,rtrim,trailing和leading。
trim经常用来去除一个字符串的空格,select trim(' dhajkjwa ') from dual; 在上面的语句中,trim的前面也可以加r或者l,表示去掉前面或者后面的空格,r和l代表左 ...
- MonkeyRunner原理初步--Android自动化测试学习历程
章节:自动化基础篇——MonkeyRunner原理初步 主要讲解内容及笔记: 一.理论知识和脚本演示 最佳方式是上官网文档去查看monkeyrunner的介绍,官网上不去,就找了一个本地的androi ...