- 1.C++/C#混合编程,C++作为底层,C#作为上层,通过自动胶水代码产生,C#可以完成完整调用C++功能
- 2.基于协程(Coroutines)的多线程构架,告别Callback Hell
- 3.基于宏图的图形化脚本构架,用户可以0代码实现超复杂游戏逻辑
- 4.完全用户自定义渲染管线,通过编辑器编辑RenderGraph,通过C#扩展RenderGraphNode,真正做到用户需要的一切效果都自定制
- 5.自带多进程服务器集群构架,大型MMO项目可用
- 6.基于HLSL的Shading开发,全平台Shader反射后统一了渲染资源绑定,是最接近原生DX开发用户习惯的模式
- 1.支持DX11,DX12,Vulkan,OpenGLES(废弃)
- 2.支持Windows,Android平台
- 3.Amplification Shader,Mesh Shader,RayTracing Shader
- 4.图形化编辑器配置RenderGraph资产,引擎自带DeferredShading和MobileShading配置RenderGraph资产
- 5.图形化Material Shader编辑器
- 6.InGame UI编辑器支持2D,3D游戏UI编辑
- 7.GpuScene+IndirectDraw+Bindless为基础的GpuDriven框架
- 8.粒子系统,采用图形化逻辑编辑,支持CPU,GPU粒子切换
- 9.SDF字体,放缩友好
- 10.基于Node的场景编辑器,世界大纲可以为任何Node设置C#脚本
- 11.图形化动作状态机,和宏图配合完成游戏逻辑
- 12.图形化脚本编辑器,宏图(Macross)系统几乎可以全功能实现引擎项目功能
- 13.内嵌RenderDoc,可以config配置
- 14.基于TCP/IP的RPC网络通讯,自带超大型服务器集群构架
- 15.采用双精度坐标,支持CDLOD地形,先天无限世界圣体
- 16.Excel数据自动映射数据结构,自动读写
- 17.插件动态加载卸载,游戏,引擎功能都可通过插件扩展
- 18.专用的prefab编辑器
一切都渲染流程都是节点链接配置出来,所以不要问引擎支持什么渲染特性,扩充和组合节点决定了最终的渲染管线效果
- 1.CullClusterNode,SwRastererizeNode,QuakResolveNode等一系列节点,用来实现软光栅渲染(尚未完全完成)
- 2.Hzb,depth clip map用来做深度裁剪
- 3.CpuCulling,在CPU内处理出可见Node列表
- 4.DeferredBassPass,延迟渲染,3或者4RT输出,最后一个velocity输出可配置
- 5.ShadowMap,经典CSM阴影
- 6.ScreenTiling,屏幕分块,目前主要记录影响的点光源
- 7.AdvShadow,基于QTree Clip Map的大范围阴影处理
- 6.DirLighting,平行光等的PBR延迟着色
- 7.Forward,前向节点,主要处理半透明一类的渲染
- 8.Particle,用来处理粒子系统的驱动和渲染
- 9.AvgBright,HDR用来处理动态光照tonemapping,eye adapter
- 10.Picked,PickBlur,PickHollow,PickHollowBlend,HitProxy用来处理编辑器等的像素点选
- 11.ScreenSpaceUI,用来处理屏幕空间UI渲染(3d UI直接在base pass或者forward中处理)
- 12.其他效果节点
-
- 1.VoxelNode,从视口创建稀疏体素
-
- 2.FogNode,高度雾
-
- 3.LuminanceThredhole,提取亮度区间
-
- 4.Bloom,顾名思义
-
- 5.Additive,叠加颜色
-
- 6.SunShaftDepthThreshole,SunShaftRadialBlur用来做God Ray的系列节点
-
- 7.Taa,时域反走样,和前面输出的velocity配合使用
- 第一次编译引擎,很多时候需要单独调试运行CppWeavingTools和CSharpCodeTools两个工程一次,确保codegen下面NativeBinder和Cs2Cpp目录产生了必要的临时cpp,cs文件
- 如果第一次产生NativeBinder失败,有可能需要安装llvm
- 编译Core.Window工程(C++)
- 编译Engine.Window工程(C#)
- 编译MainEditor工程(C#)
- 第一次可能需要手工编译下列插件工程
-
- SourceGit
-
- DataCopyer
- 因为github的LFS限制,可能需要手工解压一些压缩文件,清单如下
-
- binaries\Tools\net8.0\libclang.7z
- 编译Core.Android工程(C++)
- 编译Engine.Android程(C#)
- 设置MainEditor为当前项目
- 调试命令行参数为config=$(SolutionDir)content\EngineConfig.cfg use_renderdoc=false
- 调试工作目录为$(SolutionDir)binaries\
- 运行与调试,请阅读引擎配置与编辑器使用文档。
- 遇到一些奇怪IO相关Crash或者异常,可以尝试删除本地cache目录
- 不要提交大文件(20M以上),避免lfs使用
- 常用代码
- 新增加了C++的Bricks一定要记得添加对应宏,否则会C#找不到C++函数,方法参阅注意事项2
- 1.ExeCmd=决定执行的命令
- 2.ExtraCmd={n}这个n是确定启动后,控制台可以输入的参数个数
- 保存指定资产到最新版本,解决MetaVersion爆炸问题 ExeCmd=SaveAsLastest AssetType=Scene+Mesh+Material+MaterialInst+Texture CookCfg=$(SolutionDir)content\EngineConfigForCook.cfg
- 方法1:ExeCmd=StartRootServer CookCfg=$(SolutionDir)content\EngineConfigForRootServer.cfg
- 方法2:ExtraCmd=1 CookCfg=$(SolutionDir)content\EngineConfigForRootServer.cfg 在控制台输入ExeCmd=StartRootServer
- 方法1:ExeCmd=StartLoginServer CookCfg=$(SolutionDir)content\EngineConfigForRootServer.cfg
- 方法2:ExtraCmd=1 CookCfg=$(SolutionDir)content\EngineConfigForRootServer.cfg 在控制台输入ExeCmd=StartLoginServer
- 升级Nuget的libclang,本机查找Microsoft Visual Studio\2022\Enterprise\VC\Tools\Llvm\x64\bin拷贝到binaries\Tools\对应.net版本
- 右键libClangSharp查看nuget文件位置
