12 2021 档案

摘要:RPT试着将计算拆分为两部分:一部分是预计算,一部分是实时计算。简化+近似渲染公式。 PRT基于三个设定:每个物体不会自发光 + 光源无限远 合并为传输函数 T transfer function 一个点表面的光照可以合并为:光照函数(左侧) 可见性函数(中间) 几何函数 (右侧) 代表点x 光照函 阅读全文

posted @ 2021-12-26 19:52 星吊 阅读(138) 评论(0) 推荐(0)

摘要:硬件架构不同,以Intel的某款8核处理器为例,CPU中有很大一部分面积都被缓存占去了,相比之下,8个核心占的面积并不算大。所以CPU的主要时间并不是计算,而是在做数据的传输。 再来看GPU的架构,从下图可以看出,GPU中缓存只占了很小的一部分的空间,绝大多数的空间都被计算单元SMX占用,因此GPU 阅读全文

posted @ 2021-12-25 18:51 星吊 阅读(849) 评论(0) 推荐(0)

摘要:在 CUDA 编程中,内存拷贝是非常费时的一个动作。CPU 和 GPU 之间的总线是 PCI-Express,是双向传输的,之间通过 DMA(Direct Memory Access,直接内存访问)机制进行数据拷贝。 1.CUDA 固定内存(Pinned Memory) 对于 CUDA 架构而言,主 阅读全文

posted @ 2021-12-25 18:29 星吊 阅读(1204) 评论(0) 推荐(0)

摘要:1、SIMT与SIMD本质相同:都是单指令多数据。 2、SIMT比SIMD更灵活,允许一条指令的多数据分开寻址;SIMD是必须连续在一起的片段。 3、SIMT形式上是多线程,本质上还是一个线程,只不过数据可以零散的分散开。但是如果你真的将数据分散开的话,执行效率上又会大打折扣,因为不满足并行访问的要 阅读全文

posted @ 2021-12-25 18:10 星吊 阅读(163) 评论(0) 推荐(0)

摘要:寄存器 寄存器是GPU片上高速缓存, 执行单元可以以极低的延迟访问寄存器。寄存器的基本单元式寄存器文件,每个寄存器文件大小为32bit。局部存储器对于每个线程,局部存储器也是私有的。如果寄存器被消耗完。数据将被存储在局部存储器中。如果每个线程使用了过多的寄存器,或声明了大型结构体或数据,或者编译器无 阅读全文

posted @ 2021-12-25 17:18 星吊 阅读(740) 评论(0) 推荐(0)

摘要:勒让德多项式 有一族正交函数是数学领域比较关注的,就是正交多项式(Orthogonal Polynomial)。正交多项式有一些奇妙的特性(或者说其实这个应该是它的定义吧?),这个特性跟正交基函数族类似: 特别地,如果 ,那么这组正交多项式 就是标准正交(orthonormal)的。有很多种这样的多 阅读全文

posted @ 2021-12-06 22:24 星吊 阅读(3174) 评论(0) 推荐(0)

摘要:SRP主要解决的是密集点计算间接光照的问题,假设我们要计算一组密集分布的receiver(任意一个分布在场景表面的点或者空间中的点),我们需要针对每个点去套用渲染方程去计算间接光照,即使这一步我们已经用球谐系数进行了转换成了离散数值积分的形式,但仍意味着巨大的计算量,因此在文章[1]【Global 阅读全文

posted @ 2021-12-06 22:09 星吊 阅读(88) 评论(0) 推荐(0)

摘要:IBL和球谐光照都可以用于计算间接光照。回顾下无外发光物体的渲染方程,brdf系数可以分解为漫反射部分和镜面反射部分,如下: [14] 在式14中,因为漫反射部分kd与积分项立体角无关可以提出积分部分,同时IBL对于漫反射通常采用预计算的方式算出点X出射方向 的辐照度,通过点X所在表面的法线生成基于 阅读全文

posted @ 2021-12-06 22:06 星吊 阅读(536) 评论(0) 推荐(0)

摘要:GNU Libc 的内存分配器(allocator)—ptmalloc,起源于Doug Lea的malloc。由Wolfram Gloger改进得到可以支持多线程。 tcmalloc是Google开发的内存分配器,在Golang、Chrome中都有使用该分配器进行内存分配。有效的优化了ptmallo 阅读全文

posted @ 2021-12-03 16:45 星吊 阅读(3716) 评论(0) 推荐(0)

摘要:ue4内存管理 自定义内存管理 ue4的内存管理主要是通过FMalloc类型的GMalloc这一结构来完成特定的需求,这是一个虚基类,它定义了malloc,realloc,free等一系列常用的内存管理操作。其中,Malloc的两个参数分别是分配内存的大小和对应的对齐量,默认对齐量为0。 /** T 阅读全文

posted @ 2021-12-03 16:38 星吊 阅读(1200) 评论(0) 推荐(0)

摘要:单帧分配器模型 用于分配一些临时的每帧生成的数据。分配的内存仅在当前帧适用,每帧开始时会将上一帧的缓冲数据清除,无需手动释放。 双帧分配器模型 它的基本特点和单帧分配器相近,区别在于第i+1帧适用第i帧分配的内存。它适用于处理非同步的一些数据,避免当前缓冲区被重写(同时读写) 堆栈分配器模型 堆栈分 阅读全文

posted @ 2021-12-03 16:33 星吊 阅读(127) 评论(0) 推荐(0)

摘要:三种类型:1 sequential fit(连续的) 通过链表将空闲内存链接起来,称为freelist。 分配内存时,先从freelist中查找是否存在满足要求的内存块,如果不存在,再从未分配内存中获取;当我们找到合适的内存块后,分配合适的内存,并将多余的部分放回freelist。 包括first 阅读全文

posted @ 2021-12-03 16:22 星吊 阅读(254) 评论(0) 推荐(0)

摘要:内存碎片 程序的内存往往不是紧凑连续排布的,而是存在着许多碎片。我们根据碎片产生的原因把碎片分为内部碎片和外部碎片两种类型: (1) 内部碎片:系统分配的内存大于实际所需的内存(由于对齐机制); (2) 外部碎片:不断分配回收不同大小的内存,由于内存分布散乱,较大内存无法分配; 内部碎片和外部碎片 阅读全文

posted @ 2021-12-03 16:08 星吊 阅读(159) 评论(0) 推荐(0)

导航