Add shader package include dependency pipeline

This commit is contained in:
2026-04-25 15:13:12 +08:00
parent 378965efca
commit d5eaa339f9
24 changed files with 1991 additions and 49 deletions

View File

@@ -3007,7 +3007,11 @@ bool AssetDatabase::ImportShaderAsset(const SourceAssetRecord& sourceRecord,
Shader* shader = static_cast<Shader*>(result.resource);
PrecompileShaderVariants(absolutePath, *shader);
std::vector<ArtifactDependencyRecord> dependencies;
if (!CollectShaderDependencies(sourceRecord, dependencies)) {
Containers::String dependencyError;
if (!CollectShaderDependencies(sourceRecord, dependencies, &dependencyError)) {
if (!dependencyError.Empty()) {
SetLastErrorMessage(dependencyError);
}
delete shader;
return false;
}
@@ -3493,14 +3497,18 @@ bool AssetDatabase::CollectMaterialDependencies(
bool AssetDatabase::CollectShaderDependencies(
const SourceAssetRecord& sourceRecord,
std::vector<AssetDatabase::ArtifactDependencyRecord>& outDependencies) const {
std::vector<AssetDatabase::ArtifactDependencyRecord>& outDependencies,
Containers::String* outError) const {
outDependencies.clear();
if (outError != nullptr) {
outError->Clear();
}
ShaderLoader loader;
const Containers::String absolutePath =
NormalizePathString(fs::path(m_projectRoot.CStr()) / sourceRecord.relativePath.CStr());
Containers::Array<Containers::String> dependencyPaths;
if (!loader.CollectSourceDependencies(absolutePath, dependencyPaths)) {
if (!loader.CollectSourceDependencies(absolutePath, dependencyPaths, outError)) {
return false;
}