Add depth-only and shadow-caster pass skeletons

This commit is contained in:
2026-04-04 14:27:44 +08:00
parent c0124443cf
commit 9e8810e593
25 changed files with 1323 additions and 2 deletions

View File

@@ -29,6 +29,8 @@ constexpr const char* kBuiltinTexturePrefix = "builtin://textures/";
constexpr const char* kBuiltinDefaultPrimitiveMaterialPath = "builtin://materials/default-primitive";
constexpr const char* kBuiltinForwardLitShaderPath = "builtin://shaders/forward-lit";
constexpr const char* kBuiltinUnlitShaderPath = "builtin://shaders/unlit";
constexpr const char* kBuiltinDepthOnlyShaderPath = "builtin://shaders/depth-only";
constexpr const char* kBuiltinShadowCasterShaderPath = "builtin://shaders/shadow-caster";
constexpr const char* kBuiltinObjectIdShaderPath = "builtin://shaders/object-id";
constexpr const char* kBuiltinDefaultPrimitiveTexturePath = "builtin://textures/default-primitive-albedo";
constexpr float kPi = 3.14159265358979323846f;
@@ -44,6 +46,10 @@ constexpr const char* kBuiltinForwardLitShaderManifestRelativePath =
"engine/assets/builtin/shaders/forward-lit/forward-lit.shader";
constexpr const char* kBuiltinUnlitShaderManifestRelativePath =
"engine/assets/builtin/shaders/unlit/unlit.shader";
constexpr const char* kBuiltinDepthOnlyShaderManifestRelativePath =
"engine/assets/builtin/shaders/depth-only/depth-only.shader";
constexpr const char* kBuiltinShadowCasterShaderManifestRelativePath =
"engine/assets/builtin/shaders/shadow-caster/shadow-caster.shader";
constexpr const char* kBuiltinObjectIdShaderManifestRelativePath =
"engine/assets/builtin/shaders/object-id/object-id.shader";
@@ -115,6 +121,12 @@ const char* GetBuiltinShaderManifestRelativePath(const Containers::String& built
if (builtinShaderPath == Containers::String(kBuiltinUnlitShaderPath)) {
return kBuiltinUnlitShaderManifestRelativePath;
}
if (builtinShaderPath == Containers::String(kBuiltinDepthOnlyShaderPath)) {
return kBuiltinDepthOnlyShaderManifestRelativePath;
}
if (builtinShaderPath == Containers::String(kBuiltinShadowCasterShaderPath)) {
return kBuiltinShadowCasterShaderManifestRelativePath;
}
if (builtinShaderPath == Containers::String(kBuiltinObjectIdShaderPath)) {
return kBuiltinObjectIdShaderManifestRelativePath;
}
@@ -646,6 +658,14 @@ Shader* BuildBuiltinUnlitShader(const Containers::String& path) {
return TryLoadBuiltinShaderFromManifest(path);
}
Shader* BuildBuiltinDepthOnlyShader(const Containers::String& path) {
return TryLoadBuiltinShaderFromManifest(path);
}
Shader* BuildBuiltinShadowCasterShader(const Containers::String& path) {
return TryLoadBuiltinShaderFromManifest(path);
}
Shader* BuildBuiltinObjectIdShader(const Containers::String& path) {
return TryLoadBuiltinShaderFromManifest(path);
}
@@ -756,6 +776,14 @@ Containers::String GetBuiltinUnlitShaderPath() {
return Containers::String(kBuiltinUnlitShaderPath);
}
Containers::String GetBuiltinDepthOnlyShaderPath() {
return Containers::String(kBuiltinDepthOnlyShaderPath);
}
Containers::String GetBuiltinShadowCasterShaderPath() {
return Containers::String(kBuiltinShadowCasterShaderPath);
}
Containers::String GetBuiltinObjectIdShaderPath() {
return Containers::String(kBuiltinObjectIdShaderPath);
}
@@ -852,6 +880,10 @@ LoadResult CreateBuiltinShaderResource(const Containers::String& path) {
shader = BuildBuiltinForwardLitShader(path);
} else if (path == GetBuiltinUnlitShaderPath()) {
shader = BuildBuiltinUnlitShader(path);
} else if (path == GetBuiltinDepthOnlyShaderPath()) {
shader = BuildBuiltinDepthOnlyShader(path);
} else if (path == GetBuiltinShadowCasterShaderPath()) {
shader = BuildBuiltinShadowCasterShader(path);
} else if (path == GetBuiltinObjectIdShaderPath()) {
shader = BuildBuiltinObjectIdShader(path);
} else {