diff --git a/thirdparty/rexglue-sdk/include/rex/graphics/flags.h b/thirdparty/rexglue-sdk/include/rex/graphics/flags.h index 72d3a0bf..02319267 100644 --- a/thirdparty/rexglue-sdk/include/rex/graphics/flags.h +++ b/thirdparty/rexglue-sdk/include/rex/graphics/flags.h @@ -108,6 +108,7 @@ REXCVAR_DECLARE(bool, d3d12_dxbc_disasm_dxilconv); REXCVAR_DECLARE(int32_t, d3d12_pipeline_creation_threads); REXCVAR_DECLARE(bool, d3d12_tessellation_wireframe); REXCVAR_DECLARE(bool, d3d12_tiled_shared_memory); +REXCVAR_DECLARE(bool, d3d12_expand_point_sprites_in_vs); REXCVAR_DECLARE(std::string, render_target_path_d3d12); // Legacy backend compatibility aliases for shared readback controls. REXCVAR_DECLARE(bool, d3d12_readback_memexport); diff --git a/thirdparty/rexglue-sdk/src/graphics/d3d12/primitive_processor.cpp b/thirdparty/rexglue-sdk/src/graphics/d3d12/primitive_processor.cpp index 500924eb..82295cff 100644 --- a/thirdparty/rexglue-sdk/src/graphics/d3d12/primitive_processor.cpp +++ b/thirdparty/rexglue-sdk/src/graphics/d3d12/primitive_processor.cpp @@ -15,6 +15,7 @@ #include #include +#include #include #include #include @@ -22,6 +23,13 @@ #include #include +REXCVAR_DEFINE_BOOL( + d3d12_expand_point_sprites_in_vs, true, "GPU/D3D12", + "Expand Xbox point lists as triangle strips in the vertex shader instead of the host " + "point-list + geometry-shader path. Fixes missing trails/particles on some titles and " + "drivers where native point expansion is culled or rasterized incorrectly.") + .lifecycle(rex::cvar::Lifecycle::kInitOnly); + namespace rex::graphics::d3d12 { D3D12PrimitiveProcessor::~D3D12PrimitiveProcessor() { @@ -29,7 +37,8 @@ D3D12PrimitiveProcessor::~D3D12PrimitiveProcessor() { } bool D3D12PrimitiveProcessor::Initialize() { - if (!InitializeCommon(true, false, false, true, true, true)) { + const bool point_sprites_native_without_vs = !REXCVAR_GET(d3d12_expand_point_sprites_in_vs); + if (!InitializeCommon(true, false, false, true, point_sprites_native_without_vs, true)) { Shutdown(); return false; } diff --git a/thirdparty/rexglue-sdk/src/graphics/vulkan/primitive_processor.cpp b/thirdparty/rexglue-sdk/src/graphics/vulkan/primitive_processor.cpp index cdbedae5..e439d294 100644 --- a/thirdparty/rexglue-sdk/src/graphics/vulkan/primitive_processor.cpp +++ b/thirdparty/rexglue-sdk/src/graphics/vulkan/primitive_processor.cpp @@ -21,7 +21,7 @@ #include #include -REXCVAR_DEFINE_BOOL(vulkan_force_expand_point_sprites_in_vs, false, "GPU/Vulkan", +REXCVAR_DEFINE_BOOL(vulkan_force_expand_point_sprites_in_vs, true, "GPU/Vulkan", "Force Vulkan point sprite expansion in the vertex shader, even when geometry " "shaders are available") .lifecycle(rex::cvar::Lifecycle::kInitOnly);