Refactor new editor boundaries and test ownership

This commit is contained in:
2026-04-19 15:52:28 +08:00
parent dc13b56cf3
commit 93f06e84ed
279 changed files with 6349 additions and 3238 deletions

View File

@@ -5,10 +5,6 @@
namespace XCEngine::UI::Editor::App {
bool ViewportRequiresObjectIdResources(ViewportKind kind) {
return kind == ViewportKind::Scene;
}
std::uint32_t ClampViewportPixelCoordinate(float value, std::uint32_t extent) {
if (extent == 0u) {
return 0u;
@@ -36,19 +32,28 @@ bool CanReuseViewportResources(const ViewportResourceReuseQuery& query) {
return false;
}
if (!ViewportRequiresObjectIdResources(query.kind)) {
return true;
if (query.requirements.requiresDepthSampling &&
!query.resources.hasDepthShaderView) {
return false;
}
return query.resources.hasObjectIdTexture &&
query.resources.hasObjectIdDepthTexture &&
query.resources.hasObjectIdDepthView &&
query.resources.hasObjectIdView &&
query.resources.hasObjectIdShaderView &&
query.resources.hasDepthShaderView &&
query.resources.hasSelectionMaskTexture &&
query.resources.hasSelectionMaskView &&
query.resources.hasSelectionMaskShaderView;
if (query.requirements.requiresObjectIdSurface &&
(!query.resources.hasObjectIdTexture ||
!query.resources.hasObjectIdDepthTexture ||
!query.resources.hasObjectIdDepthView ||
!query.resources.hasObjectIdView ||
!query.resources.hasObjectIdShaderView)) {
return false;
}
if (query.requirements.requiresSelectionMaskSurface &&
(!query.resources.hasSelectionMaskTexture ||
!query.resources.hasSelectionMaskView ||
!query.resources.hasSelectionMaskShaderView)) {
return false;
}
return true;
}
::XCEngine::RHI::TextureDesc BuildViewportTextureDesc(