摘要: 网上很多的推导过程都是错的,所以写一个。 先平移,再旋转就可以,先平移的原因是,如果先旋转的话,坐标系已经改了,所以先平移。 平移的变换和相机的变换是相反的,所以是: 平移完成后,相机的位置就和原点的位置一样了,用v表示相机坐标下的点,用v'表示此时原点坐标下的点。 v' = v M 因为M是正交矩 阅读全文
posted @ 2016-12-23 16:32 星吊 阅读(606) 评论(0) 推荐(0)

2021年12月26日

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

2021年12月25日

摘要: 硬件架构不同,以Intel的某款8核处理器为例,CPU中有很大一部分面积都被缓存占去了,相比之下,8个核心占的面积并不算大。所以CPU的主要时间并不是计算,而是在做数据的传输。 再来看GPU的架构,从下图可以看出,GPU中缓存只占了很小的一部分的空间,绝大多数的空间都被计算单元SMX占用,因此GPU 阅读全文
posted @ 2021-12-25 18:51 星吊 阅读(847) 评论(0) 推荐(0)
摘要: 在 CUDA 编程中,内存拷贝是非常费时的一个动作。CPU 和 GPU 之间的总线是 PCI-Express,是双向传输的,之间通过 DMA(Direct Memory Access,直接内存访问)机制进行数据拷贝。 1.CUDA 固定内存(Pinned Memory) 对于 CUDA 架构而言,主 阅读全文
posted @ 2021-12-25 18:29 星吊 阅读(1192) 评论(0) 推荐(0)
摘要: 1、SIMT与SIMD本质相同:都是单指令多数据。 2、SIMT比SIMD更灵活,允许一条指令的多数据分开寻址;SIMD是必须连续在一起的片段。 3、SIMT形式上是多线程,本质上还是一个线程,只不过数据可以零散的分散开。但是如果你真的将数据分散开的话,执行效率上又会大打折扣,因为不满足并行访问的要 阅读全文
posted @ 2021-12-25 18:10 星吊 阅读(157) 评论(0) 推荐(0)
摘要: 寄存器 寄存器是GPU片上高速缓存, 执行单元可以以极低的延迟访问寄存器。寄存器的基本单元式寄存器文件,每个寄存器文件大小为32bit。局部存储器对于每个线程,局部存储器也是私有的。如果寄存器被消耗完。数据将被存储在局部存储器中。如果每个线程使用了过多的寄存器,或声明了大型结构体或数据,或者编译器无 阅读全文
posted @ 2021-12-25 17:18 星吊 阅读(732) 评论(0) 推荐(0)

2021年12月6日

摘要: 勒让德多项式 有一族正交函数是数学领域比较关注的,就是正交多项式(Orthogonal Polynomial)。正交多项式有一些奇妙的特性(或者说其实这个应该是它的定义吧?),这个特性跟正交基函数族类似: 特别地,如果 ,那么这组正交多项式 就是标准正交(orthonormal)的。有很多种这样的多 阅读全文
posted @ 2021-12-06 22:24 星吊 阅读(3129) 评论(0) 推荐(0)
摘要: SRP主要解决的是密集点计算间接光照的问题,假设我们要计算一组密集分布的receiver(任意一个分布在场景表面的点或者空间中的点),我们需要针对每个点去套用渲染方程去计算间接光照,即使这一步我们已经用球谐系数进行了转换成了离散数值积分的形式,但仍意味着巨大的计算量,因此在文章[1]【Global 阅读全文
posted @ 2021-12-06 22:09 星吊 阅读(85) 评论(0) 推荐(0)
摘要: IBL和球谐光照都可以用于计算间接光照。回顾下无外发光物体的渲染方程,brdf系数可以分解为漫反射部分和镜面反射部分,如下: [14] 在式14中,因为漫反射部分kd与积分项立体角无关可以提出积分部分,同时IBL对于漫反射通常采用预计算的方式算出点X出射方向 的辐照度,通过点X所在表面的法线生成基于 阅读全文
posted @ 2021-12-06 22:06 星吊 阅读(528) 评论(0) 推荐(0)

2021年12月3日

摘要: GNU Libc 的内存分配器(allocator)—ptmalloc,起源于Doug Lea的malloc。由Wolfram Gloger改进得到可以支持多线程。 tcmalloc是Google开发的内存分配器,在Golang、Chrome中都有使用该分配器进行内存分配。有效的优化了ptmallo 阅读全文
posted @ 2021-12-03 16:45 星吊 阅读(3680) 评论(0) 推荐(0)
摘要: ue4内存管理 自定义内存管理 ue4的内存管理主要是通过FMalloc类型的GMalloc这一结构来完成特定的需求,这是一个虚基类,它定义了malloc,realloc,free等一系列常用的内存管理操作。其中,Malloc的两个参数分别是分配内存的大小和对应的对齐量,默认对齐量为0。 /** T 阅读全文
posted @ 2021-12-03 16:38 星吊 阅读(1189) 评论(0) 推荐(0)

导航