前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【cg】【pbr】基于物理的渲染理论与实现

【cg】【pbr】基于物理的渲染理论与实现

作者头像
duadua
发布2022-10-31 15:44:00
6420
发布2022-10-31 15:44:00
举报
文章被收录于专栏:duadua blogduadua blog

前言

基于物理的渲染,即PBR,是一种有别于传统经验模型的光照模型。折腾这个PBR,一方面是想对渲染管线和流程有更进一步的理解,对GPU编程有一定的认识和经验,另一方面,通过对基于OpenGL的3D游戏引擎的实现做一种尝试,不仅可以锻炼架构能力,还能对c++新的语法有更进一步的认识,了解了一些图形学的基础功能的实现,并锻炼使用了c++宏编程实现了委托机制和反射机制,为进一步实现序列化提供基础。同时编写了自己的数学库,推导了矩阵的各种仿射变换,以及旋转矩阵的推导,利用四元数进行旋转的原理与实现,正交/透视投影矩阵的推导和实现等,加强了图形学知识的数学基础,为进一步学习做准备。

结果

前前后后折腾了两三个月,最后搞下来答辩的时候成了下面这个鬼样子。

源码github地址

源码总共2万行左右,大部分使用c++语言实现,渲染部分使用原生opengl的api,shader使用glsl实现,几乎没有使用第三方库,除了读取模型使用的assimp,自己也写了一个读取obj格式的,但是效果不好。数学库也是自己边推导边实现的,可能有的地方是错误的,待以后查验。

文档

【cg】【pbr】基于物理的渲染理论篇

【cg】【pbr】基于物理的渲染实现篇之直接光照

【cg】【pbr】基于物理的渲染实现篇之间接光照(上)

【cg】【pbr】基于物理的渲染实现篇之间接光照(中)

【cg】【pbr】基于物理的渲染实现篇之间接光照(下)

结语

个人感觉对PBR的基本研究还算认真,从最初的理论一直到最终间接光照的实现,几乎每一步都有仔细地推导了一下,拾人牙慧也要拾的认真才好。

容我展望一下未来。

下一步打算继续补充一些实现中的数学推导的博客,如四元数、投影矩阵等,同时补充一下图形学相关的一些基础实现,如uv mapping、gamma校正、HDR、bloom、法线贴图、立方体贴图、动态环境立方体及动态环境映射等。

再后面,打算阅读一下ue4引擎的渲染相关的代码,看看当前实验性的知识是如何在商业引擎中实现的,也许那到时从课本上学到的东西才能得到印证。

时不我待,少年仍需努力。

\(^o^)/

参考文献

  • [1] Burley B, Studios W D A. Physically-based shading at disney[C]. ACM SIGGRAPH, 2012: 1-10.
  • [2] Alvy Ray Smith. Gamma Correction [J]. Technical Memo 9, 1995.01: 1-4.
  • [3] Erik Reinhard. High dynamic range imaging [M]. Amsterdam, 2010.
  • [4] 连瑞梅. 简单光反射模型(Phong 模型)的导出[J]. 科技广场, 2007.
  • [5] Linus Källberg, Thomas Larsson. Optimized Phong and Blinn-Phong Glossy Highlights [J]. Journal of Computer Graphics Techniques, 2014.03: 1-5.
  • [6] 金伟其, 胡威捷. 辐射度 光度与色度及其测量[M]. 北京理工大学出版社, 2006.
  • [7] Matt Pharr, Greg Humphreys. Physically Based Rendering Third Edition [M]. Elsevier/Morgan Kaufmann, 2004.
  • [8] Naty Hoffman. Background: Physics and Math of Shading [C]. ACM SIGGRAPH, 2012: 1-36.
  • [9] RL Cook, KE Torrance. A Reflectance Model for Computer Graphics [C]. ACM Transactions on Graphics (TOG), 1981.
  • [10] C Schlick. An inexpensive BRDF model for physically‐based rendering [C]. Computer graphics forum, 1994.
  • [11] Michał Iwanicki, Angelo Pesce. Approximate Models for Physically Based Rendering [C]. ACM SIGGRAPH, 2015: 1-45.
  • [12] Kevin Suffern. Ray tracing from the ground up [M]. A K Peters, 2007.
  • [13] Brian Karis, Epic Games. Real Shading in Unreal Engine 4 [C]. ACM SIGGRAPH, 2013: 1-19.
  • [14] Christophe Hery, Ryusuke Villemin, Epic Games. Physically Based Shading at Pixar [C]. ACM SIGGRAPH, 2013: 1-10.
  • [15] 彭群生. 计算机真实感图形的算法基础[M]. 科学出版社, 1999.
  • [16] Tomas Möller, Eric Haines. Real-Time Rendering 4th [M]. A K Peters, 2018.
  • [17] Randi J. Rost. OpenGL 着色语言[M].人民邮电出版社, 2006.
  • [18] Jason Gregory, 叶劲峰译. 游戏引擎架构[M].电子工业出版社, 2014.
  • [19] 浅墨. 基于物理的渲染(PBR)白皮书[EB/OL]. 知乎 , https://zhuanlan.zhihu.com/p/53086060
  • [20] i_dovelemon 的csdn主页 主要关于采样分布映射等数学基础的讲解 https://blog.csdn.net/i_dovelemon
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-06-282,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 结果
  • 文档
  • 结语
  • 参考文献
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档