Formalize forward lighting contract
This commit is contained in:
@@ -135,12 +135,13 @@ TEST(ShaderLoader, LoadShaderManifestBuildsMultiPassBackendVariants) {
|
||||
manifest << " },\n";
|
||||
manifest << " \"resources\": [\n";
|
||||
manifest << " { \"name\": \"PerObjectConstants\", \"type\": \"ConstantBuffer\", \"set\": 1, \"binding\": 0, \"semantic\": \"PerObject\" },\n";
|
||||
manifest << " { \"name\": \"MaterialConstants\", \"type\": \"ConstantBuffer\", \"set\": 2, \"binding\": 0, \"semantic\": \"Material\" },\n";
|
||||
manifest << " { \"name\": \"BaseColorTexture\", \"type\": \"Texture2D\", \"set\": 3, \"binding\": 0, \"semantic\": \"BaseColorTexture\" },\n";
|
||||
manifest << " { \"name\": \"LinearClampSampler\", \"type\": \"Sampler\", \"set\": 4, \"binding\": 0, \"semantic\": \"LinearClampSampler\" },\n";
|
||||
manifest << " { \"name\": \"ShadowReceiverConstants\", \"type\": \"ConstantBuffer\", \"set\": 5, \"binding\": 0, \"semantic\": \"ShadowReceiver\" },\n";
|
||||
manifest << " { \"name\": \"ShadowMapTexture\", \"type\": \"Texture2D\", \"set\": 6, \"binding\": 0, \"semantic\": \"ShadowMapTexture\" },\n";
|
||||
manifest << " { \"name\": \"ShadowMapSampler\", \"type\": \"Sampler\", \"set\": 7, \"binding\": 0, \"semantic\": \"ShadowMapSampler\" }\n";
|
||||
manifest << " { \"name\": \"LightingConstants\", \"type\": \"ConstantBuffer\", \"set\": 2, \"binding\": 0, \"semantic\": \"Lighting\" },\n";
|
||||
manifest << " { \"name\": \"MaterialConstants\", \"type\": \"ConstantBuffer\", \"set\": 3, \"binding\": 0, \"semantic\": \"Material\" },\n";
|
||||
manifest << " { \"name\": \"ShadowReceiverConstants\", \"type\": \"ConstantBuffer\", \"set\": 4, \"binding\": 0, \"semantic\": \"ShadowReceiver\" },\n";
|
||||
manifest << " { \"name\": \"BaseColorTexture\", \"type\": \"Texture2D\", \"set\": 5, \"binding\": 0, \"semantic\": \"BaseColorTexture\" },\n";
|
||||
manifest << " { \"name\": \"LinearClampSampler\", \"type\": \"Sampler\", \"set\": 6, \"binding\": 0, \"semantic\": \"LinearClampSampler\" },\n";
|
||||
manifest << " { \"name\": \"ShadowMapTexture\", \"type\": \"Texture2D\", \"set\": 7, \"binding\": 0, \"semantic\": \"ShadowMapTexture\" },\n";
|
||||
manifest << " { \"name\": \"ShadowMapSampler\", \"type\": \"Sampler\", \"set\": 8, \"binding\": 0, \"semantic\": \"ShadowMapSampler\" }\n";
|
||||
manifest << " ],\n";
|
||||
manifest << " \"variants\": [\n";
|
||||
manifest << " { \"stage\": \"Vertex\", \"backend\": \"D3D12\", \"language\": \"HLSL\", \"source\": \"stages/forward_lit.vs.hlsl\", \"entryPoint\": \"MainVS\", \"profile\": \"vs_5_0\" },\n";
|
||||
@@ -193,7 +194,7 @@ TEST(ShaderLoader, LoadShaderManifestBuildsMultiPassBackendVariants) {
|
||||
const ShaderPass* forwardLitPass = shader->FindPass("ForwardLit");
|
||||
ASSERT_NE(forwardLitPass, nullptr);
|
||||
ASSERT_EQ(forwardLitPass->tags.Size(), 2u);
|
||||
ASSERT_EQ(forwardLitPass->resources.Size(), 7u);
|
||||
ASSERT_EQ(forwardLitPass->resources.Size(), 8u);
|
||||
EXPECT_EQ(forwardLitPass->tags[0].name, "LightMode");
|
||||
EXPECT_EQ(forwardLitPass->tags[0].value, "ForwardBase");
|
||||
EXPECT_EQ(forwardLitPass->tags[1].name, "Queue");
|
||||
@@ -203,7 +204,7 @@ TEST(ShaderLoader, LoadShaderManifestBuildsMultiPassBackendVariants) {
|
||||
shader->FindPassResourceBinding("ForwardLit", "BaseColorTexture");
|
||||
ASSERT_NE(baseTextureBinding, nullptr);
|
||||
EXPECT_EQ(baseTextureBinding->type, ShaderResourceType::Texture2D);
|
||||
EXPECT_EQ(baseTextureBinding->set, 3u);
|
||||
EXPECT_EQ(baseTextureBinding->set, 5u);
|
||||
EXPECT_EQ(baseTextureBinding->binding, 0u);
|
||||
EXPECT_EQ(baseTextureBinding->semantic, "BaseColorTexture");
|
||||
|
||||
@@ -274,12 +275,13 @@ TEST(ShaderLoader, LoadUnityLikeShaderAuthoringBuildsRuntimeContract) {
|
||||
Resources
|
||||
{
|
||||
PerObjectConstants (ConstantBuffer, 1, 0) [Semantic(PerObject)]
|
||||
MaterialConstants (ConstantBuffer, 2, 0) [Semantic(Material)]
|
||||
BaseColorTexture (Texture2D, 3, 0) [Semantic(BaseColorTexture)]
|
||||
LinearClampSampler (Sampler, 4, 0) [Semantic(LinearClampSampler)]
|
||||
ShadowReceiverConstants (ConstantBuffer, 5, 0) [Semantic(ShadowReceiver)]
|
||||
ShadowMapTexture (Texture2D, 6, 0) [Semantic(ShadowMapTexture)]
|
||||
ShadowMapSampler (Sampler, 7, 0) [Semantic(ShadowMapSampler)]
|
||||
LightingConstants (ConstantBuffer, 2, 0) [Semantic(Lighting)]
|
||||
MaterialConstants (ConstantBuffer, 3, 0) [Semantic(Material)]
|
||||
ShadowReceiverConstants (ConstantBuffer, 4, 0) [Semantic(ShadowReceiver)]
|
||||
BaseColorTexture (Texture2D, 5, 0) [Semantic(BaseColorTexture)]
|
||||
LinearClampSampler (Sampler, 6, 0) [Semantic(LinearClampSampler)]
|
||||
ShadowMapTexture (Texture2D, 7, 0) [Semantic(ShadowMapTexture)]
|
||||
ShadowMapSampler (Sampler, 8, 0) [Semantic(ShadowMapSampler)]
|
||||
}
|
||||
HLSLPROGRAM
|
||||
#pragma vertex MainVS
|
||||
@@ -331,7 +333,7 @@ TEST(ShaderLoader, LoadUnityLikeShaderAuthoringBuildsRuntimeContract) {
|
||||
const ShaderPass* forwardLitPass = shader->FindPass("ForwardLit");
|
||||
ASSERT_NE(forwardLitPass, nullptr);
|
||||
ASSERT_EQ(forwardLitPass->tags.Size(), 2u);
|
||||
ASSERT_EQ(forwardLitPass->resources.Size(), 7u);
|
||||
ASSERT_EQ(forwardLitPass->resources.Size(), 8u);
|
||||
EXPECT_EQ(forwardLitPass->tags[0].name, "Queue");
|
||||
EXPECT_EQ(forwardLitPass->tags[0].value, "Geometry");
|
||||
EXPECT_EQ(forwardLitPass->tags[1].name, "LightMode");
|
||||
@@ -341,7 +343,7 @@ TEST(ShaderLoader, LoadUnityLikeShaderAuthoringBuildsRuntimeContract) {
|
||||
shader->FindPassResourceBinding("ForwardLit", "BaseColorTexture");
|
||||
ASSERT_NE(baseTextureBinding, nullptr);
|
||||
EXPECT_EQ(baseTextureBinding->type, ShaderResourceType::Texture2D);
|
||||
EXPECT_EQ(baseTextureBinding->set, 3u);
|
||||
EXPECT_EQ(baseTextureBinding->set, 5u);
|
||||
EXPECT_EQ(baseTextureBinding->binding, 0u);
|
||||
EXPECT_EQ(baseTextureBinding->semantic, "BaseColorTexture");
|
||||
|
||||
@@ -677,7 +679,7 @@ TEST(ShaderLoader, LoadBuiltinForwardLitShaderBuildsBackendVariants) {
|
||||
ASSERT_EQ(shader->GetProperties().Size(), 2u);
|
||||
ASSERT_EQ(pass->variants.Size(), 6u);
|
||||
ASSERT_EQ(pass->tags.Size(), 1u);
|
||||
ASSERT_EQ(pass->resources.Size(), 7u);
|
||||
ASSERT_EQ(pass->resources.Size(), 8u);
|
||||
EXPECT_EQ(pass->tags[0].name, "LightMode");
|
||||
EXPECT_EQ(pass->tags[0].value, "ForwardBase");
|
||||
|
||||
@@ -695,18 +697,34 @@ TEST(ShaderLoader, LoadBuiltinForwardLitShaderBuildsBackendVariants) {
|
||||
shader->FindPassResourceBinding("ForwardLit", "PerObjectConstants");
|
||||
ASSERT_NE(perObjectBinding, nullptr);
|
||||
EXPECT_EQ(perObjectBinding->type, ShaderResourceType::ConstantBuffer);
|
||||
EXPECT_EQ(perObjectBinding->set, 1u);
|
||||
EXPECT_EQ(perObjectBinding->set, 0u);
|
||||
EXPECT_EQ(perObjectBinding->binding, 0u);
|
||||
EXPECT_EQ(perObjectBinding->semantic, "PerObject");
|
||||
|
||||
const ShaderResourceBindingDesc* lightingBinding =
|
||||
shader->FindPassResourceBinding("ForwardLit", "LightingConstants");
|
||||
ASSERT_NE(lightingBinding, nullptr);
|
||||
EXPECT_EQ(lightingBinding->type, ShaderResourceType::ConstantBuffer);
|
||||
EXPECT_EQ(lightingBinding->set, 1u);
|
||||
EXPECT_EQ(lightingBinding->binding, 0u);
|
||||
EXPECT_EQ(lightingBinding->semantic, "Lighting");
|
||||
|
||||
const ShaderResourceBindingDesc* shadowReceiverBinding =
|
||||
shader->FindPassResourceBinding("ForwardLit", "ShadowReceiverConstants");
|
||||
ASSERT_NE(shadowReceiverBinding, nullptr);
|
||||
EXPECT_EQ(shadowReceiverBinding->type, ShaderResourceType::ConstantBuffer);
|
||||
EXPECT_EQ(shadowReceiverBinding->set, 5u);
|
||||
EXPECT_EQ(shadowReceiverBinding->set, 3u);
|
||||
EXPECT_EQ(shadowReceiverBinding->binding, 0u);
|
||||
EXPECT_EQ(shadowReceiverBinding->semantic, "ShadowReceiver");
|
||||
|
||||
const ShaderResourceBindingDesc* baseColorBinding =
|
||||
shader->FindPassResourceBinding("ForwardLit", "BaseColorTexture");
|
||||
ASSERT_NE(baseColorBinding, nullptr);
|
||||
EXPECT_EQ(baseColorBinding->type, ShaderResourceType::Texture2D);
|
||||
EXPECT_EQ(baseColorBinding->set, 4u);
|
||||
EXPECT_EQ(baseColorBinding->binding, 0u);
|
||||
EXPECT_EQ(baseColorBinding->semantic, "BaseColorTexture");
|
||||
|
||||
const ShaderResourceBindingDesc* shadowTextureBinding =
|
||||
shader->FindPassResourceBinding("ForwardLit", "ShadowMapTexture");
|
||||
ASSERT_NE(shadowTextureBinding, nullptr);
|
||||
@@ -779,7 +797,7 @@ TEST(ShaderLoader, LoadBuiltinUnlitShaderBuildsBackendVariants) {
|
||||
shader->FindPassResourceBinding("Unlit", "PerObjectConstants");
|
||||
ASSERT_NE(perObjectBinding, nullptr);
|
||||
EXPECT_EQ(perObjectBinding->type, ShaderResourceType::ConstantBuffer);
|
||||
EXPECT_EQ(perObjectBinding->set, 1u);
|
||||
EXPECT_EQ(perObjectBinding->set, 0u);
|
||||
EXPECT_EQ(perObjectBinding->binding, 0u);
|
||||
EXPECT_EQ(perObjectBinding->semantic, "PerObject");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user