- 博客(158)
- 资源 (178)
- 收藏
- 关注
原创 UE4 World, Level, LevelStreaming从入门到深入
两种模式本质都属于关卡流送技术,但实现逻辑不同:传统流送依赖显式的手动配置,而World Composition通过层级化和自动化简化了大世界管理。开发者可根据项目规模选择,甚至混合使用(如在大世界中嵌套局部手动流送)以实现灵活的场景构建。
2025-03-09 22:48:25
1066
原创 UE5.5 PCGFrameWork--GPU CustomHLSL
用户自定义函数,如何生成各种分形点云,各种自定义几何形状分布的点云等等。
2025-02-10 02:02:35
988
1
原创 UE5.5 PCGFrameWork使用入门
UE5.5PCGFrameWork从使用到原理深入。UE5.5PCGFrameWork从使用到原理深入。
2024-12-09 00:07:14
1037
原创 UE5.5 Geometry库的空间加速结构--AABBTree
AABB 树(Axis-Aligned Bounding Box Tree)是一种在计算机图形学、计算机游戏、机器人运动规划、碰撞检测等领域广泛应用的数据结构,用于高效地处理几何对象之间的空间关系,尤其是碰撞检测方面。是一个简单的几何概念,它是一个长方体(在二维空间中是矩形),其各边分别与坐标轴平行。对于一组几何对象(如三维模型中的多个三角形面片组成的物体),可以找到一个刚好能包围这些对象的 AABB,这个 AABB 能简单且快速地描述这些对象在空间中的大致位置和范围。
2024-12-03 01:14:37
1260
原创 清华计算几何--2D Polygon的三角剖分(triangulation)
一个N个顶点的Polygon最多需要N/3的哨点扫描整个画廊。简单多边形: 非相邻边不相交. 简单多边形也叫做Jordan polygon简单多边形案例(包含有洞和无洞)非简单多边形案例简单Polygon的三个邻接顶点构成的,并且完全位于Polygon的三角形称为Ear. 还有其他两种类型三角形, 分别称为Mouth和Dirty. 本文重点研究Ear.由沿着同一条线的两条单调链(左链和右链)构成的多边形就是单调多边.用Stack结构保存扫描点.
2024-10-21 00:56:23
968
原创 清华计算几何-ElementUniqueness, MinMap, MaxGap
给出一组数给出一组数据,, 判断每个数都是唯一性的或者说判断是否存在重复的.算法思路很简单, 快速排序 + 遍历判断: Max(O(nlogn) + O(n)) = O(nlogn)算法复杂度。
2024-08-04 19:33:40
354
原创 清华计算几何-算法LowBound和ConvexHull(凸包)-GrahamScan
算法求解复杂度是否存在一个最低界限,有时候想尽一切办法优化一个算法,去优化其复杂度,比如算法复杂度依次到: O(n4), O(n3), O(n2)一直优化下去能最低到哪个复杂度,有时候不好直接估算出。有个比较好的办法是从经典算法(比如排序)中,找到此算法和经典算法的等价转换。如果此算法和经典算法等价,则此算法的LowBound也是经典算法的LowBound。就是: 假设A为经典算法, 已经知道其算法复杂度。
2024-07-28 14:47:41
722
原创 清华计算几何-ConvexHull(凸包)-增量构造
分别介绍了EP(extremity point)和ED(extremity edge)求凸包的算法, 算法复杂度分别为O(n4)和O(n3). 这两种算法都是从一个集合里现存数据直接暴力求解出凸包.增量构造的思路可以帮助我们进一步优化算法复杂度, 基本思路是:一个个元素添加, 看每步的增量是否满足凸包要求.和插入排序的理念相似.
2024-07-20 15:19:53
996
原创 清华计算几何-ConvexHull(凸包)-求极点InTriangle/ToLeft Test
凸包是计算几何一个非常基础核心的概念。我理解的凸包就是给定一个点集合, 最外围的点的包围体就是凸包。
2024-07-14 22:20:48
951
原创 清华计算几何-ConvexHull(凸包)-求极边
给定一个点集, 求出最外围的点所形成的几何, 就是凸包。如下所示凸包在计算几何是一个非常基础和核心的一个概念, 很多几何计算算法都围绕凸包展开。
2024-07-14 01:34:42
693
原创 C++访问Private,Protecd,const修改值的一些方法总结
上面一个类所有变量都是Private, 并且存在一个Public模版函数, 这时候就可以通过模版函数特化来进一步访问。有段宏代码可以快速定义访问具体某个类的某个Proteced变量的代码,比较好用, 推荐进这篇博客里拷贝使用.这种访问Private办法最大的限制是类本身得存在Public模版函数.Protected变量访问比较常用的一种方法是用过定义母类方法来访问。
2024-06-15 22:15:17
579
原创 (UE4.26)UE4的FArchive序列化入门
序列化(Serialize)和反序列化(UnSerialize)是程序领域常见的概念。对于这两个词汇我理解的是序列化(Serialize): 变量值(等基本类型, 或者ArrayMap,或者更复杂的复合体)存储为一个文件(二进制流, 二进制文件, json, xml等格式)。反序列化(UnSerialize): 读取文件来复原变量值。UE4的序列化一个比较核心类是FArchive, 这个类定义了对大部分基础变量类型的序列化和反序列化接口。
2024-06-08 01:13:26
2099
原创 Houdini的PythonScript基本使用
Houdini的节点基础类型为OpNode, 子类型分为ObjNode, SopNode, LopNode等.这节主讲。
2024-06-01 23:14:40
1765
原创 UStaticMesh几何数据相关(UE5.3)
总体上概念和Houdini的一些几何概念相似,每种几何元素都可以附带属性,比如点的“Position”, 顶点的“Normal,UV”等等。下面介绍下如何获取Mesh元数据和相关属性。
2024-05-13 23:50:20
1286
2
原创 UE地形系统材质混合实现和Shader生成分析(UE5 5.2)
随着电脑和手机硬件性能越来越高,游戏越来越追求大世界,而大世界非常核心的一环是地形系统,地形系统两大构成因素:高度和多材质混合,此篇文章介绍下UE4/UE5 地形的材质混合方案----基于WeightMap混合。
2023-11-12 22:44:13
3172
原创 UE5.2 Mobile安卓游戏 Graphics Profile工具使用总结
Android游戏Profile 图形帧的常用工具有: snapdragon profiler, renderdoc,(1)opengl es3.1/3.2或者vulkan(2)UE5 Android 打Debug包(3)USB连接电脑的设置:手机连接电脑,开启USB传输文件模式,开启开发者模式,打开USB调试模式,打开允许USB安装,打开启动GPU调试层下载地址:Snapdragon Profiler - Qualcomm Developer Network打开snapdragon profilerSta
2023-06-29 03:59:30
1944
原创 (UE5 5.2)HISM Mobile DrawInstance在渲染层的实现浅分析
在 (UE4 4.27) UHierarchicalInstancedStaticMesh(HISM)原理分析 这篇博客大致介绍HISM组件从游戏线程到渲染线程的重建KD-Tree和剔除并提交DrawCall逻辑,但是没有分析渲染层的大致数据结构和实现. 可以看出FHierarchicalStaticMeshSceneProxy 实际存储Instance数组数据来自于FInstancedStaticMeshSceneProxy FHierarchicalStaticMeshSceneProxy只是以FClu
2023-06-15 03:52:19
1997
原创 Unity Nsight Graphcis 使用
在渲染Profile中,大家经常喜欢使用Renderdoc软件, 之前我的一篇博客也介绍Renderdoc Profile渲染的流程Renderdoc适合查看Draw哪一步出差了,导致效果不符合理想,又或者是非常粗糙估算某次Drawcall的消耗时间。但是Renderdoc有个非常严重的缺点,无法具体查看某次DrawCall具体瓶颈, 比如具体消耗瓶颈是在VertexShader, 还是PixelShader,消耗瓶颈在Shader的哪一步计算,这些Renderdoc是无法查看的。
2023-05-06 04:04:25
2535
原创 Unity实现GPU Cull渲染
前言在网上看到不少有关于UE4 生成Texture的教程,但是有些可以成功生成,有些生成失败,有些是创建无法持久保存的Texture或者说是关掉编辑器重启后就变黑的Texture等等。
2023-05-05 02:38:24
2269
原创 UE4引擎的CopyTexture, CopyToResolveTarget
在图形渲染各种算法上,特别是对2D纹理的处理上,经常出现一种情况,我们需要将一张纹理的一部分拷贝到另外一张纹理上。如下所示UE4提供了CopyTexture和CopyToResolveTarget来实现拷贝一张纹理一部分到另外一张纹理上的类似功能。......
2022-07-19 01:59:38
3241
2
原创 UE4引擎自定义ScreenPass和MRT输出
在前面的博客 (UE4 4.27)插件添加GlobalShder 中我们定义了一个GlobalShader来对一张RT进行后处理, 那篇博客还自定义VertexShader, PixelShader, 顶点格式, 顶点数组等等,其实这个只是作为案例教学,实际上在UE4引擎里对一张纹(多张)纹理进行后处理已经有内置的RenderPass, 它是ScreenPass。UE4默认为我们定义了FScreenVS和配套DrawRectangle函数,我们只需要轻松编写自己PixelShader,就可以进行后处理。..
2022-07-10 23:17:39
1474
原创 UE5引擎 PC端的Landscape渲染浅分析
游戏目前发展趋势是大世界,而大世界必不可少的元素是大地形,UE引擎从地形系统有完善的渲染管线和工具链。
2022-07-04 00:44:37
4913
原创 UE5 切换到DX12模式,并输出D3DDebug信息
切换到Debug模式DebugEditor或者DebugGameEditor模式设置项目的命令行信息在uproject后加 -dx12, -d3ddebug, -onethread之后UE5引擎发生RHI层的错误信息会自动输出到 “Output(输出)”窗口
2022-05-24 23:53:15
1242
原创 (UE4 4.27)UE4的Texture生成和原理浅分析
UE4的Texture使用分析UE4的Texture使用分析UE4的Texture使用分析
2022-04-10 18:25:22
6183
2
原创 (UE4 4.27) UHierarchicalInstancedStaticMesh(HISM)原理分析
UE4 UHierarchicalInstancedStaticMesh剔除原理分析UE4 UHierarchicalInstancedStaticMesh剔除原理分析UE4 UHierarchicalInstancedStaticMesh剔除原理分析
2022-04-08 02:24:07
9092
2
原创 地形渲染之四叉树(QuadTree)
地形的四叉树对象为一个地形,如下面所示:这里我们利用四叉树进行对地形进行分割,在此之前我分享两篇关于四叉树的技术博客:四叉树与八叉树和四叉树。这里我们以地形的三角形数量为条件进行四叉树的构建,如下面图所示:当然这里仅仅是一个类比,最终进行空间分区可能得到1块,也可能是4块,也可能是16块,也可能是64块,等等等。。。。。其实这取决于...
2022-04-06 00:40:51
3410
1
原创 UE4性能Profile的各种方式
Profile渲染阶段时间--stat scenerendering在RenderCore(.h,.cpp)声明定义profile字段,加入到局部函数,可以通过stat scenerendering指令来打印出相应时间
2022-03-20 01:33:23
2970
原创 UE4 4.27打包安卓手机
设置安卓开发环境安装Android Studio在https://developer.android.com/studio/archive官网下载Android Studio, UE4 4.27 下推荐记得下载Android Studio 4.0下载好了以后一路Next安装, 记得自己安装的路径第一次使用设置Android Studio在 Verify Settings对话框,记得你安装的JDK位置设置安装NDK在引擎的安卓目录点击SetupAndroid.bat...
2022-03-12 01:44:42
774
原创 RenderDoc Debug UE4 Shader
修改配置文件UnrealEngine\Engine\Config\ConsoleVariables.inir.Shaders.Optimize=0r.Shaders.KeepDebugInfo=1下载Renderdoc和开启Renderdoc插件F12按键截帧Debug PixelShader鼠标右键选取像素,点Debug进入PixelShader 代码Debug ComputeShader选取Dispatch的时候点击Debug...
2022-02-28 23:34:42
2307
1
原创 UE4 4.27 修改Mobile Forward管线支持Cluster多光源剔除
前言最近闲着没事想熟悉下UE4的图形模块(差不多算第一次碰这玩意),自己想寻找个需求,目前UE4 4.27的 Mobile Forward是不支持多光源的,默认是最大支持到4栈点光源. 于是,我萌发了一点想法,通过改造UE的Mobile Forward管线支持多光源剔除.分析UE MobileForward 的多点光源实现看下MobileBasePassPixelShader.usf的文件,你会发现是UE是“手动”多光源实现,硬编码最大4个点灯光。如下所示所以想支持多光源,后续必
2022-02-25 02:19:49
3782
4
原创 (UE4 4.27) UE4添加一次自定义的MeshPass实现移动端边缘发光
(UE4 4.27) UE4添加一次自定义的Mesh Render Pass(UE4 4.27) UE4添加一次自定义的Mesh Render Pass
2021-12-02 02:33:09
5765
原创 (UE4 4.27)自定义PrimitiveComponent
(UE4 4.27)自定义PrimitiveComponent(UE4 4.27)自定义PrimitiveComponent(UE4 4.27)自定义PrimitiveComponent
2021-10-29 02:07:51
4959
2
原创 (UE4 4.27)插件添加GlobalShder
前言在上一节我们大致介绍了UE4 GlobalShader的情况, 并且在引擎代码做了一些修改来阐述GlobalShader的声明-定义-使用。实际上在UE4开发中, GlobalShader不一定使用在修改引擎代码,也可能是用在插件, 比如LensDistortion插件就是使用GlobalShader定制一个RenderToTexture的功能。当然在插件中,GlobalShader的使用场景不仅仅局限于RenderToTexture, 可以ComputeShader等等来加速某些并行计算(如基于G
2021-10-15 00:55:07
1432
1
原创 (UE4 4.27)自定义GlobalShader
GlobalShader是什么我的理解是GlobalShader就是一个普通Shader, 只不过它存在一个全局Shader实例, 不和Mesh材质绑定, GlobalShader经常用于SinglePass, 如体积云, 各种可视化,全部的ComputeShaderPass都是用的GlobalShader.自定义GlobalShader添加C++ VertexShaderclass FMyVS : public FGlobalShader{ DECLARE_SHADER_TYPE
2021-09-30 23:09:23
3557
1
Directx11_CSM.rarDirectx11_CSM.rarDirectx11_CSM.rar
2018-01-23
Directx11_Basic.rarDirectx11_Basic.rarDirectx11_Basic.rar
2018-01-23
OpenGL3.3_CascadeShadowMap1.rar
2017-12-10
OpenGL_PBR+IBL+Specular+Texture1
2017-11-19
OpenGL3.3_PBR+IBL_Specular-NoTexture.rar
2017-11-18
OpenGL3.3_PBR_IBL_Diffuse.rar
2017-11-12
OpenGL3.3_IBL_Diffuse_Equireutangular1.rar
2017-11-12
OpenGL3.3_IBL_Diffuse_Equireutangular.rar
2017-11-12
OpenGL3.3_PBR_TEXTURE.rar
2017-11-06
OpenGL3.3_PbrNoTexture.rar
2017-11-06
Directx11_SSAO.rar
2017-10-31
OpenGL3.3_ShadowCubeMap_NoGeometry.rar
2017-10-29
OpenGL3.3_Shadow_PointLight.rar
2017-10-23
OpenGL3.3_ShadowMap_PCF.rar
2017-10-22
OpenGL3.3_Ssao.rar
2017-10-20
OpenGL3.3_DefferShading.rar
2017-10-14
D3D11_LoadFBX.rarD3D11_LoadFBX.rarD3D11_LoadFBX.rarD3D11_LoadFBX.rar
2018-04-16
zyh-code-review.rar
2018-03-12
计算机图形学书籍.PRT计算机图形学书籍.prt计算机图形学书籍.prt计算机图形学书籍.prt计算机图形学书籍.prt
2018-03-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人