test: add vulkan renderer scene coverage
This commit is contained in:
@@ -160,6 +160,65 @@ void main() {
|
||||
}
|
||||
)";
|
||||
|
||||
const char kBuiltinForwardVulkanVertexShader[] = R"(#version 450
|
||||
layout(location = 0) in vec3 aPosition;
|
||||
layout(location = 1) in vec3 aNormal;
|
||||
layout(location = 2) in vec2 aTexCoord;
|
||||
|
||||
layout(set = 1, binding = 0, std140) uniform PerObjectConstants {
|
||||
mat4 gProjectionMatrix;
|
||||
mat4 gViewMatrix;
|
||||
mat4 gModelMatrix;
|
||||
mat4 gNormalMatrix;
|
||||
vec4 gMainLightDirectionAndIntensity;
|
||||
vec4 gMainLightColorAndFlags;
|
||||
};
|
||||
|
||||
layout(location = 0) out vec3 vNormalWS;
|
||||
layout(location = 1) out vec2 vTexCoord;
|
||||
|
||||
void main() {
|
||||
vec4 positionWS = gModelMatrix * vec4(aPosition, 1.0);
|
||||
vec4 positionVS = gViewMatrix * positionWS;
|
||||
gl_Position = gProjectionMatrix * positionVS;
|
||||
vNormalWS = mat3(gNormalMatrix) * aNormal;
|
||||
vTexCoord = aTexCoord;
|
||||
}
|
||||
)";
|
||||
|
||||
const char kBuiltinForwardVulkanFragmentShader[] = R"(#version 450
|
||||
layout(set = 2, binding = 0) uniform texture2D uBaseColorTexture;
|
||||
layout(set = 3, binding = 0) uniform sampler uLinearSampler;
|
||||
|
||||
layout(set = 1, binding = 0, std140) uniform PerObjectConstants {
|
||||
mat4 gProjectionMatrix;
|
||||
mat4 gViewMatrix;
|
||||
mat4 gModelMatrix;
|
||||
mat4 gNormalMatrix;
|
||||
vec4 gMainLightDirectionAndIntensity;
|
||||
vec4 gMainLightColorAndFlags;
|
||||
};
|
||||
|
||||
layout(location = 0) in vec3 vNormalWS;
|
||||
layout(location = 1) in vec2 vTexCoord;
|
||||
|
||||
layout(location = 0) out vec4 fragColor;
|
||||
|
||||
void main() {
|
||||
vec4 baseColor = texture(sampler2D(uBaseColorTexture, uLinearSampler), vTexCoord);
|
||||
if (gMainLightColorAndFlags.w < 0.5) {
|
||||
fragColor = baseColor;
|
||||
return;
|
||||
}
|
||||
|
||||
vec3 normalWS = normalize(vNormalWS);
|
||||
vec3 directionToLightWS = normalize(gMainLightDirectionAndIntensity.xyz);
|
||||
float diffuse = max(dot(normalWS, directionToLightWS), 0.0);
|
||||
vec3 lighting = vec3(0.28) +
|
||||
gMainLightColorAndFlags.rgb * (diffuse * gMainLightDirectionAndIntensity.w);
|
||||
fragColor = vec4(baseColor.rgb * lighting, baseColor.a);
|
||||
}
|
||||
)";
|
||||
RHI::GraphicsPipelineDesc CreatePipelineDesc(
|
||||
RHI::RHIType backendType,
|
||||
RHI::RHIPipelineLayout* pipelineLayout,
|
||||
@@ -189,6 +248,18 @@ RHI::GraphicsPipelineDesc CreatePipelineDesc(
|
||||
pipelineDesc.fragmentShader.sourceLanguage = RHI::ShaderLanguage::HLSL;
|
||||
pipelineDesc.fragmentShader.entryPoint = L"MainPS";
|
||||
pipelineDesc.fragmentShader.profile = L"ps_5_0";
|
||||
} else if (backendType == RHI::RHIType::Vulkan) {
|
||||
pipelineDesc.vertexShader.source.assign(
|
||||
kBuiltinForwardVulkanVertexShader,
|
||||
kBuiltinForwardVulkanVertexShader + std::strlen(kBuiltinForwardVulkanVertexShader));
|
||||
pipelineDesc.vertexShader.sourceLanguage = RHI::ShaderLanguage::GLSL;
|
||||
pipelineDesc.vertexShader.profile = L"vs_4_50";
|
||||
|
||||
pipelineDesc.fragmentShader.source.assign(
|
||||
kBuiltinForwardVulkanFragmentShader,
|
||||
kBuiltinForwardVulkanFragmentShader + std::strlen(kBuiltinForwardVulkanFragmentShader));
|
||||
pipelineDesc.fragmentShader.sourceLanguage = RHI::ShaderLanguage::GLSL;
|
||||
pipelineDesc.fragmentShader.profile = L"fs_4_50";
|
||||
} else {
|
||||
pipelineDesc.vertexShader.source.assign(
|
||||
kBuiltinForwardVertexShader,
|
||||
|
||||
@@ -178,7 +178,7 @@ void RHIIntegrationFixture::SetUp() {
|
||||
}
|
||||
|
||||
void RHIIntegrationFixture::BeginRender() {
|
||||
if (GetParam() == RHIType::Vulkan) {
|
||||
if (GetParam() == RHIType::Vulkan && RequiresSwapChainAcquire()) {
|
||||
#if defined(XCENGINE_SUPPORT_VULKAN)
|
||||
auto* vulkanSwapChain = static_cast<VulkanSwapChain*>(mSwapChain);
|
||||
ASSERT_NE(vulkanSwapChain, nullptr);
|
||||
|
||||
@@ -57,6 +57,7 @@ protected:
|
||||
void SetRenderTargetForClear(bool includeDepthStencil = false);
|
||||
|
||||
virtual void RenderFrame() {}
|
||||
virtual bool RequiresSwapChainAcquire() const { return true; }
|
||||
|
||||
bool TakeScreenshot(const char* filename);
|
||||
bool CompareWithGoldenTemplate(const char* outputPpm, const char* gtPpm, float threshold = 0.0f);
|
||||
|
||||
@@ -9,6 +9,8 @@ set(PACKAGE_DIR ${CMAKE_SOURCE_DIR}/mvs/OpenGL/package)
|
||||
|
||||
get_filename_component(PROJECT_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../.. ABSOLUTE)
|
||||
|
||||
find_package(Vulkan QUIET)
|
||||
|
||||
add_executable(rendering_integration_backpack_lit_scene
|
||||
main.cpp
|
||||
${CMAKE_SOURCE_DIR}/tests/RHI/integration/fixtures/RHIIntegrationFixture.cpp
|
||||
@@ -33,6 +35,11 @@ target_link_libraries(rendering_integration_backpack_lit_scene PRIVATE
|
||||
GTest::gtest
|
||||
)
|
||||
|
||||
if(TARGET Vulkan::Vulkan)
|
||||
target_link_libraries(rendering_integration_backpack_lit_scene PRIVATE Vulkan::Vulkan)
|
||||
target_compile_definitions(rendering_integration_backpack_lit_scene PRIVATE XCENGINE_SUPPORT_VULKAN)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(rendering_integration_backpack_lit_scene PRIVATE
|
||||
UNICODE
|
||||
_UNICODE
|
||||
|
||||
@@ -41,6 +41,7 @@ namespace {
|
||||
|
||||
constexpr const char* kD3D12Screenshot = "backpack_lit_scene_d3d12.ppm";
|
||||
constexpr const char* kOpenGLScreenshot = "backpack_lit_scene_opengl.ppm";
|
||||
constexpr const char* kVulkanScreenshot = "backpack_lit_scene_vulkan.ppm";
|
||||
constexpr uint32_t kFrameWidth = 1280;
|
||||
constexpr uint32_t kFrameHeight = 720;
|
||||
|
||||
@@ -59,11 +60,19 @@ std::filesystem::path ResolveRuntimePath(const char* relativePath) {
|
||||
}
|
||||
|
||||
const char* GetScreenshotFilename(RHIType backendType) {
|
||||
return backendType == RHIType::D3D12 ? kD3D12Screenshot : kOpenGLScreenshot;
|
||||
switch (backendType) {
|
||||
case RHIType::D3D12:
|
||||
return kD3D12Screenshot;
|
||||
case RHIType::Vulkan:
|
||||
return kVulkanScreenshot;
|
||||
case RHIType::OpenGL:
|
||||
default:
|
||||
return kOpenGLScreenshot;
|
||||
}
|
||||
}
|
||||
|
||||
int GetComparisonThreshold(RHIType backendType) {
|
||||
return backendType == RHIType::OpenGL ? 10 : 10;
|
||||
return backendType == RHIType::D3D12 ? 10 : 10;
|
||||
}
|
||||
|
||||
class BackpackLitSceneTest : public RHIIntegrationFixture {
|
||||
@@ -308,6 +317,9 @@ TEST_P(BackpackLitSceneTest, RenderBackpackLitScene) {
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(D3D12, BackpackLitSceneTest, ::testing::Values(RHIType::D3D12));
|
||||
INSTANTIATE_TEST_SUITE_P(OpenGL, BackpackLitSceneTest, ::testing::Values(RHIType::OpenGL));
|
||||
#if defined(XCENGINE_SUPPORT_VULKAN)
|
||||
INSTANTIATE_TEST_SUITE_P(Vulkan, BackpackLitSceneTest, ::testing::Values(RHIType::Vulkan));
|
||||
#endif
|
||||
|
||||
GTEST_API_ int main(int argc, char** argv) {
|
||||
Logger::Get().Initialize();
|
||||
|
||||
@@ -9,6 +9,8 @@ set(PACKAGE_DIR ${CMAKE_SOURCE_DIR}/mvs/OpenGL/package)
|
||||
|
||||
get_filename_component(PROJECT_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../.. ABSOLUTE)
|
||||
|
||||
find_package(Vulkan QUIET)
|
||||
|
||||
add_executable(rendering_integration_backpack_scene
|
||||
main.cpp
|
||||
${CMAKE_SOURCE_DIR}/tests/RHI/integration/fixtures/RHIIntegrationFixture.cpp
|
||||
@@ -33,6 +35,11 @@ target_link_libraries(rendering_integration_backpack_scene PRIVATE
|
||||
GTest::gtest
|
||||
)
|
||||
|
||||
if(TARGET Vulkan::Vulkan)
|
||||
target_link_libraries(rendering_integration_backpack_scene PRIVATE Vulkan::Vulkan)
|
||||
target_compile_definitions(rendering_integration_backpack_scene PRIVATE XCENGINE_SUPPORT_VULKAN)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(rendering_integration_backpack_scene PRIVATE
|
||||
UNICODE
|
||||
_UNICODE
|
||||
|
||||
@@ -42,6 +42,7 @@ namespace {
|
||||
|
||||
constexpr const char* kD3D12Screenshot = "backpack_scene_d3d12.ppm";
|
||||
constexpr const char* kOpenGLScreenshot = "backpack_scene_opengl.ppm";
|
||||
constexpr const char* kVulkanScreenshot = "backpack_scene_vulkan.ppm";
|
||||
constexpr uint32_t kFrameWidth = 1280;
|
||||
constexpr uint32_t kFrameHeight = 720;
|
||||
|
||||
@@ -60,11 +61,19 @@ std::filesystem::path ResolveRuntimePath(const char* relativePath) {
|
||||
}
|
||||
|
||||
const char* GetScreenshotFilename(RHIType backendType) {
|
||||
return backendType == RHIType::D3D12 ? kD3D12Screenshot : kOpenGLScreenshot;
|
||||
switch (backendType) {
|
||||
case RHIType::D3D12:
|
||||
return kD3D12Screenshot;
|
||||
case RHIType::Vulkan:
|
||||
return kVulkanScreenshot;
|
||||
case RHIType::OpenGL:
|
||||
default:
|
||||
return kOpenGLScreenshot;
|
||||
}
|
||||
}
|
||||
|
||||
int GetComparisonThreshold(RHIType backendType) {
|
||||
return backendType == RHIType::OpenGL ? 8 : 8;
|
||||
return backendType == RHIType::D3D12 ? 8 : 8;
|
||||
}
|
||||
|
||||
class BackpackSceneTest : public RHIIntegrationFixture {
|
||||
@@ -302,6 +311,9 @@ TEST_P(BackpackSceneTest, RenderBackpackScene) {
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(D3D12, BackpackSceneTest, ::testing::Values(RHIType::D3D12));
|
||||
INSTANTIATE_TEST_SUITE_P(OpenGL, BackpackSceneTest, ::testing::Values(RHIType::OpenGL));
|
||||
#if defined(XCENGINE_SUPPORT_VULKAN)
|
||||
INSTANTIATE_TEST_SUITE_P(Vulkan, BackpackSceneTest, ::testing::Values(RHIType::Vulkan));
|
||||
#endif
|
||||
|
||||
GTEST_API_ int main(int argc, char** argv) {
|
||||
Logger::Get().Initialize();
|
||||
|
||||
@@ -9,6 +9,8 @@ set(PACKAGE_DIR ${CMAKE_SOURCE_DIR}/mvs/OpenGL/package)
|
||||
|
||||
get_filename_component(PROJECT_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../.. ABSOLUTE)
|
||||
|
||||
find_package(Vulkan QUIET)
|
||||
|
||||
add_executable(rendering_integration_camera_stack_scene
|
||||
main.cpp
|
||||
${CMAKE_SOURCE_DIR}/tests/RHI/integration/fixtures/RHIIntegrationFixture.cpp
|
||||
@@ -33,6 +35,11 @@ target_link_libraries(rendering_integration_camera_stack_scene PRIVATE
|
||||
GTest::gtest
|
||||
)
|
||||
|
||||
if(TARGET Vulkan::Vulkan)
|
||||
target_link_libraries(rendering_integration_camera_stack_scene PRIVATE Vulkan::Vulkan)
|
||||
target_compile_definitions(rendering_integration_camera_stack_scene PRIVATE XCENGINE_SUPPORT_VULKAN)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(rendering_integration_camera_stack_scene PRIVATE
|
||||
UNICODE
|
||||
_UNICODE
|
||||
|
||||
@@ -44,6 +44,7 @@ namespace {
|
||||
|
||||
constexpr const char* kD3D12Screenshot = "camera_stack_scene_d3d12.ppm";
|
||||
constexpr const char* kOpenGLScreenshot = "camera_stack_scene_opengl.ppm";
|
||||
constexpr const char* kVulkanScreenshot = "camera_stack_scene_vulkan.ppm";
|
||||
constexpr uint32_t kFrameWidth = 1280;
|
||||
constexpr uint32_t kFrameHeight = 720;
|
||||
constexpr uint8_t kBaseLayer = 0;
|
||||
@@ -139,11 +140,19 @@ Material* CreateQuadMaterial(Texture* texture) {
|
||||
}
|
||||
|
||||
const char* GetScreenshotFilename(RHIType backendType) {
|
||||
return backendType == RHIType::D3D12 ? kD3D12Screenshot : kOpenGLScreenshot;
|
||||
switch (backendType) {
|
||||
case RHIType::D3D12:
|
||||
return kD3D12Screenshot;
|
||||
case RHIType::Vulkan:
|
||||
return kVulkanScreenshot;
|
||||
case RHIType::OpenGL:
|
||||
default:
|
||||
return kOpenGLScreenshot;
|
||||
}
|
||||
}
|
||||
|
||||
int GetComparisonThreshold(RHIType backendType) {
|
||||
return backendType == RHIType::OpenGL ? 8 : 8;
|
||||
return backendType == RHIType::D3D12 ? 8 : 8;
|
||||
}
|
||||
|
||||
class CameraStackSceneTest : public RHIIntegrationFixture {
|
||||
@@ -426,6 +435,9 @@ TEST_P(CameraStackSceneTest, RenderCameraStackScene) {
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(D3D12, CameraStackSceneTest, ::testing::Values(RHIType::D3D12));
|
||||
INSTANTIATE_TEST_SUITE_P(OpenGL, CameraStackSceneTest, ::testing::Values(RHIType::OpenGL));
|
||||
#if defined(XCENGINE_SUPPORT_VULKAN)
|
||||
INSTANTIATE_TEST_SUITE_P(Vulkan, CameraStackSceneTest, ::testing::Values(RHIType::Vulkan));
|
||||
#endif
|
||||
|
||||
GTEST_API_ int main(int argc, char** argv) {
|
||||
Logger::Get().Initialize();
|
||||
|
||||
@@ -9,6 +9,8 @@ set(PACKAGE_DIR ${CMAKE_SOURCE_DIR}/mvs/OpenGL/package)
|
||||
|
||||
get_filename_component(PROJECT_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../.. ABSOLUTE)
|
||||
|
||||
find_package(Vulkan QUIET)
|
||||
|
||||
add_executable(rendering_integration_cull_material_scene
|
||||
main.cpp
|
||||
${CMAKE_SOURCE_DIR}/tests/RHI/integration/fixtures/RHIIntegrationFixture.cpp
|
||||
@@ -33,6 +35,11 @@ target_link_libraries(rendering_integration_cull_material_scene PRIVATE
|
||||
GTest::gtest
|
||||
)
|
||||
|
||||
if(TARGET Vulkan::Vulkan)
|
||||
target_link_libraries(rendering_integration_cull_material_scene PRIVATE Vulkan::Vulkan)
|
||||
target_compile_definitions(rendering_integration_cull_material_scene PRIVATE XCENGINE_SUPPORT_VULKAN)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(rendering_integration_cull_material_scene PRIVATE
|
||||
UNICODE
|
||||
_UNICODE
|
||||
|
||||
@@ -37,6 +37,7 @@ namespace {
|
||||
|
||||
constexpr const char* kD3D12Screenshot = "cull_material_scene_d3d12.ppm";
|
||||
constexpr const char* kOpenGLScreenshot = "cull_material_scene_opengl.ppm";
|
||||
constexpr const char* kVulkanScreenshot = "cull_material_scene_vulkan.ppm";
|
||||
constexpr uint32_t kFrameWidth = 1280;
|
||||
constexpr uint32_t kFrameHeight = 720;
|
||||
|
||||
@@ -134,7 +135,15 @@ GameObject* CreateQuadObject(
|
||||
}
|
||||
|
||||
const char* GetScreenshotFilename(RHIType backendType) {
|
||||
return backendType == RHIType::D3D12 ? kD3D12Screenshot : kOpenGLScreenshot;
|
||||
switch (backendType) {
|
||||
case RHIType::D3D12:
|
||||
return kD3D12Screenshot;
|
||||
case RHIType::Vulkan:
|
||||
return kVulkanScreenshot;
|
||||
case RHIType::OpenGL:
|
||||
default:
|
||||
return kOpenGLScreenshot;
|
||||
}
|
||||
}
|
||||
|
||||
int GetComparisonThreshold(RHIType backendType) {
|
||||
@@ -432,6 +441,9 @@ TEST_P(CullMaterialSceneTest, RenderCullMaterialScene) {
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(D3D12, CullMaterialSceneTest, ::testing::Values(RHIType::D3D12));
|
||||
INSTANTIATE_TEST_SUITE_P(OpenGL, CullMaterialSceneTest, ::testing::Values(RHIType::OpenGL));
|
||||
#if defined(XCENGINE_SUPPORT_VULKAN)
|
||||
INSTANTIATE_TEST_SUITE_P(Vulkan, CullMaterialSceneTest, ::testing::Values(RHIType::Vulkan));
|
||||
#endif
|
||||
|
||||
GTEST_API_ int main(int argc, char** argv) {
|
||||
Logger::Get().Initialize();
|
||||
|
||||
@@ -9,6 +9,8 @@ set(PACKAGE_DIR ${CMAKE_SOURCE_DIR}/mvs/OpenGL/package)
|
||||
|
||||
get_filename_component(PROJECT_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../.. ABSOLUTE)
|
||||
|
||||
find_package(Vulkan QUIET)
|
||||
|
||||
add_executable(rendering_integration_depth_sort_scene
|
||||
main.cpp
|
||||
${CMAKE_SOURCE_DIR}/tests/RHI/integration/fixtures/RHIIntegrationFixture.cpp
|
||||
@@ -33,6 +35,11 @@ target_link_libraries(rendering_integration_depth_sort_scene PRIVATE
|
||||
GTest::gtest
|
||||
)
|
||||
|
||||
if(TARGET Vulkan::Vulkan)
|
||||
target_link_libraries(rendering_integration_depth_sort_scene PRIVATE Vulkan::Vulkan)
|
||||
target_compile_definitions(rendering_integration_depth_sort_scene PRIVATE XCENGINE_SUPPORT_VULKAN)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(rendering_integration_depth_sort_scene PRIVATE
|
||||
UNICODE
|
||||
_UNICODE
|
||||
|
||||
@@ -37,6 +37,7 @@ namespace {
|
||||
|
||||
constexpr const char* kD3D12Screenshot = "depth_sort_scene_d3d12.ppm";
|
||||
constexpr const char* kOpenGLScreenshot = "depth_sort_scene_opengl.ppm";
|
||||
constexpr const char* kVulkanScreenshot = "depth_sort_scene_vulkan.ppm";
|
||||
constexpr uint32_t kFrameWidth = 1280;
|
||||
constexpr uint32_t kFrameHeight = 720;
|
||||
|
||||
@@ -135,7 +136,15 @@ GameObject* CreateQuadObject(
|
||||
}
|
||||
|
||||
const char* GetScreenshotFilename(RHIType backendType) {
|
||||
return backendType == RHIType::D3D12 ? kD3D12Screenshot : kOpenGLScreenshot;
|
||||
switch (backendType) {
|
||||
case RHIType::D3D12:
|
||||
return kD3D12Screenshot;
|
||||
case RHIType::Vulkan:
|
||||
return kVulkanScreenshot;
|
||||
case RHIType::OpenGL:
|
||||
default:
|
||||
return kOpenGLScreenshot;
|
||||
}
|
||||
}
|
||||
|
||||
int GetComparisonThreshold(RHIType backendType) {
|
||||
@@ -439,6 +448,9 @@ TEST_P(DepthSortSceneTest, RenderDepthSortScene) {
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(D3D12, DepthSortSceneTest, ::testing::Values(RHIType::D3D12));
|
||||
INSTANTIATE_TEST_SUITE_P(OpenGL, DepthSortSceneTest, ::testing::Values(RHIType::OpenGL));
|
||||
#if defined(XCENGINE_SUPPORT_VULKAN)
|
||||
INSTANTIATE_TEST_SUITE_P(Vulkan, DepthSortSceneTest, ::testing::Values(RHIType::Vulkan));
|
||||
#endif
|
||||
|
||||
GTEST_API_ int main(int argc, char** argv) {
|
||||
Logger::Get().Initialize();
|
||||
|
||||
@@ -9,6 +9,8 @@ set(PACKAGE_DIR ${CMAKE_SOURCE_DIR}/mvs/OpenGL/package)
|
||||
|
||||
get_filename_component(PROJECT_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../.. ABSOLUTE)
|
||||
|
||||
find_package(Vulkan QUIET)
|
||||
|
||||
add_executable(rendering_integration_material_state_scene
|
||||
main.cpp
|
||||
${CMAKE_SOURCE_DIR}/tests/RHI/integration/fixtures/RHIIntegrationFixture.cpp
|
||||
@@ -33,6 +35,11 @@ target_link_libraries(rendering_integration_material_state_scene PRIVATE
|
||||
GTest::gtest
|
||||
)
|
||||
|
||||
if(TARGET Vulkan::Vulkan)
|
||||
target_link_libraries(rendering_integration_material_state_scene PRIVATE Vulkan::Vulkan)
|
||||
target_compile_definitions(rendering_integration_material_state_scene PRIVATE XCENGINE_SUPPORT_VULKAN)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(rendering_integration_material_state_scene PRIVATE
|
||||
UNICODE
|
||||
_UNICODE
|
||||
|
||||
@@ -37,6 +37,7 @@ namespace {
|
||||
|
||||
constexpr const char* kD3D12Screenshot = "material_state_scene_d3d12.ppm";
|
||||
constexpr const char* kOpenGLScreenshot = "material_state_scene_opengl.ppm";
|
||||
constexpr const char* kVulkanScreenshot = "material_state_scene_vulkan.ppm";
|
||||
constexpr uint32_t kFrameWidth = 1280;
|
||||
constexpr uint32_t kFrameHeight = 720;
|
||||
constexpr float kPi = 3.1415926535f;
|
||||
@@ -136,7 +137,15 @@ GameObject* CreateQuadObject(
|
||||
}
|
||||
|
||||
const char* GetScreenshotFilename(RHIType backendType) {
|
||||
return backendType == RHIType::D3D12 ? kD3D12Screenshot : kOpenGLScreenshot;
|
||||
switch (backendType) {
|
||||
case RHIType::D3D12:
|
||||
return kD3D12Screenshot;
|
||||
case RHIType::Vulkan:
|
||||
return kVulkanScreenshot;
|
||||
case RHIType::OpenGL:
|
||||
default:
|
||||
return kOpenGLScreenshot;
|
||||
}
|
||||
}
|
||||
|
||||
int GetComparisonThreshold(RHIType backendType) {
|
||||
@@ -532,6 +541,9 @@ TEST_P(MaterialStateSceneTest, RenderMaterialStateScene) {
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(D3D12, MaterialStateSceneTest, ::testing::Values(RHIType::D3D12));
|
||||
INSTANTIATE_TEST_SUITE_P(OpenGL, MaterialStateSceneTest, ::testing::Values(RHIType::OpenGL));
|
||||
#if defined(XCENGINE_SUPPORT_VULKAN)
|
||||
INSTANTIATE_TEST_SUITE_P(Vulkan, MaterialStateSceneTest, ::testing::Values(RHIType::Vulkan));
|
||||
#endif
|
||||
|
||||
GTEST_API_ int main(int argc, char** argv) {
|
||||
Logger::Get().Initialize();
|
||||
|
||||
@@ -9,6 +9,8 @@ set(PACKAGE_DIR ${CMAKE_SOURCE_DIR}/mvs/OpenGL/package)
|
||||
|
||||
get_filename_component(PROJECT_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../.. ABSOLUTE)
|
||||
|
||||
find_package(Vulkan QUIET)
|
||||
|
||||
add_executable(rendering_integration_offscreen_scene
|
||||
main.cpp
|
||||
${CMAKE_SOURCE_DIR}/tests/RHI/integration/fixtures/RHIIntegrationFixture.cpp
|
||||
@@ -33,6 +35,11 @@ target_link_libraries(rendering_integration_offscreen_scene PRIVATE
|
||||
GTest::gtest
|
||||
)
|
||||
|
||||
if(TARGET Vulkan::Vulkan)
|
||||
target_link_libraries(rendering_integration_offscreen_scene PRIVATE Vulkan::Vulkan)
|
||||
target_compile_definitions(rendering_integration_offscreen_scene PRIVATE XCENGINE_SUPPORT_VULKAN)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(rendering_integration_offscreen_scene PRIVATE
|
||||
UNICODE
|
||||
_UNICODE
|
||||
|
||||
@@ -37,6 +37,7 @@ namespace {
|
||||
|
||||
constexpr const char* kD3D12Screenshot = "offscreen_scene_d3d12.ppm";
|
||||
constexpr const char* kOpenGLScreenshot = "offscreen_scene_opengl.ppm";
|
||||
constexpr const char* kVulkanScreenshot = "offscreen_scene_vulkan.ppm";
|
||||
constexpr uint32_t kFrameWidth = 1280;
|
||||
constexpr uint32_t kFrameHeight = 720;
|
||||
|
||||
@@ -135,7 +136,15 @@ GameObject* CreateQuadObject(
|
||||
}
|
||||
|
||||
const char* GetScreenshotFilename(RHIType backendType) {
|
||||
return backendType == RHIType::D3D12 ? kD3D12Screenshot : kOpenGLScreenshot;
|
||||
switch (backendType) {
|
||||
case RHIType::D3D12:
|
||||
return kD3D12Screenshot;
|
||||
case RHIType::Vulkan:
|
||||
return kVulkanScreenshot;
|
||||
case RHIType::OpenGL:
|
||||
default:
|
||||
return kOpenGLScreenshot;
|
||||
}
|
||||
}
|
||||
|
||||
int GetComparisonThreshold(RHIType backendType) {
|
||||
@@ -148,6 +157,7 @@ protected:
|
||||
void SetUp() override;
|
||||
void TearDown() override;
|
||||
void RenderFrame() override;
|
||||
bool RequiresSwapChainAcquire() const override { return false; }
|
||||
|
||||
private:
|
||||
void BuildScene();
|
||||
@@ -486,6 +496,9 @@ TEST_P(OffscreenSceneTest, RenderOffscreenScene) {
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(D3D12, OffscreenSceneTest, ::testing::Values(RHIType::D3D12));
|
||||
INSTANTIATE_TEST_SUITE_P(OpenGL, OffscreenSceneTest, ::testing::Values(RHIType::OpenGL));
|
||||
#if defined(XCENGINE_SUPPORT_VULKAN)
|
||||
INSTANTIATE_TEST_SUITE_P(Vulkan, OffscreenSceneTest, ::testing::Values(RHIType::Vulkan));
|
||||
#endif
|
||||
|
||||
GTEST_API_ int main(int argc, char** argv) {
|
||||
Logger::Get().Initialize();
|
||||
|
||||
@@ -9,6 +9,8 @@ set(PACKAGE_DIR ${CMAKE_SOURCE_DIR}/mvs/OpenGL/package)
|
||||
|
||||
get_filename_component(PROJECT_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../.. ABSOLUTE)
|
||||
|
||||
find_package(Vulkan QUIET)
|
||||
|
||||
add_executable(rendering_integration_textured_quad_scene
|
||||
main.cpp
|
||||
${CMAKE_SOURCE_DIR}/tests/RHI/integration/fixtures/RHIIntegrationFixture.cpp
|
||||
@@ -33,6 +35,11 @@ target_link_libraries(rendering_integration_textured_quad_scene PRIVATE
|
||||
GTest::gtest
|
||||
)
|
||||
|
||||
if(TARGET Vulkan::Vulkan)
|
||||
target_link_libraries(rendering_integration_textured_quad_scene PRIVATE Vulkan::Vulkan)
|
||||
target_compile_definitions(rendering_integration_textured_quad_scene PRIVATE XCENGINE_SUPPORT_VULKAN)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(rendering_integration_textured_quad_scene PRIVATE
|
||||
UNICODE
|
||||
_UNICODE
|
||||
|
||||
@@ -36,6 +36,7 @@ namespace {
|
||||
|
||||
constexpr const char* kD3D12Screenshot = "textured_quad_scene_d3d12.ppm";
|
||||
constexpr const char* kOpenGLScreenshot = "textured_quad_scene_opengl.ppm";
|
||||
constexpr const char* kVulkanScreenshot = "textured_quad_scene_vulkan.ppm";
|
||||
constexpr uint32_t kFrameWidth = 1280;
|
||||
constexpr uint32_t kFrameHeight = 720;
|
||||
|
||||
@@ -115,11 +116,19 @@ Material* CreateMaterial(Texture* texture) {
|
||||
}
|
||||
|
||||
const char* GetScreenshotFilename(RHIType backendType) {
|
||||
return backendType == RHIType::D3D12 ? kD3D12Screenshot : kOpenGLScreenshot;
|
||||
switch (backendType) {
|
||||
case RHIType::D3D12:
|
||||
return kD3D12Screenshot;
|
||||
case RHIType::Vulkan:
|
||||
return kVulkanScreenshot;
|
||||
case RHIType::OpenGL:
|
||||
default:
|
||||
return kOpenGLScreenshot;
|
||||
}
|
||||
}
|
||||
|
||||
int GetComparisonThreshold(RHIType backendType) {
|
||||
return backendType == RHIType::OpenGL ? 5 : 0;
|
||||
return backendType == RHIType::D3D12 ? 0 : 5;
|
||||
}
|
||||
|
||||
class TexturedQuadSceneTest : public RHIIntegrationFixture {
|
||||
@@ -300,6 +309,9 @@ TEST_P(TexturedQuadSceneTest, RenderTexturedQuadScene) {
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(D3D12, TexturedQuadSceneTest, ::testing::Values(RHIType::D3D12));
|
||||
INSTANTIATE_TEST_SUITE_P(OpenGL, TexturedQuadSceneTest, ::testing::Values(RHIType::OpenGL));
|
||||
#if defined(XCENGINE_SUPPORT_VULKAN)
|
||||
INSTANTIATE_TEST_SUITE_P(Vulkan, TexturedQuadSceneTest, ::testing::Values(RHIType::Vulkan));
|
||||
#endif
|
||||
|
||||
GTEST_API_ int main(int argc, char** argv) {
|
||||
Logger::Get().Initialize();
|
||||
|
||||
@@ -9,6 +9,8 @@ set(PACKAGE_DIR ${CMAKE_SOURCE_DIR}/mvs/OpenGL/package)
|
||||
|
||||
get_filename_component(PROJECT_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../.. ABSOLUTE)
|
||||
|
||||
find_package(Vulkan QUIET)
|
||||
|
||||
add_executable(rendering_integration_transparent_material_scene
|
||||
main.cpp
|
||||
${CMAKE_SOURCE_DIR}/tests/RHI/integration/fixtures/RHIIntegrationFixture.cpp
|
||||
@@ -33,6 +35,11 @@ target_link_libraries(rendering_integration_transparent_material_scene PRIVATE
|
||||
GTest::gtest
|
||||
)
|
||||
|
||||
if(TARGET Vulkan::Vulkan)
|
||||
target_link_libraries(rendering_integration_transparent_material_scene PRIVATE Vulkan::Vulkan)
|
||||
target_compile_definitions(rendering_integration_transparent_material_scene PRIVATE XCENGINE_SUPPORT_VULKAN)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(rendering_integration_transparent_material_scene PRIVATE
|
||||
UNICODE
|
||||
_UNICODE
|
||||
|
||||
@@ -37,6 +37,7 @@ namespace {
|
||||
|
||||
constexpr const char* kD3D12Screenshot = "transparent_material_scene_d3d12.ppm";
|
||||
constexpr const char* kOpenGLScreenshot = "transparent_material_scene_opengl.ppm";
|
||||
constexpr const char* kVulkanScreenshot = "transparent_material_scene_vulkan.ppm";
|
||||
constexpr uint32_t kFrameWidth = 1280;
|
||||
constexpr uint32_t kFrameHeight = 720;
|
||||
|
||||
@@ -135,7 +136,15 @@ GameObject* CreateQuadObject(
|
||||
}
|
||||
|
||||
const char* GetScreenshotFilename(RHIType backendType) {
|
||||
return backendType == RHIType::D3D12 ? kD3D12Screenshot : kOpenGLScreenshot;
|
||||
switch (backendType) {
|
||||
case RHIType::D3D12:
|
||||
return kD3D12Screenshot;
|
||||
case RHIType::Vulkan:
|
||||
return kVulkanScreenshot;
|
||||
case RHIType::OpenGL:
|
||||
default:
|
||||
return kOpenGLScreenshot;
|
||||
}
|
||||
}
|
||||
|
||||
int GetComparisonThreshold(RHIType backendType) {
|
||||
@@ -384,6 +393,9 @@ TEST_P(TransparentMaterialSceneTest, RenderTransparentMaterialScene) {
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(D3D12, TransparentMaterialSceneTest, ::testing::Values(RHIType::D3D12));
|
||||
INSTANTIATE_TEST_SUITE_P(OpenGL, TransparentMaterialSceneTest, ::testing::Values(RHIType::OpenGL));
|
||||
#if defined(XCENGINE_SUPPORT_VULKAN)
|
||||
INSTANTIATE_TEST_SUITE_P(Vulkan, TransparentMaterialSceneTest, ::testing::Values(RHIType::Vulkan));
|
||||
#endif
|
||||
|
||||
GTEST_API_ int main(int argc, char** argv) {
|
||||
Logger::Get().Initialize();
|
||||
|
||||
Reference in New Issue
Block a user