引擎
文章平均质量分 94
ZJU_fish1996
这个作者很懒,什么都没留下…
展开
-
[引擎开发] 深入GPU和渲染优化(进阶篇)
在上述的基础篇中,我们对各种概念做了一个简单的介绍,在此篇文章中,我们将做更进一步的讲解。原创 2023-12-17 16:01:14 · 1569 阅读 · 0 评论 -
[引擎开发] 杂谈ue4中的Vulkan
接触Vulkan大概也有大半年,概述一下自己这段时间了解到的东西。本文实际上是杂谈性质而非综述性质,带有严重的主观认知,因此并没有那么严谨。使用Vulkan会带来什么呢?简单来说就是对底层更好的控制。这意味着我们能够有更多的手段去提升绘制的效率。这里Vulkan主要能够提升的是CPU端的效率,GPU端的效率是无法直接提升的。这里所说的提升CPU的效率,实际上描述的是Vulkan能够更好地控制渲染数据的准备,那么这个渲染数据的准备具体来说就是完成渲染指令的编码。原创 2023-10-05 20:27:20 · 2152 阅读 · 0 评论 -
Arm Mali GPU最佳实践(Arm Mali GPU Best Practices)
本文设计为快速查询指南,所以假设读者熟悉了底层API的使用;我们将在其它文章中更详细地去讨论特定的主题,并花更多时间向仍在学习API的开发人员解释相关的概念。注意:这些建议是为Mali GPU提供最佳实践,但实际中应用非常复杂,这些一般性的建议总会有例外。我们强烈建议对优化进行实测,来验证它们是否在目标设备上按预期执行。翻译 2023-02-26 14:59:21 · 3212 阅读 · 1 评论 -
[引擎开发] 现代图形API - metal篇
在我们对Metal进行介绍前,先来了解一下Apple GPU。metal在工作提交、显存管理上和dx12,vulkan这样的API设计比较接近,而在资源管理和绑定上的设计差异较大,这使得我们在考虑跨平台的应用时,需要充分理解API层面的设计。此外,Apple的开发者文档较为详细且完善,并且每年也有开发者大会对整个API的设计,以及一些新推出的特性进行介绍,这也是值得我们持续关注和学习的。t=MBR7。原创 2023-02-02 23:50:18 · 2374 阅读 · 1 评论 -
[引擎开发] 现代图形API - dx12篇
dx12引入了非常多全新的概念,在了解了这些概念的含义后,我们还应该认识到,所有的设计都基本是为了性能来考量的。之所以将渲染提交设计成可录制的指令,是为了方便多线程的录制;之所以独立出了管道状态对象,是为了避免维护状态上下文带来的消耗;之所以将资源绑定设计为像指针一样的描述符或描述符表,一是为了让绑定变得更加轻量(更少的绑定数量),二是可以支持动态的资源访问(bindless);原创 2023-01-26 20:34:04 · 2343 阅读 · 0 评论 -
[引擎开发] PBR材质的原理
[本文大纲] 基础概念篇 引入 光线与介质的作用 微平面理论 中间向量 能量守恒定律 光照计算 半球积分 反射率方程 BxDF 各向同性和各向异性 Disney BRDF Diffuse BRDF Specular BRDF ...原创 2022-05-03 00:22:34 · 4692 阅读 · 2 评论 -
[引擎开发] 深入C++拷贝控制
C++作为引擎开发的常用语言,是因为它的设计更加面向底层,我们有更多的控制内存的手段,以获得高性能的程序。这种控制内存的手段不仅体现在对内存分配管理上,也体现在内存的拷贝控制上。这意味着,为了编写高性能的代码,我们不仅需要关注逻辑的正确性,还需要对每条逻辑下发生了哪种情况的拷贝有着比较明确的认知。变量的初始化什么是变量的初始化?它是指对象在创建时,被赋予了一个特定的值。 C++中有两组不应混淆的概念,一组是声明和定义,另一组就...原创 2022-02-13 22:42:16 · 5732 阅读 · 1 评论 -
[引擎开发] 渲染架构与高级图形编程
[本文大纲] Shader编译 通用图形接口 绘制 多线程架构 独立渲染线程 独立图形API线程 多线程渲染提交 多核架构 后处理 1原创 2021-07-04 17:17:59 · 9106 阅读 · 6 评论 -
[引擎开发] 深入GPU和渲染优化(基础篇)
GPU/渲染优化是引擎开发中非常重要的一个环节,实际上在工程中做任何渲染相关的内容,都需要考虑到背后的原理和性能。另一方面,GPU/渲染优化是一个非常宽泛的课题,它不仅涉及到针对底层GPU的架构做出的相关优化,图形API的设计和使用的优化,也会涉及到CPU中渲染数据准备的优化,或者shader编写的优化等多方面的内容。 GPU PC GPU架构 移动端GPU架构 GPU瓶颈 带宽 ALU ...原创 2021-01-15 00:12:28 · 13053 阅读 · 5 评论 -
[引擎开发] 深入C++内存管理
引入 说到C++的内存管理,我们可能会想到栈空间的本地变量、堆上通过new动态分配的变量以及全局命名空间的变量等,这些变量的分配位置都是由系统来控制管理的,而调用者只需要考虑变量的生命周期相关的内容即可,而无需关心变量的具体布局。这对于普通软件的开发已经足够,但对于引擎开发而言,我们必须对内存有着更为精细的管理。程序的内存布局内存碎片内存对齐缓存机制SIMDCachestl的内存控制allocator堆栈分配器模型池分配器模型碎片整理tcmal...原创 2020-10-25 15:10:03 · 13748 阅读 · 12 评论 -
[unreal] 寻路:随机漫游的实现
reference: https://forums.unrealengine.com/community/general-discussion/1377-ue4-pathfinding-basic-ai?1270-UE4-Pathfinding-basic-AI=by : UE developer,IceWraith 随机漫游的效果可以有很多种实现方法,这取决于你想要使用哪种系统。 ...翻译 2018-04-15 17:22:36 · 2020 阅读 · 0 评论 -
[AirSim in Unreal] 在Unreal中使用无人机/无人车
参照http://blog.csdn.net/u011860814/article/details/60469441一文就可以成功地搭建unreal上的airsim项目。我跑了一个car simulation的项目,没有接入外设,是纯模拟的,具体效果如上图。 微软的这套airsim框架已经开源,可以在github上找到:https://github.com/Microso翻译 2018-01-05 20:12:12 · 10772 阅读 · 4 评论 -
unreal 4.18版本 右键点击静态网格资源未显示创建可破坏物体(create destructible mesh)
之前的版本直接右键都有这个选项的,新版Unreal没有了,原因是这个选项被默认关闭了。可以在菜单栏->编辑->Plugins->Physic中勾选可破坏物体的插件。再右键就出现该选项了。参考:https://forums.unrealengine.com/development-discussion/content-creation/1389700-solved-cre原创 2018-01-23 13:21:59 · 4478 阅读 · 1 评论 -
[unreal] 切换关卡
最近开始研究unreal里的关卡切换,中途绕了不少弯路,特此记录一下。 一开始我一直按照unity中的场景来理解关卡。后来发现这两者并不是完全对等的,关卡更像是一个区域,所以一个场景里有多个关卡也是合理的。 1.OpenLevel 一开始使用了一个OpenLevel的接口。 (1) 在蓝图中,直接搜索,拖拽出来即可,一般情况下原创 2018-01-31 23:03:17 · 7128 阅读 · 2 评论 -
[unreal] 用样条曲线刷道路 uasset资源导入maya
目前在做一个unreal中驾驶相关的项目。在导入了airsim插件之后,现在需要为汽车随机生成一些道路。于是开始翻阅Unreal中有没有样条曲线生成道路的方法。发现利用Unreal中的地貌来完成相应的操作。 选择地貌->管理->编辑样条曲线工具之后,在场景窗口长按ctrl键开始选择样条曲线的控制点。此时就生成了一条绿色线框的道路,但是在实际游戏中并不能看到任何原创 2018-01-08 23:35:37 · 7096 阅读 · 1 评论