Kongouuu's Blog

慢慢学图形

图形笔记 - 初级PBR

对整个PBR框架的个人理解

前言 一般学习图形学的时候第一个着色模型会是布林冯着色模型 这是一个比较简单的光照模型,跟上图所示分为三个部分,也就是说我们要为每个物体提供以下数据: 1. ka: 环境光强度,来形容物体的一个底色,一般我们会拿物体的diffuse map 输入,然后乘以一个较小的值来代表这个变量 2. kd: 这个就是Lambert模型的漫反射,我们一样是拿diffuse map的输...

Games202 - 作业4

Kulla-Conty Appoximation

Games202 作业4 Kulla-Conty补正 简介 我们在考虑微表面pbr的时候,会考虑到材质的微表面的法线分布和微表面的几何遮挡。假设我们的材质较为粗糙,像上图往右的材质,我们的物品会越来越暗。假设我们材质粗糙,那表示很大部分的光会往外跑,并且也会有增加的自遮挡行为,所以表面就会显得很暗,但这又比较不合理。 假设我的反射的光被其他微表面挡住了,那光线也不应该直接被其他微表...

Games202 - 作业1~3

记录写作业时的思考

作业1 阴影 硬阴影 计算出light mvp,让我们可以对比物体和shadow map记录的深度来进行遮挡计算。需要进行偏移计算,偏移可以通过入射光角度和法线进行计算来得到一个目标的偏移) PCF计算 随机采样目标pixel附近的深度值和当前进行对比来计算visibility。 filter size根据shadow map的分辨率而定,如果阴影不够软可以增加(0~10倍)。 噪音...

环境光照 - PRT和SH

Precomputed Radiance Tranfer + Spherical Harmonics

PRT和SH 简介 用于Image based lighting, 预计算环境光照的值(prt),这样可以在实时渲染的时候去模拟环境光的影响。 我们常规的ibl是单纯的把环境储存在一个cube map里,这样我们通过渲染方程去让环境贴图形容光照项Li时可以针对区块大小对贴图采样。当然因为渲染方程是积分,无论我们用黎曼还是蒙特卡洛都需要多次采样计算,这样特别的耗时。 所以Games101有...

图形笔记 - 线性代数

对变换的思考

对线性代数的思考 线性变换 变换本质 我们可以把原本拥有的坐标系看成两个向量i,j所构建成的一个网格。那么我们就可以把这样的一个坐标系统写成下面的形式 \[\left [ \matrix{ i右, j右 \\i上, j上 } \right] \left[ \matrix{ 1, 0 \\0, 1 } \right ]\] 我们把默认的坐标当作图上右部分的矩阵,然后我们对这个矩...

UE4学习笔记 - 更快地获得后缓存

ReadSurfaceData太慢了

简介 在实习过程中有需要实现一个在ue4内频繁进行截图的功能,虽然最后在安卓上还是没有成功实现,不过还是把这部分的功能给记录下来。 先放一下参考过的两篇文章: 1)UnrealEngine4 - 获取UE4最后的渲染缓存数据BackBuffer 2)陈可:Unreal:如何高效的将数据从GPU拷贝到CPU 正文 基本上大体思路就是直接抄官方plugin的pixel streami...