文章为本人学习虚幻4引擎源码所整理笔记,如有纰漏欢迎指正交流。
Ar.IsLoading( )时:
完成将材质所有MaterialResource的MaterialShaderMap实例化;
完成MaterialShaderMap实例中的
MeshShaderMaps、
OrderedMeshShaderMaps初始化;
完成所有Shader
序列化(遍历所有
MeshShaderMaps,序列化好的Shader存到SerializedShaders、SerializedShaderPipelines中供后续注册使用
)。
1.异步加载材质序列化导出,最终调用void UMaterial::Serialize(FArchive& Ar) ,对每个材质进行序列化: (Material.cpp)
调用顺序:
-> FAsyncLoadingThread::ProcessAsyncLoading( ) ---AsyncLoading.cpp
-> FAsyncLoadEventQueue::PopAndExecute( ) ---AsyncLoadingThread.h
-> void FAsyncPackage::Event_ProcessImportsAndExports( ) ---AsyncLoading.cpp
-> FAsyncPackage::ProcessImportsAndExports_Event( ) ---AsyncLoading.cpp
-> void FAsyncPackage::EventDrivenSerializeExport( ) ---AsyncLoading.cpp
-> void UMaterial::Serialize(FArchive& Ar) ---Material.cpp