Skip to content
  • 首页
  • 留言
  • 关于

Share the joys of programming and technology

IBL计算总结

IBL计算总结

2022年10月30日 liyanliang Comments 0 Comment
阅读次数: 243
03.一图读懂PBR

https://liyanliangpublic.oss-cn-hongkong.aliyuncs.com/img/03.%E4%B8%80%E5%9B%BE%E8%AF%BB%E6%87%82PBR.png

IBL 通常使用(取自现实世界或从3D场景生成的)环境立方体贴图 (Cubemap) ,可以将立方体贴图的每个像素视为光源,然后在渲染方程中直接使用它。

IBL计算主要有两部分组成,一个是光源产生的颜色,另一个是环境产生的颜色。

Contents

  • 1 1.光源产生的颜色
  • 2 2.环境产生的颜色
    • 2.1 (1)间接漫反射光
    • 2.2 (2)间接镜面光照
  • 3 3.最终IBL结果
    • 3.1 相关文章

1.光源产生的颜色

光源产生的颜色计算,直接将数值带入Cook-Torrance反射率方程即可,

image-20221026195350654
04.光源产生的颜色Lo

2.环境产生的颜色

环境产生的颜色,其实就是天空盒产生的光照,由间接漫反射光和间接镜面光组成。

将立方体贴图的每个纹素视为一个光源。使用一个方向向量 wi 对此立方体贴图进行采样,我们就可以获取该方向上的光照强度。

对于天空盒产生的环境光,应用反射率方程:

image-20221027085117052

将反射率方程拆分成漫反射和镜面反射两个部分:

image-20221027085158924

(1)间接漫反射光

间接漫反射计算公式:

image-20221027085238634

计算irradiance,即

image-20221027085448874

给定每个片段的积分球坐标,对半球进行离散采样。

如下图所示,在两层循环内,获取一个球面坐标并将它们转换为 3D 直角坐标向量,将向量从切线空间转换为世界空间,并使用此向量直接采样 HDR 环境贴图。我们将每个采样结果加到 irradiance,最后除以采样的总数,得到平均采样辐照度。

06.IBL_irradiance

最终由间接漫反射产生的环境光为:

 vec3 ambient = kD * diffuse * ao

总结:

07.IBL_ambient(漫反射)

(2)间接镜面光照

08.IBL_分割求和近似法(split sum approximation)
08.IBL_间接镜面光照(specular)

https://liyanliangpublic.oss-cn-hongkong.aliyuncs.com/img/08.IBL_%E9%97%B4%E6%8E%A5%E9%95%9C%E9%9D%A2%E5%85%89%E7%85%A7(specular).png

3.最终IBL结果

09.IBL计算总结

相关文章

  • 判断一个点是否在闭合区域内判断一个点是否在闭合区域内
  • 通过数学方法来计算short类型的变量w的低八位x和高八位通过数学方法来计算short类型的变量w的低八位x和高八位
  • Midas W-满堂支架快速建模助手开发Midas W-满堂支架快速建模助手开发
  • 设计模式-抽象工厂模式设计模式-抽象工厂模式
  • OpenGL-法线贴图(Normal Mapping)OpenGL-法线贴图(Normal Mapping)
  • 两跨连续梁影响线绘制-附源码两跨连续梁影响线绘制-附源码

C++
PBR

Post navigation

PREVIOUS
C++实现一个简单的语言解释器
NEXT
LearnOpenGL脑图汇总

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

近期文章

  • ANR崩溃日志查看方法
  • 通过数学方法来计算short类型的变量w的低八位x和高八位
  • 3dTiles数据解析
  • Games101和Games202脑图汇总
  • LearnOpenGL脑图汇总
  • IBL计算总结
  • C++实现一个简单的语言解释器
  • OpenGL-法线贴图(Normal Mapping)
  • OpenGL-卡通着色(Cartoon)
  • OpenGL几何着色器实现贝塞尔曲线
  • WinDbg检查内存泄漏
  • OpenGL雾化效果实现-每像素雾化
  • OpenGL实现billboard效果(CPU)
  • 算法:寻找异常数字
  • OpenGL 几何着色器的应用
  • Midas XD-构件详图开发
  • Midas XD-选筋助手开发
  • Civil Designer开发-检测规范自动生成控制截面
  • Civil Designer开发-公路桥梁承载能力检算评定
  • Midas W-满堂支架快速建模助手开发

全站热点

  • C++编写的情人节小程序 (2,082)
  • 提取最小封闭区域 (1,696)
  • Modern OpenGL绘制圆柱体 (1,607)
  • OpenGL开发环境搭建-GLFW与GLAD配置 超详细 (1,465)
  • 截面特性计算程序-附源码 (1,290)
  • OpenGL绘制旋转立方体 (1,110)
  • 判断一个点是否在闭合区域内 (1,032)
  • WordPress分页插件 – WP-PageNavi的使用(替换现有脚本) (948)
  • OpenGL实现billboard效果(CPU) (865)
  • Midas W-满堂支架快速建模助手开发 (837)
  • 从DLL中动态加载一个函数:LoadLibrary和GetProcAddress的使用 (748)
  • Midas XD [错误] 右侧挡土墙的最下端深度必须小于地基的最下端深度 (709)
  • 两跨连续梁影响线绘制-附源码 (686)
  • 土木想往土木软件开发方向发展,应该如何准备 (680)
  • OpenGL几何着色器实现贝塞尔曲线 (664)
  • 通过Spy++抓取窗口以查询对话框id (613)
  • 使用ODA数据库出现 “ODA_ASSUME”: 找不到标识符的错误 (547)
  • #pragma message 编译时提示信息 (527)
  • OpenGL雾化效果实现-每像素雾化 (508)
  • midas XD2020的开发 (476)

分类

  • C# (3)
  • C++ (19)
  • GIS (1)
  • MFC (3)
  • ObjectARX (2)
  • OpenGL (11)
  • Revit开发 (1)
  • 学习笔记 (2)
  • 岩土 (2)
  • 算法 (1)
  • 结构设计 (7)
  • 职场生涯 (1)
  • 计算几何 (3)

归档

  • 2024 年 12 月 (1)
  • 2024 年 10 月 (1)
  • 2024 年 9 月 (1)
  • 2023 年 3 月 (2)
  • 2022 年 10 月 (1)
  • 2022 年 3 月 (1)
  • 2022 年 2 月 (1)
  • 2022 年 1 月 (5)
  • 2021 年 11 月 (7)
  • 2021 年 6 月 (3)
  • 2021 年 5 月 (2)
  • 2021 年 3 月 (2)
  • 2021 年 2 月 (8)
  • 2021 年 1 月 (18)

标签

3dtiles anr Bezier Curves BillBoard C++ CDN CivilDesigner DLL EasyX fog glTF MFC Midas W Midas XD NormalMapping ObjectARX ODA OpenGL OpenXML Open XML PBR revit WinDbg 基坑设计 影响线 截面特性 桥梁 桥梁检测 桥梁设计 算法 计算几何 设计模式

书签

  • 李燕良的CSDN
  • 崔济东的博客
  • C++爱好者博客
  • 陈学伟的博客
  • 贾苏的博客
  • 陈睦锋的博客
  • 孙勇的博客

统计

  • 0
  • 152
  • 82
  • 388
  • 145
  • 268,855
  • 77,769

实时访问地域

© 2025   liyanliang.net Copyright. All Rights Reserved.