- 博客(981)
- 资源 (1)
- 收藏
- 关注
转载 (个人学习用)球谐光照、PRT、LPV、VXGI
球谐函数是系列定义在球面上的二维函数(一个定义在球面上的函数可以看作是从球面上的点到某个数集的映射)。图的最左边标明了球谐函数的阶数,第 l 阶球谐对应有 2l+1 个基函数,前 n 阶一共有 n2 个基函数,而图的最下边 m 则对应了球谐函数的序号,第 l 阶对应的序号范围为 [−l,l]
2025-02-18 12:35:25
75
转载 资源管理:重塑 UE 的包拆分方案
基于 HotChunker 的包管理方案,是一种强大和精确地包管理机制。能够在精确拆分资源的同时,保证配置的灵活性,并且支持强大的 Commandlet 能力。能够方便地非侵入式扩展流程和进行资源审计。而且,该方案是非侵入式集成,无需对默认的打包过程做任何处理也不需要修改引擎,整个实现都是插件化的,只要启用插件后拉起 UE 默认的打包就会自动执行。
2025-01-28 16:56:34
77
原创 mmap 随笔
mmap 会同时映射到相同物理内存,如果相同物理内存内容发生变化,内容会同时写入文件,并且其他进程映射的被些的文件映射内容,也是会发生改变的,因为映射到相同一段物理内存。
2025-01-22 20:45:55
119
转载 mmap:其他进程对先前以只读方式映射的文件进行写入的影响
如果我在进程A中关闭底层文件描述符,并且另一个进程稍后对该文件进行写入(不使用mmap,只是在shell中使用>将stdout重定向到文件),那么进程A的mmap内存是否会受到影响?如果我在进程A中关闭底层文件描述符,关闭文件描述符不会改变任何东西。所以听起来 mmap 不是读取(并在内存中保存)一个文件的当前状态的正确工具,当该文件可能在内存被进程完全读取之前被其他进程修改时,这个进程创建了映射。
2025-01-22 20:45:01
21
转载 GAMES202 高质量实时渲染笔记03 环境光照与预计算 -环境光与split sum
如果使用外接立方体包住记录环境光的单位球面,你会发现,如果我们从球心发射一道光线,这道光线会分别与球面和立方体表面有一个唯一的交点,也就是说,球面上的点和立方体表面的点有一个一一对应的映射关系。一般来说,会选择不同尺寸的滤波核,对环境光贴图进行不同层次的滤波,当使用时,可以根据BRDF的lobe的实际大小在对应层次的滤波结果上查询(如果lobe的大小没有对应层次的预滤波结果,可以在两层之间进行三线性插值,参考MIPMAP的做法)。因为采样的结果就是平均之后的结果,所以上图左右两部分是近似相等的,即。
2025-01-19 00:07:55
31
转载 GAMES202 高质量实时渲染笔记Lecture08:Real-Time Global Illumination (In Screen space)
https://zhuanlan.zhihu.com/p/381782999本文是闫令琪教授所教授的Games-202:Real-Time High Quality Rendrting学习笔记的第八讲 Real-Time Global Illumination (In 3D),本人属于新手上路暂无驾照,有错误欢迎各位大佬指正.本节课内容:LPV:在3D空间中去传播光线,从而利用它做出间接光照从而实现GI.LPV历史:最早是在Cry Engine 3中被引入的,其初衷是用来做Crysis系列(孤岛危机).如果
2025-01-18 22:31:22
42
转载 延迟和预测回滚(GAS)
在网络游戏开发中,无法避免的问题就是网络延迟,而为了降低网络延迟带来的感受,常使用一种通用方案就是预测回滚,这篇文章主要记录虚幻引擎中GAS框架是如何实现能力(GA)的预测回滚GAS预测的实现正在尝试解决的问题"我可以这样做吗",那些能够预测"回滚"如何回滚预测失败时已经产生的表现"重做"如何避免重做带来的负面表现,例如我们在客户端做了预测但是这个操作也从服务器上复制下来了"完整性"如何确保我们真正预测了所有情形"依赖"如何管理依赖性预测和预测时间链。
2025-01-16 13:39:21
113
转载 虚幻插件GAS分析02-1 技能的网络同步之预测与结束
代码中常出现Predict字样的东西,带这个字样基本会跟预测有关。GAS中的技能激活预测(仅Client可以先激活技能,同时请求Server激活技能Server会判断一下激活技能合不合理,如果合理,Server也激活,否则Server就不激活Server会把判断结果回复给ClientClient根据Server的判断结果处理,如果不合理,就结束技能。
2025-01-16 13:34:43
58
转载 UE4的GAS探究三:弱网延迟与预测Prediction
GAS内置了预测系统,预测功能可以有效融合UE的基本架构,比如序列化,反射,网络RPC,属性复制,ACTOR与网络结构融合等,本身简化并解脱了用户对于if (权威服务器) Do X;else Do预测版X;烦锁的代码编写需求,这一流程基本完全隐藏化透明化了,对于高质量,低延迟,快响应要求的游戏有着巨大的优势。技能预测触发事件预测GamepalyEffect预测,(不是全部),当然也就是里面真正效果,比如属性修改预测,GamepalyTag预测,Gameplay Cue行动画蒙太奇。
2025-01-16 13:05:14
170
转载 浅谈UGUI的渲染机制
从上面的步骤可知,因为sprite的顶点数据更复杂,在第一步和第二步的效率会比image低,image会有更多的fragment shader的计算因为是针对每个像素的计算,sprite会裁剪掉透明的部分,从而减少了大量的片段着色器运算,并降低了overdraw,sprite会有更多的vertex shader的计算。我们说的渲染层级高,意思就是会盖在物体上面,也是最后一个被渲染的那个。Sprite会根据显示内容,裁剪掉元素中的大部分透明区域,最终生成的几何体可能会有比较复杂的顶点结构。
2024-12-21 17:38:33
163
转载 【Unreal从0到1】【第二章:引擎渲染管线分析】2.3,移动端渲染管线特性分析
要实现暗部没那么死黑,整体亮度控制在一个比较亮的范围内,间接光反弹肯定要很好,间接光亮了,还要考虑AO能不能把漏光的地方压下去,烘焙的AO压肯定比较暴力(容易出现亮部调整起来没那么明显,AO很微弱,但是暗部调整起来又幅度比较大)就很难均衡亮部与暗部的层次,就又回到了是否使用SSAO的问题上。首先是一堆宏,可以对比下不同版本间功能支持的异同,不过对比了也没用,看样子Epic从4.24,25开始才认真对待起移动端的开发,不信可以去看4.23及以前的版本,PC端各种牛逼特性层出不穷,移动端要啥没啥。
2024-11-20 23:24:19
415
1
转载 【UE】UE中的Shadow技术
bDrawingStaticMeshes分支,因此导致了两者的结果不一致,而之所以会存在这种区别,是因为两者的PrimitiveSceneInfo->StaticMeshes数据不同,NestedCube具有这个数据,而角色这个数据是空的,这个数据对应的是StaticMesh的数据,角色添加的是SkeletalMesh,因此这里是空的,那么StaticMesh就不能打开Self Mesh了吗?另外,由于阴影的计算会考虑遮蔽程度,因此可以十分容易的得到较好的软影效果,右下角的图可以很好的说明这个问题。
2024-11-11 13:03:09
924
转载 URP源码阅读笔记:DepthOnlyPass
ForwardRenderer.Setup方法中,当requiresDepthPrepass变量为true的时候,才会将m_DepthPrepass填入m_ActivePassQueue中。当然,这里只是测试,正常项目中不要修改_CameraDepthTexture名字。shader的功能非常简单,就是采样深度贴图,然后把它的值当成color输出。越靠近摄像机的位置depth越小,颜色越黑,越远的地方,深度值越大,颜色越白。写一个最简单的shader采样_CameraDepthTexture。
2024-11-11 12:37:46
109
转载 【游戏开发面经汇总】- 图形学基础篇
图形学知识,对于图形开发、游戏引擎开发和技术美术岗位几乎是必考的知识点,对于客户端开发岗位来说,也是经常考察的进阶知识。不可否认,图形学的确是一个具有一定门槛、难度较高的领域,很多时候,我们面试的评价,往往也是是通过图形学的掌握程度来划分的。因此,掌握图形学基础知识,无论对于游戏开发的哪个岗位都是具有重要意义的。
2024-11-10 11:41:51
411
转载 微表面BRDF总结
Mintbeer神秘链接 Mintbeer.top关注他3 人赞同了该文章目录收起介绍符号单位表一、微表面理论基础3.Masking Function的约束条件二、Microfacet-Based BRDFs1.可见法线的分布2.BRDF的构建3.BRDF with Specular microfacets的构建4.BRDF with diffuse microfacets的构建三、常用的基于物理的Masking函数四、拉伸不变形1. 遮挡概率的拉伸不变型。
2024-11-09 23:32:56
153
转载 UE5渲染管线--Lights通道与光照渲染
UE5渲染管线--Lights通道与光照渲染26 人赞同了该文章前言:本篇是继之后,渲染管线系列之Lights通道篇。
2024-11-09 23:00:09
536
转载 多光源渲染方案 - Light Culling & Light Volume
1.多光源渲染方案 - Light Culling & Light Volume2023-02-21收起目录。
2024-11-05 23:21:15
74
转载 剖析虚幻渲染体系(17)- 实时光线追踪(03)
/ 根据不同类型的光源判断是否可以开启光追阴影。以上可知,屏幕空间降噪(SSD)过程非常复杂,涉及诸多Pass:压缩元数据、注入、重建、预卷积、拒绝预卷积、时间累积、历史卷积、空间累积等。此外,UE硬件光追的反射、AO、半透明等特性也杂糅在Lumen当中,形成了相辅相成、耦合性较高且极其复杂的渲染体系,从而呈现出精彩纷呈的电影级别的实时渲染画质。本篇主要阐述了UE的硬件光线追踪的渲染流程和主要算法,使得读者对此模块有着大致的理解,至于更多技术细节和原理,需要读者自己去研读UE源码发掘。
2024-11-03 13:42:21
120
转载 剖析虚幻渲染体系(04)- 延迟渲染管线(1/3)
的提出是为了解决传统延迟渲染在屏幕空间的光照计算阶段的高消耗问题,在生成GBuffer时,额外生成ddx和ddy,再利用Compute Shader对某个大小的分块找到变化不明显的区域,使用低频着色(几个像素共用一次计算,跟可变速率着色相似),从而提升着色效率,降低消耗。但是,也存在一些缺点,如需多一个通道来绘制几何信息,需要多渲染纹理(MRT)的支持,更多的CPU和GPU显存占用,更高的带宽要求,有限的材质呈现类型,难以使用MSAA等硬件抗锯齿,存在画面较糊的情况等等。2.4 将光源赋给Tile。
2024-11-03 13:40:45
431
转载 Unreal 渲染管线原理机制源码剖析
本文借助 Unreal ProfileGPU 命令和 RenderDoc 工具对游戏进行截帧,结合引擎源码,对虚幻引擎(UE4/UE5)的渲染管线(含延迟渲染管线和前向渲染管线)进行分析说明和总结记录。
2024-11-03 13:37:33
511
转载 Get Volumetric Lightmaps value for a world position
【代码】Get Volumetric Lightmaps value for a world position。
2024-10-28 22:20:23
43
转载 UE4/5 遮挡剔除(Occlusion Culling)浅析
遮挡剔除(Occlusion Culling)是一系列在CPU、GPU上进行近似判断,然后快速剔除掉一些可知不对图像进行贡献的物体,从而达到减少draw calls、depth testing、overdraw等开销的技术。一般来说,商业引擎的OC都是默认开启的,而大部分开发者也只会在场景里的物体不时发生谜之闪烁的时候才会注意到OC的存在。在普通的渲染流程中(非GPU-Driven),GPU occlusion culling发生在CPU frustum culling之后,如果当前物体存在于。
2024-10-27 20:49:41
223
转载 Rendering-UE4-OcclusionCull 遮挡剔除
开头想写几句写这篇文章的原因其实是因为看到一篇介绍韩国“抗疫”经验的报道,文章里说他们会在一些高危人群聚集的地方,采用一种“样本池合并检测法”:把多个人的样本混合成一个来检测,如果结果是阴性,那这群人都没有感染,如果结果是阳性,再对混合的样本分别检测。相比逐个逐个的检测,这种方法可以提高检测速度,也降低了检测成本,询问中国是否也能开发或这引进这项技术?
2024-10-27 20:48:37
78
转载 UE4内存优化
AssetRegistry是Editor的一个子系统,用来收集未加载到内存里的asset信息,当打包Cook完资源后会生成一个assetregistry.bin的文件,包含所有asset的信息,并在启动游戏的时候将这部分信息加载到内存中,游戏资源比较多,内存占用也会比较大,也会影响到FName部分的内存占用。UE4自己的算法计算出当前应当缓存的miplevel,将所有需要流送的纹理缓存大小相加后如果超出预设值,则会按照纹理优先级大小去降低对应纹理用于缓存的miplevel,直到满足预设的大小为止。
2024-10-20 23:13:37
309
转载 Stupid Spherical Harmonics (SH) Tricks
float4 cAg;float4 cAb;float4 cBr;float4 cBg;float4 cBb;float4 cC;int iC;for( iC=0;for( iC=0;
2024-10-19 16:29:59
61
转载 【UE4 C++】渲染流水线笔记:从MeshBatch到DrawCommand
在看完PMC的源码后,对UE4的渲染流水线有了一点浅薄的认知。找到了FMeshDrawCommand生成的主要流程,接下来先看这部分是如何和FPrimitiveSceneProxy配合的。到这里完成了MeshBatch到DrawCommand的过程,有了初步的认知后,源码里相关的概念已经大概熟悉,接下来就可以尝试针对性的修改源码,增加一个独立的渲染Pass了。MeshBatch收集完成后,接下来就是转换到DrawCommand的过程,这部分在SetupMeshPass中做了大量的工作。
2024-10-01 10:53:10
265
转载 萌新的UE5 Python使用笔记:开始篇,在UE5中执行Python脚本
因需求,最近开始学习如何在UE5中使用Python脚本进行工作。该系列文章是我学到的如何在UE5中使用Python进行自动化工作的学习笔记。
2024-09-22 16:22:32
989
转载 【UOD2022】Unreal的多线程并行渲染架构
望蓟门 - 唐·祖咏燕台一去客心惊,箫鼓喧喧汉将营。万里寒光生积雪,三边曙色动危旌。沙场烽火连胡月,海畔云山拥蓟城。少小虽非投笔吏,论功还欲请长缨。Unreal Open Day有不少干货,今天准备入坑盘一盘,将学习的心得体会总结记录下来,这是第一篇。下面我们逐步来看下各个部分的具体内容,如果文中有描述不清楚的,烦请点击文末的参考链接,前往原文一探究竟。
2024-09-21 17:07:04
510
转载 漫反射全局光照(1) - Lightmap
个人学习笔记,仅供参考。如有错误,欢迎指正。direction提供了dominant light的信息,例如可以借此模拟出glossy材质的specular highlight非常直观,方便美术手动调效果需要存的参数相对较少,只需要8个floats(direction = 2, RGB color * 2 = 6)相比SH有更强的contrast(美术和灯光师可能会比较喜欢这种效果)因为只有一个dominant light方向,所以不能很好地表示来自不同方向的光照。
2024-09-21 14:45:01
261
转载 UE5 实现GPU Instanced Skeletal Mesh Rendering
最近发现一个插件Skelot,实现了。可以实现同时渲染几万个SkeletalMesh,而且每个实例都可以播着不同的动画,不同动画之间还能有混合过渡,。本质就是实现了一个SkeletalMesh版的。要实现实例化绘制SkeletalMesh,通常需要实现自定义的和对应的等。本文首先简要介绍实现自定义需要的基本操作,然后分析Skelot渲染方面的实现细节,以达到可以自己实现一个的目的。。
2024-09-17 11:38:32
1337
原创 unreal gpuscene
TypeOffsetTable 是 Primitive Type 相同 Primitive 的结束偏移,不是开始偏移,第一个类型开始偏移是 0,第一个类型结束偏移,是第一个类型的个数。
2024-09-16 11:49:41
314
转载 UE5渲染--GPUScene与InstanceCulling裁剪
在RenderPrePass之前还有一些逻辑,上一章分析了GPUScene的更新,接下来分析InstanceCulling。代码执行位置也是在GPUScene之后:
2024-09-16 10:08:09
481
原创 Unreal 中类似 Unity 的 Cull 的功能
Source\Runtime\Renderer\Private\DeferredShadingRenderer.cppFInitViewTaskDatas InitViewTaskDatas = OnRenderBegin(GraphBuilder);
2024-09-11 23:17:05
174
原创 unreal shader debug
if (bDump)elseelseif (!if (!=========if (!if (!#endif#if!#endif //!
2024-09-07 14:16:53
671
转载 SubSurface 和SubSurface Profile
• Shading Model 设置为SubsurfaceProfiel 重点是下面Subsurface Profile文件中的设置 你需要创建subsurface profile资源。原文链接:https://blog.youkuaiyun.com/maxiaosheng521/article/details/105983167。• ShadingModel选择Subsurface 开启SubsuifaceColor通道和Opacity通道。• SubsurfaceColor 次表面颜色。次表面和次表面轮廓效果图。
2024-09-07 14:10:40
97
转载 参考UE官方的SkeletalMerging插件
我参考UE官方的SkeletalMerging插件和市场上的一些插件整合了在Runtime下将多个Mesh合并成一个,并保留MorphTarget和布料模拟。这样就不需要给Actor挂载很多个MeshComponent了。但每次人物一换装就要将所有Mesh重新合并一次,就觉得挺麻烦的,还想着要是底层自动帮忙批合并就不用这么麻烦了呢。StaticMesh倒是用DynamicMeshComponent很好处理。
2024-09-03 13:07:54
253
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人