BlueRose
文章97
标签28
分类7
使用Git SubModule来管理开源插件

使用Git SubModule来管理开源插件

前言

之前有考虑过将项目中自己的移植版AdvancedLocomotionSystem v4换成社区维护版本ALS-Community。众所周知,如果主仓库下存在子.git文件夹,那子.git文件夹中的改动主仓库是无法检测到的,除非把子.git删除。但我既想在主项目中使用git来管理版本又想在插件中保留git信息以方便从github中获取最新的改动。查了一番资料,最后发现git已经给出了解决方案:Git SubModule。

UE5RayTracing篇(1)——NSight Graphics

UE5RayTracing篇(1)——NSight Graphics

最近打算开始研究UE的RayTracing,但欲先利其事必先利器,必要的Debug手段还是需要会用。在发现RenderDoc不支持RayTracing后,花了些时间学习了一下NSight Graphics。一般的流程就是使用NSight启动要调试的游戏(项目)进程,之后按F11截帧并使用所需工具查看。下面的章节将会简单介绍一下它的功能。

虚幻商城发布插件指南

虚幻商城发布插件指南

虚幻商城发布插件指南

前段时间本人尝试发布自己写的插件到Market Place,因为每次审核会需要1~3天时间不等,所以在这里分享一下我的经验。

MultiDraw中文文档

MultiDraw中文文档

简介

本插件通过UnrealEngine的MeshDraw框架实现类似Unity的多Pass效果,无需后处理即可实现BackFace描边、剖切效果。并且可以让一个部位同时渲染Unlit与Lit光照模式的Material。

注意:因为UE5.4修改了UStaticMeshComponent的虚函数GetUsedMaterials的标记为final,所以导致插件不能正常运行。为了避免崩溃问题,所以停用了OutlineStaticMeshComponent、MultiDrawStaticMeshComponent的功能。可使用再添加一个StaticMeshComponent并赋予Outline材质的方法临时解决。

MultiDraw5.0案例项目
MultiDraw5.1~5.3案例项目
MultiDraw5.4案例项目
MultiDraw5.5案例项目
使用方法:下载在Plugins文件中放入MultiDraw,即可运行。
注意:本项目只有5.0及以上版本才可以打开。

UE4渲染用贴图资源实时更换

UE4渲染用贴图资源实时更换

最近做卡通渲染,美术同学反应每次更换渲染贴图都需要手动替换资源并重启引擎相当麻烦。所以花时间了解了一下UE4的渲染资源逻辑。并且找到了解决方法。

Ue4后处理逻辑简析

Ue4后处理逻辑简析

APostProcessVolume

通常我们在后处理体积,也就是APostProcessVolume设置后处理效果。它存储了struct FPostProcessSettings Settings;
加入关卡后,会存储在UWorld的PostProcessVolumes中,之后依次调用DoPostProcessVolume=》OverridePostProcessSettings,之后修改FSceneView中的FFinalPostProcessSettings FinalPostProcessSettings。(对所有属性进行插值计算)

最后就可以通过View.FinalPostProcessSettings来读取后处理参数了。

UE4 AI相关模块学习笔记

UE4 AI相关模块学习笔记

前言

本文为本人学习UE4 AI相关模块学习笔记,之前因为没有系统的整理过所以没发出。现在因为某一些原因,又因为懒得整理所以就发了。

其他文档推荐:
UE4场景询问系统浅析(EQS与行为树)
http://www.uejoy.com/?p=500

UE4 AIModule源码阅读之AI感知系统
https://zhuanlan.zhihu.com/p/356716030

UE4通过修改FMeshBatch参数实现反向剔除

UE4通过修改FMeshBatch参数实现反向剔除

之前我有写过两篇通过自定义场景代理来实现描边的文章:
https://zhuanlan.zhihu.com/p/69139579
https://zhuanlan.zhihu.com/p/69156465

当时有一个问题没解决,就是不知道如何将材质设置为反向剔除,因为UE4只有双面渲染选项,毕竟只有卡通渲染等一些非真实渲染才需要这种功能。但经过MeshDraw框架的学习,我发现只需要在场景代理中设置一下FMeshBatch剔除属性即可,而且这个方法没有任何副作用。其他代码可以参考我的插画。效果如图(没有使用深度偏移)


UE4 BasePassPixelShader.usf学习笔记

UE4 BasePassPixelShader.usf学习笔记

BasePassPixelShader.usf中的FPixelShaderInOut_MainPS(),为BasePass阶段Shader的主要逻辑。会被PixelShaderOutputCommon.usf的MainPS(),即PixelShader入口函数中被调用。
该阶段会取得材质编辑器各个引脚的计算结果,在一些计算下最终输出GBuffer,以备后续光照计算。可以认为是“紧接”材质编辑器的下一步工作。相关的c++逻辑位于FDeferredShadingSceneRenderer::Render()的RenderBasePass()中。

但因为个人能力与时间所限,只能写一篇杂乱笔记作为记录,以供后续使用。

UE4 材质编辑器 CustomNode使用技巧

UE4 材质编辑器 CustomNode使用技巧

之前有看过MeshDraw的流程,发现MeshDraw部分还是和材质编辑器帮得死死的。(不过应该可以通过自定义MeshDrawPass、图元类、定点工厂来直接使用VS与PS Shader。不过这样就无法使用材质编辑器进行简单的Shader编写与使用Material Instance来调节参数,只能使用c++进行参数传递非常得不方便)在使用材质编辑器的情况,使用CustomNode可以更多的自由度,比如使用一些UE在ush定义的函数以及循环等;更好的可读性以及方便项目升级与后续项目使用等。

这里我总结了一些CustomNode使用方法。使用CustomNode时最好将ConsoleVariables.ini中的 r.ShaderDevelopmentMode设置为1。这样可以看到更多的Shader错误信息,但老实说UE4的Shader错误提示真心不能与U3D比……

采用CustomNode+Include usf文件的方式,使用Ctrl+Shift+.不会真正的更新代码,必须手动断开节点连接再连接上,才会触发重新编译。