图形学
文章平均质量分 93
_子宽
这个作者很懒,什么都没留下…
展开
-
UE源码剖析 - Pixel Inspector
UE4的Pixel Inspector工具源码剖析原创 2022-06-22 21:05:14 · 1230 阅读 · 0 评论 -
UE源码剖析 - Scene View Extension
UE的SceneViewExtension介绍与实现分析原创 2022-03-28 21:30:06 · 2925 阅读 · 0 评论 -
SIGGRAPH 2020 Course: Samurai Shading in Ghost of Tsushima 知识点总结
SIGGRAPH 2020 Course: Samurai Shading in Ghost of Tsushima 知识点总结SIGGRAPH 2020 Course: Samurai Shading in Ghost of Tsushima主要分享了《对马岛之魂》这款游戏中的一些图形学技术,包括渲染强各向异性的材质渲染强asperity scattering的材质提升皮肤渲染的准确性改进的detailed map《对马岛之魂》的背景放在13世纪封建社会的日本,玩家操作一名日本武士,为了解原创 2021-07-21 20:39:42 · 1282 阅读 · 1 评论 -
关于浮点数的学习笔记
浮点数是计算机常用的一种表示实数的方法。虽然平时感觉不到,但是浮点数的运算、设计会和整数有很大的不一样,了解浮点数的底层原理,有助于调试程序中遇到的一些奇奇怪怪的问题。本文将从两个方面展开,先介绍浮点数的通用表示形式,讨论浮点数误差等话题,然后介绍IEEE标准对浮点数做了哪些规范。浮点数的格式取一个基底β\betaβ,一个精度ppp,浮点数根据±d.dd...d×βe\pm d.dd...d\times \beta^e±d.dd...d×βe用d.dd...dd.dd...dd.dd...d和原创 2021-04-09 18:03:42 · 1292 阅读 · 2 评论 -
均匀采样问题总结
摘要均匀采样问题是图形学中常遇到的一类问题,这类问题的描述如下:如何用[0,1]之间的均匀采样获得在xxx上的均匀采样?其中,xxx可以是圆盘、球面、球体等。我们可以利用的只有[0,1]之间的均匀采样,这个可以通过程序的伪随机实现。总的来说,这类问题有着类似的思路和解决方案,都可以利用概率论知识一步步推导出来。本文将介绍相关方法,并给出几个常用的示例。理论概率论知识回顾注:如果基础比较扎实,可以直接跳到求解思路累积分布函数 随机变量XXX的累积分布函数(cumulative distribu原创 2020-10-16 20:23:58 · 7134 阅读 · 5 评论 -
两种不同的PBR工作流介绍
本文介绍两种常用的PBR材质工作流:金属/粗糙度工作流(Metal/Roughness)和镜面反射/光泽度工作流(Specular/Glossiness)。这两种工作流都可以用来制作一个支持PBR的材质,并用PBR渲染出逼真的效果,它们没有优劣之分,只是对同一种现象的不同实现。理解了这两种工作流,才可以更好的理解PBR着色器的一些参数及其使用背后的原理。本文参考了Substance出版的The PBR Guide,原文连接在[1],如果想看中文版可以参考[2]。PBR需要什么无论是金属/粗糙度工作流还原创 2020-10-08 15:44:33 · 10943 阅读 · 1 评论 -
着色模型简介和实现(下)
接上文,本文主要介绍UE4、Filament以及Disney对前面介绍的几种shading model的实现。实现着色模型(Shading model)指的是材质如何对入射光线做出反应,可以理解为从入射光线到出射光线的映射函数。前面介绍的BRDF理论也是shading model的一部分。除了BRDF,还有BSDF、BTDF模型,统称为BxDF。BxDF的公式的选取决定了shading model的效果。这一节我们将讨论主流的渲染引擎、方法都采用了哪些shading model,以及他们的具体实现是什么原创 2020-10-08 15:38:49 · 4810 阅读 · 2 评论 -
着色模型简介和实现(上)
摘要着色模型(shading model)描述的是材质表面对光线的作用,它的输入是光线、入射角、反射角、材质的属性(例如粗糙度、金属度等),输出是材质的颜色。前面提到的BRDF模型就是shading model的一种,但是BRDF模型过于简单,很多复杂的物理现象无法描述。本文将接着BRDF继续介绍一些更复杂的shading model,以及UE4和Disney的实现。本文主要介绍理论部分,下篇将介绍UE4、Filament以及Disney对shading model的详细实现。理论主要介绍对各向异性原创 2020-10-08 15:36:25 · 1074 阅读 · 0 评论 -
BRDF理论及shader实现(下)
接上篇:BRDF理论及shader实现(上)Specular BRDF对于specular分量来说,fmf_mfm是一个遵循菲涅尔反射定律的镜面BRDF项,此时的fmf_mfm满足([3]和[21]有详细的推导):fm(l,v,m)=F(v,m)δωm(h,m)4(l⋅h)2f_m({\bf{l}},{\bf{v}},{\bf{m}}) = F({\bf{v}},{\bf{m}})\frac{\delta_{\omega_m}({\bf{h}}, {\bf{m}})}{4({\bf{l}}\c原创 2020-10-06 15:14:40 · 2277 阅读 · 0 评论 -
图形学中的矩阵变换
摘要图形学因为要处理三维中的物体,所以经常要用到矩阵变换,包括基础的模型变换(旋转、平移、缩放变换),以及投影变换、视口变换。这其中有很多有意思的数学知识。网络上虽然有很多介绍矩阵变换的博客,但是很多只介绍了基本的矩阵运算,没有深入介绍四元数等高级用法。因此本文将从模型变换入手,介绍图形学中的插值操作,包括四元数等内容。模型变换模型变换是将一个点(模型)变换到另一个点(模型)的操作。一般我们会把三维点用齐次坐标(homogeneous notation)表示,所以变换矩阵是4×44\times44×4原创 2020-08-25 18:35:36 · 3575 阅读 · 0 评论 -
Filament介绍
摘要Filament是一款Google开发的跨平台的实时渲染引擎,支持PBR材质,并且针对Android平台做了优化(毕竟Google亲儿子)。本文将针对Filament的特点,简单介绍Filament的一些特性,包括它的材质系统和光照系统。这些设计对于实现一款渲染器,特别是PBR渲染器具有一定的参考意义。至于具体的实现细节,因为跟PBR理论重合度比较高,就不再赘述。如果对这款引擎很感兴趣,可以参考他们的文档。这个文档怎么说呢,详细的地方非常详细,简略的地方一律“TODO”过,很神奇。平台特性●原创 2020-08-06 19:58:48 · 12624 阅读 · 2 评论 -
BRDF理论及shader实现(上)
摘要本文将介绍几种渲染中常用的BRDF公式,包括Diffuse和Specular,以及相关理论。理论介绍BRDFBRDF(Bidirectional Reflectance Distribution Function)表示的是出射光线的辐射率radiance与入射光线的辐照度irradiance之间的比值,公式为:f(l,v)=dLo(v)dE(l)f({\bf{l}},{\bf{v}})=\frac{dL_o({\bf{v}})}{dE({\bf{l}})}f(l,v)=dE(l)dLo(原创 2020-07-25 19:38:53 · 2614 阅读 · 0 评论 -
PRT算法介绍
摘要PRT(precomputed radiance transfer)的全称很长,Precomputed radiance transfer for real-time rendering in dynamic, low-frequency lighting environments,强行翻译一下大概是基于预计算辐射率传播函数的动态低频环境光场景的实时渲染,论文[1]对它的定义是:real-time method for rendering diffuse and glossy objects in原创 2020-07-12 11:58:52 · 4561 阅读 · 1 评论 -
Windows下编译Mitsuba 1&2
目录简介Mitsuba 2准备工作编译过程获取源码编译设置路径使用参考文档Mitsuba 1准备工作编译过程安装依赖获取源码编译编译错误1编译错误2编译错误3设置路径参考文档简介Mitsuba是一款面向研究的渲染器,因其对材质的模拟非常细致,故而在研究领域应用的非常多。Mitsuba的开发团队也比较争气,已经开发到第二代了。最近由于工作上的需要,在Windows下陆续编译了2代和1代的Mitsuba源码,踩了一些坑,在这里记录一下。注:Mitsuba相关的代码和数据都可以在他们的github账户下找到原创 2020-06-19 19:51:15 · 2712 阅读 · 1 评论