【图形学笔记】Lectre11-The Rendering Equation-渲染方程
Lectre11-The Rendering Equation-渲染方程
目录
回顾一下,irradiance(E)跟辐射度/辐照度radiance(L)有如下关系:
这里
渲染器的核心,是在给定一个方向
本节最重要的渲染方程(Kajiya):
函数
Models of Scattering 散射模型
如何给散射光建模?这情况可非常多:
- 从表面直接反弹(反射)
- 透过表面传播
- 在物体里面反射
- 被吸收,或者等待一段时间被重新发射(??)
我们去谈,一个粒子从入射方向散射到另一个方向的概率!
- 漫反射(Diffuse reflection):所有方向的出射光是一样的。
- 理想镜面反射(Ideal specular reflection):出射光相当于沿着法向量“翻转”。
- 塑料材质(Plastic):翻转并且模糊(blurred)。
表面散射——BRDF(双向反射分布函数)
BRDF的全称是:Bidirectional reflectance distribution function 双向反射分布函数
-
编码了光线在表面反射的行为。
-
对于给定的入射方向
,有多少光线从给定的方向 散射出去? -
用一个分布还是
来描述! -
此时自然有
,并且因为能量守恒,所以 -
以及根据一个叫Helmholtz互反律(reciprocity)的东西,有
。 -
如何刻画?
一个点上的反射
- 根据渲染方程,
应当是 与 的比值! - 设
表示入射方向, 表示反射方向,那么
- 特别地,如果
都一样,那么根据渲染方程 。 - 这里似乎有个物理学背景,
,这里 叫做albedo反射率。
镜面反射
非常直观,
那么对于镜面反射,入射光和反射光应该是对称的,所以只有在一些特定的地方有取值。
- 狄拉克
函数(Dirac delta):并不懂它这里的狄拉克函数怎么定义的,因为标准定义似乎并不是一个严格的函数,而是这样一个函数: 仅在 处为非零,其他地方取值为0,但是在 上的积分又是1,很明显这样的函数是不存在的。- 但实际的物理应用里,会用一些近似的函数来逼近。
这里就用到了狄拉克函数:
这里
- 所以在实践中,不会去通过随机采样找反射方向,而是直接计算。
Transmission 传播(似乎是折射)
作为直接在表面反射的补充,光也可能穿过物体传播
-
斯涅耳定律(Snell's Law):
,经过一顿计算,可以得到-
-
可以看出来,如果角度太大,可能直接没有折射光了(这时候对应的反射就是全反射)
-
Fresnel reflection菲涅尔反射
似乎是模拟菲涅尔效应。
Subsurface scattering 表面下的散射
需要去推广散射模型——BSSRDF(什么玩意?)
分类:
图形学入门
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具