INtial text again
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "ShaderTypes.h"
|
||||
#include "FontAtlasBuilder.h"
|
||||
|
||||
#include <map>
|
||||
#include <string>
|
||||
@@ -24,4 +25,5 @@ struct RuntimeShaderArtifact
|
||||
std::string message;
|
||||
std::vector<ShaderParameterDefinition> parameterDefinitions;
|
||||
std::map<std::string, ShaderParameterValue> parameterValues;
|
||||
std::vector<RenderCadenceCompositor::FontAtlasBuildOutput> fontAtlases;
|
||||
};
|
||||
|
||||
@@ -112,6 +112,17 @@ RuntimeSlangShaderBuild RuntimeSlangShaderCompiler::BuildShader(const std::strin
|
||||
return build;
|
||||
}
|
||||
|
||||
RenderCadenceCompositor::FontAtlasBuildConfig fontConfig;
|
||||
fontConfig.repoRoot = repoRoot;
|
||||
RenderCadenceCompositor::FontAtlasBuilder fontAtlasBuilder(fontConfig);
|
||||
std::vector<RenderCadenceCompositor::FontAtlasBuildOutput> fontAtlasOutputs;
|
||||
if (!fontAtlasBuilder.BuildPackageFontAtlases(shaderPackage, fontAtlasOutputs, error))
|
||||
{
|
||||
build.succeeded = false;
|
||||
build.message = error.empty() ? "Font atlas build failed." : error;
|
||||
return build;
|
||||
}
|
||||
|
||||
ShaderCompiler compiler(
|
||||
repoRoot,
|
||||
runtimeBuildDir / (shaderId + ".wrapper.slang"),
|
||||
@@ -144,6 +155,7 @@ RuntimeSlangShaderBuild RuntimeSlangShaderCompiler::BuildShader(const std::strin
|
||||
build.artifact.shaderId = shaderPackage.id;
|
||||
build.artifact.displayName = shaderPackage.displayName;
|
||||
build.artifact.parameterDefinitions = shaderPackage.parameters;
|
||||
build.artifact.fontAtlases = std::move(fontAtlasOutputs);
|
||||
if (!build.artifact.passes.empty())
|
||||
build.artifact.fragmentShaderSource = build.artifact.passes.front().fragmentShaderSource;
|
||||
build.artifact.message = shaderPackage.displayName + " Slang compile completed in " + std::to_string(milliseconds) + " ms.";
|
||||
|
||||
@@ -21,13 +21,25 @@ ShaderSupportResult CheckStatelessSinglePassShaderSupport(const ShaderPackage& s
|
||||
if (!shaderPackage.textureAssets.empty())
|
||||
return { false, "RenderCadenceCompositor does not load shader texture assets yet; texture-backed shaders need a CPU-prepared asset handoff first." };
|
||||
|
||||
if (!shaderPackage.fontAssets.empty())
|
||||
return { false, "RenderCadenceCompositor does not load shader font assets yet; text shaders need a CPU-prepared asset handoff first." };
|
||||
|
||||
for (const ShaderParameterDefinition& parameter : shaderPackage.parameters)
|
||||
{
|
||||
if (parameter.type == ShaderParameterType::Text)
|
||||
return { false, "RenderCadenceCompositor currently skips text parameters because they require per-shader text texture storage." };
|
||||
if (parameter.type != ShaderParameterType::Text)
|
||||
continue;
|
||||
|
||||
if (parameter.fontId.empty())
|
||||
return { false, "Text parameter '" + parameter.id + "' must reference a declared font asset." };
|
||||
|
||||
bool hasFontAsset = false;
|
||||
for (const ShaderFontAsset& fontAsset : shaderPackage.fontAssets)
|
||||
{
|
||||
if (fontAsset.id == parameter.fontId)
|
||||
{
|
||||
hasFontAsset = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!hasFontAsset)
|
||||
return { false, "Text parameter '" + parameter.id + "' references unknown font asset '" + parameter.fontId + "'." };
|
||||
}
|
||||
|
||||
bool writesLayerOutput = false;
|
||||
|
||||
Reference in New Issue
Block a user