advance shading--BRDF
其实,双向反射(reflect)分布函数(BRDF)是一个四元函数,这个函数最终只是计算一个比值,这个值确定了射入物体表面的光中有多少被物体表面反射,并最终被眼睛所看到。反射的愈多,眼睛收到的光强越大,亮度也就越大。所以,这个函数的本质式一个调节函数。这里所说的光源都是non-area 光源。BRDF的物理表达式为
其中l是入射光的方向,v是我们计算的光强方向,他们都是单位向量,它描述的是一个微观现象,不考虑因为距离造成的衰减。以上说BRDF是四元函数,是将v和l转化到球面坐标系下表示,分别需要两个参数来表示。上式中El指的是入射光线的irradiance,也就是单位面积上的光通量,而分子则是反射光线的radiance。为什么该方程乘以一个EL最终计算的是radiance,而不用反过来的形式呢?因为radiance不会随着距离的变化而变化,这样可以忽略摄像机相对物体表面位置的影响。因为至于为什么是这两个的比值而不是radiance比上radiance?这个和测量BRDF有关。
在实际使用过程中,为了得到最真实的模拟,会提前将要模拟的材质进行一次BRDF数据的采集,这样在渲染过程中直接使用BRDF数据就可以。如果BRDF使用的radiance和radiance的比值,那么要采集入射光线的radiance,而radiance的采集是很困难的,具体这里不讨论。但是采集入射光线irradiance是很方便的,所以使用了以上的公式来表示最终的结果。
在non-area光源中,可以采用一下的描述。
将其带入shading 方程中,则是一下形式。
其中EL可以使用在《advance shading--光源类型》中的计算公式来计算,此时ELk已经是经过距离衰减后的值,也就证实了BRDF描述的是微观现象。(未完待续)
advance shading--BRDF的更多相关文章
- advance shading——菲涅耳现象
(计算光照的时候,从两点出发考虑,光的传播方向,以及光的在这个方向上的能量.) 光与表面交互的模型包含两类:和物体表面(surface)以及和物体的内部(body).而subsurface指的是在物体 ...
- advance shading——基础(辐射度测定)
辐射度测定(radiometry) <real time rendering>在这章上来就说了一大堆光照方面的物理术语,不知该怎么翻译.后来在维基百科上看到这个表,清楚了很多(这里的w是瓦 ...
- 【Unity Shaders】Diffuse Shading——使用2D ramp texture来创建一个假的BRDF(双向反射分布函数)
本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...
- UnrealEngine4 PBR Shading Model 概述
虽然是概述,但内容并还是有些多,写上一篇PBR概念概述后,也在考虑怎么继续下去,最后还是觉得先多写一些东西再慢慢总结,所以还是尽量把这些年PBR相关的Paper精粹沉淀下来吧. 因为UE4 ...
- Unity3d 基于物理渲染Physically-Based Rendering之specular BRDF
在实时渲染中Physically-Based Rendering(PBR)中文为基于物理的渲染它能为渲染的物体带来更真实的效果,而且能量守恒 稍微解释一下字母的意思,为对后文的理解有帮助,从右到左L为 ...
- Deferred Shading(延迟渲染)
1.简介 在计算机图形学的词典里,Shading表示“对受光物体的渲染”,这个渲染过程包括下面几步[1]: 1) 计算几何多边形(也就是Mesh). 2) 决定表面材质特性,例如法 ...
- 【Unity Shaders】概述及Diffuse Shading介绍
本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...
- Deferred Shading,延迟渲染(提高渲染效率,减少多余光照计算)【转】
Deferred Shading,看过<Gems2> 的应该都了解了.最近很火的星际2就是使用了Deferred Shading. 原帖位置: http://blog.csdn.net ...
- [UE4] Adding a custom shading model
转自:https://blog.felixkate.net/2016/05/22/adding-a-custom-shading-model-1/ This was written in Februa ...
随机推荐
- ECCV 2018 | UBC&腾讯AI Lab提出首个模块化GAN架构,搞定任意图像PS组合
通常的图像转换模型(如 StarGAN.CycleGAN.IcGAN)无法实现同时训练,不同的转换配对也不能组合.在本文中,英属哥伦比亚大学(UBC)与腾讯 AI Lab 共同提出了一种新型的模块化多 ...
- python super()函数详解
引言: 在类的多继承使用场景中,重写父类的方法时,可能会考虑到需要重新调用父类的方法,所以super()函数就是比较使用也很必要的解决方法: 文章来源: http://www.cnblogs.com/ ...
- yii 执行sql
sql $sql = "SELECT ".join(',', $this->search_fields_channel)." FROM {{chan ...
- jpa 多对多
entity Item package entity; import java.util.HashSet; import java.util.Set; import javax.persisten ...
- javarscript在HTML中的调用方式 (直接调用 和文件调用)
//文件调用<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- JVM jstat 详解
http://www.ityouknow.com/java/2017/03/01/jvm-overview.html 本文基于JDK1.8 https://blog.csdn.net/maosijun ...
- as2 loadClip
loadClip(url:String, target:Object) : Boolean target是直接被赋值,而不是add进去
- as2 针对加载进来的swf操作
如果加载的子swf,里面的东西会随时发生变化,那么as2获取的子swf宽高也会不停在变动. 解决方法,就是在子swf里面控制设置方法,当as2需要准确获取子swf宽高时,迫使子宽高恢复到原本样子,这样 ...
- rem 的使用
1.填加以下代码 (function (designWidth, maxWidth) { var doc = document, win = window, docEl = doc.documentE ...
- mysql 2003: Can't connect to MySQL server on '127.0.0.1:3306' (99)
连接断开的频率太高导致报错,可以在每次连接之间sleep,或者保持一个长连接. ref:https://stackoverflow.com/questions/24884438/2003-cant-c ...