feat: add unity-aligned shader contract metadata
This commit is contained in:
@@ -158,9 +158,48 @@ TEST(Shader, StoresPerPassTags) {
|
||||
EXPECT_EQ(pass->tags[1].value, "Geometry");
|
||||
}
|
||||
|
||||
TEST(Shader, StoresShaderPropertiesAndPassResources) {
|
||||
Shader shader;
|
||||
|
||||
ShaderPropertyDesc baseColor = {};
|
||||
baseColor.name = "_BaseColor";
|
||||
baseColor.displayName = "Base Color";
|
||||
baseColor.type = ShaderPropertyType::Color;
|
||||
baseColor.defaultValue = "(1,1,1,1)";
|
||||
baseColor.semantic = "BaseColor";
|
||||
shader.AddProperty(baseColor);
|
||||
|
||||
ShaderResourceBindingDesc perObject = {};
|
||||
perObject.name = "PerObjectConstants";
|
||||
perObject.type = ShaderResourceType::ConstantBuffer;
|
||||
perObject.set = 1;
|
||||
perObject.binding = 0;
|
||||
perObject.semantic = "PerObject";
|
||||
shader.AddPassResourceBinding("ForwardLit", perObject);
|
||||
|
||||
ASSERT_EQ(shader.GetProperties().Size(), 1u);
|
||||
const ShaderPropertyDesc* storedProperty = shader.FindProperty("_BaseColor");
|
||||
ASSERT_NE(storedProperty, nullptr);
|
||||
EXPECT_EQ(storedProperty->displayName, "Base Color");
|
||||
EXPECT_EQ(storedProperty->type, ShaderPropertyType::Color);
|
||||
EXPECT_EQ(storedProperty->semantic, "BaseColor");
|
||||
|
||||
const ShaderResourceBindingDesc* storedBinding =
|
||||
shader.FindPassResourceBinding("ForwardLit", "PerObjectConstants");
|
||||
ASSERT_NE(storedBinding, nullptr);
|
||||
EXPECT_EQ(storedBinding->type, ShaderResourceType::ConstantBuffer);
|
||||
EXPECT_EQ(storedBinding->set, 1u);
|
||||
EXPECT_EQ(storedBinding->binding, 0u);
|
||||
EXPECT_EQ(storedBinding->semantic, "PerObject");
|
||||
}
|
||||
|
||||
TEST(Shader, ReleaseClearsPassRuntimeData) {
|
||||
Shader shader;
|
||||
shader.SetSourceCode("void main() {}");
|
||||
ShaderPropertyDesc property = {};
|
||||
property.name = "_BaseColor";
|
||||
property.type = ShaderPropertyType::Color;
|
||||
shader.AddProperty(property);
|
||||
ShaderStageVariant variant = {};
|
||||
variant.stage = ShaderType::Fragment;
|
||||
variant.sourceCode = "fragment";
|
||||
@@ -168,6 +207,7 @@ TEST(Shader, ReleaseClearsPassRuntimeData) {
|
||||
|
||||
shader.Release();
|
||||
|
||||
EXPECT_EQ(shader.GetProperties().Size(), 0u);
|
||||
EXPECT_EQ(shader.GetPassCount(), 0u);
|
||||
EXPECT_EQ(shader.GetSourceCode(), "");
|
||||
EXPECT_EQ(shader.GetCompiledBinary().Size(), 0u);
|
||||
|
||||
Reference in New Issue
Block a user