本文为修改引擎记录,看见许多大佬为UE4增加ShadingModel,但并没有发现为材质自己定义接口,(可能受目光所限,没有发现,如有类似的文章请大佬推荐),遂记录此篇文章,文章如有书写和理解错误还请大佬扶正。
(ps:本文并非一次写完,前后修改了两个材质接口,截图材质接口数量会有不一样的问题)
在此感谢我司引擎大佬的热情帮助 @xiaomengge 。
要实现的功能:
- 新建材质接口;
- 控制材质接口开启;
- 材质接口数据可以被原生或自定义ShadingMode使用;
一,新建材质接口
打开文件EngineSourceRuntimeEnginePublicSceneTypes.h
在枚举 EMaterialProperty{}中声明添加的自定义的材质接口名字,设置是否激活显示
打开文件EngineSourceRuntimeEngineClassesMaterialsMaterial.h
在UMaterial中添加自定义材质接口变量的类型
打开文件EngineSourceRuntimeEnginePrivateMaterialsMaterial.cpp
在函数GetExpressionInputForProperty()
//函数作用:获取给定属性的表达式输入,检查材质属性链例如MP_BaseColor-->BaseColor
添加转换,实现C++层面与Shader层面自定义接口的对应。
在同一文件中修改MP_MAX值(加一个接口就加1,这里加两个接口为31)
打开EngineSourceEditorUnrealEdPrivateMaterialGraph.cpp
在UMaterialGraph()材质图表函数中把自定义的接口添加到Shader;
打开文件EngineSourceRuntimeEngineClassesMaterialsMaterialExpressionMakeMaterialAttributes.h
为材质节点MakeMaterialAttributes,BreakMaterialAttributes声明一个材质接口