Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ba3efa82e3 | ||
|
|
bde581a961 | ||
|
|
9990234657 | ||
|
|
a1a9f8dea2 | ||
|
|
868f19aaaa | ||
|
|
bb46e0091e | ||
|
|
fc36312808 | ||
|
|
3be3d0de5f | ||
|
|
d32c33dd0b | ||
|
|
de17bc658a | ||
|
|
f5bbe1a179 | ||
|
|
5f61ee3750 | ||
|
|
c89298fefe | ||
|
|
ae537c0a4b | ||
|
|
94f7593e55 | ||
|
|
43afcd6bfb | ||
|
|
acbe5156c0 | ||
|
|
2454462432 | ||
|
|
724de134ca | ||
|
|
0d2cae18fb | ||
|
|
f8cd73b95f | ||
|
|
66f59f4afa |
@@ -59,6 +59,9 @@ if(FASET_ENABLE_LUA AND TARGET faset_runtime)
|
||||
endif()
|
||||
if(FASET_BUILD_RENDERER AND EXISTS "${PROJECT_SOURCE_DIR}/cmake/Renderer.cmake")
|
||||
include(cmake/Renderer.cmake)
|
||||
include(cmake/Visibility.cmake)
|
||||
include(cmake/GpuVisibility.cmake)
|
||||
include(cmake/GpuVisibilityAcceptance.cmake)
|
||||
endif()
|
||||
if(TARGET faset_gameplay AND EXISTS "${PROJECT_SOURCE_DIR}/cmake/Player.cmake")
|
||||
include(cmake/Player.cmake)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# План разработки Faset Engine
|
||||
|
||||
Версия 1.2 · 18 сентября 2026 года.
|
||||
Версия 1.3 · 23 сентября 2026 года.
|
||||
|
||||
**Статус:** C++ MVP реализован и принят; первый tag — **v0.1.0-mvp**. Исходники движка проверены на `4cb82556de31268d2bde73948dd1ff1b6c02f162`; финальная публикация добавляет документацию и свидетельства, сохраняя код движка. [Досье M0–M9](docs/validation/mvp-acceptance.md) связывает каждый этап с проверками и точными revisions. Linux проверен на RTX 2080 Ti, Windows — в native CI через SwiftShader; это не сертификация всех GPU/драйверов. Системный IME и физические переходы между мониторами не проверены, native Wayland restore имеет явный skip; XWayland и Windows lifecycle прошли. Текст/DPI проверены на уровне widgets и SDL. Эти границы покрытия сохраняются открыто и не выдаются за пройденные сценарии. Контракты находятся в [ARCHITECTURE.md](docs/ARCHITECTURE.md), история — в [журнале реализации](docs/IMPLEMENTATION.md).
|
||||
**Статус:** C++ MVP реализован и принят; первый tag — **v0.1.0-mvp**. Его исходники проверены на `4cb82556de31268d2bde73948dd1ff1b6c02f162`; [досье M0–M9](docs/validation/mvp-acceptance.md) связывает этапы с проверками и revisions. После MVP реализованы Lua-модуль и P2 GPU visibility/mesh LOD. Для P2 сохранён direct-эталон; [досье Linux-проверок](docs/validation/p2-gpu-visibility-2026-09-23/README.md), [протокол приёмки](docs/studies/19-p2-gpu-visibility-acceptance.md), [первое измерение](docs/studies/20-p2-gpu-visibility-benchmark-2026-09-23.md) и [повтор после оптимизации](docs/studies/21-p2-gpu-visibility-optimization-2026-09-23.md) фиксируют функциональную и измерительную область. Первый Debug-профиль обнаружил дорогой MainCull; перенос GPU-выходов в device-local память и bounded atomic append устранили эту стоимость в повторном синтетическом тесте. Это не доказывает ускорение любой игры. Windows P2 и дополнительные семейства физических GPU/драйверов не подтверждены этими проверками. Для MVP Linux проверен на RTX 2080 Ti, Windows — в native CI через SwiftShader; это не сертификация всех GPU/драйверов. Системный IME и физические переходы между мониторами не проверены, native Wayland restore имеет явный skip; XWayland и Windows lifecycle прошли. Контракты находятся в [ARCHITECTURE.md](docs/ARCHITECTURE.md), история — в [журнале реализации](docs/IMPLEMENTATION.md).
|
||||
|
||||
## 1. Результат MVP
|
||||
|
||||
@@ -179,15 +179,21 @@ Lua, C++ hot reload, Blender live link, встроенное изображен
|
||||
|
||||
Начальные бюджеты отслеживания для конкретных демо и Linux reference host: frame p95 ≤ 4 мс, GPU/readback p95 ≤ 1 мс, simulation/snapshot p95 ≤ 0,5 мс, явные Vulkan allocations ≤ 20 MiB, startup от `main()` ≤ 500 мс. [Методика и исходные измерения](docs/validation/linux-release-2026-09-18/README.md) ограничивают область этих чисел; для других сцен/ОС нужны отдельные baselines. Это бюджеты P1, а не обещание такой производительности любой игры.
|
||||
|
||||
Добавить Lua runtime/editor пакет поверх публичного API, проверяемых handles и схем. Предусмотреть диагностику, отладку, Inspector и явный lifecycle перезагрузки. Сохранение состояния при reload проектируется отдельно. Проверка: C++ и Lua используют одни данные/фазы; C++-only export не включает Lua.
|
||||
Lua runtime/editor пакет реализован как необязательный модуль поверх публичного API, проверяемых handles и схем. Доступны Inspector, диагностика и явный lifecycle development reload; сохранение состояния при reload проектируется отдельно. [Проверка Lua-модуля](docs/validation/lua-module.md) подтверждает Linux CPU-контракты и отключение модуля для C++-only проекта; Windows и независимый graphical/release профиль модуля остаются отдельными проверками. Таким образом, Lua-часть P1 появилась после MVP, но это не закрывает весь этап скорости итераций.
|
||||
|
||||
Улучшать schema/build cache, сообщения компилятора, шаблоны проектов, переход к коду, autosave и измеренное время «изменение → результат». Dynamic gameplay loading рассматривать при подтверждённой проблеме линковки.
|
||||
|
||||
### P2. GPU-driven visibility и LOD
|
||||
|
||||
Сохранить direct renderer как эталон. Порядок: GPU instance IDs → GPU frustum culling → fixed indirect batches → current HZB/debug view → two-pass occlusion с контролем истории → подготовленный mesh LOD с hysteresis.
|
||||
**Реализовано для opaque static meshes на Linux reference GPU; остальные платформы/устройства требуют отдельной проверки.** Direct renderer остался выбираемым эталоном. Реализованы устойчивые instance IDs с generation, GPU frustum culling, фиксированные indirect bins, current HZB и его редакторский preview, main/post occlusion с проверяемой историей, выбор заранее подготовленного mesh LOD по проецируемому размеру и hysteresis. Редактор переключает режимы через diagnostics, Player — через явный флаг `--visibility direct|gpu-frustum|gpu-occlusion`; по умолчанию остаётся Direct. Прозрачные meshes, спрайты, UI и shadow pass сохраняют свои упорядоченные/независимые пути. Система не генерирует LOD-модели из исходного mesh автоматически.
|
||||
|
||||
Проверять пустую сцену, рост/переполнение буферов, массовое удаление, открывающуюся дверь, исчезновение заслона, camera cut, teleport и resize. Не требовать синхронного GPU readback. Сравнивать полный кадр на закрытых и открытых сценах: HZB может быть дороже эталона. Основа — [исследование 15](docs/studies/15-renderer-implementation-notes.md).
|
||||
- [x] GPU instance records, frustum culling и fixed indirect draws без CPU feedback для решения видимости.
|
||||
- [x] Current HZB, двухпроходное исправление ошибочной previous-frame occlusion и инвалидация истории при cut, resize, смене view/projection/instance.
|
||||
- [x] Подготовленные LOD с hysteresis и диагностикой LOD counts; direct reference остаётся доступен.
|
||||
- [x] Автоматические adversarial-сценарии: пустота, граница ёмкости, дверь/телепорт, тени, near plane, resize, несколько views, lifecycle, прозрачность и открытая сцена.
|
||||
- [x] Профиль direct/frustum/occlusion на закрытой и открытой сценах с raw samples и без обещания универсального ускорения.
|
||||
|
||||
Основой проектирования было [исследование 15](docs/studies/15-renderer-implementation-notes.md); фактическая проверка — в [Linux-досье](docs/validation/p2-gpu-visibility-2026-09-23/README.md) и [P2 acceptance](docs/studies/19-p2-gpu-visibility-acceptance.md), методика и значения — в [исходном benchmark](docs/studies/20-p2-gpu-visibility-benchmark-2026-09-23.md) и [повторе после оптимизации](docs/studies/21-p2-gpu-visibility-optimization-2026-09-23.md), реализация — в [журнале](docs/IMPLEMENTATION.md). Счётчики GPU и HZB preview включаются только для диагностики; существующий framebuffer capture по-прежнему синхронен, поэтому end-to-end benchmark отражает этот путь. В первом измерении MainCull оказался дорогим; device-local выходные буферы и atomic add уменьшили его p50 до 0,030–0,042 мс в повторном Debug/validation тесте на reference GPU. Direct остаётся начальным режимом: до изменения default нужны Release-профиль и реальные игровые сцены. Открытые сцены и дополнительная стоимость HZB публикуются наравне с закрытыми.
|
||||
|
||||
### P3. Освещение, тени и temporal reconstruction
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
Faset is an independent engine project for desktop **2D and 3D games on Linux and Windows**. Its priorities are a custom editor that is comfortable to use by hand and through MCP, integration with Blender, and a path toward advanced graphics.
|
||||
|
||||
**Current status: the C++ MVP is implemented and accepted for the recorded Linux and Windows test profiles.** It includes the native Editor, shared GUI/MCP authoring, gameplay builds, Vulkan Player, Blender import and standalone export. Both playable games passed Release export and relocated execution on both operating systems. Windows graphics acceptance used software Vulkan; physical Windows GPUs, system IME and mixed-monitor transitions need additional coverage. See the [acceptance dossier](docs/validation/mvp-acceptance.md) for exact revisions, checks and limits, and the [implementation checkpoints](docs/IMPLEMENTATION.md) for the development record.
|
||||
**Current status: the C++ MVP is accepted for the recorded Linux and Windows test profiles; Lua and P2 GPU visibility were added afterward.** The MVP includes the native Editor, shared GUI/MCP authoring, gameplay builds, Vulkan Player, Blender import and standalone export. Both playable games passed Release export and relocated execution on both operating systems. P2 adds optional GPU frustum and two-pass HZB occlusion modes, fixed indirect mesh bins, prepared mesh LOD selection, and an Editor HZB diagnostic view. Direct remains the default and comparison reference; an exported Player can explicitly select a mode with `--visibility direct|gpu-frustum|gpu-occlusion`. P2 GPU acceptance and measurements cover the Linux reference device, with a separate software-Vulkan functional check; Windows P2 and additional physical GPUs need separate validation. The first Debug/validation benchmark exposed slow GPU culling; device-local outputs and a bounded atomic append improved the same synthetic workloads in the repeat. Neither run establishes a general game-speed benefit. Windows MVP graphics acceptance used software Vulkan. See the [MVP acceptance dossier](docs/validation/mvp-acceptance.md), [P2 Linux evidence](docs/validation/p2-gpu-visibility-2026-09-23/README.md), [P2 acceptance protocol](docs/studies/19-p2-gpu-visibility-acceptance.md), [initial benchmark](docs/studies/20-p2-gpu-visibility-benchmark-2026-09-23.md), [optimized benchmark](docs/studies/21-p2-gpu-visibility-optimization-2026-09-23.md), and [implementation checkpoints](docs/IMPLEMENTATION.md) for exact scope and limits.
|
||||
|
||||
## Start here
|
||||
|
||||
@@ -39,7 +39,7 @@ This README is in English. The current planning documents, studies, and research
|
||||
- **Editor-only MCP:** authoring, assets, import, builds, export, Play/Stop, and editor diagnostics. MCP is absent from the Player and exported games.
|
||||
- Standard, **unmodified Blender**, glTF/GLB import, and an optional add-on for convenient export and stable IDs.
|
||||
|
||||
The MVP provides two small games, one 2D and one 3D, with scene editing, C++ behavior, physics, Play and standalone export. A [Lua-only example](examples/lua) demonstrates the optional scripting module. GPU-driven rendering, HZB, advanced shadows, temporal reconstruction and dynamic global illumination follow this baseline.
|
||||
The MVP provides two small games, one 2D and one 3D, with scene editing, C++ behavior, physics, Play and standalone export. A [Lua-only example](examples/lua) demonstrates the optional scripting module. P2 GPU visibility applies to opaque static meshes; ordered sprites/UI and the shadow pass keep their separate rendering paths. Its LOD policy chooses among meshes supplied by the project; automatic LOD generation, advanced shadows, temporal reconstruction and dynamic global illumination remain future work. See [profiling guidance](docs/manual/editor/profiling.md) before interpreting full-frame measurements.
|
||||
|
||||
## Run the research map
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ struct ProfileSample {
|
||||
std::uint64_t gpuAllocatedBytes{};
|
||||
std::uint32_t textureCount{};
|
||||
bool physicsDebug{};
|
||||
bool gpuVisibilityActive{};
|
||||
};
|
||||
Json distribution(std::vector<double> values) {
|
||||
if (values.empty())
|
||||
@@ -80,7 +81,8 @@ Json profileFrames(const std::vector<ProfileSample>& samples) {
|
||||
{"vertices", sample.vertices},
|
||||
{"gpu_allocated_bytes", sample.gpuAllocatedBytes},
|
||||
{"texture_count", sample.textureCount},
|
||||
{"physics_debug", sample.physicsDebug}});
|
||||
{"physics_debug", sample.physicsDebug},
|
||||
{"gpu_visibility_active", sample.gpuVisibilityActive}});
|
||||
}
|
||||
return {{"samples", std::move(frames)},
|
||||
{"summary_ms",
|
||||
@@ -167,7 +169,8 @@ faset::runtime::RuntimeConfig simulationConfig(const nlohmann::json& scene) {
|
||||
}
|
||||
return config;
|
||||
}
|
||||
void validatePackagedShaders(const std::filesystem::path& directory) {
|
||||
void validatePackagedShaders(const std::filesystem::path& directory,
|
||||
faset::render::VisibilityMode visibilityMode) {
|
||||
const auto shaders = directory / "shaders";
|
||||
for (const auto* entry : {"vertexMain", "fragmentMain", "shadowMain"})
|
||||
for (const auto* extension : {".spv", ".reflection.json"}) {
|
||||
@@ -177,6 +180,8 @@ void validatePackagedShaders(const std::filesystem::path& directory) {
|
||||
faset::path_to_utf8(path));
|
||||
}
|
||||
faset::render::validate_shader_bundle(shaders);
|
||||
if (visibilityMode != faset::render::VisibilityMode::Direct)
|
||||
faset::render::validate_gpu_shader_bundle(shaders);
|
||||
}
|
||||
} // namespace
|
||||
int player_main(int argc, char** argv) {
|
||||
@@ -185,6 +190,8 @@ int player_main(int argc, char** argv) {
|
||||
std::filesystem::path scenePath, assetsPath, capturePath, controlPath, profilePath,
|
||||
projectRoot;
|
||||
bool headless = false, validateOnly = false, debugPhysics = false, watchLua = false;
|
||||
auto visibilityMode = faset::render::VisibilityMode::Direct;
|
||||
std::string visibilityName = "direct";
|
||||
std::uint64_t maximumFrames = 0;
|
||||
std::set<std::string> options;
|
||||
for (int i = 1; i < argc; ++i) {
|
||||
@@ -194,7 +201,7 @@ int player_main(int argc, char** argv) {
|
||||
<< "faset_player [--scene PATH] [--assets CACHE] [--frames N] "
|
||||
"[--headless] [--capture PATH.ppm] [--validate] [--control PATH] "
|
||||
"[--profile PATH.json] [--debug-physics] [--project ROOT] "
|
||||
"[--watch-lua]\n"
|
||||
"[--watch-lua] [--visibility direct|gpu-frustum|gpu-occlusion]\n"
|
||||
"No --scene: open scene.fscene beside the executable. CACHE contains "
|
||||
"assets/<id>/.\n"
|
||||
"Headless uses offscreen Vulkan; --frames uses the configured fixed "
|
||||
@@ -209,6 +216,9 @@ int player_main(int argc, char** argv) {
|
||||
"reload-lua): the scene restarts, runtime state is not preserved.\n"
|
||||
"--profile requires explicit --frames 1..100000; measured durations "
|
||||
"include the first frame and renderer GPU waits/readback.\n"
|
||||
"--visibility selects the renderer for this Player run; Direct is "
|
||||
"the default. GPU modes require their packaged shader bundle and "
|
||||
"device capabilities.\n"
|
||||
"Keys: A/D horizontal, W/S vertical, Space jump, E interact, P pause, "
|
||||
"N single-step, F3 physics boxes, Escape quit.\n";
|
||||
return 0;
|
||||
@@ -232,7 +242,18 @@ int player_main(int argc, char** argv) {
|
||||
profilePath = faset::path_from_utf8(value());
|
||||
else if (arg == "--project")
|
||||
projectRoot = faset::path_from_utf8(value());
|
||||
else if (arg == "--frames")
|
||||
else if (arg == "--visibility") {
|
||||
visibilityName = value();
|
||||
if (visibilityName == "direct")
|
||||
visibilityMode = faset::render::VisibilityMode::Direct;
|
||||
else if (visibilityName == "gpu-frustum")
|
||||
visibilityMode = faset::render::VisibilityMode::GpuFrustum;
|
||||
else if (visibilityName == "gpu-occlusion")
|
||||
visibilityMode = faset::render::VisibilityMode::GpuOcclusion;
|
||||
else
|
||||
throw std::invalid_argument("--visibility must be direct, gpu-frustum, "
|
||||
"or gpu-occlusion");
|
||||
} else if (arg == "--frames")
|
||||
maximumFrames = count(value());
|
||||
else if (arg == "--headless")
|
||||
headless = true;
|
||||
@@ -302,7 +323,7 @@ int player_main(int argc, char** argv) {
|
||||
const auto sceneReadFinished = Clock::now();
|
||||
if (scenePath.extension() == ".fscene" &&
|
||||
std::filesystem::equivalent(scenePath.parent_path(), executableRoot))
|
||||
validatePackagedShaders(executableRoot);
|
||||
validatePackagedShaders(executableRoot, visibilityMode);
|
||||
if (validateOnly) {
|
||||
if (!capturePath.empty() || !controlPath.empty())
|
||||
throw std::invalid_argument("--validate cannot capture or control a running game");
|
||||
@@ -342,8 +363,14 @@ int player_main(int argc, char** argv) {
|
||||
printGameplayLogs();
|
||||
faset::player::SceneView view(assetsPath);
|
||||
const auto rendererStarted = Clock::now();
|
||||
faset::render::Renderer renderer(
|
||||
{1280, 720, document.value("name", std::string("Faset Player")), headless, true});
|
||||
faset::render::RendererConfig renderConfig;
|
||||
renderConfig.width = 1280;
|
||||
renderConfig.height = 720;
|
||||
renderConfig.title = document.value("name", std::string("Faset Player"));
|
||||
renderConfig.headless = headless;
|
||||
renderConfig.validation = true;
|
||||
renderConfig.visibility_mode = visibilityMode;
|
||||
faset::render::Renderer renderer(renderConfig);
|
||||
const auto rendererReady = Clock::now();
|
||||
std::vector<ProfileSample> profile;
|
||||
if (!profilePath.empty())
|
||||
@@ -528,6 +555,10 @@ int player_main(int argc, char** argv) {
|
||||
printGameplayLogs();
|
||||
const auto renderStarted = Clock::now();
|
||||
renderer.render(snapshot);
|
||||
if (frames == 0 && visibilityMode != faset::render::VisibilityMode::Direct &&
|
||||
!renderer.stats().gpu_visibility_active)
|
||||
std::cerr << "Requested GPU visibility is unavailable on this device; "
|
||||
"using Direct rendering.\n";
|
||||
const auto frameFinished = Clock::now();
|
||||
if (frames == 0)
|
||||
firstFrameMs = milliseconds(started, frameFinished);
|
||||
@@ -539,7 +570,8 @@ int player_main(int argc, char** argv) {
|
||||
milliseconds(simulationFinished, snapshotFinished),
|
||||
milliseconds(renderStarted, frameFinished), measured.cpu_ms, measured.gpu_ms,
|
||||
measured.readback_cpu_ms, runtimeStats, measured.draw_calls, measured.vertices,
|
||||
measured.gpu_allocated_bytes, measured.texture_count, debugPhysics});
|
||||
measured.gpu_allocated_bytes, measured.texture_count, debugPhysics,
|
||||
measured.gpu_visibility_active});
|
||||
}
|
||||
++frames;
|
||||
}
|
||||
@@ -568,6 +600,7 @@ int player_main(int argc, char** argv) {
|
||||
{"validation_enabled", stats.validation_enabled},
|
||||
{"validation_errors", stats.validation_errors},
|
||||
{"presentation_mode", headless ? "offscreen" : "windowed"},
|
||||
{"visibility_mode", visibilityName},
|
||||
{"simulation_mode", "synthetic_fixed_timestep"},
|
||||
{"fixed_delta_seconds", config.fixedDelta},
|
||||
{"percentile_method", "nearest_rank_all_completed_frames_no_warmup_exclusion"},
|
||||
@@ -593,6 +626,8 @@ int player_main(int argc, char** argv) {
|
||||
{"ticks", completedTicks},
|
||||
{"dimension", document.value("dimension", 3)},
|
||||
{"device", stats.device},
|
||||
{"visibility_mode", visibilityName},
|
||||
{"gpu_visibility_active", stats.gpu_visibility_active},
|
||||
{"validation_errors", stats.validation_errors}}
|
||||
.dump()
|
||||
<< '\n';
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
if(TARGET faset_render)
|
||||
add_executable(faset_p2_visibility_example
|
||||
"${PROJECT_SOURCE_DIR}/examples/renderer/p2_visibility.cpp")
|
||||
target_link_libraries(faset_p2_visibility_example PRIVATE faset_render)
|
||||
endif()
|
||||
|
||||
if(TARGET faset_render AND BUILD_TESTING)
|
||||
add_executable(faset_render_gpu_visibility_tests
|
||||
"${PROJECT_SOURCE_DIR}/tests/render_gpu_visibility_tests.cpp")
|
||||
target_link_libraries(faset_render_gpu_visibility_tests PRIVATE faset_render)
|
||||
add_test(NAME gpu_visibility COMMAND faset_render_gpu_visibility_tests)
|
||||
endif()
|
||||
@@ -0,0 +1,14 @@
|
||||
# P2's image-equivalence tests use the real offscreen Vulkan renderer. Keep the benchmark
|
||||
# executable available without making performance thresholds part of CTest.
|
||||
if(BUILD_TESTING AND TARGET faset_render)
|
||||
add_executable(faset_render_gpu_acceptance_tests
|
||||
"${PROJECT_SOURCE_DIR}/tests/render_gpu_acceptance_tests.cpp")
|
||||
target_link_libraries(faset_render_gpu_acceptance_tests PRIVATE faset_render)
|
||||
foreach(FASET_VISIBILITY_CASE empty capacity dense door shadow cut resize lod
|
||||
teleport near lifecycle views projection open_sequence transparent)
|
||||
add_test(NAME "render_gpu_${FASET_VISIBILITY_CASE}"
|
||||
COMMAND faset_render_gpu_acceptance_tests --case "${FASET_VISIBILITY_CASE}")
|
||||
set_tests_properties("render_gpu_${FASET_VISIBILITY_CASE}"
|
||||
PROPERTIES LABELS "gpu;p2" TIMEOUT 120)
|
||||
endforeach()
|
||||
endif()
|
||||
@@ -17,6 +17,23 @@ foreach(FASET_ENTRY vertexMain fragmentMain shadowMain)
|
||||
DEPENDS "${PROJECT_SOURCE_DIR}/shaders/baseline.slang" "${PROJECT_SOURCE_DIR}/tools/compile_shader.py" VERBATIM)
|
||||
list(APPEND FASET_SHADER_OUTPUTS "${FASET_SHADER_OUTPUT}" "${FASET_SHADER_DIRECTORY}/${FASET_ENTRY}.reflection.json")
|
||||
endforeach()
|
||||
foreach(FASET_ENTRY gpuVertexMain gpuShadowMain gpuCullMain gpuHzbMain gpuPostCullMain)
|
||||
if(FASET_ENTRY STREQUAL "gpuVertexMain" OR FASET_ENTRY STREQUAL "gpuShadowMain")
|
||||
set(FASET_GPU_DEFINE FASET_GPU_GRAPHICS=1)
|
||||
elseif(FASET_ENTRY STREQUAL "gpuHzbMain")
|
||||
set(FASET_GPU_DEFINE FASET_GPU_HZB=1)
|
||||
else()
|
||||
set(FASET_GPU_DEFINE FASET_GPU_CULL=1)
|
||||
endif()
|
||||
set(FASET_SHADER_OUTPUT "${FASET_SHADER_DIRECTORY}/${FASET_ENTRY}.spv")
|
||||
add_custom_command(OUTPUT "${FASET_SHADER_OUTPUT}" "${FASET_SHADER_DIRECTORY}/${FASET_ENTRY}.reflection.json"
|
||||
COMMAND "${Python3_EXECUTABLE}" "${PROJECT_SOURCE_DIR}/tools/compile_shader.py"
|
||||
--compiler "${SLANGC_EXECUTABLE}" --source "${PROJECT_SOURCE_DIR}/shaders/gpu_scene.slang"
|
||||
--entry "${FASET_ENTRY}" --define "${FASET_GPU_DEFINE}" --output "${FASET_SHADER_DIRECTORY}"
|
||||
BYPRODUCTS "${FASET_SHADER_DIRECTORY}/${FASET_ENTRY}.slang-reflection.json"
|
||||
DEPENDS "${PROJECT_SOURCE_DIR}/shaders/gpu_scene.slang" "${PROJECT_SOURCE_DIR}/tools/compile_shader.py" VERBATIM)
|
||||
list(APPEND FASET_SHADER_OUTPUTS "${FASET_SHADER_OUTPUT}" "${FASET_SHADER_DIRECTORY}/${FASET_ENTRY}.reflection.json")
|
||||
endforeach()
|
||||
add_custom_command(OUTPUT "${FASET_SHADER_DIRECTORY}/compatibility.spv"
|
||||
COMMAND "${SLANGC_EXECUTABLE}" "${PROJECT_SOURCE_DIR}/shaders/compatibility.hlsl"
|
||||
-entry compatibilityMain -stage compute -target spirv -profile spirv_1_6
|
||||
@@ -49,6 +66,14 @@ if(BUILD_TESTING)
|
||||
FASET_PYTHON_EXECUTABLE="${Python3_EXECUTABLE}")
|
||||
add_test(NAME render_shader_reload COMMAND faset_render_reload_tests)
|
||||
set_tests_properties(render_shader_reload PROPERTIES LABELS "gpu")
|
||||
add_executable(faset_render_gpu_shader_contract_tests "${PROJECT_SOURCE_DIR}/tests/render_gpu_shader_contract_tests.cpp")
|
||||
target_include_directories(faset_render_gpu_shader_contract_tests PRIVATE "${PROJECT_SOURCE_DIR}/src/render")
|
||||
target_link_libraries(faset_render_gpu_shader_contract_tests PRIVATE faset_render faset_core)
|
||||
target_compile_definitions(faset_render_gpu_shader_contract_tests PRIVATE FASET_TEST_SHADER_DIRECTORY="${FASET_SHADER_DIRECTORY}")
|
||||
add_test(NAME render_gpu_shader_contract COMMAND faset_render_gpu_shader_contract_tests)
|
||||
add_test(NAME render_shader_reflection COMMAND "${CMAKE_COMMAND}" -E env
|
||||
"FASET_TEST_SLANGC=${SLANGC_EXECUTABLE}"
|
||||
"${Python3_EXECUTABLE}" "${PROJECT_SOURCE_DIR}/tests/test_shader_reflection.py")
|
||||
add_executable(faset_render_window_tests "${PROJECT_SOURCE_DIR}/tests/render_window_tests.cpp")
|
||||
target_link_libraries(faset_render_window_tests PRIVATE faset_render SDL3::SDL3)
|
||||
add_test(NAME render_window_lifecycle COMMAND faset_render_window_tests "${CMAKE_BINARY_DIR}/window-test")
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
if(TARGET faset_render)
|
||||
target_sources(faset_render PRIVATE "${PROJECT_SOURCE_DIR}/src/render/visibility.cpp")
|
||||
endif()
|
||||
if(TARGET faset_render AND BUILD_TESTING)
|
||||
add_executable(faset_render_visibility_policy_tests
|
||||
"${PROJECT_SOURCE_DIR}/tests/render_visibility_policy_tests.cpp")
|
||||
target_link_libraries(faset_render_visibility_policy_tests PRIVATE faset_render)
|
||||
add_test(NAME visibility_policy COMMAND faset_render_visibility_policy_tests)
|
||||
endif()
|
||||
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 8.6 KiB |
@@ -0,0 +1,21 @@
|
||||
# P2 visibility diagnostics visual reference
|
||||
|
||||

|
||||
|
||||
Generated with the built-in image generation tool before implementing the developer overlay. This is a visual prototype, not a Faset screenshot or a feature specification. The greybox scene, values, metrics, and viewport controls in the generated image are illustrative. In particular, Faset does not report the prototype's triangle-visibility, HZB texture-size, or history-length numbers.
|
||||
|
||||
The implementation uses the prototype's compact three-mode visibility selector, near-black surfaces, restrained lavender selection, simple dividers, and grouping. It only reports actual `Renderer::FrameStats` fields and retains the existing ImGui diagnostics behavior. The runtime renderer and source code define functionality.
|
||||
|
||||

|
||||
|
||||
The second image is the actual 640 × 420 test capture with a deliberately empty scene. It verifies the selected GPU frustum button and the real counters, with the panel scrolling on a small viewport.
|
||||
|
||||
## Current-HZB preview extension
|
||||
|
||||

|
||||
|
||||
The updated prototype was made with the built-in image editing tool before adding the preview control. Its HZB thumbnail and status values are illustrative. The actual overlay exposes **Show HZB** only as an on-demand diagnostic, offers a mip selector, and uses a real GPU depth-pyramid readback. It does not read back HZB while the preview is off.
|
||||
|
||||

|
||||
|
||||
This 640 × 700 capture is the real developer overlay drawing mip 3 of a cube scene's current HZB. The first frame has already completed, so the displayed visibility counters are actual GPU-read values. The default panel grows when the preview is enabled; on a shorter display it remains scrollable.
|
||||
|
After Width: | Height: | Size: 1.4 MiB |
@@ -1,6 +1,6 @@
|
||||
# Faset Engine — архитектура
|
||||
|
||||
Редакция 1.1 · 18 сентября 2026 · **принятый проект, реализация MVP в процессе**.
|
||||
Редакция 1.2 · 23 сентября 2026 · **MVP принят; реализация P2 описана отдельно от исходных решений**.
|
||||
|
||||
Этот файл фиксирует решения пользователя. **Принято** означает выбранное направление реализации, а не автоматически завершённую возможность движка. Работающий код, выполненные проверки и текущие ограничения перечислены в [журнале реализации](IMPLEMENTATION.md). Этапы до MVP и после него, зависимости работ и критерии готовности находятся в [PLAN.md](../PLAN.md).
|
||||
|
||||
@@ -83,12 +83,14 @@ Catch-up ограничен числом ticks за проход главног
|
||||
|
||||
2D и 3D имеют отдельные миры и spatial-типы. Для динамического тела итоговым transform владеет физика; teleport и кинематическое управление — отдельные операции. Физическое тело связано с entity через проверяемый handle. Миры 2D и 3D не сталкиваются автоматически. Внутренние substeps solver настраиваются отдельно от частоты gameplay ticks; начальная настройка — четыре substeps с проверкой на сценах проекта.
|
||||
|
||||
Собственный Vulkan 1.3 renderer получает подготовленный snapshot, не обходит изменяемый EnTT registry с render thread. RenderGraph описывает reads/writes ресурсов, порядок проходов, barriers и lifetimes. Первым нужен проверяемый raster-путь 2D/3D без обязательных RT/mesh shaders; GPU-driven visibility и другие передовые механизмы добавляются по измеримым этапам из [плана](../PLAN.md).
|
||||
Собственный Vulkan 1.3 renderer получает подготовленный snapshot, не обходит изменяемый EnTT registry с render thread. RenderGraph описывает reads/writes ресурсов, порядок проходов, barriers и lifetimes. MVP создал проверяемый raster-путь 2D/3D без обязательных RT/mesh shaders. P2 добавил выбираемые GPU frustum и GPU occlusion режимы для opaque static meshes; Direct остаётся начальным режимом и эталоном. Scene extraction задаёт устойчивые keys для постоянных объектов; renderer отслеживает generation и консервативные bounds. `DrawItem` может содержать заранее подготовленные LOD meshes. CPU формирует фиксированные совместимые bins, GPU заполняет visible IDs и `instanceCount` для indirect draws. В occlusion-режиме previous HZB даёт предварительное решение, а current HZB и PostCull возвращают объекты, которые открылись в этом кадре. Camera cut, несовместимые view/projection/extent и смена instance generation инвалидируют историю. Тени, прозрачные meshes, спрайты и UI не теряют независимый порядок из-за camera culling. Точная реализованная область и проверка приведены в [P2 acceptance](studies/19-p2-gpu-visibility-acceptance.md).
|
||||
|
||||
**Vulkan API вызывается напрямую внутри собственного backend Faset.** Он владеет Vulkan handles, созданием GPU-ресурсов и pipelines, записью команд, синхронизацией и отправкой в очереди. Renderer и RenderGraph используют небольшой внутренний интерфейс ресурсов и команд Faset; Vulkan-типы и вызовы `vk*` не входят в gameplay API или команды редактора. SDL3 обеспечивает окно и создание Vulkan surface, но не заменяет графический backend; Slang отвечает за компиляцию шейдеров. Универсальная абстракция нескольких графических API не является задачей MVP.
|
||||
|
||||
Slang компилирует шейдеры в SPIR-V и выдаёт сведения для согласования CPU/GPU данных. Совместимый HLSL проходит выбранный pipeline; поддержка любого существующего HLSL-кода не обещается. Cook учитывает compiler/version, includes, defines и GPU profile. Nanite/Lumen-подобные системы остаются исследовательскими направлениями, не готовыми возможностями MVP.
|
||||
|
||||
P2 не требует синхронного чтения GPU-счётчиков для решения видимости: readback включается редакторской диагностикой. Current HZB preview также читается только по запросу. Существующий путь полного framebuffer capture всё ещё ждёт GPU, поэтому измерения полной длительности кадра включают эту стоимость; `gpu_ms` и времена отдельных проходов не заменяют полную CPU/GPU-профилировку. [Первое измерение](studies/20-p2-gpu-visibility-benchmark-2026-09-23.md) обнаружило дорогой MainCull на Linux reference GPU в Debug/validation. [Повтор после оптимизации](studies/21-p2-gpu-visibility-optimization-2026-09-23.md) отдельно измерил эффект device-local выходных буферов и замены CAS-цикла на atomic add: MainCull p50 уменьшился до 0,030–0,042 мс в тех же синтетических сценах. Direct остаётся performance default до проверки Release-сборки и игровых нагрузок. Mesh LOD выбирается среди заранее подготовленных вариантов с hysteresis; генерация LOD, streaming и cluster geometry пока не реализованы. GPU-режимы дополнительно проверяют необходимые limits/formats устройства и не считаются доступными на любом Vulkan 1.3 GPU без такой проверки.
|
||||
|
||||
## 8. Blender и ассеты — принято
|
||||
|
||||
Используется **обычный Blender**, без обязательного форка или установленного MCP-плагина. Базовый обмен — **GLB и manifest со стабильными asset/subasset IDs**. Обычный экспорт принимается движком; удобный add-on для публикации, UUID и повторного экспорта остаётся необязательным помощником. Если источник не предоставляет устойчивые subasset IDs, importer не обещает надёжно угадать соответствие после произвольного rename/reparent: сохраняет mapping и показывает конфликты.
|
||||
@@ -111,5 +113,6 @@ Development и release Player содержат runtime, выбранные иг
|
||||
- **18.09.2026:** принят порядок C++ → Lua, затем EnTT, собственный retained UI, SDL3, Vulkan 1.3/RenderGraph/Slang и CMake/Ninja/Clang.
|
||||
- **18.09.2026:** утверждены процессы и linkage, явная metadata registration/schema export, JSON/binary formats, вложенные шаблоны/sparse overrides, lifecycle, фиксированный tick и последовательный scheduler; граница MCP ограничена Editor/headless authoring services.
|
||||
- **18.09.2026:** английский принят основным языком интерфейса, диагностик и публичного API; уточнена граница прямых Vulkan-вызовов внутри собственного backend.
|
||||
- **23.09.2026:** после принятого MVP выполнен P2 GPU visibility/LOD на Linux reference GPU; direct renderer сохранён как начальный режим и эталон, ограничения и измерения вынесены в отдельный [протокол](studies/19-p2-gpu-visibility-acceptance.md).
|
||||
|
||||
Реализация идёт по [PLAN.md](../PLAN.md). Последующие изменения принятых контрактов фиксируются здесь с причиной и способом проверки.
|
||||
|
||||
@@ -338,3 +338,90 @@ GPU/driver families. Widget composition/DPI, SDL text-input boundaries, XWayland
|
||||
Windows window lifecycle have their own passing evidence. The narrow static-mesh,
|
||||
root-level box-physics, one-window/C++ MVP profile remains explicit. Lua and advanced
|
||||
graphics are later work. UI references guide appearance; they do not define behavior.
|
||||
|
||||
## Post-MVP checkpoint — P2 GPU visibility and prepared mesh LOD
|
||||
|
||||
The historical MVP statement above describes the `v0.1.0-mvp` scope. Subsequent
|
||||
work added the optional Lua module and the P2 visibility path. The P2 renderer keeps
|
||||
`VisibilityMode::Direct` as its default and reference. Scene extraction supplies
|
||||
stable per-primitive keys and view metadata. `DrawItem` accepts optional prepared
|
||||
coarse meshes. The renderer tracks generation-checked temporal identity and previous
|
||||
rendered transforms, derives conservative bounds, and selects a prepared LOD by
|
||||
projected size with hysteresis. There is no automatic mesh
|
||||
decimator or cluster/streaming geometry system.
|
||||
|
||||
For opaque static meshes, `GpuFrustum` groups compatible geometry/material into
|
||||
fixed bins and fills indirect instance counts/visible IDs on the GPU. `GpuOcclusion`
|
||||
adds previous-frame HZB classification, Main raster, a current forward-Z furthest-depth
|
||||
HZB, and Post culling/raster so a newly revealed object can appear in the same final
|
||||
frame. History resets on camera cut, changed view/extent/projection, and incompatible
|
||||
instance identity. Shadow casters, transparent meshes, sprites and UI remain on their
|
||||
independent paths; they are not hidden by the camera's opaque HZB. The GPU modes are
|
||||
lazy-initialized and require the checked Vulkan capabilities and shader bundle.
|
||||
Shader reload rebuilds both direct and GPU scene pipelines, preserving the working
|
||||
pipelines on failure.
|
||||
|
||||
The Editor's ImGui diagnostics can select Direct, GPU frustum or GPU occlusion,
|
||||
inspect pass timings/counters and request a current-HZB preview. A Player run can
|
||||
choose `--visibility direct|gpu-frustum|gpu-occlusion`; Direct remains its default.
|
||||
The profile records the requested mode and per-frame `gpu_visibility_active` so a
|
||||
silent fallback is not mistaken for measured GPU work. The Release Player CLI test
|
||||
checks all three modes and rejects an invalid value. Counter and HZB readback are
|
||||
opt-in diagnostics; the visibility decision itself stays on the GPU.
|
||||
The existing framebuffer capture still waits for completion and reads back each
|
||||
frame. Consequently, full-frame benchmark times include that path and must not be
|
||||
presented as isolated culling costs.
|
||||
|
||||
At renderer checkpoint `ae537c0`, the Linux reference build's full CTest suite
|
||||
reported 57 registered tests, zero failures and one existing native-window lifecycle
|
||||
skip. Fifteen offscreen P2 acceptance cases passed with Vulkan validation active and
|
||||
zero reported errors, including capacity boundaries, door reveal, camera changes,
|
||||
multi-view history, LOD hysteresis, shadow independence and transparency. Shader
|
||||
reflection/export and GPU shader reload have focused tests. The
|
||||
[P2 acceptance protocol](studies/19-p2-gpu-visibility-acceptance.md) contains the
|
||||
command, tolerance and scene definitions. The
|
||||
[initial three-run benchmark report](studies/20-p2-gpu-visibility-benchmark-2026-09-23.md)
|
||||
retains all 810 raw frame records, device/build details, p50/p95 values and limits.
|
||||
At that pre-optimization checkpoint, GPU `MainCull` took about 3.9–18.2 ms p50 in
|
||||
three synthetic Debug/validation scenes, far above the direct path's 0.24–0.50 ms
|
||||
whole-GPU p50. This was an actionable regression, not the final P2 performance.
|
||||
|
||||
Optimization checkpoint `3be3d0d` moves GPU-written indirect arguments, visible IDs
|
||||
and deferred buffers into device-local memory, uses staging copies for initialization
|
||||
and optional diagnostics, and replaces contended CAS loops with bounded atomic add.
|
||||
The [three-variant follow-up](studies/21-p2-gpu-visibility-optimization-2026-09-23.md)
|
||||
isolates memory placement and then the shader change. With the same Debug/validation
|
||||
scenes, `MainCull` p50 fell to 0.030–0.042 ms. Full GPU-command p50 for the open
|
||||
GPU-frustum scene was 0.139 ms versus 0.498 ms direct; the occluded GPU-occlusion
|
||||
scene was 0.188 ms versus 0.496 ms direct. All 2,430 sampled frames across variants
|
||||
reported zero Vulkan validation errors; the final focused suite passed 18/18 and
|
||||
both culling shaders passed `spirv-val`. These synthetic results do not establish
|
||||
a shipping-frame speedup, especially on another device or game scene. These checks
|
||||
establish the tested Linux configuration; they do not
|
||||
establish P2 behavior on a physical Windows GPU or a broad driver matrix. The
|
||||
[profiling manual](manual/editor/profiling.md) explains how to interpret the timings.
|
||||
|
||||
The independent Linux Release build completed all targets, including the prepared
|
||||
LOD example. Its full CTest run reported 57 registered tests, zero failures and
|
||||
one existing native-window lifecycle skip. The focused Release Player CLI test
|
||||
selected all three visibility modes, verified active GPU status in the profile,
|
||||
and rejected an invalid mode. Release build/test success establishes functional
|
||||
coverage; it does not replace a Release performance comparison or a Windows P2 run.
|
||||
|
||||
As an additional Linux software-Vulkan check, Lavapipe ran all 15 labelled P2
|
||||
acceptance cases plus the standalone GPU visibility test and both example modes.
|
||||
The GPU route was active and Vulkan validation reported zero errors. This adds a
|
||||
second implementation for functional checks; Lavapipe timings are not physical-GPU
|
||||
performance evidence.
|
||||
|
||||
The [P2 Linux evidence dossier](validation/p2-gpu-visibility-2026-09-23/README.md)
|
||||
retains the exact Release builds, labelled GPU cases and relocated standalone Player
|
||||
checks. Both sample games passed a fresh Release export, Unicode relocation away
|
||||
from the SDK and 120 headless frames with validation and zero errors. Their packages
|
||||
also ran six frames in each GPU visibility mode with an active GPU path and zero
|
||||
validation errors. The 2D Direct/GPU captures matched pixel-for-pixel. The 3D GPU
|
||||
modes matched each other; each differed from Direct at 7 of 921,600 raster-edge
|
||||
pixels, with no missing geometry. Direct CPU vertex transformation and GPU shader
|
||||
vertex transformation round differently at subpixel triangle boundaries. The
|
||||
Debug benchmarks above and this Release functional record have different purposes;
|
||||
neither establishes physical Windows GPU coverage.
|
||||
|
||||
@@ -10,7 +10,11 @@ build/linux-debug/faset_editor --project examples/projects/collect-3d --gui
|
||||
|
||||
On Windows, use `windows-debug` for both presets and `build/windows-debug/faset_editor.exe`. Press **F12** to show or hide the panel. Drag its title bar to move it; **Freeze counters** holds a completed-frame sample for inspection. Closing the panel does not stop rendering. Pointer gestures inside the overlay are kept out of the authoring UI.
|
||||
|
||||
The panel reports the previous completed frame: renderer wall time, GPU timestamp time where available, synchronous readback time, draw calls, packed vertices, culled meshes, textures, explicit Vulkan allocation sizes, actual validation availability/errors, and GPU pass-label count. Renderer wall time includes waiting for GPU work; it is not thread CPU usage. Memory excludes driver-internal allocations. The overlay itself adds drawing work, so hide it for a baseline performance measurement.
|
||||
Use the **Visibility** selector to compare **Direct**, **GPU frustum**, and **GPU occlusion** on the same open scene. This is a live renderer setting for the Editor viewport; it does not change the scene or exported game. The selected mode is independent of **Freeze counters**. The counters describe the previous completed frame, so render one more frame after changing modes before reading them. **Path: active** under GPU visibility confirms that the GPU path actually ran; a selected GPU mode by itself is not evidence that it ran.
|
||||
|
||||
The panel reports the previous completed frame: renderer wall time, GPU timestamp time where available, synchronous readback time, draw calls, packed vertices, culled meshes, textures, explicit Vulkan allocation sizes, actual validation availability/errors, and GPU pass-label count. It also shows whether GPU visibility ran, submitted indirect bins, visible instances, frustum rejects, deferred and post-pass visible instances, HZB history validity, counts per prepared LOD level, and GPU pass timings where available. GPU counts are explicitly marked unavailable until the first frame rendered with diagnostics open; only a displayed zero is a measured zero. **Previous HZB history: invalid** is expected after a camera cut or resize until compatible depth history is available. A current HZB preview can still exist after that first frame because it was built from the current depth. Renderer wall time includes waiting for GPU work; it is not thread CPU usage. Memory excludes driver-internal allocations. The overlay itself adds drawing work, so hide it for a baseline performance measurement.
|
||||
|
||||
In **GPU occlusion** mode, enable **Show HZB** to inspect the current grayscale depth pyramid. The **Mip** slider selects a pyramid level; the preview starts at mip 3 to keep its readback small. A larger mip number shows coarser depth. The preview reads the HZB only while the panel and toggle are open, and only once per completed frame or mip change. Switching it off or closing the panel releases the preview; its GPU texture retires when the next frame begins. Opening diagnostics also enables readback of GPU visibility counters, which is disabled again when the panel closes. Disable the HZB preview for performance comparisons: its diagnostic copy and texture upload add GPU and CPU work. **Freeze counters** does not freeze the HZB image.
|
||||
|
||||
The Vulkan backend emits `VK_EXT_debug_utils` labels for `ShadowMap`, `ForwardAndUI`, `Readback`, and, when presenting, `Presentation`. A graphics capture tool that supports this extension can identify those command-buffer regions. Labels remain available without the Khronos validation layer when the extension is exposed; unsupported systems continue rendering and report labels unavailable. A submitted-label count confirms calls were emitted, not that an external capture tool was tested.
|
||||
|
||||
|
||||
@@ -67,11 +67,63 @@ report. A dirty source checkout is explicitly identified.
|
||||
relocated Release packages and records their Player profiles. Its assertions test
|
||||
correct execution, not a frame-time threshold.
|
||||
|
||||
## Compare P2 GPU visibility modes
|
||||
|
||||
The Editor diagnostics panel (**F12**) can switch its current viewport between
|
||||
**Direct**, **GPU frustum**, and **GPU occlusion**. Direct is the default reference.
|
||||
The selector is an Editor viewport setting; it does not change the saved scene or
|
||||
automatically change an exported Player. An exported Player can select a mode for a
|
||||
bounded run:
|
||||
|
||||
```sh
|
||||
./faset_player --headless --frames 240 --profile gpu-frustum.json --visibility gpu-frustum
|
||||
```
|
||||
|
||||
Accepted values are `direct`, `gpu-frustum`, and `gpu-occlusion`; Direct is the
|
||||
default. The profile records the requested `visibility_mode` and each frame's
|
||||
`gpu_visibility_active` state. Check that state when interpreting a GPU run: a
|
||||
requested mode can fall back if the required device profile is unavailable. The
|
||||
Editor reports the same distinction as **Path: active**. See
|
||||
[Diagnostics](diagnostics.md) for the counters and HZB preview.
|
||||
|
||||
For a repeatable offscreen comparison, build and run the P2 benchmark harness:
|
||||
|
||||
```sh
|
||||
build/linux-debug/faset_render_gpu_acceptance_tests --benchmark /tmp/faset-p2.csv
|
||||
```
|
||||
|
||||
It records 10 warm-up and 30 measured frames for Direct, GPU frustum and GPU
|
||||
occlusion in fixed frustum-heavy, open and occluded scenes. Run it three times and
|
||||
compare median/p95 by scene and mode. Keep the raw CSV, hardware/driver, resolution,
|
||||
shader bundle, validation state and source revision with any published result. The
|
||||
[P2 acceptance protocol](https://github.com/emil28092005/Faset_Engine/blob/main/docs/studies/19-p2-gpu-visibility-acceptance.md)
|
||||
documents the scenes and CSV columns. The
|
||||
[first measured report](https://github.com/emil28092005/Faset_Engine/blob/main/docs/studies/20-p2-gpu-visibility-benchmark-2026-09-23.md)
|
||||
is a **pre-optimization baseline**: its Debug/validation profile found GPU MainCull
|
||||
substantially more expensive than direct GPU work. The
|
||||
[optimized follow-up](https://github.com/emil28092005/Faset_Engine/blob/main/docs/studies/21-p2-gpu-visibility-optimization-2026-09-23.md)
|
||||
retains three additional raw runs and isolates the effects of device-local output
|
||||
buffers and bounded atomic append. MainCull p50 fell to 0.030–0.042 ms in those
|
||||
synthetic scenes. That comparison is useful for diagnosis, not a guarantee that
|
||||
GPU visibility speeds up a particular game or device.
|
||||
|
||||
The harness enables GPU visibility counters, so diagnostic readback is part of its
|
||||
timings. In the Editor, opening diagnostics likewise enables these counters, and
|
||||
**Show HZB** adds an on-demand image copy and preview upload. Close the panel and
|
||||
disable the HZB preview for ordinary gameplay timing. GPU pass timestamps separate
|
||||
MainCull, MainRaster, HZB, PostCull and PostRaster when supported; they are not a
|
||||
measure of CPU extraction/upload. The renderer still waits for frame completion
|
||||
and reads back the full image, so `cpu_ms` is wall time including waits, not CPU
|
||||
utilization. An open scene can run slower with HZB; visibility correctness and
|
||||
full-frame speed are separate findings.
|
||||
|
||||
## Current performance scope
|
||||
|
||||
The MVP renderer is intentionally conservative: direct draws, CPU culling, one
|
||||
graphics queue and synchronous capture/readback. Use the measurements to find the
|
||||
next bottleneck before introducing parallel jobs or GPU-driven rendering. Neither
|
||||
an offscreen capture benchmark nor a tiny demo is a promise of a production frame
|
||||
budget. Observed measurements and follow-up targets belong in the implementation
|
||||
acceptance report with their source revision and method.
|
||||
The accepted MVP path uses direct draws and CPU culling; P2 adds optional GPU
|
||||
visibility for opaque static meshes, with prepared LODs supplied by the project.
|
||||
Both paths currently use one graphics queue and synchronous full-image
|
||||
capture/readback. Use measurements to find the next bottleneck before introducing
|
||||
parallel jobs or expanding GPU-driven rendering. Neither an offscreen capture
|
||||
benchmark nor a tiny demo is a promise of a production frame budget. Observed
|
||||
measurements and follow-up targets belong in the implementation acceptance report
|
||||
with their source revision and method.
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
# GPU visibility and prepared mesh LOD
|
||||
|
||||
Faset can draw opaque static triangle meshes through GPU frustum culling and,
|
||||
optionally, two-pass HZB occlusion. The original direct renderer remains available
|
||||
for comparison. In the Editor, build with `FASET_DEBUG_IMGUI=ON`, press **F12**,
|
||||
and choose **Direct**, **GPU frustum**, or **GPU occlusion** in Diagnostics. **Path:
|
||||
active** confirms that the selected GPU path actually ran. See
|
||||
[developer diagnostics](diagnostics.md) for the HZB preview and counters.
|
||||
|
||||
The current GPU path groups instances with the same mesh and texture into fixed
|
||||
indirect draw bins. A previous-frame HZB can defer an object, but the current-frame
|
||||
post pass checks it again before the final image. Sprites, editor UI, transparent
|
||||
meshes, and shadow casters keep their existing ordered or shadow paths. This option
|
||||
does not require ray tracing or mesh shaders.
|
||||
|
||||
## Supply prepared LODs from C++
|
||||
|
||||
`DrawItem::mesh` is LOD 0. Set `lod_meshes[0]` to a prepared LOD 1 mesh,
|
||||
`lod_meshes[1]` to LOD 2, and so on. These are actual `Mesh` objects with a
|
||||
complete triangle list; Faset does not simplify a source mesh automatically.
|
||||
Keep a stable `instance_key` across frames. Give different scene objects different
|
||||
keys, and retain the same shared mesh objects instead of rebuilding them every
|
||||
frame. For a manually constructed `Snapshot`, supply both `projection` and
|
||||
`view_projection`; set `view_id` for each camera and `camera_cut` when switching
|
||||
shots. The Player's scene extraction fills the camera fields and instance keys.
|
||||
|
||||
```cpp
|
||||
faset::render::DrawItem draw;
|
||||
draw.mesh = prepared_high_detail;
|
||||
draw.lod_meshes = {prepared_medium_detail, prepared_low_detail};
|
||||
draw.instance_key = "scene/object-id/primitive-id";
|
||||
draw.model = faset::render::transform({0, 0, 0});
|
||||
snapshot.draws.push_back(std::move(draw));
|
||||
```
|
||||
|
||||
LOD selection uses projected screen size. The first transition is 192 pixels;
|
||||
each additional level halves that threshold. A 12% hysteresis band avoids
|
||||
switching back and forth near a boundary. Missing levels fall back to an available
|
||||
mesh. Changing level invalidates that instance's temporal occlusion state while
|
||||
preserving its logical key. `FrameStats::lod_counts` reports selected levels 0–3
|
||||
(higher levels are included in the final bucket).
|
||||
|
||||
For a runnable C++ example, build `faset_p2_visibility_example` and capture the
|
||||
same scene in any mode:
|
||||
|
||||
```sh
|
||||
cmake --build --preset linux-debug --target faset_p2_visibility_example
|
||||
build/linux-debug/faset_p2_visibility_example occlusion /tmp/p2-visibility.ppm
|
||||
build/linux-debug/faset_p2_visibility_example direct /tmp/p2-direct.ppm
|
||||
```
|
||||
|
||||
The example creates a fine cube and a prepared coarse tetrahedron in
|
||||
[`examples/renderer/p2_visibility.cpp`](https://github.com/emil28092005/Faset_Engine/blob/main/examples/renderer/p2_visibility.cpp).
|
||||
Its near object selects LOD 0 and the eight smaller objects select LOD 1;
|
||||
the program prints those counts and reports Vulkan validation errors.
|
||||
Imported GLB geometry can be supplied as prepared levels by C++ integration,
|
||||
but automatic LOD generation and assigning a GLB's alternate meshes as LODs in
|
||||
the Inspector are not implemented yet.
|
||||
|
||||
## Measure before choosing a mode
|
||||
|
||||
The GPU route saves per-instance CPU vertex transformation and direct draw
|
||||
submission, but its compute passes and indirect rendering have a cost. Keep the
|
||||
same scene, resolution and camera path when comparing modes. Hide Diagnostics for
|
||||
an ordinary Player measurement: opening it enables GPU counter readback, while
|
||||
**Show HZB** adds a separate image copy. The renderer currently captures and
|
||||
waits for every frame even without this overlay. Read
|
||||
[profiling and measurements](profiling.md) and the
|
||||
[P2 acceptance study](https://github.com/emil28092005/Faset_Engine/blob/main/docs/studies/19-p2-gpu-visibility-acceptance.md)
|
||||
for the measured scope and limitations.
|
||||
|
||||
## Select a mode in the Player
|
||||
|
||||
The exported Player uses Direct by default. Choose a GPU mode for one run with
|
||||
`--visibility`; the same option works for a development Player and a relocated
|
||||
standalone game:
|
||||
|
||||
```sh
|
||||
./faset_player --visibility gpu-frustum
|
||||
./faset_player --visibility gpu-occlusion --headless --frames 120 \
|
||||
--profile visibility-profile.json
|
||||
```
|
||||
|
||||
Accepted values are `direct`, `gpu-frustum`, and `gpu-occlusion`. The profile
|
||||
records the requested `visibility_mode` and each frame's
|
||||
`gpu_visibility_active` status. If the device lacks the GPU path, the Player
|
||||
reports a Direct fallback; selecting a mode alone does not prove that it ran.
|
||||
The Editor's Diagnostics selector changes only its viewport and does not save a
|
||||
Player setting. An exported game contains the P2 shader bundle and does not need
|
||||
the Slang compiler at runtime.
|
||||
@@ -11,7 +11,9 @@ and how those functions interact with scenes, physics, and the editor.
|
||||
[acceptance dossier](https://github.com/emil28092005/Faset_Engine/blob/main/docs/validation/mvp-acceptance.md)
|
||||
for exact source revisions and coverage limits. The optional Lua module is
|
||||
documented separately; those historical acceptance results do not certify later
|
||||
changes. Advanced graphics remain later milestones.
|
||||
changes. GPU visibility and prepared mesh LOD arrived after that MVP; see the
|
||||
[visibility guide](editor/visibility-lod.md). Advanced lighting and geometry
|
||||
systems remain later milestones.
|
||||
|
||||
Start with [how gameplay works](scripting/index.md), then read
|
||||
[frame and physics updates](scripting/lifecycle.md). See
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# 15. Первый GPU-driven renderer Faset: данные, порядок проходов и проверка корректности
|
||||
|
||||
Исследование от 17 сентября 2026; проектные решения обновлены 18 сентября 2026. Это продолжение [обзора UE](07-unreal-graphics-source-study.md): здесь разобран контракт одного будущего GPU-driven прототипа. **Принято, реализация запланирована:** собственные Vulkan 1.3 backend и Render Graph, Slang → SPIR-V, SDL3, Linux/Windows desktop 2D/3D, базовый путь без обязательного RT. Поддерживаемые модели GPU и проверенная матрица драйверов ещё не определены. Актуальные границы — в [архитектуре](../ARCHITECTURE.md) и [плане до/после MVP](../../PLAN.md).
|
||||
Исследование от 17 сентября 2026; проектные решения обновлены 18 сентября 2026. Это продолжение [обзора UE](07-unreal-graphics-source-study.md): здесь разобран контракт тогда ещё будущего GPU-driven прототипа. **Исторический проектный материал:** собственные Vulkan 1.3 backend и Render Graph, Slang → SPIR-V, SDL3, Linux/Windows desktop 2D/3D, базовый путь без обязательного RT. Ниже сохранены гипотезы и предложения в том виде, в каком они предшествовали реализации; они не доказывают свойства кода. Фактически реализованный P2 и измерения от 23 сентября 2026 описаны в [отдельной приёмке](19-p2-gpu-visibility-acceptance.md) и [журнале](../IMPLEMENTATION.md). Актуальные границы — в [архитектуре](../ARCHITECTURE.md) и [плане](../../PLAN.md).
|
||||
|
||||
**Место в плане:** M2 (базовая графика MVP) использует direct renderer с CPU frustum culling, простым PBR/тенями и отдельным упорядоченным 2D-путём; обе демки должны собираться в самостоятельный Player. GPU culling, indirect draws, HZB и LOD из этого исследования начинаются **после MVP, в P2**, с сохранением direct reference. Сначала fixed indirect bins и frustum, затем two-pass HZB, затем обычный mesh LOD с hysteresis. Кластерный LOD и streaming — дальнейшее исследование. Минимальный Render Graph с одной очередью и корректными barriers/lifetime нужен уже MVP; pass culling, aliasing и async compute не обязательны.
|
||||
**Место в плане на момент исследования:** M2 (базовая графика MVP) использует direct renderer с CPU frustum culling, простым PBR/тенями и отдельным упорядоченным 2D-путём; обе демки должны собираться в самостоятельный Player. GPU culling, indirect draws, HZB и LOD были намечены **после MVP, в P2**, с сохранением direct reference. Порядок: fixed indirect bins и frustum, затем two-pass HZB, затем обычный mesh LOD с hysteresis. Кластерный LOD и streaming — дальнейшее исследование. Минимальный Render Graph с одной очередью и корректными barriers/lifetime нужен уже MVP; pass culling, aliasing и async compute не обязательны.
|
||||
|
||||
**Граница инструментов:** MCP работает только в редакторе, включая headless authoring/import/build, Play/Stop и логи редактора. Player — отдельный процесс с отдельным окном, без MCP; чтение/изменение runtime worlds и игровых сессий через MCP исключено. Диагностика renderer и ручной GPU capture не превращаются в канал MCP-доступа к Player.
|
||||
|
||||
Источники привязаны к [source-manifest.json](source-manifest.json): UE 5.8.2, commit `16d75d84714512edfb744e1fd0a59e9c74d57873`; Godot 4.8-dev, commit `9c776068d6ed23acd0c78bfe534272d1d2a3a619`. Прочитаны выбранные тела C++ и shader-функций, затем официальные Vulkan/D3D12 документы. Репозитории не изменялись. Движки и GPU-прототип не запускались; ускорения, совместимость конкретных карт и качество culling измерениями не подтверждены. **«Факт»** ниже относится к просмотренному коду/документу; **«предложение»** — к нашему проекту; гипотезы отмечены отдельно.
|
||||
Источники привязаны к [source-manifest.json](source-manifest.json): UE 5.8.2, commit `16d75d84714512edfb744e1fd0a59e9c74d57873`; Godot 4.8-dev, commit `9c776068d6ed23acd0c78bfe534272d1d2a3a619`. Прочитаны выбранные тела C++ и shader-функций, затем официальные Vulkan/D3D12 документы. Репозитории не изменялись. **На момент исследования** сторонние движки и GPU-прототип Faset не запускались; ускорения, совместимость конкретных карт и качество culling измерениями не подтверждались. **«Факт»** ниже относится к просмотренному коду/документу; **«предложение»** — к нашему проекту; гипотезы отмечены отдельно.
|
||||
|
||||
## 1. Полезный результат не требует полного GPU command processor
|
||||
|
||||
@@ -129,4 +129,8 @@ D3D12 подтверждает переносимость самой идеи,
|
||||
|
||||
Главное дополнение к 07: фиксированные CPU draw templates совместимы с GPU instance visibility; velocity target не требуется для первого HZB; history extraction — output/lifetime контракт; camera reset заменяет весь previous-view набор; indirect и vertex reads требуют разных зависимостей; неполный Main HZB может быть начальным вариантом истории с измеряемой ценой в эффективности.
|
||||
|
||||
Прочитаны тела UE `FInstanceCullingContext` создания buffers/submission, `InstanceCullBuildInstanceIdBufferCS`, `ClearIndirectArgInstanceCountCS`, Nanite `FBoxCull::HZB`, `WriteOccludedInstance` и main/HZB/post orchestration; `BuildHZB`, `HZBBuildCS` и HZB parameter helpers; previous-view setup/reset в SceneVisibility; RDG import/extraction, barrier compile/collection и resource reference handling. В Godot — indirect draw validation/tracking и named render-buffer creation/configuration/cleanup. В интернете — официальные Vulkan indirect/features/synchronization и Microsoft D3D12 indirect signatures. В этом исследовании не проверялись формат/driver capability matrix и runtime-поведение. Позднейшие проверки базового Faset renderer публикуются отдельно в [docs/validation](../validation/README.md); они не подтверждают GPU-driven техники этого раздела.
|
||||
Прочитаны тела UE `FInstanceCullingContext` создания buffers/submission, `InstanceCullBuildInstanceIdBufferCS`, `ClearIndirectArgInstanceCountCS`, Nanite `FBoxCull::HZB`, `WriteOccludedInstance` и main/HZB/post orchestration; `BuildHZB`, `HZBBuildCS` и HZB parameter helpers; previous-view setup/reset в SceneVisibility; RDG import/extraction, barrier compile/collection и resource reference handling. В Godot — indirect draw validation/tracking и named render-buffer creation/configuration/cleanup. В интернете — официальные Vulkan indirect/features/synchronization и Microsoft D3D12 indirect signatures. В этом исследовании не проверялись формат/driver capability matrix и runtime-поведение. Позднейшие проверки базового Faset renderer опубликованы в [docs/validation](../validation/README.md); отдельные P2 GPU-проверки опубликованы в [приёмке P2](19-p2-gpu-visibility-acceptance.md) и [измерении P2](20-p2-gpu-visibility-benchmark-2026-09-23.md). Эти результаты не превращают исторические гипотезы исследования в доказанные свойства всех GPU.
|
||||
|
||||
## Примечание к реализации P2 · 23.09.2026
|
||||
|
||||
P2 реализован для opaque static meshes с fixed bins, GPU frustum/indirect, HZB main/post и prepared mesh LOD. Реальный debug view показывает current HZB и счётчики; отдельного instance-ID attachment, предполагавшегося в проектном разборе, пока нет. Приёмка сравнивает финальные RGB-кадры с direct-эталоном и проверяет конкретные adversarial-пиксели и счётчики. Diagnostics readback включается по запросу, но существующий framebuffer capture в тестовом renderer всё ещё синхронен; исходное предложение о полностью асинхронном profiler/readback пока не выполнено. На Linux reference GPU первый Debug/validation benchmark выявил дорогой GPU MainCull, поэтому реализация не заявлена как универсальное ускорение. Детальные ограничения и числа находятся в [отчёте P2](20-p2-gpu-visibility-benchmark-2026-09-23.md), а не в проектных предположениях выше.
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
# P2 GPU visibility: acceptance and benchmark protocol
|
||||
|
||||
This protocol exercises the post-MVP GPU-driven renderer against the retained direct path. It is an implementation and measurement checklist, not a performance claim. The prototype architecture and failure scenarios are described in [study 15](15-renderer-implementation-notes.md).
|
||||
|
||||
## Correctness gate
|
||||
|
||||
`cmake/GpuVisibilityAcceptance.cmake` registers fifteen offscreen Vulkan cases. Each renders a controlled `Snapshot` through `VisibilityMode::Direct` and a GPU mode, compares the expected final RGB image with a small tolerance for floating-point raster differences, and requires zero Vulkan validation errors. GPU cases also require `FrameStats::gpu_visibility_active`; a silent direct fallback cannot pass. Acceptance enables `RendererConfig::visibility_diagnostics`, which reads GPU counters back for assertions.
|
||||
|
||||
| Case | Regression caught |
|
||||
| --- | --- |
|
||||
| `empty` | A previous frame's indirect count leaks into an empty scene. |
|
||||
| `capacity` | Instance ID / indirect-count allocation drops an instance at 64→65 candidates or after shrinking. |
|
||||
| `dense` | GPU frustum rejects visible objects or fails to reject offscreen objects; bins degenerate to one CPU draw per instance. |
|
||||
| `door` | Previous-frame HZB hides an object after its occluder moves; post-cull must reveal it in the same final frame. |
|
||||
| `shadow` | Camera-frustum rejection incorrectly removes an offscreen shadow caster. The fixture first proves the caster's shadow affects the reference image. |
|
||||
| `cut` | A camera cut reuses incompatible HZB history. |
|
||||
| `resize` | Odd-sized target recreation retains stale HZB extents or reads out of bounds. |
|
||||
| `lod` | A prepared coarse mesh is not selected at distance, small scale jitter switches it back, or a large scale change fails to restore the fine mesh. The direct reference explicitly renders the expected prepared mesh at each level. |
|
||||
| `teleport` | A sudden camera move without an explicit cut marker leaves an object hidden; post-cull must recover it with the previous HZB still valid. |
|
||||
| `near` | Frustum/HZB wrongly rejects bounds crossing the near plane or containing the camera. |
|
||||
| `lifecycle` | Mass spawn/despawn, buffer growth, reused stable key, or replacement mesh reuses stale indirect counts or temporal bounds. |
|
||||
| `views` | Two viewport IDs incorrectly share temporal HZB history. |
|
||||
| `projection` | FOV/projection changes retain incompatible HZB history despite an unchanged view ID. |
|
||||
| `open_sequence` | A long camera pan over an open scene loses otherwise visible instances or leaks stale history. |
|
||||
| `transparent` | A transparent foreground draw contaminates the HZB and hides opaque geometry behind it. |
|
||||
|
||||
Run all acceptance tests after building:
|
||||
|
||||
```sh
|
||||
ctest --test-dir build/linux-debug --output-on-failure -L p2
|
||||
```
|
||||
|
||||
The pixel comparison allows at most 0.5% of pixels to differ by more than 16 RGB levels and a mean RGB error of at most 2. Capacity checks also inspect each cube center; the shadow case compares every pixel affected by the reference shadow. These targeted checks catch small omissions that a whole-frame tolerance could miss. A failing scene should be inspected by saving both full frames and a difference image before relaxing a threshold.
|
||||
|
||||
These cases are the automatic minimum. Manual follow-up should cover newly imported meshes, overlapping material bins, shader reloads, and final color plus depth/ID debug views where available. Assert no indirect buffer overflow or validation errors at the advertised capacity. Stable IDs must survive reordering; reused slots need a generation change. 2D sprites and editor UI retain their authored order.
|
||||
|
||||
## Benchmark command and interpretation
|
||||
|
||||
The standalone executable writes per-frame CSV without declaring a speedup:
|
||||
|
||||
```sh
|
||||
build/linux-debug/faset_render_gpu_acceptance_tests --benchmark /tmp/faset-p2-dense.csv
|
||||
```
|
||||
|
||||
It warms each mode for 10 frames, then records 30 frames for each of three fixed scenes: a frustum-heavy grid, an open scene with almost all instances visible, and a wall hiding a dense group. It repeats these workloads for direct, GPU frustum, and GPU occlusion. All benchmark objects disable shadows so shadow draw submission does not dominate the visibility comparison. The harness enables visibility diagnostics so that GPU counters are observable; this adds host mapping/readback overhead. Columns include whole-render-call CPU time, GPU command time, CPU readback time, pass-level GPU times (main cull/raster, HZB, post cull/raster), live Vulkan allocation bytes, submitted draw calls, visibility counters, LOD counts, and validation errors. Summarize median and p95 per scene/mode; retain the raw CSV. Run each configuration at least three times and report run-to-run variation. The harness intentionally has no performance assertion because gains depend on GPU, driver, scene and capture overhead.
|
||||
|
||||
The current renderer performs a full-image readback and waits for frame completion every frame. `cpu_ms` measures the whole synchronous `Renderer::render` call, including that wait and the host copy. `gpu_ms` measures the timestamp interval around GPU commands, including the image-to-buffer copy but excluding the later host map/copy. `readback_cpu_ms` measures only the host map/copy. Pass-level timestamps expose the cost of `MainCull`, `MainRaster`, `HZB`, `PostCull`, and `PostRaster`, but CPU extraction/upload/submission are not individually timed. The benchmark's diagnostic counter readback adds host work beyond a normal Player frame. Compare a closed, heavily occluded scene **and** an open scene in which most instances remain visible. Record identical geometry, camera path, window extent, shader bundle, validation setting and capture mode. Avoid benchmarking during shader compilation, texture uploads, first-use allocations or GPU frequency transitions.
|
||||
|
||||
Keep data from software Vulkan implementations separate from physical GPU data. A visibility feature is accepted by image correctness and lifecycle tests even if it is slower in a particular scene; retain the measured regression and decide whether to use the direct path there.
|
||||
|
||||
The first recorded three-run result, including source hashes, device metadata, p50/p95 tables, counter values, limitations, and links to all 810 raw frame records, is in [the 2026-09-23 benchmark report](20-p2-gpu-visibility-benchmark-2026-09-23.md). The GPU cull pass is much slower than the direct path's GPU work in this Debug/validation configuration, even as CPU submission time falls. Treat the result as a profiling lead, not a shipping performance verdict.
|
||||
@@ -0,0 +1,65 @@
|
||||
# P2 GPU visibility: first measured run (2026-09-23)
|
||||
|
||||
The [acceptance protocol](19-p2-gpu-visibility-acceptance.md) passed all 15 offscreen Vulkan cases on this source state. Three benchmark repetitions then produced 810 measured frames and zero Vulkan validation errors. GPU visibility reduced CPU render-call time in these synthetic scenes, but its GPU command time was substantially higher than the direct path. The compute `MainCull` pass accounts for almost all of that GPU cost. This is a Debug build with validation and diagnostic counter readback, so the numbers identify work to profile; they do not establish Release-build throughput.
|
||||
|
||||
## Reproduction and scope
|
||||
|
||||
| Field | Value |
|
||||
| --- | --- |
|
||||
| Source commit | `ae537c0a4b28e6033a6db045d3401f8d8e96f2ee` |
|
||||
| Acceptance executable SHA-256 | `8eba12dab776ee64a2edcdf743f3bad83b91a991608578ee136c072566ab4751` |
|
||||
| `src/render/renderer.cpp` SHA-256 | `d650718b78cb757d322586aef3ebfc97cb412dd36ac29d3071886f59d045752e` |
|
||||
| `shaders/gpu_scene.slang` SHA-256 | `8fb7460ebcabc87a844fa2774f3bdad1d1f594a8d3b84d0a6881c9e439a35d98` |
|
||||
| Compiled SPIR-V manifest SHA-256 | `307a13cf30c8211703224072d7d730035dea2f8eaf0e66f0a70e01737ce72238` (SHA-256 of lexically sorted `sha256sum build/linux-debug/shaders/*.spv` output) |
|
||||
| Build | CMake Debug, Ubuntu Clang 21.1.8, Linux 7.0.0-31-generic x86_64 |
|
||||
| GPU / driver | NVIDIA GeForce RTX 2080 Ti / 595.84; Vulkan device API 1.4.329 |
|
||||
| Capture | Headless 320 × 240 RGBA, synchronous image readback every frame |
|
||||
| Diagnostics | Vulkan validation and `visibility_diagnostics` enabled; zero reported validation errors |
|
||||
| Workload | Deterministic geometry, no random seed; 1,024 grid instances plus scene-specific occluder; shadows disabled for benchmark objects |
|
||||
| Sampling | Sequential direct → GPU frustum → GPU occlusion for each scene; 10 warmup + 30 sampled frames per scene/mode/run; three sequential runs |
|
||||
|
||||
The three raw, unmodified per-frame captures are [run 1](data/p2-2026-09-23-run-1.csv), [run 2](data/p2-2026-09-23-run-2.csv), and [run 3](data/p2-2026-09-23-run-3.csv). Each contains 270 rows: 30 frames for each of three scenes and three visibility modes. Source, shader and executable hashes were the same before and after all three runs. The CSV `frame` field resets to zero for each scene/mode. The SPIR-V manifest hash above includes file names and hashes in sorted order.
|
||||
|
||||
Values below pool 90 frames per scene/mode. P50 is the median and p95 is linearly interpolated at rank `(n - 1) × 0.95` after sorting. The run range is the minimum–maximum of the three *individual-run p50* values, making run-to-run variation visible. Times are milliseconds.
|
||||
|
||||
| Scene | Mode | CPU render p50 / p95 | CPU run-p50 range | GPU commands p50 / p95 | GPU run-p50 range |
|
||||
| --- | --- | ---: | ---: | ---: | ---: |
|
||||
| Frustum-heavy | Direct | 73.60 / 90.94 | 71.37–81.42 | 0.241 / 0.268 | 0.240–0.242 |
|
||||
| Frustum-heavy | GPU frustum | 14.58 / 23.04 | 13.48–15.23 | 4.00 / 4.69 | 3.89–4.12 |
|
||||
| Frustum-heavy | GPU occlusion | 15.01 / 22.14 | 14.00–15.67 | 3.99 / 4.60 | 3.96–4.02 |
|
||||
| Open | Direct | 70.34 / 89.71 | 68.70–71.51 | 0.502 / 0.531 | 0.500–0.503 |
|
||||
| Open | GPU frustum | 29.52 / 37.88 | 28.98–30.67 | 18.08 / 19.21 | 17.87–18.25 |
|
||||
| Open | GPU occlusion | 30.82 / 38.47 | 29.11–33.36 | 18.36 / 19.18 | 18.03–18.63 |
|
||||
| Occluded | Direct | 68.00 / 84.26 | 67.45–68.64 | 0.499 / 0.554 | 0.496–0.500 |
|
||||
| Occluded | GPU frustum | 29.63 / 40.42 | 28.49–30.71 | 18.26 / 19.23 | 18.15–18.36 |
|
||||
| Occluded | GPU occlusion | 30.39 / 37.37 | 29.16–31.10 | 18.24 / 19.32 | 17.86–18.47 |
|
||||
|
||||
`cpu_ms` spans the synchronous `Renderer::render` call, including CPU preparation, submission, GPU completion wait, and host image copy; it excludes renderer construction and the ten warmup frames. `gpu_ms` is the Vulkan timestamp interval around recorded GPU commands, including the image-to-buffer capture copy, but excludes later host mapping and copying. The median isolated host `readback_cpu_ms` is 0.05–0.06 ms in these runs. Neither column is a Player frame rate, and subtracting them does not isolate CPU culling cost.
|
||||
|
||||
## Passes, work saved, and memory
|
||||
|
||||
The table shows pass-level GPU p50 / p95, in milliseconds. A dash means the pass is absent in that mode. These timestamp spans include work recorded under the named pass and are not interchangeable with the whole-frame GPU interval.
|
||||
|
||||
| Scene | Mode | MainCull | MainRaster | HZB | PostCull | PostRaster |
|
||||
| --- | --- | ---: | ---: | ---: | ---: | ---: |
|
||||
| Frustum-heavy | Direct | — | 0.195 / 0.198 | — | — | — |
|
||||
| Frustum-heavy | GPU frustum | 3.917 / 4.624 | 0.029 / 0.050 | — | — | — |
|
||||
| Frustum-heavy | GPU occlusion | 3.869 / 4.484 | 0.026 / 0.046 | 0.033 / 0.040 | 0.005 / 0.006 | 0.006 / 0.007 |
|
||||
| Open | Direct | — | 0.455 / 0.464 | — | — | — |
|
||||
| Open | GPU frustum | 17.956 / 19.120 | 0.046 / 0.084 | — | — | — |
|
||||
| Open | GPU occlusion | 18.230 / 19.036 | 0.046 / 0.083 | 0.033 / 0.036 | 0.005 / 0.005 | 0.006 / 0.007 |
|
||||
| Occluded | Direct | — | 0.453 / 0.511 | — | — | — |
|
||||
| Occluded | GPU frustum | 18.174 / 19.142 | 0.047 / 0.085 | — | — | — |
|
||||
| Occluded | GPU occlusion | 18.115 / 19.202 | 0.018 / 0.019 | 0.033 / 0.035 | 0.024 / 0.028 | 0.006 / 0.007 |
|
||||
|
||||
The visibility counters are stable across the 90 sampled frames of each GPU scene/mode:
|
||||
|
||||
| Scene | Candidate count | GPU main-visible | Frustum rejected | HZB deferred | Post-visible | Direct / GPU-frustum / GPU-occlusion draw calls |
|
||||
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
|
||||
| Frustum-heavy | 1,024 | 416 | 608 | 0 | 0 | 416 / 1 / 2 |
|
||||
| Open | 1,024 | 1,024 | 0 | 0 | 0 | 1,024 / 1 / 2 |
|
||||
| Occluded | 1,026 | 1 in occlusion mode | 0 | 1,025 in occlusion mode | 0 | 1,026 / 1 / 2 |
|
||||
|
||||
The direct path does not produce GPU visibility counters; zeros in its CSV rows mean “not measured,” not zero visible objects. Peak `FrameStats::gpu_allocated_bytes` was about 7.45 MiB for direct, 5.17 MiB for GPU frustum, and 6.50 MiB for GPU occlusion in this harness. This counter is the renderer's tracked allocations, not whole-process GPU memory.
|
||||
|
||||
The frustum fixture removes 608 main-view candidates and cuts main raster time, while the occluded fixture defers 1,025 candidates and cuts its main raster time. Yet the current `MainCull` cost exceeds those savings by an order of magnitude on this device/configuration. The next performance investigation should isolate compute dispatches, transfer/barrier and indirect-buffer work inside `MainCull`, then repeat in Release with validation and diagnostic counter readback disabled. The fixed mode order and GPU clock/thermal state may affect absolute values; a randomized or interleaved follow-up would reduce order bias. The existing acceptance tests verify image agreement in memory, but this benchmark does not store reference images or measure visual quality over real game content.
|
||||
@@ -0,0 +1,58 @@
|
||||
# P2 GPU visibility: device-local outputs and bounded atomic append (2026-09-23)
|
||||
|
||||
The [first P2 benchmark](20-p2-gpu-visibility-benchmark-2026-09-23.md) found that `MainCull` took about 4 ms with 416 visible candidates and 18 ms with 1,024 candidates in one bin on an RTX 2080 Ti. The camera-visible raster pass was under 0.1 ms. We isolated two causes and measured them separately: GPU-written counters and IDs lived in host-cached system memory, and each contender retried a compare-and-exchange loop on one counter. With device-local outputs and one atomic fetch-add per valid append, the corresponding `MainCull` medians are 0.030 and 0.030 ms. These are measurements of the synthetic Debug/validation harness, not a general engine performance claim.
|
||||
|
||||
## Reproduction and provenance
|
||||
|
||||
| Field | Value |
|
||||
| --- | --- |
|
||||
| Baseline | Commit `ae537c0a4b28e6033a6db045d3401f8d8e96f2ee`; source/executable hashes and methodology in [study 20](20-p2-gpu-visibility-benchmark-2026-09-23.md) |
|
||||
| Optimized implementation | Commit `3be3d0de5f54c7a9afcab48f6e969ad56273a6a4` |
|
||||
| Optimized `src/render/renderer.cpp` SHA-256 | `0ebd863ff44fd7916244fb7b340407b27f50c048849c5df6c6f1f950b1d5dd1c` |
|
||||
| Original/staged-CAS `shaders/gpu_scene.slang` SHA-256 | `8fb7460ebcabc87a844fa2774f3bdad1d1f594a8d3b84d0a6881c9e439a35d98` |
|
||||
| Optimized `shaders/gpu_scene.slang` SHA-256 | `f58e86bfa8106364c70f26751f276793ca1dc02b34bab142c7ebea258e6102b3` |
|
||||
| Staged/final acceptance executable SHA-256 | `4750257d8c6484ece781578f9275bd9e8eeadb487d6a6527693f08f36c80c9d8` (the shader is loaded separately at runtime) |
|
||||
| Final SPIR-V manifest SHA-256 | `cac0fc853f106a2d15e15bf89b1b29136656e3936174369b91d61159cef023f2` (SHA-256 of lexically sorted `sha256sum build/linux-debug/shaders/*.spv` output) |
|
||||
| Machine | Ubuntu Linux 7.0.0-31-generic, Clang 21.1.8, NVIDIA GeForce RTX 2080 Ti, driver 595.84 |
|
||||
| Harness | CMake Debug, Vulkan validation and visibility diagnostics enabled, 320 × 240 synchronous capture; fixed direct → GPU-frustum → GPU-occlusion mode order |
|
||||
| Samples | Three sequential runs per variant; 10 warmup + 30 measured frames per scene/mode/run; 810 measured rows per variant |
|
||||
|
||||
The device-local-only intermediate variant uses the optimized renderer source and the original compare-and-exchange shader. It therefore isolates memory placement before the final shader change. The raw, unmodified CSV captures are:
|
||||
|
||||
- Baseline: [run 1](data/p2-2026-09-23-run-1.csv), [run 2](data/p2-2026-09-23-run-2.csv), [run 3](data/p2-2026-09-23-run-3.csv).
|
||||
- Device-local outputs with original CAS loop: [run 1](data/p2-2026-09-23-device-local-run-1.csv), [run 2](data/p2-2026-09-23-device-local-run-2.csv), [run 3](data/p2-2026-09-23-device-local-run-3.csv).
|
||||
- Device-local outputs with atomic add: [run 1](data/p2-2026-09-23-optimized-run-1.csv), [run 2](data/p2-2026-09-23-optimized-run-2.csv), [run 3](data/p2-2026-09-23-optimized-run-3.csv).
|
||||
|
||||
P50 and p95 below pool 90 frames per scene/mode and use linear interpolation at sorted rank `(n - 1) × quantile`. All times are milliseconds. `gpu_ms` spans GPU commands, including the image-to-buffer capture copy; `cpu_ms` is the synchronous `Renderer::render` call, including submission and completion wait. Neither is a Player frame rate.
|
||||
|
||||
| Scene | Mode | Baseline GPU p50 / p95 | Device-local CAS GPU p50 / p95 | Final GPU p50 / p95 | Final CPU p50 |
|
||||
| --- | --- | ---: | ---: | ---: | ---: |
|
||||
| Frustum-heavy | Direct | 0.241 / 0.268 | 0.235 / 0.271 | 0.235 / 0.300 | 68.57 |
|
||||
| Frustum-heavy | GPU frustum | 3.998 / 4.694 | 0.229 / 0.256 | 0.124 / 0.155 | 10.16 |
|
||||
| Frustum-heavy | GPU occlusion | 3.986 / 4.597 | 0.292 / 0.314 | 0.187 / 0.196 | 9.62 |
|
||||
| Open | Direct | 0.502 / 0.531 | 0.497 / 0.719 | 0.498 / 0.643 | 66.51 |
|
||||
| Open | GPU frustum | 18.081 / 19.207 | 0.477 / 0.508 | 0.139 / 0.158 | 10.18 |
|
||||
| Open | GPU occlusion | 18.359 / 19.183 | 0.544 / 0.558 | 0.204 / 0.238 | 9.39 |
|
||||
| Occluded | Direct | 0.499 / 0.554 | 0.496 / 0.528 | 0.496 / 0.531 | 66.96 |
|
||||
| Occluded | GPU frustum | 18.259 / 19.226 | 0.477 / 0.503 | 0.138 / 0.143 | 9.86 |
|
||||
| Occluded | GPU occlusion | 18.237 / 19.320 | 0.532 / 0.539 | 0.188 / 0.212 | 10.61 |
|
||||
|
||||
The isolated `MainCull` pass provides a closer A/B for the two changes:
|
||||
|
||||
| Scene and mode | Baseline p50 / p95 | Device-local CAS p50 / p95 | Final p50 / p95 |
|
||||
| --- | ---: | ---: | ---: |
|
||||
| Frustum-heavy, GPU frustum (416 visible) | 3.917 / 4.624 | 0.135 / 0.140 | 0.030 / 0.047 |
|
||||
| Open, GPU frustum (1,024 visible) | 17.956 / 19.120 | 0.368 / 0.373 | 0.030 / 0.032 |
|
||||
| Occluded, GPU occlusion (1,025 deferred) | 18.115 / 19.202 | 0.385 / 0.391 | 0.042 / 0.044 |
|
||||
|
||||
All sampled visibility counts matched across the three variants: 416 frustum-visible, 1,024 open-visible, and 1,025 deferred with one main-visible in the occluded scene. All 2,430 measured frames across the three variants reported zero Vulkan validation errors. The final focused shader/reflection and GPU suite passed 18/18 tests, and `spirv-val --target-env vulkan1.3` accepted both culling shaders.
|
||||
|
||||
## Cause and implementation
|
||||
|
||||
The original `upload_scene_buffer` chose `HOST_VISIBLE | HOST_COHERENT` memory and preferred `HOST_CACHED` for every scene buffer. On this GPU, Vulkan memory type 4 has those flags on a non-device-local system-memory heap. The indirect command counters, deferred counter and visible-ID arrays were written by the GPU there. The shader also used a CAS retry loop to append into one bin: many invocations could read the same old count, one would advance it and the rest would retry. The occluded case spent about 18 ms in `MainCull` even though only one instance reached main raster, because 1,025 candidates contended on `deferredCount` instead.
|
||||
|
||||
The renderer now allocates GPU-written indirect args, visible IDs and deferred buffers with `DEVICE_LOCAL` memory. Host-visible staging buffers supply the two indirect templates and zeroed deferred count through transfer copies before compute. An explicit transfer-to-compute/indirect barrier makes those copies visible. Diagnostic counts are copied back to the same staging buffers after culling and raster, with compute/transfer and transfer/host barriers; ordinary rendering still avoids counter readback. This path does not require a host-visible device-local BAR heap. Tracked allocation size for this one-bin fixture increased by just 48 bytes for the three minimum-size staging buffers; the important change is memory placement.
|
||||
|
||||
The shader now uses one `InterlockedAdd` for each append. The host constructs each bin with capacity equal to its candidate count; each candidate index is dispatched once and can append at most once to main IDs. The separate post buffer receives only deferred candidates, also at most once each, and deferred capacity equals total candidate count. Thus valid generated input cannot overflow. A defensive overflow branch undoes the speculative increment before any draw consumes the count, retaining the bounded final indirect/deferred count if an invalid table is supplied.
|
||||
|
||||
These timings are from one NVIDIA GPU, one small synthetic workload and a Debug build with validation, diagnostics and synchronous image capture. The fixed mode order, clock state and driver scheduling can affect p95 values. The full Release build and other desktop GPUs remain separate validation; the direct path remains the runtime fallback. GPU occlusion adds HZB/post overhead in an open scene with nothing to hide, so applications should select it based on workload rather than treating this synthetic GPU-frustum gain as universal.
|
||||
@@ -1,6 +1,6 @@
|
||||
# Исследования для Faset Engine
|
||||
|
||||
Обновлено 18.09.2026. Исходники и официальная документация исследовались прежде всего 17.09.2026; затем результаты согласованы с принятой архитектурой.
|
||||
Обновлено 23.09.2026. Исходники и официальная документация исследовались прежде всего 17.09.2026; затем результаты согласованы с принятой архитектурой. P2 implementation/acceptance добавлены позже и отделены от исходного статического исследования.
|
||||
|
||||
**Актуальные решения — в [ARCHITECTURE.md](../ARCHITECTURE.md), порядок реализации — в [PLAN.md](../../PLAN.md).** Реализация MVP и проверки идут отдельно: [журнал реализации](../IMPLEMENTATION.md), [результаты проверок](../validation/README.md), [пользовательский Manual](../manual/index.md). Исследования дают обоснования и проверочные сценарии; их статический анализ не является измерением Faset.
|
||||
|
||||
@@ -34,16 +34,19 @@ Linux/Windows, десктопные 2D/3D, C++ сначала и Lua следу
|
||||
|
||||
## Углублённые технические материалы
|
||||
|
||||
- [15 — GPU-driven renderer](15-renderer-implementation-notes.md): visibility, HZB, синхронизация и управление историей; этап после MVP.
|
||||
- [15 — GPU-driven renderer](15-renderer-implementation-notes.md): исходный проектный разбор visibility, HZB, синхронизации и управления историей для P2.
|
||||
- [16 — C++ gameplay и метаданные](16-native-gameplay-and-metadata.md): схемы, ABI, сериализация и будущий Lua.
|
||||
- [17 — Asset pipeline и Blender](17-asset-pipeline-and-blender-roundtrip.md): IDs, зависимости, reimport, overrides и физическая геометрия.
|
||||
- [18 — Сборка и доставка](18-build-cook-and-delivery.md): инкрементальность, cache, состав Player и единый BuildService.
|
||||
- [19 — P2 GPU visibility: протокол приёмки](19-p2-gpu-visibility-acceptance.md): GPU-сценарии, допуски сравнения и методика измерений; отделяет проверку реализации от предложений исследования 15.
|
||||
- [20 — P2 GPU visibility: первый benchmark](20-p2-gpu-visibility-benchmark-2026-09-23.md): три запуска, raw CSV, p50/p95 и границы интерпретации на Linux reference GPU.
|
||||
- [21 — P2 GPU visibility: оптимизация MainCull](21-p2-gpu-visibility-optimization-2026-09-23.md): отдельные измерения переноса выходных буферов в память GPU и замены CAS-цикла на atomic add.
|
||||
|
||||
## Происхождение и воспроизводимость
|
||||
|
||||
[Манифест источников](source-manifest.json) фиксирует изученные версии и commits. Основные source-ссылки ведут на upstream-файлы конкретного commit с указанием строки; доступ к Unreal требует соответствующих прав Epic. Исходники сторонних движков не включены в этот репозиторий.
|
||||
|
||||
Исследование статическое и выборочное: читались отдельные реализации и официальные документы. Движки не собирались, пользовательские UX-тесты и GPU-бенчмарки не выполнялись. UnityCsReference содержит C# reference source и bindings, а не весь native движок. Blender изучался через sparse checkout и выбранные удалённые файлы.
|
||||
Исходное сравнительное исследование статическое и выборочное: читались отдельные реализации и официальные документы. Сторонние движки не собирались, пользовательские UX-тесты и их GPU-бенчмарки не выполнялись. Позднейшие GPU-тесты и измерения **Faset P2** находятся отдельно в [протоколе 19](19-p2-gpu-visibility-acceptance.md), [исходном benchmark 20](20-p2-gpu-visibility-benchmark-2026-09-23.md) и [повторных измерениях 21](21-p2-gpu-visibility-optimization-2026-09-23.md); они не являются benchmark Unreal/Godot/Unity. UnityCsReference содержит C# reference source и bindings, а не весь native движок. Blender изучался через sparse checkout и выбранные удалённые файлы.
|
||||
|
||||
[Карта](map/README.md) запускается на обычном clone Faset. Соседние checkout из manifest необязательны и нужны только для дополнительного локального просмотра исходников. Пути manifest считаются от корня проекта, а относительные Markdown-ссылки — от документа.
|
||||
|
||||
|
||||
@@ -0,0 +1,271 @@
|
||||
scenario,mode,frame,device,cpu_ms,gpu_ms,readback_cpu_ms,gpu_main_cull_ms,gpu_main_raster_ms,gpu_hzb_ms,gpu_post_cull_ms,gpu_post_raster_ms,gpu_bytes,draw_calls,gpu_bins,gpu_visible,gpu_frustum_rejected,gpu_deferred,gpu_post_visible,lod0,lod1,lod2,lod3,hzb_valid,gpu_visibility_active,visibility_diagnostics,visibility_counters_valid,validation_errors
|
||||
frustum,direct,0,"NVIDIA GeForce RTX 2080 Ti",64.7369,0.2504,0.054402,0,0.192576,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,1,"NVIDIA GeForce RTX 2080 Ti",63.368,0.23456,0.038002,0,0.19312,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,2,"NVIDIA GeForce RTX 2080 Ti",68.7446,0.234496,0.048792,0,0.193888,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,3,"NVIDIA GeForce RTX 2080 Ti",88.6936,0.235552,0.076023,0,0.193248,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,4,"NVIDIA GeForce RTX 2080 Ti",83.385,0.23472,0.046698,0,0.193344,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,5,"NVIDIA GeForce RTX 2080 Ti",94.1805,0.232992,0.048552,0,0.192128,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,6,"NVIDIA GeForce RTX 2080 Ti",93.3547,0.234208,0.07407,0,0.192512,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,7,"NVIDIA GeForce RTX 2080 Ti",88.7156,0.234656,0.036709,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,8,"NVIDIA GeForce RTX 2080 Ti",71.2425,0.234592,0.063289,0,0.192288,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,9,"NVIDIA GeForce RTX 2080 Ti",65.5611,0.273152,0.065132,0,0.194656,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,10,"NVIDIA GeForce RTX 2080 Ti",70.6167,0.236032,0.082916,0,0.194816,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,11,"NVIDIA GeForce RTX 2080 Ti",70.9857,0.35568,0.059061,0,0.313472,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,12,"NVIDIA GeForce RTX 2080 Ti",62.9898,0.235488,0.057709,0,0.194464,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,13,"NVIDIA GeForce RTX 2080 Ti",62.7431,0.233824,0.050105,0,0.193664,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,14,"NVIDIA GeForce RTX 2080 Ti",66.6032,0.234464,0.045456,0,0.194144,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,15,"NVIDIA GeForce RTX 2080 Ti",63.6998,0.235424,0.044263,0,0.19472,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,16,"NVIDIA GeForce RTX 2080 Ti",67.3859,0.237984,0.0428,0,0.19344,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,17,"NVIDIA GeForce RTX 2080 Ti",74.4489,0.234112,0.064631,0,0.192448,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,18,"NVIDIA GeForce RTX 2080 Ti",63.6063,0.235392,0.07947,0,0.193984,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,19,"NVIDIA GeForce RTX 2080 Ti",64.6958,0.233888,0.045556,0,0.193152,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,20,"NVIDIA GeForce RTX 2080 Ti",73.6784,0.23456,0.050055,0,0.193888,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,21,"NVIDIA GeForce RTX 2080 Ti",74.9121,0.236288,0.055936,0,0.195008,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,22,"NVIDIA GeForce RTX 2080 Ti",73.1098,0.235808,0.040657,0,0.194688,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,23,"NVIDIA GeForce RTX 2080 Ti",77.3535,0.233856,0.075092,0,0.192608,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,24,"NVIDIA GeForce RTX 2080 Ti",79.1919,0.235392,0.055315,0,0.194272,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,25,"NVIDIA GeForce RTX 2080 Ti",62.4817,0.26864,0.049633,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,26,"NVIDIA GeForce RTX 2080 Ti",99.6139,0.234144,0.046428,0,0.193664,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,27,"NVIDIA GeForce RTX 2080 Ti",82.3882,0.233664,0.054944,0,0.192544,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,28,"NVIDIA GeForce RTX 2080 Ti",78.9223,0.233568,0.047109,0,0.19232,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,29,"NVIDIA GeForce RTX 2080 Ti",69.8094,0.247936,0.055374,0,0.196032,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",11.3878,0.22704,0.052209,0.132672,0.027072,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",10.0089,0.227232,0.043762,0.131904,0.028096,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",8.79895,0.227136,0.061266,0.132896,0.026848,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",10.614,0.230016,0.062888,0.133184,0.029472,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",9.94614,0.226432,0.039584,0.133056,0.026624,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",7.97747,0.22752,0.039244,0.132768,0.028,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",10.45,0.22768,0.054172,0.132864,0.027968,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",15.4813,0.228064,0.051798,0.132864,0.02864,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",19.1343,0.227584,0.067537,0.13232,0.027456,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",10.5612,0.228672,0.051387,0.13168,0.028672,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",9.25929,0.22768,0.043152,0.133088,0.026848,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",8.61202,0.22752,0.054403,0.131968,0.027776,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",9.49408,0.2272,0.044293,0.1328,0.026944,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",9.41893,0.227712,0.056958,0.133024,0.027104,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",8.75524,0.227168,0.041859,0.132512,0.027232,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",8.34356,0.226592,0.03172,0.132128,0.027616,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",9.65642,0.226656,0.038502,0.132544,0.0272,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",13.3711,0.2264,0.056146,0.13264,0.027104,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",15.465,0.227648,0.297992,0.133024,0.02816,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",11.8874,0.225792,0.045256,0.131232,0.027296,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",10.6097,0.227488,0.067969,0.132768,0.028416,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",10.1786,0.258976,0.048421,0.15008,0.040544,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",10.3399,0.227776,0.059563,0.132864,0.027104,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",10.8591,0.227808,0.145585,0.132992,0.028224,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",15.4076,0.227232,0.050565,0.132448,0.02864,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",19.435,0.251008,0.049082,0.141152,0.027616,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",11.4523,0.227296,0.056957,0.132192,0.027552,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",10.047,0.226496,0.056437,0.131104,0.0272,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",11.0989,0.226208,0.051296,0.132288,0.027424,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",9.08145,0.22624,0.048632,0.132192,0.027104,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",9.28272,0.328608,0.057308,0.163104,0.0376,0.04656,0.00544,0.007392,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",13.3575,0.289984,0.05322,0.142176,0.027808,0.042304,0.004736,0.006208,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",11.2017,0.288864,0.052078,0.142464,0.026816,0.041664,0.005248,0.006592,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",12.8998,0.289248,0.065103,0.141856,0.02608,0.042848,0.0048,0.00704,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",12.2266,0.290368,0.067627,0.142496,0.026624,0.041824,0.005024,0.007264,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",10.9485,0.290368,0.06858,0.142432,0.0264,0.042688,0.0048,0.00576,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",14.1092,0.292704,0.078528,0.14336,0.02832,0.041312,0.005216,0.006656,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",12.1819,0.289504,0.058791,0.142464,0.026944,0.041536,0.005248,0.006752,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",11.33,0.288672,0.051627,0.142368,0.026784,0.041568,0.004768,0.00672,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",11.8178,0.289504,0.043251,0.143296,0.026624,0.041024,0.005472,0.006816,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",10.4058,0.331424,0.383844,0.162976,0.038976,0.046176,0.00608,0.007808,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",14.9896,0.29136,0.050125,0.1432,0.02688,0.04256,0.004768,0.006304,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",14.1634,0.290944,0.066596,0.142336,0.027264,0.041504,0.00576,0.006528,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",13.259,0.292256,0.044735,0.142464,0.028352,0.04224,0.004768,0.006432,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",11.3007,0.290016,0.072327,0.143008,0.02672,0.041216,0.005696,0.006592,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",11.2246,0.291296,0.056858,0.143328,0.026784,0.041664,0.004768,0.007104,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",9.65399,0.290048,0.056176,0.142464,0.027424,0.042112,0.004736,0.006464,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",10.6734,0.2912,0.063049,0.142816,0.027168,0.042816,0.0048,0.007072,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",9.75997,0.291392,0.065534,0.143392,0.028064,0.04144,0.005472,0.006784,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",12.1279,0.291232,0.050967,0.143264,0.02656,0.041824,0.005376,0.006912,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",8.97511,0.287776,0.041578,0.141632,0.026528,0.04128,0.005152,0.006592,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",13.2647,0.293184,0.046147,0.140896,0.027232,0.04288,0.00544,0.006976,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",19.9757,0.29088,0.055525,0.142176,0.027232,0.041536,0.005568,0.006528,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",11.1957,0.289792,0.052108,0.14176,0.026464,0.043008,0.005088,0.00656,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",10.7553,0.289696,0.047459,0.141536,0.026688,0.043008,0.0048,0.006528,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",10.7883,0.312192,0.043602,0.166048,0.026464,0.042176,0.004768,0.006304,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",10.4271,0.289024,0.044023,0.141888,0.027232,0.041856,0.004736,0.00656,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",11.4354,0.299488,0.179438,0.142464,0.02752,0.042944,0.0048,0.00656,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",11.8168,0.290944,0.058931,0.1424,0.0264,0.043008,0.005568,0.00672,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",10.7853,0.288864,0.038302,0.141664,0.026784,0.042272,0.0048,0.006176,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,direct,0,"NVIDIA GeForce RTX 2080 Ti",60.6186,0.495552,0.051106,0,0.454656,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,1,"NVIDIA GeForce RTX 2080 Ti",60.407,0.494176,0.05302,0,0.452608,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,2,"NVIDIA GeForce RTX 2080 Ti",75.2325,0.499616,0.06923,0,0.456704,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,3,"NVIDIA GeForce RTX 2080 Ti",57.7167,0.499424,0.046328,0,0.458752,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,4,"NVIDIA GeForce RTX 2080 Ti",69.319,0.49504,0.106641,0,0.45376,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,5,"NVIDIA GeForce RTX 2080 Ti",70.6653,0.515456,0.093356,0,0.468416,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,6,"NVIDIA GeForce RTX 2080 Ti",76.4978,0.776224,0.057158,0,0.73376,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,7,"NVIDIA GeForce RTX 2080 Ti",80.5693,0.499776,0.052028,0,0.45872,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,8,"NVIDIA GeForce RTX 2080 Ti",82.8471,0.66272,0.053872,0,0.620544,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,9,"NVIDIA GeForce RTX 2080 Ti",66.3484,0.498592,0.047169,0,0.458336,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,10,"NVIDIA GeForce RTX 2080 Ti",71.2127,0.493728,0.046888,0,0.452608,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,11,"NVIDIA GeForce RTX 2080 Ti",71.7612,0.498336,0.046197,0,0.455808,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,12,"NVIDIA GeForce RTX 2080 Ti",72.9155,0.497696,0.044524,0,0.455648,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,13,"NVIDIA GeForce RTX 2080 Ti",78.4236,0.497024,0.039645,0,0.456352,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,14,"NVIDIA GeForce RTX 2080 Ti",75.2765,0.494496,0.053591,0,0.453792,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,15,"NVIDIA GeForce RTX 2080 Ti",68.2154,0.498752,0.070353,0,0.457152,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,16,"NVIDIA GeForce RTX 2080 Ti",66.636,0.529408,0.040216,0,0.458208,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,17,"NVIDIA GeForce RTX 2080 Ti",62.7475,0.493056,0.038072,0,0.449536,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,18,"NVIDIA GeForce RTX 2080 Ti",57.2225,0.495744,0.042149,0,0.453152,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,19,"NVIDIA GeForce RTX 2080 Ti",67.089,0.498208,0.037771,0,0.456704,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,20,"NVIDIA GeForce RTX 2080 Ti",66.4552,0.497632,0.065594,0,0.456352,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,21,"NVIDIA GeForce RTX 2080 Ti",62.5136,0.497792,0.054623,0,0.456704,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,22,"NVIDIA GeForce RTX 2080 Ti",69.6982,0.494816,0.058972,0,0.452736,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,23,"NVIDIA GeForce RTX 2080 Ti",69.7756,0.497024,0.147558,0,0.45504,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,24,"NVIDIA GeForce RTX 2080 Ti",60.633,0.49872,0.039875,0,0.458432,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,25,"NVIDIA GeForce RTX 2080 Ti",77.2821,0.497376,0.044734,0,0.454656,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,26,"NVIDIA GeForce RTX 2080 Ti",69.4411,0.49632,0.056446,0,0.45456,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,27,"NVIDIA GeForce RTX 2080 Ti",63.1202,0.535808,0.045747,0,0.46256,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,28,"NVIDIA GeForce RTX 2080 Ti",73.1914,0.49824,0.059101,0,0.456704,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,29,"NVIDIA GeForce RTX 2080 Ti",65.5302,0.764576,0.04238,0,0.722624,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",10.3939,0.475168,0.077767,0.366368,0.041344,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",10.8594,0.476544,0.052038,0.36848,0.041088,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",10.4828,0.474944,0.050475,0.367296,0.041184,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",10.7749,0.476,0.056036,0.36784,0.041088,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",13.5022,0.473824,0.094568,0.366112,0.040832,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",17.3703,0.48144,0.060554,0.373856,0.040992,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",10.5529,0.478368,0.050816,0.368928,0.041952,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",15.6407,0.47904,0.061797,0.370144,0.04144,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",10.7748,0.477664,0.070913,0.368352,0.041792,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",9.76799,0.47744,0.054513,0.367584,0.040128,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",9.42063,0.47776,0.059002,0.370176,0.041312,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",9.44758,0.476288,0.061656,0.367424,0.042176,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",11.5227,0.469056,0.041769,0.3608,0.040608,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",8.94197,0.475712,0.038192,0.368448,0.040928,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",10.4662,0.476768,0.051437,0.368736,0.040896,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",18.9526,0.476672,0.051978,0.368352,0.04112,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",11.2872,0.475552,0.039074,0.368032,0.041152,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",11.6188,0.477056,0.044775,0.36896,0.041024,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",11.9754,0.475456,0.065163,0.36672,0.040864,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",9.64002,0.47088,0.038803,0.362464,0.04128,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",9.02811,0.476832,0.033143,0.368768,0.040832,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",13.4991,0.476992,0.048622,0.369568,0.040032,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",14.6902,0.47296,0.192823,0.364672,0.040928,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",10.1379,0.47968,0.050385,0.371776,0.041408,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",8.5759,0.523296,0.046688,0.382976,0.069696,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",8.12712,0.474304,0.030979,0.366272,0.041056,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",8.39928,0.476512,0.045005,0.367904,0.0416,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",8.69837,0.500544,0.03693,0.365728,0.058048,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",8.41133,0.46624,0.055034,0.358016,0.041184,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",9.02985,0.4752,0.044093,0.367168,0.040576,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",9.2217,0.577696,0.045296,0.383808,0.05232,0.063488,0.005632,0.00656,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",8.81264,0.543904,0.05816,0.38032,0.041568,0.043008,0.005152,0.00704,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",8.44976,0.543328,0.040677,0.382752,0.040608,0.041536,0.005568,0.006528,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",13.7218,0.541248,0.045566,0.37952,0.041216,0.04224,0.004736,0.006336,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",17.2713,0.554912,0.100559,0.382592,0.042432,0.043296,0.005216,0.007744,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",11.9484,0.546624,0.056317,0.38432,0.041184,0.041504,0.005504,0.006784,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",9.01832,0.54336,0.034776,0.382272,0.040192,0.04288,0.004736,0.005632,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",8.76038,0.53936,0.095801,0.376576,0.041216,0.043008,0.00496,0.006592,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",8.59985,0.544448,0.03699,0.383232,0.040704,0.042752,0.004736,0.00576,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",8.82441,0.542112,0.043492,0.38096,0.040768,0.042176,0.004736,0.006496,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",8.22824,0.560704,0.035357,0.383968,0.040832,0.042784,0.004768,0.005696,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",10.9933,0.544192,0.049814,0.38256,0.040608,0.041888,0.004896,0.006752,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",22.6801,0.539744,0.074992,0.379008,0.040512,0.04128,0.005664,0.006528,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",11.129,0.548288,0.042029,0.386656,0.041216,0.041504,0.00544,0.006592,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",8.9006,0.543488,0.082365,0.382944,0.0408,0.042464,0.004736,0.006176,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",8.4634,0.543168,0.035788,0.382816,0.040512,0.041568,0.005152,0.00656,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",8.55644,0.544928,0.05284,0.382592,0.041344,0.04272,0.004832,0.005696,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",10.6859,0.543744,0.051307,0.382016,0.041248,0.041632,0.005536,0.006592,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",10.6034,0.54544,0.059462,0.384096,0.041184,0.041664,0.005504,0.00656,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",10.5554,0.54224,0.043382,0.38032,0.041088,0.04144,0.005024,0.007264,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",9.47453,0.536256,0.04757,0.375744,0.040992,0.041984,0.005216,0.006592,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",11.9249,0.542496,0.03712,0.381088,0.040864,0.041344,0.005728,0.006528,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",10.17,0.543424,0.037501,0.383168,0.040736,0.040992,0.005696,0.006528,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",11.4037,0.54464,0.062879,0.382208,0.041568,0.041312,0.005344,0.006944,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",10.0585,0.54592,0.038202,0.384256,0.040896,0.041792,0.00528,0.006528,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",7.93333,0.541952,0.034284,0.38112,0.040736,0.041088,0.005696,0.006528,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",8.71938,0.57744,0.085101,0.380576,0.041312,0.042272,0.007456,0.01376,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",8.67038,0.539392,0.041167,0.377248,0.0408,0.042528,0.004704,0.006016,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",8.96206,0.545408,0.050745,0.383168,0.040928,0.042112,0.00496,0.006176,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",8.98123,0.544864,0.053621,0.382784,0.041248,0.041888,0.005056,0.006752,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
occluded,direct,0,"NVIDIA GeForce RTX 2080 Ti",62.7887,0.494112,0.067427,0,0.452608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,1,"NVIDIA GeForce RTX 2080 Ti",71.2959,0.497792,0.044814,0,0.456704,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,2,"NVIDIA GeForce RTX 2080 Ti",68.7389,0.496,0.04228,0,0.454976,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,3,"NVIDIA GeForce RTX 2080 Ti",69.895,0.494656,0.033503,0,0.453024,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,4,"NVIDIA GeForce RTX 2080 Ti",71.9031,0.526496,0.061556,0,0.4608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,5,"NVIDIA GeForce RTX 2080 Ti",72.2054,0.49392,0.044263,0,0.452704,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,6,"NVIDIA GeForce RTX 2080 Ti",60.6895,0.497376,0.046187,0,0.456288,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,7,"NVIDIA GeForce RTX 2080 Ti",69.7308,0.497088,0.062047,0,0.454848,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,8,"NVIDIA GeForce RTX 2080 Ti",61.1452,0.49456,0.042159,0,0.452608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,9,"NVIDIA GeForce RTX 2080 Ti",62.0544,0.495104,0.041068,0,0.453824,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,10,"NVIDIA GeForce RTX 2080 Ti",65.4676,0.498496,0.034495,0,0.457728,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,11,"NVIDIA GeForce RTX 2080 Ti",65.3146,0.49488,0.048592,0,0.454656,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,12,"NVIDIA GeForce RTX 2080 Ti",64.8816,0.4952,0.078649,0,0.45424,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,13,"NVIDIA GeForce RTX 2080 Ti",64.5143,0.495968,0.034535,0,0.454656,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,14,"NVIDIA GeForce RTX 2080 Ti",60.3862,0.49776,0.046298,0,0.456608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,15,"NVIDIA GeForce RTX 2080 Ti",78.1539,0.494336,0.040426,0,0.452608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,16,"NVIDIA GeForce RTX 2080 Ti",73.6354,0.492224,0.054803,0,0.45056,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,17,"NVIDIA GeForce RTX 2080 Ti",67.193,0.495904,0.049103,0,0.454432,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,18,"NVIDIA GeForce RTX 2080 Ti",59.0953,0.498208,0.040075,0,0.45696,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,19,"NVIDIA GeForce RTX 2080 Ti",73.2946,0.495648,0.063169,0,0.45424,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,20,"NVIDIA GeForce RTX 2080 Ti",66.2624,0.495328,0.044845,0,0.4544,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,21,"NVIDIA GeForce RTX 2080 Ti",60.5294,0.496544,0.053211,0,0.456704,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,22,"NVIDIA GeForce RTX 2080 Ti",66.6714,0.493984,0.041539,0,0.452352,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,23,"NVIDIA GeForce RTX 2080 Ti",63.6081,0.496448,0.04788,0,0.454656,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,24,"NVIDIA GeForce RTX 2080 Ti",65.3215,0.496992,0.051136,0,0.456512,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,25,"NVIDIA GeForce RTX 2080 Ti",70.3609,0.498144,0.038172,0,0.456704,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,26,"NVIDIA GeForce RTX 2080 Ti",62.9826,0.495808,0.067708,0,0.454656,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,27,"NVIDIA GeForce RTX 2080 Ti",62.0386,0.498624,0.062418,0,0.458176,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,28,"NVIDIA GeForce RTX 2080 Ti",65.4245,0.528992,0.037009,0,0.458688,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,29,"NVIDIA GeForce RTX 2080 Ti",57.2899,0.496224,0.04233,0,0.4544,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",10.8556,0.483776,0.051727,0.3728,0.042944,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",10.4682,0.526304,0.059923,0.383776,0.071776,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",9.92771,0.479168,0.042059,0.36784,0.04384,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",9.82401,0.47616,0.053331,0.3688,0.040768,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",18.0177,0.476736,0.046688,0.367072,0.041088,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",15.1037,0.480128,0.061456,0.367872,0.044192,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",8.81297,0.477952,0.040036,0.366816,0.044672,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",9.66996,0.480256,0.03704,0.370016,0.04304,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",9.38014,0.474816,0.039805,0.364992,0.042688,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",11.399,0.478112,0.040537,0.366048,0.044512,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",8.47033,0.504928,0.040437,0.394688,0.04224,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",11.4359,0.47936,0.061997,0.36848,0.043168,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",13.9495,0.477728,0.04768,0.36608,0.04464,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",18.0044,0.475328,0.047319,0.36704,0.0416,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",10,0.475232,0.053261,0.363456,0.044384,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",10.9689,0.4728,0.045556,0.364704,0.040992,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",7.75412,0.476672,0.034415,0.365824,0.043904,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",9.24324,0.476416,0.060083,0.365984,0.043488,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",8.995,0.477088,0.038533,0.367008,0.042912,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",9.27244,0.477632,0.039384,0.366944,0.043392,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",7.73096,0.478912,0.038232,0.366752,0.045152,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",7.83677,0.474912,0.031198,0.36448,0.04304,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",11.1474,0.475904,0.049704,0.365632,0.043872,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",19.9123,0.47664,0.085702,0.365632,0.042016,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",10.7275,0.475744,0.031479,0.365984,0.042176,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",9.24285,0.477248,0.038623,0.367744,0.043456,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",9.16257,0.521984,0.060664,0.380768,0.072192,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",9.19834,0.475808,0.032481,0.364896,0.04336,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",8.29114,0.476448,0.043693,0.364896,0.044704,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",8.96529,0.478496,0.040246,0.3672,0.044448,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",8.03895,0.531904,0.043092,0.38544,0.018016,0.042912,0.012608,0.00592,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",7.60839,0.529888,0.029405,0.384032,0.01888,0.041504,0.012992,0.006528,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",9.51517,0.535296,0.090852,0.387296,0.01888,0.042784,0.012512,0.006144,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",10.9287,0.55728,0.056427,0.408736,0.019104,0.041312,0.013088,0.006688,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",8.24349,0.531008,0.040286,0.384256,0.018848,0.041696,0.012128,0.007456,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",9.11451,0.531904,0.042741,0.3856,0.019264,0.0416,0.012832,0.0056,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",8.38955,0.53056,0.039865,0.383552,0.018336,0.043008,0.012352,0.00608,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",8.283,0.532448,0.041027,0.386752,0.018688,0.042144,0.01248,0.006528,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",12.2057,0.533408,0.040897,0.38656,0.018784,0.042464,0.012448,0.006624,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",12.5381,0.534016,0.067417,0.383904,0.019712,0.042656,0.01264,0.007456,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",12.464,0.529568,0.045836,0.382016,0.018336,0.042816,0.012224,0.0064,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",10.9873,0.565024,0.053521,0.40064,0.0192,0.042784,0.02448,0.006464,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",10.1212,0.537248,0.044764,0.38848,0.0192,0.042112,0.012384,0.006752,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",10.0635,0.53232,0.049804,0.384352,0.01936,0.042208,0.012384,0.006528,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",8.37142,0.529184,0.039244,0.382176,0.018848,0.041344,0.013344,0.006528,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",9.09023,0.534688,0.055835,0.386816,0.018688,0.043008,0.012672,0.006912,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",11.6111,0.532224,0.043041,0.385472,0.01904,0.041952,0.012512,0.00592,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",13.9289,0.532864,0.045265,0.38608,0.019392,0.042496,0.012416,0.006528,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",12.422,0.530048,0.057359,0.382592,0.019136,0.04144,0.013056,0.006624,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",10.0768,0.529824,0.049032,0.382624,0.018784,0.04096,0.013088,0.0072,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",8.39461,0.539648,0.032992,0.388928,0.022624,0.04176,0.012576,0.005856,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",9.73943,0.531296,0.059702,0.38352,0.019488,0.041408,0.013248,0.006752,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",8.51903,0.53248,0.034986,0.385792,0.019328,0.041344,0.01344,0.006592,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",8.4197,0.530016,0.03719,0.383168,0.01824,0.042752,0.012416,0.006272,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",8.00373,0.531648,0.035457,0.384544,0.018912,0.041888,0.012832,0.006624,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",8.2458,0.531168,0.043983,0.383904,0.01824,0.043008,0.012032,0.0064,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",10.0695,0.532992,0.041989,0.38528,0.01856,0.042784,0.012608,0.006048,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",12.4824,0.52944,0.048752,0.383968,0.0184,0.041984,0.012512,0.00592,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",11.1743,0.534944,0.061466,0.38736,0.019232,0.04192,0.012928,0.006624,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",11.4361,0.533824,0.038673,0.386368,0.019232,0.04176,0.013024,0.00656,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
|
@@ -0,0 +1,271 @@
|
||||
scenario,mode,frame,device,cpu_ms,gpu_ms,readback_cpu_ms,gpu_main_cull_ms,gpu_main_raster_ms,gpu_hzb_ms,gpu_post_cull_ms,gpu_post_raster_ms,gpu_bytes,draw_calls,gpu_bins,gpu_visible,gpu_frustum_rejected,gpu_deferred,gpu_post_visible,lod0,lod1,lod2,lod3,hzb_valid,gpu_visibility_active,visibility_diagnostics,visibility_counters_valid,validation_errors
|
||||
frustum,direct,0,"NVIDIA GeForce RTX 2080 Ti",71.0127,0.311872,0.04248,0,0.270336,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,1,"NVIDIA GeForce RTX 2080 Ti",78.8508,0.235392,0.248779,0,0.194528,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,2,"NVIDIA GeForce RTX 2080 Ti",89.1687,0.2728,0.068139,0,0.196608,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,3,"NVIDIA GeForce RTX 2080 Ti",70.5527,0.235936,0.059021,0,0.194464,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,4,"NVIDIA GeForce RTX 2080 Ti",68.7177,0.269248,0.052199,0,0.198144,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,5,"NVIDIA GeForce RTX 2080 Ti",84.3036,0.234688,0.041949,0,0.192864,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,6,"NVIDIA GeForce RTX 2080 Ti",69.2441,0.232384,0.076214,0,0.191616,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,7,"NVIDIA GeForce RTX 2080 Ti",74.6042,0.235232,0.050846,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,8,"NVIDIA GeForce RTX 2080 Ti",74.2708,0.23584,0.048051,0,0.193504,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,9,"NVIDIA GeForce RTX 2080 Ti",74.8286,0.234272,0.048231,0,0.193728,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,10,"NVIDIA GeForce RTX 2080 Ti",77.2897,0.234752,0.061296,0,0.192896,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,11,"NVIDIA GeForce RTX 2080 Ti",81.6145,0.233632,0.049333,0,0.192512,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,12,"NVIDIA GeForce RTX 2080 Ti",77.6506,0.236416,0.058109,0,0.19488,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,13,"NVIDIA GeForce RTX 2080 Ti",81.1084,0.235296,0.071344,0,0.19424,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,14,"NVIDIA GeForce RTX 2080 Ti",87.1548,0.233536,0.052218,0,0.193568,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,15,"NVIDIA GeForce RTX 2080 Ti",85.0074,0.23488,0.068419,0,0.192832,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,16,"NVIDIA GeForce RTX 2080 Ti",75.7102,0.234912,0.056046,0,0.192512,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,17,"NVIDIA GeForce RTX 2080 Ti",83.8865,0.233696,0.059062,0,0.193728,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,18,"NVIDIA GeForce RTX 2080 Ti",69.5082,0.233312,0.039965,0,0.192608,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,19,"NVIDIA GeForce RTX 2080 Ti",68.2242,0.234048,0.044393,0,0.192928,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,20,"NVIDIA GeForce RTX 2080 Ti",72.7151,0.234464,0.041258,0,0.193248,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,21,"NVIDIA GeForce RTX 2080 Ti",82.0281,0.236736,0.034976,0,0.194432,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,22,"NVIDIA GeForce RTX 2080 Ti",86.2229,0.235264,0.046397,0,0.194304,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,23,"NVIDIA GeForce RTX 2080 Ti",90.2785,0.235744,0.062478,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,24,"NVIDIA GeForce RTX 2080 Ti",93.2652,0.235008,0.05822,0,0.193248,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,25,"NVIDIA GeForce RTX 2080 Ti",77.9207,0.235264,0.044304,0,0.193248,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,26,"NVIDIA GeForce RTX 2080 Ti",78.4134,0.235616,0.050585,0,0.194304,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,27,"NVIDIA GeForce RTX 2080 Ti",72.4479,0.236288,0.063129,0,0.194784,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,28,"NVIDIA GeForce RTX 2080 Ti",82.6376,0.252672,0.051898,0,0.19392,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,29,"NVIDIA GeForce RTX 2080 Ti",70.9828,0.235168,0.034926,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",8.78598,0.228672,0.046217,0.135232,0.026432,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",10.4128,0.228096,0.055014,0.133952,0.027008,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",13.7304,0.23024,0.06367,0.136032,0.027104,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",12.3014,0.228096,0.047209,0.134528,0.02576,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",12.8145,0.2288,0.07994,0.135232,0.026464,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",8.61497,0.227936,0.038233,0.134208,0.025888,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",10.3034,0.227968,0.049824,0.134496,0.02576,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",12.0394,0.228864,0.057308,0.135136,0.026656,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",15.1018,0.228,0.052869,0.135424,0.026368,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",12.3695,0.228768,0.060444,0.134528,0.026944,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",10.5688,0.230592,0.135205,0.135232,0.027008,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",9.59937,0.229408,0.054603,0.135264,0.026528,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",9.23911,0.229888,0.039574,0.135936,0.026272,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",7.36684,0.22768,0.041969,0.134272,0.026176,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",7.34062,0.227392,0.046298,0.133952,0.026176,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",9.12895,0.2272,0.038032,0.134336,0.02592,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",8.00057,0.227232,0.043272,0.134528,0.025504,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",12.3728,0.226944,0.044504,0.133728,0.026112,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",14.1646,0.227904,0.045796,0.134976,0.026208,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",10.9364,0.234368,0.040416,0.133792,0.026784,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",8.38385,0.227552,0.183396,0.133632,0.026784,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",10.9046,0.227136,0.047479,0.133792,0.02592,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",7.19849,0.226656,0.039003,0.134336,0.025408,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",8.56135,0.22784,0.049343,0.134688,0.02608,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",7.7272,0.259744,0.047229,0.151136,0.039264,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",8.20558,0.226944,0.044093,0.134464,0.026432,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",13.3389,0.228544,0.053931,0.135648,0.026144,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",18.6329,0.2304,0.056376,0.135456,0.026336,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",9.99333,0.228448,0.049754,0.135424,0.025952,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",8.18819,0.228192,0.044113,0.134368,0.025952,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",9.70103,0.292448,0.03675,0.144576,0.027456,0.042592,0.004768,0.005888,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",11.0291,0.2968,0.051778,0.145824,0.028288,0.042432,0.00528,0.006496,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",11.91,0.308704,0.04737,0.144256,0.027872,0.042752,0.004896,0.006048,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",10.1297,0.293792,0.045045,0.145088,0.028672,0.04128,0.005536,0.006592,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",11.8952,0.29152,0.056066,0.144128,0.027552,0.041312,0.005184,0.007104,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",12.7625,0.32688,0.046337,0.1432,0.028576,0.041216,0.016576,0.01824,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",11.9295,0.291776,0.040386,0.143424,0.027488,0.042592,0.004736,0.00592,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",12.953,0.293248,0.046809,0.143712,0.028128,0.042336,0.0048,0.006368,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",10.4498,0.293312,0.054533,0.145312,0.027936,0.041792,0.005312,0.006688,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",11.6785,0.293824,0.04233,0.144416,0.02784,0.042912,0.004736,0.0056,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",10.6663,0.293216,0.061035,0.144128,0.027904,0.042272,0.0048,0.006176,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",9.51515,0.292224,0.033002,0.144,0.027872,0.041248,0.005664,0.006528,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",8.97953,0.293248,0.046728,0.144448,0.027712,0.04208,0.005056,0.006112,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",9.20476,0.294784,0.045606,0.14544,0.02864,0.04288,0.004736,0.005632,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",13.0593,0.293056,0.048161,0.144192,0.0288,0.04096,0.005664,0.00656,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",12.0821,0.292576,0.05812,0.143616,0.026944,0.043008,0.004992,0.006656,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",16.3491,0.295104,0.073378,0.144576,0.02896,0.041568,0.005824,0.006464,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",17.9732,0.294944,0.067768,0.14544,0.028416,0.041952,0.004992,0.006912,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",12.7518,0.295712,0.054664,0.145568,0.028672,0.041632,0.006016,0.006272,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",12.1551,0.293984,0.079981,0.14448,0.02784,0.042496,0.004864,0.007328,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",11.1806,0.294592,0.050516,0.145984,0.028288,0.041344,0.005344,0.006528,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",12.7806,0.291616,0.045977,0.14304,0.027392,0.04144,0.00576,0.006528,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",10.869,0.293504,0.0373,0.1448,0.027232,0.042848,0.004736,0.005664,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",12.829,0.30736,0.046528,0.143232,0.036832,0.045536,0.005536,0.006752,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",10.4788,0.294784,0.046527,0.145696,0.029376,0.041952,0.004864,0.006624,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",9.58928,0.295776,0.045325,0.144192,0.028,0.043392,0.005024,0.006912,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",8.68274,0.292576,0.05284,0.144256,0.027776,0.042976,0.004864,0.006528,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",8.50438,0.315872,0.046107,0.166816,0.02848,0.041024,0.005696,0.006592,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",8.34061,0.291648,0.039535,0.14352,0.027392,0.04256,0.0048,0.005888,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",8.48612,0.292256,0.049263,0.144,0.027872,0.0424,0.0048,0.006208,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,direct,0,"NVIDIA GeForce RTX 2080 Ti",71.8804,0.521184,0.108655,0,0.462464,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,1,"NVIDIA GeForce RTX 2080 Ti",68.4413,0.49472,0.037431,0,0.454656,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,2,"NVIDIA GeForce RTX 2080 Ti",75.9111,0.49488,0.071094,0,0.453984,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,3,"NVIDIA GeForce RTX 2080 Ti",73.8367,0.49536,0.044995,0,0.454816,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,4,"NVIDIA GeForce RTX 2080 Ti",66.1784,0.529024,0.060093,0,0.45824,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,5,"NVIDIA GeForce RTX 2080 Ti",69.3696,0.538592,0.046297,0,0.467904,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,6,"NVIDIA GeForce RTX 2080 Ti",71.7722,0.49808,0.076985,0,0.455872,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,7,"NVIDIA GeForce RTX 2080 Ti",66.1807,0.496512,0.044734,0,0.456608,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,8,"NVIDIA GeForce RTX 2080 Ti",62.9343,0.493024,0.043071,0,0.451584,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,9,"NVIDIA GeForce RTX 2080 Ti",69.4768,0.49648,0.056877,0,0.455872,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,10,"NVIDIA GeForce RTX 2080 Ti",73.0257,0.493408,0.045125,0,0.453024,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,11,"NVIDIA GeForce RTX 2080 Ti",70.748,0.4928,0.071585,0,0.452608,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,12,"NVIDIA GeForce RTX 2080 Ti",75.1762,0.795744,0.048581,0,0.753664,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,13,"NVIDIA GeForce RTX 2080 Ti",63.2562,0.49408,0.054943,0,0.45424,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,14,"NVIDIA GeForce RTX 2080 Ti",62.1229,0.495808,0.039695,0,0.45456,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,15,"NVIDIA GeForce RTX 2080 Ti",69.3232,0.764192,0.050906,0,0.721152,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,16,"NVIDIA GeForce RTX 2080 Ti",66.662,0.495136,0.052188,0,0.455872,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,17,"NVIDIA GeForce RTX 2080 Ti",59.3466,0.493088,0.035948,0,0.45248,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,18,"NVIDIA GeForce RTX 2080 Ti",70.8032,0.537024,0.03159,0,0.458272,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,19,"NVIDIA GeForce RTX 2080 Ti",64.5934,0.514528,0.041428,0,0.465312,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,20,"NVIDIA GeForce RTX 2080 Ti",67.1224,0.497792,0.035106,0,0.457792,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,21,"NVIDIA GeForce RTX 2080 Ti",67.8875,0.49392,0.049513,0,0.452192,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,22,"NVIDIA GeForce RTX 2080 Ti",62.0733,0.494336,0.049023,0,0.454016,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,23,"NVIDIA GeForce RTX 2080 Ti",62.1564,0.49392,0.059843,0,0.453856,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,24,"NVIDIA GeForce RTX 2080 Ti",68.4279,0.496192,0.039995,0,0.454848,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,25,"NVIDIA GeForce RTX 2080 Ti",60.9137,0.496672,0.049864,0,0.456288,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,26,"NVIDIA GeForce RTX 2080 Ti",76.188,0.498272,0.048291,0,0.457408,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,27,"NVIDIA GeForce RTX 2080 Ti",68.4783,0.4928,0.039515,0,0.452512,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,28,"NVIDIA GeForce RTX 2080 Ti",67.126,0.495712,0.050045,0,0.455008,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,29,"NVIDIA GeForce RTX 2080 Ti",59.9943,0.491712,0.039584,0,0.450752,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",11.011,0.475136,0.038353,0.366496,0.041472,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",11.1128,0.477568,0.049333,0.368416,0.041504,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",13.1614,0.477184,0.061636,0.368448,0.041248,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",15.6951,0.51232,0.057378,0.371904,0.071136,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",10.4804,0.477408,0.050575,0.368992,0.040608,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",9.01791,0.476672,0.056737,0.368512,0.041088,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",8.78346,0.478048,0.050525,0.369376,0.041664,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",10.8859,0.478752,0.050786,0.369696,0.041728,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",10.839,0.47968,0.05308,0.370432,0.041696,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",10.9418,0.477056,0.060374,0.368064,0.041792,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",10.6136,0.478112,0.038963,0.369152,0.041984,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",13.9552,0.476512,0.051477,0.367744,0.041696,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",10.3934,0.476704,0.050686,0.368192,0.041312,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",14.6375,0.480352,0.077526,0.37008,0.041568,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",9.79507,0.476416,0.03713,0.367904,0.0416,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",8.57517,0.478976,0.040747,0.370208,0.041792,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",10.81,0.47776,0.040246,0.369344,0.041728,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",8.45036,0.478048,0.038543,0.369344,0.04192,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",7.65562,0.48064,0.039955,0.371616,0.041792,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",8.60097,0.478304,0.059782,0.369664,0.041952,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",10.4293,0.50864,0.043953,0.37072,0.063168,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",10.7301,0.478624,0.159691,0.37024,0.041408,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",11.9545,0.478848,0.089589,0.370016,0.041664,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",13.2706,0.475968,0.048311,0.367136,0.040768,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",7.66326,0.476608,0.051267,0.369056,0.040544,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",7.66469,0.476992,0.039875,0.368192,0.041408,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",9.82757,0.479424,0.050625,0.370592,0.041504,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",7.76783,0.477088,0.034676,0.368384,0.04176,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",8.26084,0.475936,0.047639,0.366368,0.041792,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",8.82446,0.47904,0.054213,0.370368,0.04128,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",11.7547,0.54416,0.073158,0.382432,0.041216,0.041664,0.0048,0.006688,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",10.2699,0.5448,0.051196,0.383808,0.040192,0.042144,0.0048,0.006304,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",11.2933,0.543232,0.040948,0.382784,0.03968,0.04256,0.004704,0.005984,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",9.87866,0.5432,0.052319,0.38208,0.039808,0.04272,0.004768,0.00576,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",9.64366,0.561376,0.042491,0.386432,0.053952,0.04176,0.004864,0.007424,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",9.37896,0.546432,0.061125,0.384576,0.041184,0.041728,0.004896,0.00672,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",13.315,0.544672,0.065764,0.382176,0.04096,0.041696,0.004928,0.00672,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",11.9395,0.544896,0.04239,0.383424,0.040672,0.041536,0.005056,0.006784,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",17.2652,0.544928,0.07952,0.382624,0.041088,0.042112,0.004928,0.006944,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",10.323,0.541536,0.049864,0.38048,0.03984,0.042656,0.004736,0.005856,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",9.91962,0.54432,0.063149,0.382688,0.040832,0.041376,0.005184,0.006656,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",11.2208,0.544288,0.040416,0.382016,0.040384,0.042848,0.004832,0.005568,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",9.86151,0.543232,0.038883,0.382656,0.040544,0.042016,0.004928,0.006912,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",9.03577,0.544352,0.05307,0.382144,0.041216,0.04192,0.005248,0.006688,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",16.7594,0.5456,0.048551,0.384576,0.040448,0.04192,0.005376,0.006912,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",12.971,0.543744,0.045195,0.38272,0.04064,0.041536,0.005344,0.006944,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",13.1388,0.547264,0.049674,0.38528,0.040704,0.042656,0.004736,0.005856,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",10.454,0.544928,0.049794,0.383072,0.040704,0.041568,0.005504,0.006784,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",10.0701,0.547392,0.034365,0.38256,0.039328,0.042688,0.004768,0.005792,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",10.4174,0.545056,0.034856,0.383776,0.040256,0.041248,0.005664,0.006624,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",10.9952,0.541472,0.038883,0.381824,0.040064,0.042272,0.004736,0.00624,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",13.0438,0.54384,0.116881,0.383488,0.040448,0.042208,0.004736,0.006304,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",17.3474,0.542624,0.056076,0.379456,0.041664,0.041728,0.005184,0.007104,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",26.2324,0.544768,0.09517,0.3824,0.041152,0.041344,0.005824,0.006464,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",12.1699,0.544768,0.056848,0.38336,0.040576,0.04096,0.005824,0.006464,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",9.37042,0.546304,0.052399,0.383872,0.040192,0.043008,0.004832,0.007328,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",11.3721,0.547328,0.490224,0.384512,0.041088,0.042176,0.00512,0.006432,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",10.1461,0.54512,0.065052,0.383808,0.040608,0.041152,0.005824,0.006464,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",11.6359,0.54256,0.057719,0.380768,0.040928,0.041504,0.004928,0.006752,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",10.7501,0.552192,0.059973,0.383488,0.040512,0.04608,0.005472,0.00768,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
occluded,direct,0,"NVIDIA GeForce RTX 2080 Ti",66.5645,0.494496,0.040526,0,0.453888,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,1,"NVIDIA GeForce RTX 2080 Ti",66.5236,0.494944,0.048842,0,0.454144,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,2,"NVIDIA GeForce RTX 2080 Ti",69.7988,0.49456,0.064151,0,0.453312,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,3,"NVIDIA GeForce RTX 2080 Ti",71.0163,0.49744,0.082045,0,0.45632,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,4,"NVIDIA GeForce RTX 2080 Ti",68.6753,0.496064,0.049754,0,0.45504,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,5,"NVIDIA GeForce RTX 2080 Ti",62.9101,0.526784,0.035176,0,0.459264,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,6,"NVIDIA GeForce RTX 2080 Ti",65.7585,0.532544,0.041498,0,0.460832,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,7,"NVIDIA GeForce RTX 2080 Ti",68.3156,0.495168,0.040957,0,0.454656,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,8,"NVIDIA GeForce RTX 2080 Ti",63.9311,0.524384,0.04261,0,0.462848,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,9,"NVIDIA GeForce RTX 2080 Ti",68.1388,0.488192,0.043512,0,0.446528,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,10,"NVIDIA GeForce RTX 2080 Ti",72.5859,0.498624,0.044744,0,0.457632,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,11,"NVIDIA GeForce RTX 2080 Ti",80.3614,0.496896,0.071505,0,0.455456,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,12,"NVIDIA GeForce RTX 2080 Ti",75.1705,0.49328,0.059582,0,0.452608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,13,"NVIDIA GeForce RTX 2080 Ti",71.5779,0.494112,0.073087,0,0.452928,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,14,"NVIDIA GeForce RTX 2080 Ti",73.3457,0.495968,0.058901,0,0.454528,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,15,"NVIDIA GeForce RTX 2080 Ti",72.9389,0.4928,0.055455,0,0.451456,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,16,"NVIDIA GeForce RTX 2080 Ti",76.6228,0.498016,0.046969,0,0.456864,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,17,"NVIDIA GeForce RTX 2080 Ti",70.0784,0.494688,0.053982,0,0.452896,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,18,"NVIDIA GeForce RTX 2080 Ti",79.0739,0.495776,0.056156,0,0.454688,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,19,"NVIDIA GeForce RTX 2080 Ti",72.9877,0.494688,0.037892,0,0.454656,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,20,"NVIDIA GeForce RTX 2080 Ti",72.1311,0.495232,0.046788,0,0.454624,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,21,"NVIDIA GeForce RTX 2080 Ti",62.4365,0.496864,0.040246,0,0.455552,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,22,"NVIDIA GeForce RTX 2080 Ti",68.6746,0.4912,0.033383,0,0.448512,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,23,"NVIDIA GeForce RTX 2080 Ti",59.8844,0.496,0.041298,0,0.455232,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,24,"NVIDIA GeForce RTX 2080 Ti",60.8796,0.49536,0.044714,0,0.454592,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,25,"NVIDIA GeForce RTX 2080 Ti",64.8914,0.495552,0.061436,0,0.454592,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,26,"NVIDIA GeForce RTX 2080 Ti",59.59,0.533312,0.036539,0,0.460096,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,27,"NVIDIA GeForce RTX 2080 Ti",70.0369,0.497792,0.046658,0,0.45712,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,28,"NVIDIA GeForce RTX 2080 Ti",66.5867,0.49456,0.120056,0,0.4544,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,29,"NVIDIA GeForce RTX 2080 Ti",60.4937,0.495008,0.045957,0,0.453536,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",11.0849,0.476352,0.057048,0.36944,0.039424,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",10.4238,0.480192,0.035837,0.372576,0.039104,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",10.0898,0.478336,0.039966,0.370528,0.039584,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",10.9098,0.482368,0.048662,0.371904,0.043136,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",9.08452,0.47904,0.036348,0.372192,0.039456,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",9.41131,0.475488,0.045355,0.369024,0.039616,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",13.4197,0.48096,0.049353,0.370112,0.043712,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",20.9784,0.479872,0.154752,0.369216,0.043072,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",11.7974,0.481888,0.064562,0.370112,0.043744,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",8.12464,0.478496,0.030848,0.368576,0.043072,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",7.63899,0.477088,0.032872,0.367904,0.041696,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",10.0212,0.481056,0.036689,0.370112,0.043488,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",8.12974,0.478848,0.041929,0.36896,0.042688,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",7.97515,0.479808,0.041389,0.3704,0.042048,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",10.704,0.480064,0.065995,0.37072,0.042944,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",14.0462,0.501472,0.05321,0.37728,0.042304,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",16.5454,0.477952,0.041108,0.369376,0.040928,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",11.8254,0.482784,0.055094,0.372928,0.042816,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",10.2441,0.480352,0.033924,0.370272,0.043424,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",8.54205,0.510592,0.049022,0.368608,0.072192,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",8.60497,0.478048,0.040136,0.367296,0.042944,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",11.5378,0.468064,0.053181,0.358112,0.043296,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",9.95857,0.480704,0.033854,0.370272,0.043424,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",8.19659,0.47664,0.03739,0.368576,0.040896,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",7.89861,0.478304,0.038222,0.371424,0.039008,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",11.973,0.478016,0.057759,0.368736,0.042624,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",18.9519,0.48096,0.045285,0.370656,0.04304,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",12.0451,0.471616,0.062909,0.360928,0.042656,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",10.9205,0.47664,0.034075,0.369472,0.040192,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",10.1355,0.471968,0.06902,0.361184,0.044256,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",11.1203,0.538624,0.07379,0.389312,0.019648,0.041856,0.01312,0.006656,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",10.7094,0.535488,0.040056,0.388064,0.019648,0.0416,0.012512,0.00592,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",12.0782,0.536544,0.170552,0.390432,0.01888,0.041248,0.013152,0.00688,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",15.0542,0.5328,0.073208,0.386784,0.01872,0.042016,0.012192,0.00672,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",12.261,0.532864,0.032121,0.386112,0.017888,0.042976,0.012224,0.00624,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",9.84738,0.5384,0.055815,0.38048,0.01888,0.043008,0.012256,0.006176,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",10.9202,0.535008,0.043342,0.387552,0.018528,0.042496,0.012384,0.00656,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",9.89454,0.528128,0.059121,0.38096,0.018816,0.0424,0.012224,0.006624,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",10.4093,0.53488,0.036018,0.3872,0.019072,0.042144,0.012736,0.006592,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",8.36614,0.53808,0.040276,0.39072,0.01888,0.043008,0.012288,0.006144,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",12.8487,0.56784,0.051938,0.411104,0.020672,0.045824,0.013408,0.007072,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",19.2762,0.533088,0.088777,0.386208,0.0192,0.042336,0.012288,0.006592,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",12.2209,0.536992,0.055295,0.38896,0.01904,0.042528,0.012288,0.006624,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",10.2118,0.538048,0.051768,0.391232,0.018688,0.042528,0.012,0.00656,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",11.6706,0.536736,0.060895,0.38784,0.019712,0.042944,0.012256,0.00624,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",11.3352,0.535168,0.054253,0.387232,0.018272,0.042816,0.012416,0.006208,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",9.05475,0.53648,0.048892,0.389216,0.018976,0.042304,0.012192,0.006592,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",9.41794,0.535008,0.039294,0.386688,0.019136,0.042624,0.012384,0.006432,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",8.45,0.536864,0.04803,0.390432,0.018976,0.042208,0.012224,0.006496,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",13.7081,0.53552,0.054452,0.389024,0.018528,0.042976,0.012032,0.006432,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",19.5372,0.53328,0.037702,0.38672,0.018784,0.042848,0.012224,0.006368,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",12.425,0.536384,0.070393,0.3888,0.01872,0.041344,0.01264,0.007232,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",12.0341,0.536384,0.042951,0.388768,0.01904,0.04224,0.01264,0.006752,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",10.2125,0.534368,0.038683,0.387968,0.018784,0.041952,0.012224,0.006208,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",9.8623,0.535168,0.060444,0.388192,0.019232,0.04256,0.012352,0.00656,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",10.9939,0.538656,0.061837,0.391808,0.017792,0.043008,0.012544,0.005888,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",10.028,0.534432,0.047209,0.386784,0.019424,0.042464,0.012224,0.006624,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",16.655,0.53344,0.046898,0.3856,0.018688,0.042592,0.012544,0.006304,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",10.5594,0.537888,0.045947,0.391008,0.018944,0.04224,0.012224,0.006656,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",9.99491,0.536704,0.078778,0.389216,0.0184,0.042944,0.012256,0.00624,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
|
@@ -0,0 +1,271 @@
|
||||
scenario,mode,frame,device,cpu_ms,gpu_ms,readback_cpu_ms,gpu_main_cull_ms,gpu_main_raster_ms,gpu_hzb_ms,gpu_post_cull_ms,gpu_post_raster_ms,gpu_bytes,draw_calls,gpu_bins,gpu_visible,gpu_frustum_rejected,gpu_deferred,gpu_post_visible,lod0,lod1,lod2,lod3,hzb_valid,gpu_visibility_active,visibility_diagnostics,visibility_counters_valid,validation_errors
|
||||
frustum,direct,0,"NVIDIA GeForce RTX 2080 Ti",68.4785,0.234304,0.056086,0,0.192512,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,1,"NVIDIA GeForce RTX 2080 Ti",65.9328,0.233376,0.033653,0,0.192608,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,2,"NVIDIA GeForce RTX 2080 Ti",69.3577,0.234208,0.049524,0,0.192512,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,3,"NVIDIA GeForce RTX 2080 Ti",71.9818,0.234208,0.037781,0,0.193312,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,4,"NVIDIA GeForce RTX 2080 Ti",57.265,0.236224,0.049814,0,0.195584,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,5,"NVIDIA GeForce RTX 2080 Ti",66.4298,0.235808,0.05331,0,0.194784,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,6,"NVIDIA GeForce RTX 2080 Ti",66.5939,0.2344,0.04817,0,0.192928,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,7,"NVIDIA GeForce RTX 2080 Ti",65.2286,0.234304,0.052189,0,0.193984,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,8,"NVIDIA GeForce RTX 2080 Ti",68.5535,0.233088,0.039635,0,0.19088,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,9,"NVIDIA GeForce RTX 2080 Ti",69.6112,0.236128,0.071745,0,0.193312,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,10,"NVIDIA GeForce RTX 2080 Ti",66.6386,0.23312,0.04243,0,0.191168,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,11,"NVIDIA GeForce RTX 2080 Ti",78.1614,0.255168,0.049263,0,0.198176,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,12,"NVIDIA GeForce RTX 2080 Ti",72.0562,0.235104,0.048451,0,0.193248,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,13,"NVIDIA GeForce RTX 2080 Ti",63.6805,0.234208,0.104387,0,0.193984,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,14,"NVIDIA GeForce RTX 2080 Ti",61.9377,0.23488,0.036479,0,0.193408,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,15,"NVIDIA GeForce RTX 2080 Ti",64.2762,0.235744,0.035216,0,0.195712,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,16,"NVIDIA GeForce RTX 2080 Ti",66.9261,0.233504,0.040116,0,0.192128,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,17,"NVIDIA GeForce RTX 2080 Ti",61.0661,0.235136,0.04207,0,0.19408,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,18,"NVIDIA GeForce RTX 2080 Ti",65.299,0.23392,0.040056,0,0.192672,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,19,"NVIDIA GeForce RTX 2080 Ti",65.5292,0.23488,0.044343,0,0.193888,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,20,"NVIDIA GeForce RTX 2080 Ti",63.2204,0.362816,0.061566,0,0.319488,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,21,"NVIDIA GeForce RTX 2080 Ti",71.8915,0.234272,0.03716,0,0.194048,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,22,"NVIDIA GeForce RTX 2080 Ti",77.3235,0.235776,0.046047,0,0.19264,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,23,"NVIDIA GeForce RTX 2080 Ti",67.8365,0.232544,0.047509,0,0.19168,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,24,"NVIDIA GeForce RTX 2080 Ti",77.2039,0.236,0.053221,0,0.193696,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,25,"NVIDIA GeForce RTX 2080 Ti",69.3318,0.234048,0.067457,0,0.192672,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,26,"NVIDIA GeForce RTX 2080 Ti",59.9847,0.23552,0.041558,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,27,"NVIDIA GeForce RTX 2080 Ti",70.1507,0.235008,0.054473,0,0.193536,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,28,"NVIDIA GeForce RTX 2080 Ti",63.5918,0.235168,0.043262,0,0.19408,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,29,"NVIDIA GeForce RTX 2080 Ti",61.6097,0.234304,0.07448,0,0.192512,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",20.6243,0.23152,0.047079,0.138048,0.0272,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",14.4267,0.259776,0.058811,0.137728,0.041824,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",10.3846,0.24544,0.049163,0.14592,0.032256,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",11.0997,0.231488,0.076895,0.137152,0.02672,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",10.6573,0.26016,0.05797,0.136736,0.0312,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",10.9875,0.230656,0.064943,0.136736,0.02656,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",11.2594,0.23184,0.060024,0.1376,0.026624,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",9.93987,0.2312,0.071525,0.137312,0.02656,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",11.533,0.229504,0.053932,0.135712,0.026752,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",10.4659,0.228704,0.044003,0.135296,0.026624,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",12.5764,0.230048,0.049624,0.136224,0.026272,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",13.4199,0.22976,0.052739,0.13728,0.026272,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",10.8869,0.230752,0.072397,0.136768,0.026496,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",10.4181,0.23168,0.064541,0.137088,0.026912,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",10.5278,0.2304,0.054734,0.135936,0.027264,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",9.63723,0.230592,0.051567,0.136352,0.026208,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",9.01626,0.262592,0.04245,0.140864,0.054624,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",9.39782,0.230464,0.044965,0.13616,0.027072,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",9.95979,0.228832,0.048852,0.13616,0.025632,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",10.759,0.228896,0.051748,0.135808,0.026112,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",10.9753,0.253248,0.045205,0.137344,0.029952,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",10.6281,0.230976,0.075272,0.136704,0.026528,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",10.0208,0.22976,0.048251,0.136256,0.026368,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",12.3332,0.231136,0.055034,0.136608,0.027264,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",10.8965,0.231424,0.045004,0.136352,0.027712,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",8.6148,0.230496,0.044313,0.136288,0.02608,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",8.85869,0.229888,0.064321,0.135936,0.026944,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",10.371,0.229792,0.231858,0.136416,0.026464,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",15.0848,0.228704,0.055414,0.13696,0.025888,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",18.8212,0.233056,0.06889,0.137568,0.02688,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",10.3272,0.29184,0.04731,0.143744,0.027296,0.041952,0.005024,0.007008,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",11.232,0.291328,0.082897,0.14368,0.026304,0.042752,0.004832,0.00688,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",9.56429,0.289632,0.04257,0.142208,0.026912,0.041888,0.004768,0.006592,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",8.48152,0.2896,0.041629,0.141664,0.0264,0.042528,0.004864,0.005856,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",9.08971,0.290016,0.042711,0.142656,0.027392,0.041504,0.005056,0.006848,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",9.61352,0.290432,0.044775,0.142048,0.02768,0.041952,0.004992,0.00672,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",9.42087,0.289536,0.039054,0.142464,0.026336,0.042784,0.004736,0.005728,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",10.2745,0.295968,0.046949,0.143936,0.027392,0.041664,0.005216,0.006528,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",20.0217,0.291008,0.066194,0.142752,0.027232,0.04272,0.004864,0.005664,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",13.5483,0.292928,0.05844,0.143936,0.02784,0.04144,0.004992,0.006688,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",11.63,0.29184,0.059111,0.144448,0.02736,0.041184,0.005792,0.006496,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",9.36151,0.289792,0.037791,0.143136,0.026848,0.04096,0.005664,0.00656,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",9.79621,0.29088,0.034905,0.143008,0.027488,0.04128,0.005536,0.006528,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",9.07658,0.29136,0.05822,0.142176,0.027808,0.043008,0.004992,0.00672,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",9.54872,0.290304,0.038222,0.143584,0.0264,0.042432,0.004736,0.00608,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",10.3873,0.29088,0.061486,0.143136,0.026848,0.0424,0.004992,0.007008,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",16.027,0.293792,0.058811,0.143776,0.027712,0.041504,0.00592,0.006368,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",14.6296,0.290112,0.071114,0.142752,0.027232,0.041984,0.004736,0.006528,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",11.2966,0.292256,0.066676,0.143744,0.027744,0.041472,0.005472,0.006816,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",11.6844,0.292736,0.072607,0.144608,0.027424,0.042112,0.004832,0.006304,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",11.0806,0.29472,0.049233,0.14496,0.027072,0.042944,0.00512,0.00656,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",11.3335,0.292416,0.057108,0.14416,0.027808,0.041984,0.0048,0.006624,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",11.4639,0.294144,0.055134,0.144352,0.027584,0.041888,0.005152,0.006944,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",9.80644,0.290432,0.054673,0.143296,0.026592,0.042272,0.004736,0.00624,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",17.5667,0.290176,0.038592,0.14304,0.026944,0.041344,0.005312,0.006528,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",10.6748,0.292352,0.044484,0.143968,0.027616,0.041472,0.005376,0.006912,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",14.4168,0.291296,0.203043,0.143072,0.027008,0.041792,0.005216,0.00704,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",9.61146,0.32416,0.036488,0.14336,0.03072,0.071424,0.004832,0.005664,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",11.3439,0.29056,0.040166,0.14272,0.02704,0.041536,0.005312,0.006656,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",9.55479,0.304672,0.056657,0.148128,0.02736,0.041504,0.005728,0.00656,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,direct,0,"NVIDIA GeForce RTX 2080 Ti",68.63,0.496224,0.050275,0,0.456576,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,1,"NVIDIA GeForce RTX 2080 Ti",62.4592,0.497056,0.039344,0,0.455168,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,2,"NVIDIA GeForce RTX 2080 Ti",66.3106,0.498592,0.055234,0,0.457088,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,3,"NVIDIA GeForce RTX 2080 Ti",61.2164,0.498944,0.045155,0,0.458752,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,4,"NVIDIA GeForce RTX 2080 Ti",71.6603,0.494208,0.043843,0,0.453664,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,5,"NVIDIA GeForce RTX 2080 Ti",71.4574,0.492512,0.081554,0,0.452608,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,6,"NVIDIA GeForce RTX 2080 Ti",72.0269,0.49392,0.049794,0,0.453824,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,7,"NVIDIA GeForce RTX 2080 Ti",67.7714,0.500768,0.130686,0,0.459392,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,8,"NVIDIA GeForce RTX 2080 Ti",76.1415,0.499648,0.052629,0,0.459104,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,9,"NVIDIA GeForce RTX 2080 Ti",78.1573,0.750624,0.070253,0,0.70864,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,10,"NVIDIA GeForce RTX 2080 Ti",95.7163,0.4968,0.061687,0,0.456544,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,11,"NVIDIA GeForce RTX 2080 Ti",78.9684,0.505824,0.082085,0,0.454656,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,12,"NVIDIA GeForce RTX 2080 Ti",78.4559,0.497952,0.077676,0,0.457312,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,13,"NVIDIA GeForce RTX 2080 Ti",72.1784,0.496032,0.046297,0,0.455104,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,14,"NVIDIA GeForce RTX 2080 Ti",85.2738,0.49712,0.059903,0,0.456448,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,15,"NVIDIA GeForce RTX 2080 Ti",89.1637,0.497344,0.102012,0,0.45648,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,16,"NVIDIA GeForce RTX 2080 Ti",76.5471,0.679328,0.076524,0,0.63744,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,17,"NVIDIA GeForce RTX 2080 Ti",82.4952,0.497696,0.057558,0,0.455264,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,18,"NVIDIA GeForce RTX 2080 Ti",75.4858,0.49632,0.057308,0,0.454784,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,19,"NVIDIA GeForce RTX 2080 Ti",76.1648,0.539232,0.043523,0,0.462848,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,20,"NVIDIA GeForce RTX 2080 Ti",73.4384,0.49728,0.094368,0,0.45664,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,21,"NVIDIA GeForce RTX 2080 Ti",83.0048,0.49536,0.038913,0,0.454688,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,22,"NVIDIA GeForce RTX 2080 Ti",68.0038,0.493856,0.048982,0,0.452608,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,23,"NVIDIA GeForce RTX 2080 Ti",65.381,0.51184,0.039855,0,0.462848,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,24,"NVIDIA GeForce RTX 2080 Ti",75.839,0.504544,0.037711,0,0.456,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,25,"NVIDIA GeForce RTX 2080 Ti",68.2006,0.494464,0.038583,0,0.454016,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,26,"NVIDIA GeForce RTX 2080 Ti",64.9307,0.4952,0.04262,0,0.454656,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,27,"NVIDIA GeForce RTX 2080 Ti",66.7801,0.494048,0.045075,0,0.45312,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,28,"NVIDIA GeForce RTX 2080 Ti",69.8776,0.493632,0.048271,0,0.453824,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,29,"NVIDIA GeForce RTX 2080 Ti",65.2059,0.494688,0.053361,0,0.453056,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",10.2345,0.477344,0.050585,0.36864,0.04096,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",7.9007,0.476608,0.05306,0.368608,0.040992,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",8.0089,0.52544,0.061536,0.385568,0.07072,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",10.1803,0.478816,0.038072,0.371136,0.040512,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",10.1246,0.473216,0.056887,0.36608,0.040864,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",10.4391,0.475488,0.039575,0.368384,0.040704,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",11.9564,0.476704,0.045606,0.369152,0.040448,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",12.6543,0.47936,0.072266,0.36944,0.042176,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",10.7411,0.475968,0.048532,0.368096,0.040992,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",8.26957,0.47584,0.038833,0.367552,0.040896,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",8.57898,0.49872,0.06375,0.3848,0.046912,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",8.94825,0.47472,0.042961,0.366368,0.041184,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",7.86686,0.475872,0.034856,0.368,0.040128,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",7.37803,0.473376,0.037401,0.365856,0.040992,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",8.63711,0.475712,0.041388,0.368352,0.040832,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",10.3743,0.476672,0.043462,0.368256,0.041152,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",17.086,0.475552,0.051687,0.367744,0.039808,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",12.5928,0.476672,0.045927,0.368128,0.041248,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",9.45106,0.503808,0.08502,0.370016,0.0648,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",9.72384,0.476032,0.033614,0.367616,0.040448,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",8.99572,0.47776,0.078478,0.369088,0.040512,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",7.74263,0.471776,0.042059,0.36432,0.04064,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",8.88856,0.510016,0.051607,0.401696,0.040704,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",7.61282,0.47536,0.033844,0.368512,0.040736,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",7.34422,0.473824,0.034385,0.36672,0.040832,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",7.15337,0.479296,0.033433,0.371808,0.040288,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",10.8052,0.476064,0.05287,0.368128,0.03984,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",17.892,0.507072,0.053681,0.366944,0.069952,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",12.9523,0.507488,0.069781,0.368416,0.069856,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",9.0035,0.482272,0.033012,0.368736,0.03968,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",9.25141,0.541696,0.038623,0.381184,0.039264,0.042912,0.004768,0.005568,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",7.60991,0.545568,0.030778,0.383904,0.040384,0.042368,0.004736,0.0064,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",8.13966,0.543904,0.041498,0.382976,0.04064,0.042304,0.004736,0.006528,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",9.96139,0.544096,0.038813,0.383584,0.040384,0.040992,0.0056,0.006688,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",8.19841,0.542016,0.04277,0.380928,0.039616,0.042848,0.004736,0.006912,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",9.1988,0.542176,0.035166,0.381824,0.040064,0.042368,0.004736,0.006144,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",8.81583,0.544992,0.037711,0.384672,0.039648,0.042496,0.004736,0.006016,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",9.74805,0.547104,0.044153,0.38672,0.039232,0.043008,0.005152,0.006656,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",20.5496,0.543328,0.045055,0.382816,0.040448,0.041632,0.005216,0.006688,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",15.6501,0.543424,0.045365,0.382176,0.039808,0.042976,0.004736,0.00656,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",10.4535,0.545184,0.043532,0.384,0.04032,0.04128,0.00544,0.00672,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",13.0267,0.545696,0.070943,0.38336,0.040416,0.041984,0.005248,0.00704,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",9.45919,0.542752,0.054774,0.38128,0.040736,0.041216,0.005888,0.0064,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",12.6842,0.54656,0.081864,0.383616,0.04032,0.043008,0.004864,0.006976,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",11.9114,0.546272,0.051097,0.384704,0.040448,0.042144,0.005056,0.006784,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",13.2283,0.54384,0.056296,0.382528,0.03952,0.043008,0.00496,0.006784,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",14.7844,0.548896,0.051217,0.385344,0.04064,0.042656,0.005056,0.006976,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",14.2867,0.560576,0.077827,0.384896,0.041088,0.043008,0.004992,0.007296,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",14.5502,0.54224,0.066455,0.38016,0.040352,0.042144,0.005088,0.006144,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",10.133,0.543392,0.041749,0.382048,0.040416,0.04096,0.005536,0.006752,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",10.0108,0.545312,0.062107,0.38304,0.0408,0.041856,0.005312,0.006912,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",10.1604,0.542688,0.039765,0.382784,0.04048,0.0416,0.005344,0.006528,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",15.2738,0.543232,0.05319,0.382848,0.040064,0.041984,0.004768,0.00656,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",21.0409,0.543776,0.078739,0.382784,0.040352,0.04176,0.005504,0.006784,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",10.4779,0.543168,0.046267,0.382432,0.039456,0.042784,0.004704,0.006848,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",9.9946,0.541056,0.048511,0.380544,0.040032,0.042464,0.004736,0.006048,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",8.46936,0.541312,0.038493,0.381568,0.040192,0.041088,0.005664,0.006432,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",10.3236,0.54656,0.513478,0.384544,0.039584,0.042816,0.004832,0.006944,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",12.6494,0.543136,0.045626,0.38256,0.040128,0.042304,0.004736,0.006208,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",9.53242,0.550816,0.037171,0.38272,0.040256,0.04192,0.005632,0.006592,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
occluded,direct,0,"NVIDIA GeForce RTX 2080 Ti",73.8445,0.493952,0.055274,0,0.452,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,1,"NVIDIA GeForce RTX 2080 Ti",74.6376,0.497088,0.054643,0,0.455648,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,2,"NVIDIA GeForce RTX 2080 Ti",86.7788,0.525344,0.135505,0,0.456704,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,3,"NVIDIA GeForce RTX 2080 Ti",79.7037,0.491264,0.043192,0,0.448864,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,4,"NVIDIA GeForce RTX 2080 Ti",81.5134,0.496448,0.050635,0,0.45488,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,5,"NVIDIA GeForce RTX 2080 Ti",86.2006,0.49216,0.061546,0,0.451616,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,6,"NVIDIA GeForce RTX 2080 Ti",75.4095,0.494432,0.048191,0,0.453856,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,7,"NVIDIA GeForce RTX 2080 Ti",70.0489,0.52832,0.050846,0,0.460544,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,8,"NVIDIA GeForce RTX 2080 Ti",73.386,0.493024,0.061686,0,0.450816,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,9,"NVIDIA GeForce RTX 2080 Ti",76.7645,0.495808,0.056497,0,0.452608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,10,"NVIDIA GeForce RTX 2080 Ti",67.6413,0.493632,0.058771,0,0.452608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,11,"NVIDIA GeForce RTX 2080 Ti",78.5323,0.776288,0.048702,0,0.732672,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,12,"NVIDIA GeForce RTX 2080 Ti",96.2979,0.492896,0.149111,0,0.45168,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,13,"NVIDIA GeForce RTX 2080 Ti",88.5007,0.490944,0.0531,0,0.450368,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,14,"NVIDIA GeForce RTX 2080 Ti",73.6967,0.49296,0.04769,0,0.452448,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,15,"NVIDIA GeForce RTX 2080 Ti",86.3092,0.497728,0.06889,0,0.45472,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,16,"NVIDIA GeForce RTX 2080 Ti",71.8694,0.493824,0.049584,0,0.452416,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,17,"NVIDIA GeForce RTX 2080 Ti",65.6974,0.49216,0.044214,0,0.450592,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,18,"NVIDIA GeForce RTX 2080 Ti",60.4234,0.497408,0.035146,0,0.456544,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,19,"NVIDIA GeForce RTX 2080 Ti",67.8371,0.493664,0.060074,0,0.452384,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,20,"NVIDIA GeForce RTX 2080 Ti",64.5827,0.49216,0.045957,0,0.451872,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,21,"NVIDIA GeForce RTX 2080 Ti",65.686,0.496064,0.038553,0,0.454656,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,22,"NVIDIA GeForce RTX 2080 Ti",74.1536,0.520864,0.052068,0,0.45488,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,23,"NVIDIA GeForce RTX 2080 Ti",71.1269,0.496288,0.0477,0,0.454272,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,24,"NVIDIA GeForce RTX 2080 Ti",83.3638,0.495584,0.051777,0,0.454656,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,25,"NVIDIA GeForce RTX 2080 Ti",81.7074,0.491904,0.040166,0,0.45056,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,26,"NVIDIA GeForce RTX 2080 Ti",76.7724,0.49376,0.191531,0,0.452608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,27,"NVIDIA GeForce RTX 2080 Ti",73.1233,0.49504,0.039234,0,0.454624,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,28,"NVIDIA GeForce RTX 2080 Ti",63.0425,0.49136,0.046918,0,0.450144,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,29,"NVIDIA GeForce RTX 2080 Ti",77.6648,0.521376,0.042861,0,0.456032,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",14.4774,0.4648,0.044975,0.355488,0.043424,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",17.185,0.455968,0.045506,0.349312,0.040448,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",11.4543,0.46208,0.061025,0.352672,0.04272,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",9.62447,0.463232,0.04248,0.353984,0.042112,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",8.6052,0.461696,0.046077,0.355392,0.039872,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",10.2419,0.463648,0.056156,0.354656,0.041408,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",11.1707,0.464,0.052609,0.352288,0.044704,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",10.6159,0.459712,0.04257,0.350912,0.042464,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",15.6276,0.459936,0.065935,0.349856,0.043584,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",28.8169,0.464544,0.05302,0.354144,0.044384,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",11.2826,0.463104,0.089559,0.35312,0.043936,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",8.6756,0.460128,0.036609,0.35088,0.042752,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",8.44459,0.4544,0.04244,0.348064,0.040704,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",7.61272,0.462656,0.039074,0.35408,0.04288,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",8.16355,0.463424,0.064462,0.3536,0.043296,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",8.75887,0.460288,0.038062,0.350624,0.04336,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",9.43202,0.45136,0.046949,0.344672,0.040192,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",10.1467,0.463872,0.048311,0.354368,0.043072,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",9.94169,0.46336,0.0423,0.35408,0.043232,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",10.4227,0.464768,0.041628,0.355296,0.042464,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",9.87489,0.458784,0.052509,0.352448,0.040384,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",8.63709,0.461664,0.039044,0.3512,0.044448,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",7.8951,0.460512,0.041929,0.352576,0.042368,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",9.25643,0.461792,0.064962,0.35296,0.042144,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",9.41982,0.461312,0.043472,0.351456,0.043808,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",11.6268,0.460736,0.043472,0.351616,0.042432,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",9.6367,0.457152,0.041147,0.347744,0.043424,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",12.7255,0.46528,0.040707,0.35728,0.041952,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",16.8869,0.506912,0.058059,0.368352,0.068576,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",11.5638,0.461312,0.05288,0.352128,0.043136,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",11.1048,0.516576,0.043312,0.37152,0.019488,0.039872,0.012576,0.005856,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",8.00563,0.510944,0.032862,0.368992,0.01808,0.040448,0.011744,0.006368,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",9.25465,0.51504,0.037521,0.371104,0.018208,0.040736,0.012128,0.0064,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",8.92057,0.514112,0.048141,0.370176,0.01888,0.04096,0.012224,0.006208,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",9.00081,0.51344,0.031971,0.37008,0.018432,0.040704,0.011936,0.006624,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",10.0041,0.512096,0.044223,0.36832,0.018624,0.039648,0.0128,0.005632,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",10.0069,0.513216,0.034575,0.36928,0.017792,0.04096,0.012832,0.006624,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",10.9418,0.513664,0.04767,0.37072,0.0184,0.040768,0.012096,0.006496,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",11.0964,0.563808,0.048502,0.391328,0.042624,0.04336,0.013152,0.006336,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",13.5784,0.511712,0.047019,0.367904,0.017728,0.04096,0.012608,0.005824,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",11.3898,0.516096,0.051006,0.370912,0.018208,0.04096,0.013344,0.006816,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",10.753,0.513024,0.072907,0.3688,0.018592,0.040864,0.012032,0.00656,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",13.3959,0.519776,0.056216,0.37296,0.018208,0.042304,0.012384,0.006752,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",11.0135,0.517184,0.067978,0.370752,0.018368,0.042368,0.011968,0.00688,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",10.8774,0.51552,0.051006,0.371104,0.018016,0.041408,0.012192,0.005792,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",10.9503,0.51568,0.041769,0.37296,0.018208,0.04096,0.011904,0.0064,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",11.1678,0.512256,0.047219,0.368608,0.01872,0.040384,0.012096,0.006368,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",11.1245,0.51088,0.06394,0.36624,0.018816,0.040992,0.011904,0.006496,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",12.2906,0.514656,0.036869,0.370528,0.018592,0.04096,0.012192,0.00624,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",15.3416,0.51408,0.050395,0.370912,0.018112,0.040704,0.011904,0.006784,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",15.1337,0.519904,0.050345,0.371488,0.01792,0.042368,0.012736,0.007552,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",11.4232,0.51328,0.048943,0.36912,0.018784,0.040512,0.012128,0.006656,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",9.20194,0.516,0.03726,0.372256,0.018464,0.040384,0.012192,0.006688,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",8.23455,0.513216,0.045345,0.369632,0.018656,0.039744,0.0128,0.005632,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",8.71596,0.512928,0.044434,0.369632,0.01872,0.039872,0.012384,0.006048,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",12.179,0.508512,0.054523,0.365504,0.018912,0.03952,0.0128,0.005632,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",18.8849,0.5096,0.047409,0.367584,0.01744,0.04096,0.01248,0.005952,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",14.213,0.513056,0.044293,0.36896,0.018688,0.04096,0.012,0.006432,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",10.6119,0.510816,0.040857,0.366912,0.018656,0.040928,0.011904,0.006368,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",9.88502,0.512032,0.0481,0.368384,0.01856,0.040512,0.011904,0.006464,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
|
@@ -0,0 +1,271 @@
|
||||
scenario,mode,frame,device,cpu_ms,gpu_ms,readback_cpu_ms,gpu_main_cull_ms,gpu_main_raster_ms,gpu_hzb_ms,gpu_post_cull_ms,gpu_post_raster_ms,gpu_bytes,draw_calls,gpu_bins,gpu_visible,gpu_frustum_rejected,gpu_deferred,gpu_post_visible,lod0,lod1,lod2,lod3,hzb_valid,gpu_visibility_active,visibility_diagnostics,visibility_counters_valid,validation_errors
|
||||
frustum,direct,0,"NVIDIA GeForce RTX 2080 Ti",84.8358,0.233696,0.040606,0,0.192512,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,1,"NVIDIA GeForce RTX 2080 Ti",89.8912,0.235008,0.037311,0,0.194528,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,2,"NVIDIA GeForce RTX 2080 Ti",68.5656,0.235648,0.045986,0,0.193344,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,3,"NVIDIA GeForce RTX 2080 Ti",72.8402,0.274336,0.054242,0,0.198592,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,4,"NVIDIA GeForce RTX 2080 Ti",75.3926,0.235936,0.044724,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,5,"NVIDIA GeForce RTX 2080 Ti",76.7995,0.23568,0.04771,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,6,"NVIDIA GeForce RTX 2080 Ti",72.286,0.235168,0.066125,0,0.193504,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,7,"NVIDIA GeForce RTX 2080 Ti",70.7688,0.234304,0.062678,0,0.19344,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,8,"NVIDIA GeForce RTX 2080 Ti",76.7221,0.234304,0.049303,0,0.194432,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,9,"NVIDIA GeForce RTX 2080 Ti",79.533,0.233664,0.040747,0,0.192512,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,10,"NVIDIA GeForce RTX 2080 Ti",71.6348,0.235072,0.050586,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,11,"NVIDIA GeForce RTX 2080 Ti",64.9955,0.236032,0.039264,0,0.194464,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,12,"NVIDIA GeForce RTX 2080 Ti",64.1696,0.262752,0.039735,0,0.195712,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,13,"NVIDIA GeForce RTX 2080 Ti",76.5181,0.324864,0.057108,0,0.282496,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,14,"NVIDIA GeForce RTX 2080 Ti",66.9228,0.26624,0.035337,0,0.19616,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,15,"NVIDIA GeForce RTX 2080 Ti",67.2406,0.234112,0.041528,0,0.194048,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,16,"NVIDIA GeForce RTX 2080 Ti",81.9708,0.235296,0.046388,0,0.194528,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,17,"NVIDIA GeForce RTX 2080 Ti",80.1792,0.234272,0.057198,0,0.193568,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,18,"NVIDIA GeForce RTX 2080 Ti",64.157,0.23456,0.038503,0,0.194464,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,19,"NVIDIA GeForce RTX 2080 Ti",68.3469,0.232544,0.039375,0,0.190464,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,20,"NVIDIA GeForce RTX 2080 Ti",73.6137,0.23376,0.064592,0,0.19296,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,21,"NVIDIA GeForce RTX 2080 Ti",67.4191,0.233664,0.046407,0,0.192512,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,22,"NVIDIA GeForce RTX 2080 Ti",67.5046,0.236032,0.044744,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,23,"NVIDIA GeForce RTX 2080 Ti",73.4016,0.231776,0.04788,0,0.190816,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,24,"NVIDIA GeForce RTX 2080 Ti",79.6889,0.236384,0.054252,0,0.194688,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,25,"NVIDIA GeForce RTX 2080 Ti",62.8455,0.234464,0.03723,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,26,"NVIDIA GeForce RTX 2080 Ti",67.8715,0.23232,0.033152,0,0.191744,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,27,"NVIDIA GeForce RTX 2080 Ti",66.4796,0.234656,0.054974,0,0.193344,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,28,"NVIDIA GeForce RTX 2080 Ti",64.9506,0.23472,0.042821,0,0.193824,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,29,"NVIDIA GeForce RTX 2080 Ti",65.3765,0.234464,0.03743,0,0.1944,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",7.98005,0.122624,0.035397,0.030304,0.024992,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",14.9003,0.122848,0.051918,0.02992,0.02544,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",22.5974,0.176864,0.06366,0.066624,0.038432,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",9.03565,0.122816,0.039524,0.029888,0.025568,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",8.36763,0.122912,0.045887,0.029856,0.025824,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",8.02071,0.146752,0.038293,0.030944,0.0264,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",9.32975,0.123936,0.043321,0.03056,0.026656,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",8.19152,0.122432,0.032842,0.029664,0.026048,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",8.48955,0.12304,0.050064,0.030592,0.026336,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",8.2961,0.1232,0.044845,0.0304,0.026112,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",9.78385,0.123392,0.047069,0.030208,0.025408,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",9.34487,0.122304,0.04235,0.029696,0.025696,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",11.2182,0.12304,0.052048,0.029696,0.026208,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",10.252,0.124128,0.059562,0.031136,0.026208,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",7.59079,0.149472,0.031099,0.034848,0.048768,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",7.59643,0.122496,0.030337,0.029824,0.02592,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",8.36693,0.124096,0.056506,0.029952,0.027328,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",10.2115,0.123648,0.058581,0.030112,0.025824,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",8.0874,0.123552,0.046799,0.030176,0.026528,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",10.4539,0.123488,0.043121,0.029696,0.02608,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",7.34845,0.12304,0.051747,0.030048,0.026272,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",10.5867,0.12352,0.040566,0.030688,0.026464,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",13.2325,0.122912,0.049233,0.029632,0.026144,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",12.5845,0.123808,0.039715,0.029824,0.027104,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",9.41096,0.124288,0.045416,0.0304,0.026816,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",7.22408,0.122624,0.047269,0.029856,0.025952,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",9.6291,0.124064,0.05846,0.030048,0.027104,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",8.8691,0.124608,0.041929,0.03008,0.0272,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",7.45915,0.122592,0.042711,0.02976,0.025536,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",7.27659,0.124224,0.032812,0.029792,0.026432,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",8.42512,0.186976,0.040867,0.037984,0.02832,0.042048,0.005216,0.005984,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",9.13706,0.186112,0.055685,0.03792,0.027616,0.042016,0.004928,0.006304,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",10.0261,0.185056,0.045446,0.038176,0.02736,0.04096,0.005568,0.00672,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",9.99471,0.185504,0.045286,0.038496,0.028288,0.04176,0.004928,0.006592,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",9.63832,0.18544,0.051998,0.036704,0.027168,0.04256,0.004736,0.0072,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",10.8693,0.188992,0.374867,0.038784,0.028864,0.041888,0.00512,0.006624,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",9.27457,0.193312,0.0421,0.037472,0.028064,0.04224,0.004896,0.006112,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",8.32481,0.185184,0.042069,0.037824,0.026432,0.042656,0.004928,0.005664,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",8.24735,0.190016,0.055905,0.038848,0.028992,0.042752,0.005152,0.006784,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",11.1272,0.197696,0.047309,0.037952,0.028,0.042304,0.004992,0.005952,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",7.762,0.18672,0.032812,0.038624,0.02848,0.04144,0.005536,0.006528,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",10.8607,0.18576,0.072127,0.03792,0.027616,0.0416,0.005184,0.006528,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",11.4079,0.18672,0.166685,0.037824,0.028256,0.041088,0.006016,0.006272,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",12.0623,0.189728,0.055444,0.038464,0.02864,0.042112,0.005216,0.006784,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",10.8561,0.18592,0.054944,0.037504,0.028448,0.041248,0.005248,0.00656,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",7.57558,0.184672,0.031089,0.037536,0.027168,0.041664,0.005056,0.006592,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",8.85736,0.185216,0.036088,0.037728,0.027712,0.041088,0.005504,0.006528,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",8.94327,0.188672,0.067327,0.038752,0.027616,0.042752,0.005056,0.006688,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",10.4701,0.185152,0.041098,0.036768,0.02832,0.041408,0.005568,0.006688,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",11.258,0.187744,0.053722,0.0392,0.027648,0.041664,0.005536,0.006752,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",8.64531,0.186304,0.033713,0.037888,0.02816,0.04208,0.004928,0.00624,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",14.7746,0.18432,0.043482,0.037504,0.026496,0.042784,0.004896,0.005568,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",16.4399,0.188288,0.039244,0.03808,0.028928,0.042592,0.004928,0.006304,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",10.5205,0.187552,0.055766,0.038144,0.028576,0.041824,0.005408,0.006752,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",8.22939,0.2136,0.034224,0.037472,0.02832,0.045408,0.009152,0.015776,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",7.98071,0.184576,0.033533,0.037344,0.026208,0.042912,0.004896,0.006528,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",8.70835,0.18864,0.050595,0.037152,0.028864,0.041472,0.005408,0.006816,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",8.53598,0.185408,0.049874,0.037728,0.027808,0.04096,0.005728,0.006528,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",7.91662,0.185824,0.041328,0.037536,0.028096,0.041056,0.005792,0.006496,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",9.39885,0.18624,0.045035,0.037888,0.027712,0.042304,0.004928,0.006016,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,direct,0,"NVIDIA GeForce RTX 2080 Ti",69.0551,0.4976,0.051898,0,0.454976,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,1,"NVIDIA GeForce RTX 2080 Ti",72.5655,0.494112,0.058129,0,0.453216,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,2,"NVIDIA GeForce RTX 2080 Ti",62.2109,0.497088,0.042931,0,0.456704,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,3,"NVIDIA GeForce RTX 2080 Ti",65.8325,0.496576,0.045486,0,0.455168,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,4,"NVIDIA GeForce RTX 2080 Ti",63.6476,0.500064,0.064231,0,0.45936,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,5,"NVIDIA GeForce RTX 2080 Ti",70.0405,0.495008,0.035858,0,0.454144,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,6,"NVIDIA GeForce RTX 2080 Ti",73.6604,0.49888,0.046167,0,0.456608,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,7,"NVIDIA GeForce RTX 2080 Ti",76.7897,0.499232,0.102924,0,0.458208,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,8,"NVIDIA GeForce RTX 2080 Ti",65.6745,0.528096,0.045456,0,0.461184,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,9,"NVIDIA GeForce RTX 2080 Ti",70.39,0.496064,0.052028,0,0.454752,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,10,"NVIDIA GeForce RTX 2080 Ti",66.969,0.496608,0.035347,0,0.455328,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,11,"NVIDIA GeForce RTX 2080 Ti",61.1673,0.498016,0.043062,0,0.457984,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,12,"NVIDIA GeForce RTX 2080 Ti",66.277,0.49088,0.070383,0,0.446464,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,13,"NVIDIA GeForce RTX 2080 Ti",76.6583,0.497184,0.054944,0,0.456064,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,14,"NVIDIA GeForce RTX 2080 Ti",61.576,0.531552,0.051918,0,0.454464,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,15,"NVIDIA GeForce RTX 2080 Ti",67.8576,0.51472,0.037251,0,0.455424,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,16,"NVIDIA GeForce RTX 2080 Ti",67.0659,0.499168,0.066666,0,0.458592,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,17,"NVIDIA GeForce RTX 2080 Ti",61.9121,0.498752,0.05269,0,0.458752,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,18,"NVIDIA GeForce RTX 2080 Ti",66.7569,0.495456,0.060474,0,0.455936,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,19,"NVIDIA GeForce RTX 2080 Ti",67.4733,0.495808,0.056757,0,0.454656,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,20,"NVIDIA GeForce RTX 2080 Ti",65.5331,0.496864,0.041949,0,0.454656,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,21,"NVIDIA GeForce RTX 2080 Ti",68.636,0.525312,0.057158,0,0.469376,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,22,"NVIDIA GeForce RTX 2080 Ti",67.1153,0.498656,0.063209,0,0.456704,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,23,"NVIDIA GeForce RTX 2080 Ti",65.0043,0.502144,0.05849,0,0.454656,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,24,"NVIDIA GeForce RTX 2080 Ti",70.9417,0.497696,0.075733,0,0.457152,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,25,"NVIDIA GeForce RTX 2080 Ti",66.4817,0.492992,0.04764,0,0.452448,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,26,"NVIDIA GeForce RTX 2080 Ti",69.8114,0.497152,0.055915,0,0.455424,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,27,"NVIDIA GeForce RTX 2080 Ti",71.4839,0.498848,0.076985,0,0.456704,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,28,"NVIDIA GeForce RTX 2080 Ti",66.0849,0.513696,0.050616,0,0.464896,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,29,"NVIDIA GeForce RTX 2080 Ti",75.5549,0.499392,0.059783,0,0.458592,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",18.5607,0.137728,0.05313,0.03152,0.04016,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",12.5255,0.188608,0.041729,0.048832,0.069888,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",10.0809,0.137952,0.059523,0.030496,0.040576,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",7.84954,0.137856,0.036469,0.030304,0.03984,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",8.22552,0.13808,0.036078,0.030528,0.040704,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",10.1264,0.138624,0.088978,0.030464,0.041184,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",8.40914,0.137792,0.048281,0.03104,0.040576,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",11.0082,0.138464,0.056677,0.030688,0.039584,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",8.53442,0.137504,0.038112,0.029792,0.040416,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",8.44042,0.139136,0.039524,0.030528,0.041152,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",14.1365,0.137408,0.054754,0.031104,0.040256,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",12.9593,0.13824,0.04233,0.030432,0.03968,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",12.0358,0.138208,0.062367,0.030528,0.040768,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",9.92836,0.139712,0.086583,0.031904,0.039776,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",9.64748,0.137664,0.068329,0.030336,0.039808,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",10.4127,0.138144,0.039905,0.030304,0.041024,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",7.41973,0.13808,0.038112,0.03056,0.04048,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",8.94168,0.138368,0.057218,0.030464,0.04,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",8.73272,0.1384,0.042771,0.031168,0.040512,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",10.8108,0.138016,0.051307,0.031072,0.040352,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",11.2231,0.138016,0.037671,0.030688,0.039936,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",10.0337,0.138048,0.045476,0.030368,0.03984,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",11.4823,0.137952,0.04763,0.030368,0.039808,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",13.9335,0.138048,0.050595,0.030624,0.039616,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",9.29238,0.137888,0.038913,0.030688,0.039328,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",10.5871,0.140224,0.052249,0.031392,0.040832,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",10.7878,0.139968,0.053662,0.032448,0.04096,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",10.9381,0.139456,0.055014,0.031232,0.040608,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",8.00041,0.137984,0.04248,0.030208,0.040128,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",7.38412,0.13744,0.035167,0.029888,0.040288,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",12.3338,0.20368,0.077135,0.043584,0.039872,0.041952,0.005152,0.006656,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",9.352,0.202336,0.033964,0.042304,0.039616,0.042496,0.0048,0.005952,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",8.09758,0.202016,0.03159,0.042368,0.039552,0.041728,0.00528,0.00624,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",10.7041,0.2056,0.097213,0.042912,0.041248,0.041728,0.005504,0.006144,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",10.0423,0.206816,0.044824,0.044928,0.039904,0.042112,0.004928,0.006208,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",10.2633,0.203712,0.041418,0.043968,0.04,0.04144,0.00512,0.006688,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",10.5094,0.203424,0.037871,0.04336,0.040064,0.04176,0.005472,0.006496,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",8.57102,0.20304,0.044594,0.043072,0.040512,0.04128,0.004896,0.006752,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",12.4202,0.221408,0.04231,0.042816,0.039872,0.041248,0.005024,0.00656,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",11.0533,0.20288,0.0474,0.042688,0.039232,0.04208,0.004832,0.006336,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",10.1613,0.20352,0.051588,0.043296,0.039456,0.042112,0.005152,0.005984,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",9.9876,0.202208,0.055865,0.043008,0.038912,0.042272,0.004832,0.006144,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",8.4274,0.201888,0.03207,0.042656,0.039264,0.042208,0.004832,0.006208,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",8.57586,0.202816,0.038142,0.043488,0.04,0.041664,0.005088,0.006688,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",10.8099,0.20256,0.039304,0.042944,0.04032,0.04144,0.004832,0.005632,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",8.73306,0.202848,0.039835,0.042624,0.039744,0.041568,0.005536,0.006144,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",8.28309,0.20192,0.034746,0.04224,0.039936,0.041664,0.004992,0.006528,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",9.52823,0.2016,0.043221,0.04192,0.040288,0.041152,0.005024,0.006528,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",12.4941,0.26336,0.046818,0.066432,0.068736,0.045056,0.006368,0.007584,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",14.6017,0.203488,0.057669,0.043168,0.039776,0.041536,0.005152,0.00752,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",10.8673,0.202208,0.055514,0.042432,0.039776,0.04144,0.005024,0.006688,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",7.99268,0.201632,0.033393,0.042656,0.039264,0.041536,0.005088,0.006528,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",9.16843,0.201504,0.046348,0.042208,0.038688,0.0424,0.004832,0.006016,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",8.43381,0.208,0.05334,0.0448,0.040736,0.042176,0.005568,0.00704,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",9.05219,0.201696,0.041589,0.042048,0.039904,0.041312,0.005024,0.006656,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",9.43528,0.202208,0.048902,0.042784,0.039744,0.04128,0.005152,0.00656,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",9.04983,0.201568,0.034014,0.042592,0.039328,0.0416,0.005152,0.006496,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",9.08282,0.201472,0.040316,0.043328,0.038592,0.042144,0.004832,0.006272,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",12.649,0.202912,0.05833,0.04256,0.03936,0.04272,0.004864,0.005664,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",10.7353,0.2024,0.047309,0.04336,0.039904,0.041408,0.004832,0.006752,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
occluded,direct,0,"NVIDIA GeForce RTX 2080 Ti",68.8403,0.496096,0.055975,0,0.455072,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,1,"NVIDIA GeForce RTX 2080 Ti",63.9436,0.496128,0.05812,0,0.455904,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,2,"NVIDIA GeForce RTX 2080 Ti",72.3147,0.495776,0.056797,0,0.453536,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,3,"NVIDIA GeForce RTX 2080 Ti",65.6657,0.496128,0.055975,0,0.45504,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,4,"NVIDIA GeForce RTX 2080 Ti",59.0524,0.497312,0.050626,0,0.458656,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,5,"NVIDIA GeForce RTX 2080 Ti",64.8322,0.51728,0.046097,0,0.470976,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,6,"NVIDIA GeForce RTX 2080 Ti",59.0104,0.497472,0.046287,0,0.457632,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,7,"NVIDIA GeForce RTX 2080 Ti",61.4887,0.49568,0.040777,0,0.455392,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,8,"NVIDIA GeForce RTX 2080 Ti",67.2787,0.49728,0.033343,0,0.457792,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,9,"NVIDIA GeForce RTX 2080 Ti",62.5564,0.5312,0.049173,0,0.462816,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,10,"NVIDIA GeForce RTX 2080 Ti",76.4275,0.496352,0.035557,0,0.454208,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,11,"NVIDIA GeForce RTX 2080 Ti",75.3528,0.529088,0.039014,0,0.462112,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,12,"NVIDIA GeForce RTX 2080 Ti",61.2523,0.498592,0.045616,0,0.458752,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,13,"NVIDIA GeForce RTX 2080 Ti",63.0935,0.496,0.050455,0,0.45568,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,14,"NVIDIA GeForce RTX 2080 Ti",65.798,0.498432,0.052398,0,0.4568,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,15,"NVIDIA GeForce RTX 2080 Ti",70.4662,0.496448,0.043502,0,0.4552,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,16,"NVIDIA GeForce RTX 2080 Ti",66.6487,0.498848,0.035748,0,0.458752,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,17,"NVIDIA GeForce RTX 2080 Ti",65.2278,0.497536,0.039154,0,0.456704,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,18,"NVIDIA GeForce RTX 2080 Ti",62.0441,0.497056,0.053591,0,0.456096,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,19,"NVIDIA GeForce RTX 2080 Ti",63.6593,0.497792,0.050876,0,0.456672,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,20,"NVIDIA GeForce RTX 2080 Ti",75.6206,0.496864,0.067227,0,0.456352,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,21,"NVIDIA GeForce RTX 2080 Ti",71.1253,0.496768,0.043853,0,0.4552,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,22,"NVIDIA GeForce RTX 2080 Ti",73.0983,0.49808,0.052509,0,0.456704,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,23,"NVIDIA GeForce RTX 2080 Ti",64.8811,0.493056,0.048562,0,0.451968,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,24,"NVIDIA GeForce RTX 2080 Ti",58.6158,0.523232,0.048111,0,0.466432,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,25,"NVIDIA GeForce RTX 2080 Ti",66.1309,0.495136,0.061616,0,0.4536,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,26,"NVIDIA GeForce RTX 2080 Ti",67.6235,0.496032,0.1962,0,0.454656,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,27,"NVIDIA GeForce RTX 2080 Ti",70.0381,0.528096,0.050485,0,0.458944,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,28,"NVIDIA GeForce RTX 2080 Ti",61.6391,0.4952,0.146055,0,0.454528,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,29,"NVIDIA GeForce RTX 2080 Ti",63.9159,0.496,0.039875,0,0.456288,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",9.86681,0.13952,0.040977,0.030048,0.042208,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",8.18392,0.136736,0.035698,0.029952,0.03968,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",9.87609,0.137376,0.04251,0.029632,0.04112,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",16.2261,0.163424,0.049173,0.03024,0.04064,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",18.0433,0.141984,0.055495,0.0304,0.043328,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",10.016,0.136192,0.03153,0.029888,0.03856,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",8.30434,0.136128,0.032261,0.029984,0.039424,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",8.87967,0.139136,0.057809,0.029024,0.043168,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",8.39916,0.137216,0.041969,0.031104,0.040064,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",9.84957,0.136288,0.039294,0.029824,0.038752,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",9.58889,0.18784,0.15352,0.048032,0.07072,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",9.34888,0.139136,0.054052,0.029888,0.041792,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",15.882,0.136864,0.042089,0.03056,0.039072,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",17.5434,0.138048,0.05811,0.030432,0.040608,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",13.3317,0.139072,0.060264,0.029792,0.042048,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",9.85365,0.138048,0.051838,0.030688,0.040032,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",10.6854,0.142528,0.070162,0.0328,0.041088,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",10.0043,0.137664,0.039234,0.029216,0.040512,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",9.03373,0.137184,0.046318,0.029888,0.03936,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",10.5422,0.13824,0.033673,0.030016,0.040064,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",9.16648,0.136608,0.048752,0.030304,0.039328,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",12.4294,0.1376,0.051007,0.030528,0.039712,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",12.0825,0.136,0.040947,0.029632,0.039232,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",13.2394,0.139232,0.052278,0.030272,0.041408,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",9.26593,0.13552,0.033964,0.029504,0.038272,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",9.65316,0.138688,0.124735,0.030176,0.040256,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",11.026,0.139872,0.059462,0.030976,0.040704,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",9.83545,0.13728,0.061546,0.030112,0.03952,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",9.27993,0.136384,0.039174,0.02992,0.039712,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",24.2924,0.138592,0.045686,0.03088,0.040704,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",10.6152,0.18736,0.049734,0.040416,0.01904,0.041664,0.012672,0.006496,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",11.2771,0.187712,0.089729,0.041472,0.01904,0.04176,0.012544,0.006016,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",9.75047,0.189248,0.07933,0.042496,0.018816,0.041536,0.01248,0.006816,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",9.48813,0.189216,0.070934,0.042624,0.019072,0.041216,0.012512,0.00592,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",9.96128,0.187904,0.036448,0.041664,0.017728,0.042272,0.012576,0.006592,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",9.65084,0.188096,0.083958,0.04128,0.018592,0.042272,0.01232,0.006656,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",8.54836,0.189952,0.036799,0.04384,0.019296,0.041472,0.012768,0.006528,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",8.79947,0.188992,0.042019,0.043168,0.018272,0.04224,0.012256,0.006464,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",8.12835,0.187584,0.038994,0.04176,0.01904,0.041312,0.012608,0.006016,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",11.7155,0.190464,0.060454,0.042848,0.018784,0.042048,0.012512,0.00672,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",21.1644,0.187488,0.042049,0.042016,0.01872,0.041312,0.012896,0.005888,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",13.9463,0.18816,0.054633,0.041024,0.019712,0.041536,0.012288,0.006272,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",13.2591,0.189664,0.053451,0.042848,0.018592,0.04256,0.012576,0.006304,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",11.1836,0.189728,0.055615,0.042176,0.019072,0.041568,0.012512,0.007168,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",10.9075,0.188416,0.038593,0.0424,0.01904,0.041728,0.012448,0.006688,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",9.85021,0.190016,0.140365,0.043776,0.018944,0.041728,0.012928,0.006816,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",10.0282,0.226976,0.034315,0.040864,0.018848,0.081472,0.012352,0.006528,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",9.61147,0.19008,0.046698,0.043936,0.0192,0.041312,0.012672,0.00576,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",12.6934,0.186688,0.050956,0.040864,0.019296,0.04112,0.012352,0.00608,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",13.5272,0.18768,0.045887,0.041632,0.01888,0.041504,0.012512,0.006304,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",11.6951,0.187936,0.041739,0.042144,0.019072,0.04128,0.012704,0.005632,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",8.86532,0.18784,0.040066,0.041664,0.01824,0.042208,0.01232,0.006656,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",8.34804,0.18832,0.057037,0.04272,0.01872,0.041984,0.01248,0.006496,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",11.058,0.189056,0.059382,0.041312,0.01888,0.042496,0.012512,0.006432,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",9.48892,0.187936,0.03696,0.041984,0.019072,0.041344,0.012288,0.006144,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",9.41008,0.189408,0.038653,0.042784,0.018752,0.04096,0.013184,0.006848,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",9.81329,0.1872,0.044684,0.041472,0.018976,0.041312,0.01248,0.006464,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",11.4672,0.188768,0.04249,0.043232,0.018464,0.04096,0.012928,0.006624,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",15.5826,0.187008,0.060204,0.041696,0.018976,0.041472,0.012288,0.0064,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",12.9027,0.188,0.067187,0.041472,0.019296,0.041344,0.01248,0.00624,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
|
@@ -0,0 +1,271 @@
|
||||
scenario,mode,frame,device,cpu_ms,gpu_ms,readback_cpu_ms,gpu_main_cull_ms,gpu_main_raster_ms,gpu_hzb_ms,gpu_post_cull_ms,gpu_post_raster_ms,gpu_bytes,draw_calls,gpu_bins,gpu_visible,gpu_frustum_rejected,gpu_deferred,gpu_post_visible,lod0,lod1,lod2,lod3,hzb_valid,gpu_visibility_active,visibility_diagnostics,visibility_counters_valid,validation_errors
|
||||
frustum,direct,0,"NVIDIA GeForce RTX 2080 Ti",66.7005,0.233312,0.041498,0,0.192384,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,1,"NVIDIA GeForce RTX 2080 Ti",63.7382,0.235936,0.062669,0,0.19328,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,2,"NVIDIA GeForce RTX 2080 Ti",75.2129,0.363328,0.054813,0,0.31968,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,3,"NVIDIA GeForce RTX 2080 Ti",67.7748,0.234976,0.060584,0,0.193856,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,4,"NVIDIA GeForce RTX 2080 Ti",60.4237,0.235072,0.045746,0,0.193248,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,5,"NVIDIA GeForce RTX 2080 Ti",75.672,0.235232,0.049183,0,0.192832,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,6,"NVIDIA GeForce RTX 2080 Ti",74.7586,0.23184,0.057027,0,0.190592,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,7,"NVIDIA GeForce RTX 2080 Ti",79.9626,0.23472,0.054243,0,0.192832,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,8,"NVIDIA GeForce RTX 2080 Ti",79.629,0.232128,0.044774,0,0.190464,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,9,"NVIDIA GeForce RTX 2080 Ti",71.7576,0.234368,0.038933,0,0.1936,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,10,"NVIDIA GeForce RTX 2080 Ti",70.1824,0.275456,0.067658,0,0.20128,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,11,"NVIDIA GeForce RTX 2080 Ti",91.5564,0.235616,0.094949,0,0.193344,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,12,"NVIDIA GeForce RTX 2080 Ti",70.5926,0.234912,0.056337,0,0.192544,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,13,"NVIDIA GeForce RTX 2080 Ti",67.0058,0.234496,0.042991,0,0.194048,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,14,"NVIDIA GeForce RTX 2080 Ti",68.5199,0.233056,0.054152,0,0.191328,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,15,"NVIDIA GeForce RTX 2080 Ti",63.8844,0.233856,0.055284,0,0.19136,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,16,"NVIDIA GeForce RTX 2080 Ti",70.1615,0.231808,0.044163,0,0.190624,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,17,"NVIDIA GeForce RTX 2080 Ti",68.5638,0.234048,0.037791,0,0.194016,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,18,"NVIDIA GeForce RTX 2080 Ti",72.512,0.235168,0.046818,0,0.194336,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,19,"NVIDIA GeForce RTX 2080 Ti",74.3427,0.25984,0.039044,0,0.194304,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,20,"NVIDIA GeForce RTX 2080 Ti",88.4309,0.233632,0.041448,0,0.192448,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,21,"NVIDIA GeForce RTX 2080 Ti",70.7703,0.235232,0.055495,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,22,"NVIDIA GeForce RTX 2080 Ti",70.2475,0.234464,0.044944,0,0.192512,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,23,"NVIDIA GeForce RTX 2080 Ti",65.063,0.234208,0.038403,0,0.19328,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,24,"NVIDIA GeForce RTX 2080 Ti",66.9359,0.234976,0.045306,0,0.194368,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,25,"NVIDIA GeForce RTX 2080 Ti",67.6814,0.2344,0.050997,0,0.19424,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,26,"NVIDIA GeForce RTX 2080 Ti",86.3749,0.232768,0.050195,0,0.1912,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,27,"NVIDIA GeForce RTX 2080 Ti",94.8621,0.236064,0.055535,0,0.19584,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,28,"NVIDIA GeForce RTX 2080 Ti",85.9054,0.319936,0.075472,0,0.27712,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,29,"NVIDIA GeForce RTX 2080 Ti",76.1057,0.236,0.047089,0,0.194688,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",12.3398,0.124032,0.041598,0.030496,0.026464,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",11.4442,0.123776,0.04766,0.029856,0.026336,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",10.9857,0.125472,0.054473,0.030304,0.02704,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",11.1582,0.124608,0.05824,0.031392,0.025856,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",13.0445,0.12448,0.064692,0.032032,0.026272,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",14.1908,0.124576,0.058921,0.03056,0.026432,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",18.0479,0.12464,0.059141,0.030496,0.026624,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",16.2661,0.125376,0.056777,0.031168,0.027264,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",16.5833,0.124224,0.044114,0.030624,0.026496,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",22.5695,0.12464,0.046878,0.03072,0.02656,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",11.9563,0.125152,0.062338,0.03104,0.026368,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",23.4212,0.124448,0.077246,0.030976,0.026272,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",15.1145,0.127008,0.067266,0.033056,0.026336,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",17.5413,0.12624,0.062868,0.031776,0.026592,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",16.9894,0.124704,0.04727,0.031008,0.026272,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",10.5089,0.124064,0.045786,0.030464,0.026496,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",11.1135,0.12384,0.059122,0.030432,0.026368,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",11.2476,0.125632,0.071445,0.031232,0.027552,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",11.6336,0.124224,0.068449,0.030752,0.026208,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",11.0582,0.124256,0.063049,0.030304,0.02688,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",13.341,0.1248,0.055705,0.030528,0.026816,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",26.5157,0.154496,0.047159,0.04592,0.038624,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",11.1959,0.124928,0.060063,0.030752,0.027296,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",13.0607,0.126624,0.097584,0.0312,0.027072,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",13.3403,0.12368,0.056306,0.030944,0.0264,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",12.1688,0.123392,0.054052,0.030016,0.02576,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",11.4347,0.122624,0.056156,0.029696,0.025952,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",11.6937,0.124512,0.055384,0.030656,0.026912,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",19.5952,0.12368,0.043943,0.030528,0.025728,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",13.5768,0.155008,0.068139,0.046912,0.03888,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",10.3616,0.186112,0.052499,0.039392,0.027648,0.04128,0.004864,0.00672,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",9.32786,0.186784,0.05299,0.037984,0.027712,0.0424,0.004832,0.006016,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",10.0321,0.188736,0.066034,0.038528,0.029056,0.042112,0.005056,0.007264,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",10.0553,0.186592,0.036028,0.03904,0.027968,0.041344,0.004832,0.006656,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",8.81469,0.186688,0.049013,0.038272,0.0272,0.04224,0.005024,0.007104,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",12.5002,0.186112,0.044784,0.03824,0.028384,0.041632,0.004832,0.005696,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",15.7961,0.186816,0.049604,0.037952,0.027584,0.042272,0.005024,0.005952,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",11.6553,0.1864,0.037751,0.038304,0.028608,0.041632,0.005024,0.006624,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",9.10932,0.187104,0.039485,0.037504,0.028736,0.04192,0.005024,0.006464,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",10.1925,0.188416,0.054212,0.039296,0.028288,0.04224,0.005056,0.005952,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",9.01017,0.18656,0.044774,0.038464,0.027072,0.04256,0.005024,0.005664,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",10.12,0.18544,0.049784,0.037184,0.028384,0.041408,0.005088,0.006656,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",9.78974,0.186432,0.053931,0.037664,0.028704,0.04144,0.005056,0.006592,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",10.6888,0.187392,0.038523,0.037664,0.028384,0.043008,0.005088,0.006624,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",11.3016,0.18688,0.038493,0.038144,0.027392,0.043008,0.005376,0.006528,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",14.1208,0.188032,0.055475,0.039072,0.02736,0.042944,0.005024,0.006624,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",9.49592,0.188256,0.03719,0.039008,0.028576,0.04256,0.005088,0.006752,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",9.22754,0.185984,0.05272,0.037472,0.027712,0.042016,0.005248,0.006496,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",9.89965,0.221312,0.06353,0.039744,0.028032,0.045152,0.008384,0.018144,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",12.1165,0.204,0.143301,0.041664,0.027968,0.043328,0.005248,0.00672,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",10.0231,0.186624,0.041969,0.038432,0.027104,0.042816,0.005184,0.00672,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",10.1389,0.187392,0.053951,0.038848,0.02672,0.042912,0.005056,0.006656,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",8.79264,0.186752,0.043913,0.038944,0.027904,0.041664,0.005472,0.00656,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",10.0527,0.187232,0.041578,0.038016,0.02816,0.042208,0.004864,0.0064,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",10.9321,0.187648,0.050335,0.03856,0.028288,0.041504,0.005024,0.006688,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",10.1327,0.185952,0.049163,0.037728,0.027552,0.04192,0.005088,0.006656,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",8.75544,0.185984,0.040967,0.038816,0.028192,0.041472,0.004992,0.00672,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",8.59143,0.210944,0.034555,0.046624,0.044576,0.041888,0.005216,0.006592,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",8.09417,0.187136,0.044664,0.038336,0.028608,0.0416,0.005344,0.006592,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",10.8794,0.192512,0.045656,0.038368,0.027168,0.042624,0.005248,0.006752,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,direct,0,"NVIDIA GeForce RTX 2080 Ti",70.0076,0.498848,0.05263,0,0.458336,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,1,"NVIDIA GeForce RTX 2080 Ti",72.6421,0.497056,0.039184,0,0.456672,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,2,"NVIDIA GeForce RTX 2080 Ti",75.5324,0.497088,0.040497,0,0.455104,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,3,"NVIDIA GeForce RTX 2080 Ti",66.2998,0.498912,0.056536,0,0.45808,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,4,"NVIDIA GeForce RTX 2080 Ti",69.4064,0.498976,0.039435,0,0.458752,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,5,"NVIDIA GeForce RTX 2080 Ti",66.5362,0.498656,0.034394,0,0.458144,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,6,"NVIDIA GeForce RTX 2080 Ti",66.2836,0.496704,0.044544,0,0.455168,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,7,"NVIDIA GeForce RTX 2080 Ti",58.3216,0.768352,0.041849,0,0.726784,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,8,"NVIDIA GeForce RTX 2080 Ti",65.6714,0.496064,0.060885,0,0.45312,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,9,"NVIDIA GeForce RTX 2080 Ti",75.7523,0.500896,0.072066,0,0.46,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,10,"NVIDIA GeForce RTX 2080 Ti",72.9653,0.521216,0.042871,0,0.465952,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,11,"NVIDIA GeForce RTX 2080 Ti",71.5952,0.507552,0.048802,0,0.45824,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,12,"NVIDIA GeForce RTX 2080 Ti",69.3442,0.497024,0.067327,0,0.456128,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,13,"NVIDIA GeForce RTX 2080 Ti",62.833,0.511392,0.048612,0,0.45664,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,14,"NVIDIA GeForce RTX 2080 Ti",65.9509,0.495328,0.066506,0,0.453312,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,15,"NVIDIA GeForce RTX 2080 Ti",66.0841,0.530752,0.054693,0,0.464896,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,16,"NVIDIA GeForce RTX 2080 Ti",65.6416,0.499136,0.049103,0,0.456896,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,17,"NVIDIA GeForce RTX 2080 Ti",70.6312,0.49792,0.038072,0,0.457216,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,18,"NVIDIA GeForce RTX 2080 Ti",68.2836,0.497152,0.034115,0,0.456192,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,19,"NVIDIA GeForce RTX 2080 Ti",62.8091,0.495296,0.047199,0,0.454656,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,20,"NVIDIA GeForce RTX 2080 Ti",64.8648,0.799232,0.053872,0,0.75568,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,21,"NVIDIA GeForce RTX 2080 Ti",70.6488,0.49696,0.032902,0,0.456704,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,22,"NVIDIA GeForce RTX 2080 Ti",66.2623,0.499008,0.049754,0,0.458752,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,23,"NVIDIA GeForce RTX 2080 Ti",63.1523,0.515872,0.03709,0,0.473088,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,24,"NVIDIA GeForce RTX 2080 Ti",66.441,0.496032,0.034124,0,0.45568,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,25,"NVIDIA GeForce RTX 2080 Ti",83.2142,0.495552,0.055845,0,0.454752,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,26,"NVIDIA GeForce RTX 2080 Ti",72.8758,0.49664,0.058571,0,0.454656,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,27,"NVIDIA GeForce RTX 2080 Ti",76.8311,0.498912,0.050295,0,0.458016,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,28,"NVIDIA GeForce RTX 2080 Ti",79.5977,0.500512,0.052519,0,0.458752,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,29,"NVIDIA GeForce RTX 2080 Ti",101.698,0.500352,0.13773,0,0.458656,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",8.95913,0.137952,0.067387,0.0304,0.04128,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",8.34064,0.137568,0.038202,0.030304,0.041152,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",8.46145,0.138816,0.041989,0.029792,0.04048,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",9.44575,0.137248,0.052169,0.030336,0.040768,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",10.9972,0.137312,0.106932,0.029984,0.040896,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",10.6868,0.138496,0.049323,0.03024,0.041184,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",10.5217,0.138496,0.073699,0.030848,0.040832,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",10.0089,0.137632,0.039474,0.029888,0.040832,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",7.88794,0.137856,0.046898,0.029856,0.041056,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",8.76643,0.137344,0.03712,0.030144,0.040928,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",8.16545,0.16992,0.045776,0.030592,0.070464,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",8.38907,0.137664,0.045136,0.029472,0.04064,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",7.80729,0.13856,0.048392,0.029696,0.040672,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",10.1708,0.13808,0.045506,0.030112,0.04048,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",12.4691,0.137664,0.054413,0.030016,0.040832,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",10.4292,0.140192,0.041609,0.032192,0.041216,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",9.96744,0.138528,0.050815,0.030976,0.040704,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",9.02957,0.14384,0.10077,0.032992,0.042592,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",11.8813,0.142272,0.07947,0.031936,0.04032,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",11.0134,0.139424,0.038443,0.031488,0.040192,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",7.52869,0.13744,0.041679,0.029728,0.039904,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",9.41294,0.138912,0.058531,0.029856,0.0416,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",8.55357,0.138688,0.070293,0.030592,0.0408,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",8.55697,0.13824,0.038102,0.030112,0.041056,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",10.6812,0.13728,0.044404,0.029632,0.040608,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",13.9002,0.138304,0.04277,0.030496,0.041184,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",10.5238,0.138784,0.046799,0.030176,0.041472,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",10.3655,0.1384,0.050165,0.030016,0.04048,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",8.51982,0.138112,0.047108,0.029952,0.04112,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",9.2843,0.1392,0.072847,0.030176,0.0416,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",8.4629,0.203808,0.041458,0.043712,0.04016,0.0424,0.005088,0.005856,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",7.80593,0.201824,0.035457,0.042656,0.039744,0.041344,0.0048,0.0056,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",9.69801,0.204928,0.048061,0.04336,0.040608,0.04256,0.00528,0.006528,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",12.8397,0.2568,0.043883,0.070592,0.064384,0.041376,0.005248,0.006784,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",15.4456,0.202496,0.042249,0.0424,0.039808,0.04144,0.005024,0.007104,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",9.64483,0.202784,0.057318,0.042592,0.039776,0.04096,0.005536,0.006752,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",8.79102,0.203968,0.048792,0.043328,0.0392,0.042528,0.004896,0.005824,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",8.52589,0.202336,0.033323,0.0432,0.03872,0.042304,0.005088,0.005856,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",8.282,0.2032,0.046958,0.043456,0.040096,0.041376,0.005056,0.00656,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",8.32458,0.202976,0.043823,0.04272,0.040064,0.041024,0.005568,0.006592,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",8.26022,0.203168,0.049344,0.04368,0.039968,0.04128,0.004896,0.006592,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",10.0599,0.202624,0.058099,0.043488,0.039872,0.041568,0.005216,0.006528,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",9.30114,0.202784,0.041267,0.043328,0.039776,0.041824,0.005024,0.00656,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",9.06214,0.202464,0.041458,0.042784,0.039904,0.04096,0.0056,0.006528,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",10.8207,0.232128,0.04252,0.042624,0.053952,0.0576,0.005088,0.006528,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",10.9049,0.2024,0.045235,0.042816,0.039232,0.04096,0.005888,0.0064,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",10.9397,0.20464,0.082085,0.042784,0.039648,0.042592,0.005216,0.006976,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",9.05887,0.202848,0.033884,0.042912,0.04032,0.041664,0.0048,0.006528,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",8.51492,0.203264,0.03718,0.042816,0.03984,0.042208,0.004832,0.006208,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",10.3224,0.205248,0.043623,0.043808,0.04016,0.042304,0.004832,0.007488,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",8.94971,0.203552,0.044895,0.043488,0.04016,0.041312,0.005056,0.006592,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",8.98899,0.203136,0.038443,0.04288,0.039232,0.042496,0.004832,0.00592,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",9.26466,0.202752,0.035186,0.042848,0.039328,0.04256,0.0048,0.005888,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",9.04568,0.202752,0.053111,0.04288,0.040064,0.041824,0.004832,0.005568,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",14.1947,0.202752,0.061326,0.043648,0.040224,0.04112,0.005024,0.006592,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",17.6869,0.20576,0.060774,0.044384,0.039584,0.04208,0.005344,0.005824,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",11.3059,0.202688,0.041458,0.042816,0.039104,0.042016,0.004832,0.0064,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",8.60399,0.2344,0.061185,0.057536,0.056544,0.041568,0.005408,0.00656,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",8.09649,0.203008,0.045255,0.043072,0.040544,0.041312,0.005152,0.00672,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",9.14007,0.204736,0.070563,0.043168,0.040192,0.041696,0.005376,0.006912,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
occluded,direct,0,"NVIDIA GeForce RTX 2080 Ti",67.9203,0.49616,0.045866,0,0.454656,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,1,"NVIDIA GeForce RTX 2080 Ti",63.9858,0.496288,0.052629,0,0.455232,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,2,"NVIDIA GeForce RTX 2080 Ti",53.3949,0.494656,0.038362,0,0.45392,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,3,"NVIDIA GeForce RTX 2080 Ti",65.0744,0.495296,0.036208,0,0.452864,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,4,"NVIDIA GeForce RTX 2080 Ti",63.4083,0.499264,0.04782,0,0.4576,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,5,"NVIDIA GeForce RTX 2080 Ti",66.6435,0.496192,0.059342,0,0.454784,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,6,"NVIDIA GeForce RTX 2080 Ti",73.2405,0.539328,0.058921,0,0.462848,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,7,"NVIDIA GeForce RTX 2080 Ti",69.8945,0.495584,0.045846,0,0.454656,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,8,"NVIDIA GeForce RTX 2080 Ti",64.2085,0.502496,0.045977,0,0.4576,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,9,"NVIDIA GeForce RTX 2080 Ti",73.6065,0.49664,0.05267,0,0.455968,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,10,"NVIDIA GeForce RTX 2080 Ti",68.9732,0.497184,0.045917,0,0.456608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,11,"NVIDIA GeForce RTX 2080 Ti",63.9363,0.5304,0.037681,0,0.459744,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,12,"NVIDIA GeForce RTX 2080 Ti",69.4305,0.528224,0.060094,0,0.458752,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,13,"NVIDIA GeForce RTX 2080 Ti",65.4904,0.497088,0.045195,0,0.455552,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,14,"NVIDIA GeForce RTX 2080 Ti",73.3385,0.497472,0.044174,0,0.456288,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,15,"NVIDIA GeForce RTX 2080 Ti",69.4333,0.522112,0.053852,0,0.461824,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,16,"NVIDIA GeForce RTX 2080 Ti",60.9449,0.497952,0.046247,0,0.457536,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,17,"NVIDIA GeForce RTX 2080 Ti",64.5763,0.495488,0.052259,0,0.4536,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,18,"NVIDIA GeForce RTX 2080 Ti",61.0378,0.51904,0.034064,0,0.466944,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,19,"NVIDIA GeForce RTX 2080 Ti",63.1849,0.494656,0.048982,0,0.452896,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,20,"NVIDIA GeForce RTX 2080 Ti",73.5758,0.497984,0.050365,0,0.45712,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,21,"NVIDIA GeForce RTX 2080 Ti",71.5768,0.498976,0.079099,0,0.457888,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,22,"NVIDIA GeForce RTX 2080 Ti",67.6747,0.494304,0.059432,0,0.454176,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,23,"NVIDIA GeForce RTX 2080 Ti",73.4275,0.498656,0.159682,0,0.458208,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,24,"NVIDIA GeForce RTX 2080 Ti",80.4729,0.500576,0.065935,0,0.458752,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,25,"NVIDIA GeForce RTX 2080 Ti",65.3781,0.499584,0.050365,0,0.458752,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,26,"NVIDIA GeForce RTX 2080 Ti",70.5348,0.496544,0.051587,0,0.454784,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,27,"NVIDIA GeForce RTX 2080 Ti",82.9748,0.494912,0.042921,0,0.45344,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,28,"NVIDIA GeForce RTX 2080 Ti",67.384,0.49536,0.033192,0,0.454656,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,29,"NVIDIA GeForce RTX 2080 Ti",59.4325,0.496416,0.046227,0,0.454656,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",8.43271,0.140032,0.061696,0.030496,0.041344,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",10.0304,0.141248,0.03715,0.030848,0.041536,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",10.2362,0.140896,0.046087,0.031072,0.042656,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",7.56024,0.137696,0.050475,0.03088,0.039936,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",8.91844,0.140032,0.07945,0.030592,0.042912,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",10.2508,0.137088,0.046868,0.030496,0.04032,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",22.7088,0.137088,0.050105,0.030272,0.03936,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",10.6919,0.138336,0.044604,0.03072,0.04096,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",10.1306,0.138496,0.047009,0.030496,0.041024,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",10.9794,0.141056,0.070253,0.031232,0.042336,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",11.5434,0.139648,0.049323,0.029984,0.042784,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",7.9976,0.137888,0.05316,0.029664,0.040608,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",9.51853,0.140192,0.047379,0.02992,0.0432,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",7.85251,0.138432,0.043953,0.030304,0.041248,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",11.7782,0.137504,0.060735,0.029824,0.040512,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",17.0224,0.137376,0.064853,0.029952,0.040384,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",17.0039,0.143296,0.05864,0.030528,0.043872,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",8.50052,0.139104,0.039074,0.02928,0.042464,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",10.3271,0.138368,0.062397,0.030048,0.04048,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",8.19447,0.139776,0.041017,0.030496,0.04256,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",9.29536,0.138464,0.062097,0.030464,0.040064,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",10.4491,0.138432,0.036819,0.030176,0.041504,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",7.26475,0.139104,0.03734,0.0312,0.041888,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",9.25864,0.137472,0.047249,0.02992,0.040256,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",9.80198,0.139712,0.045796,0.030464,0.041216,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",10.8398,0.137504,0.051136,0.030272,0.040416,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",9.50964,0.142272,0.045586,0.030624,0.043232,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",8.77134,0.136992,0.044764,0.029696,0.040032,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",7.26273,0.138752,0.049874,0.030304,0.041376,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",8.8978,0.137824,0.040416,0.030112,0.040032,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",9.75437,0.191072,0.050806,0.04256,0.01888,0.044032,0.012288,0.006656,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",8.62357,0.18688,0.044734,0.040032,0.019328,0.042208,0.012416,0.00656,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",9.23613,0.18832,0.057429,0.04144,0.019072,0.041888,0.012704,0.005728,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",12.8332,0.189824,0.059652,0.041888,0.018208,0.043168,0.012672,0.0056,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",14.9023,0.1896,0.045025,0.041568,0.019456,0.041952,0.012704,0.0072,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",10.645,0.187808,0.047088,0.041184,0.018336,0.042304,0.012416,0.006528,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",10.2168,0.189888,0.072357,0.042656,0.01904,0.042336,0.012192,0.00688,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",12.1338,0.190176,0.049383,0.042336,0.019296,0.04176,0.012864,0.006688,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",9.38212,0.189536,0.03733,0.041344,0.020096,0.041632,0.012352,0.006112,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",9.42421,0.189504,0.045626,0.041952,0.018336,0.043008,0.012736,0.005696,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",9.11712,0.188224,0.059662,0.04208,0.019008,0.041312,0.012768,0.006848,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",10.7603,0.190112,0.03686,0.042944,0.018496,0.042688,0.012576,0.006176,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",12.7976,0.188736,0.05301,0.041472,0.019296,0.041632,0.012448,0.005984,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",10.8626,0.188928,0.050786,0.042656,0.01872,0.042688,0.012416,0.006336,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",11.5001,0.188064,0.039695,0.040896,0.018624,0.04256,0.012416,0.006464,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",10.7848,0.216032,0.050165,0.045056,0.032832,0.051488,0.013376,0.00656,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",9.35389,0.188928,0.053952,0.04288,0.018528,0.042752,0.012416,0.006272,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",9.39643,0.191744,0.053091,0.042016,0.020512,0.04192,0.0128,0.005632,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",11.2917,0.21504,0.050625,0.060864,0.020608,0.045024,0.013216,0.007552,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",11.3609,0.223424,0.049043,0.04208,0.018752,0.076352,0.013024,0.00736,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",11.0247,0.187584,0.048712,0.041984,0.018944,0.041472,0.012576,0.005856,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",10.8042,0.188896,0.046779,0.042304,0.019072,0.042048,0.012384,0.00656,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",11.0857,0.187648,0.036729,0.041888,0.018912,0.0416,0.012288,0.006144,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",12.7266,0.188576,0.054553,0.041568,0.019424,0.041408,0.012864,0.006624,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",11.586,0.186688,0.036609,0.041632,0.017728,0.042304,0.012448,0.00656,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",10.3779,0.189376,0.064271,0.041184,0.019008,0.042528,0.012288,0.006624,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",9.70681,0.187872,0.045847,0.0416,0.019072,0.041728,0.012416,0.006016,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",7.90455,0.188864,0.039455,0.04112,0.018784,0.04256,0.012256,0.006528,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",8.77106,0.189472,0.044614,0.041504,0.019776,0.041152,0.013024,0.006976,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",7.87348,0.188288,0.045245,0.041248,0.018816,0.042752,0.012192,0.006496,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
|
@@ -0,0 +1,271 @@
|
||||
scenario,mode,frame,device,cpu_ms,gpu_ms,readback_cpu_ms,gpu_main_cull_ms,gpu_main_raster_ms,gpu_hzb_ms,gpu_post_cull_ms,gpu_post_raster_ms,gpu_bytes,draw_calls,gpu_bins,gpu_visible,gpu_frustum_rejected,gpu_deferred,gpu_post_visible,lod0,lod1,lod2,lod3,hzb_valid,gpu_visibility_active,visibility_diagnostics,visibility_counters_valid,validation_errors
|
||||
frustum,direct,0,"NVIDIA GeForce RTX 2080 Ti",67.4901,0.233888,0.041528,0,0.192736,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,1,"NVIDIA GeForce RTX 2080 Ti",73.2334,0.236128,0.065003,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,2,"NVIDIA GeForce RTX 2080 Ti",69.5331,0.235712,0.044323,0,0.193408,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,3,"NVIDIA GeForce RTX 2080 Ti",74.6512,0.233472,0.058621,0,0.19216,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,4,"NVIDIA GeForce RTX 2080 Ti",72.2372,0.236096,0.07457,0,0.193504,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,5,"NVIDIA GeForce RTX 2080 Ti",94.5613,0.235392,0.055555,0,0.194336,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,6,"NVIDIA GeForce RTX 2080 Ti",62.8423,0.234208,0.070744,0,0.192512,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,7,"NVIDIA GeForce RTX 2080 Ti",70.1894,0.235104,0.032421,0,0.194528,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,8,"NVIDIA GeForce RTX 2080 Ti",66.8636,0.234208,0.05304,0,0.192576,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,9,"NVIDIA GeForce RTX 2080 Ti",87.9378,0.250592,0.043272,0,0.202144,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,10,"NVIDIA GeForce RTX 2080 Ti",68.1154,0.234464,0.041759,0,0.192864,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,11,"NVIDIA GeForce RTX 2080 Ti",67.8036,0.234528,0.042269,0,0.193888,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,12,"NVIDIA GeForce RTX 2080 Ti",66.4518,0.234944,0.07953,0,0.192416,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,13,"NVIDIA GeForce RTX 2080 Ti",56.6188,0.234624,0.035937,0,0.194144,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,14,"NVIDIA GeForce RTX 2080 Ti",69.0979,0.360512,0.06902,0,0.317376,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,15,"NVIDIA GeForce RTX 2080 Ti",67.6927,0.235616,0.055435,0,0.192512,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,16,"NVIDIA GeForce RTX 2080 Ti",63.5543,0.232544,0.046898,0,0.191808,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,17,"NVIDIA GeForce RTX 2080 Ti",67.343,0.233152,0.044945,0,0.19232,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,18,"NVIDIA GeForce RTX 2080 Ti",67.3328,0.36368,0.072276,0,0.321536,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,19,"NVIDIA GeForce RTX 2080 Ti",59.6678,0.234208,0.044224,0,0.193024,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,20,"NVIDIA GeForce RTX 2080 Ti",69.3874,0.274688,0.042761,0,0.233472,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,21,"NVIDIA GeForce RTX 2080 Ti",64.5704,0.235104,0.06888,0,0.193792,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,22,"NVIDIA GeForce RTX 2080 Ti",61.3201,0.234336,0.040346,0,0.193856,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,23,"NVIDIA GeForce RTX 2080 Ti",66.7304,0.233664,0.032351,0,0.193536,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,24,"NVIDIA GeForce RTX 2080 Ti",66.7892,0.23712,0.053702,0,0.19568,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,25,"NVIDIA GeForce RTX 2080 Ti",57.9125,0.233504,0.038182,0,0.192288,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,26,"NVIDIA GeForce RTX 2080 Ti",65.4209,0.234976,0.049443,0,0.192896,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,27,"NVIDIA GeForce RTX 2080 Ti",66.9875,0.236096,0.067708,0,0.195936,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,28,"NVIDIA GeForce RTX 2080 Ti",59.9511,0.234688,0.048942,0,0.194144,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,29,"NVIDIA GeForce RTX 2080 Ti",64.6067,0.231616,0.040777,0,0.190784,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",8.23725,0.155648,0.043683,0.046752,0.039168,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",8.23789,0.14816,0.032251,0.030432,0.031168,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",7.82935,0.12352,0.03722,0.03104,0.02608,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",13.6248,0.123232,0.06327,0.029632,0.025728,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",19.8977,0.126144,0.065213,0.030464,0.027168,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",10.1094,0.123136,0.050024,0.029728,0.026016,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",7.88657,0.123616,0.039234,0.029632,0.025664,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",8.41917,0.123712,0.047159,0.030176,0.025792,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",7.32443,0.124096,0.040656,0.030432,0.025376,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",8.47618,0.123328,0.043402,0.030048,0.02624,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",7.99181,0.122944,0.038192,0.030112,0.025472,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",14.3706,0.123328,0.049814,0.030304,0.02624,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",22.9687,0.123488,0.053892,0.031104,0.02624,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",9.87975,0.124832,0.043131,0.031392,0.0264,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",9.71613,0.123584,0.046678,0.029888,0.026944,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",8.14497,0.123104,0.034315,0.03056,0.026048,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",10.0349,0.155904,0.069922,0.047392,0.038624,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",8.16716,0.122624,0.048823,0.030304,0.026112,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",10.5119,0.123744,0.053712,0.030528,0.025984,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",9.55845,0.123936,0.049503,0.02944,0.026496,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",8.31607,0.122912,0.058671,0.029856,0.025504,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",9.82402,0.156064,0.038753,0.04784,0.0384,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",12.12,0.122784,0.054633,0.030752,0.026016,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",8.52745,0.123168,0.040256,0.02992,0.025536,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",8.91408,0.122752,0.03181,0.029824,0.025888,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",8.5806,0.12288,0.048832,0.030656,0.026048,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",7.1309,0.123488,0.036109,0.030304,0.026912,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",9.27608,0.123552,0.042711,0.030304,0.025664,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",7.61348,0.156384,0.04233,0.046848,0.039488,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",8.36717,0.123392,0.052679,0.030432,0.026208,0,0,0,5417552,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",9.28164,0.186048,0.04239,0.038848,0.027808,0.041888,0.004992,0.006784,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",16.1595,0.186272,0.051186,0.037344,0.028256,0.04192,0.005408,0.006784,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",15.9498,0.185376,0.052359,0.037856,0.02736,0.04176,0.005216,0.006592,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",14.276,0.19136,0.054122,0.038432,0.029504,0.042944,0.005216,0.007136,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",8.04813,0.185888,0.048842,0.037792,0.026176,0.042656,0.00496,0.00752,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",7.60166,0.186272,0.033833,0.03888,0.02816,0.041504,0.005376,0.00656,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",8.75918,0.185824,0.055434,0.037184,0.027936,0.041728,0.005088,0.006848,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",7.93254,0.185728,0.034294,0.037568,0.027968,0.042048,0.004768,0.006432,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",9.08583,0.185376,0.06889,0.038208,0.027328,0.042432,0.004768,0.006048,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",8.93284,0.186592,0.040837,0.038784,0.028032,0.041728,0.005216,0.006528,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",8.03943,0.186592,0.043913,0.037888,0.028,0.041376,0.005696,0.006592,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",9.39525,0.183712,0.035577,0.037152,0.026944,0.042016,0.004928,0.006304,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",10.1584,0.184896,0.036028,0.037568,0.027456,0.04176,0.005056,0.006528,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",12.0164,0.18672,0.051387,0.038048,0.027488,0.04288,0.004896,0.006592,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",10.8602,0.185888,0.038603,0.03776,0.027936,0.041536,0.005248,0.006624,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",8.00995,0.185248,0.030137,0.037824,0.026336,0.042752,0.004896,0.0056,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",8.05685,0.184384,0.038683,0.037408,0.026176,0.042656,0.004896,0.005696,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",9.0658,0.186144,0.047039,0.037888,0.027552,0.04192,0.005088,0.006624,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",9.59719,0.188288,0.060754,0.03856,0.027296,0.042976,0.005088,0.007136,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",10.8581,0.18768,0.061736,0.038496,0.02704,0.042784,0.00512,0.007392,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",8.86519,0.187552,0.054924,0.038592,0.027328,0.042784,0.004992,0.006816,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",10.7128,0.186656,0.042911,0.038528,0.028288,0.042112,0.005152,0.00656,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",14.6907,0.187424,0.051287,0.03776,0.028032,0.04224,0.005248,0.00576,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",10.0629,0.185792,0.051306,0.03824,0.027296,0.042304,0.004896,0.006048,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",8.91609,0.186176,0.050255,0.0376,0.027936,0.04256,0.004928,0.00576,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",9.25932,0.184352,0.039965,0.037184,0.026976,0.042272,0.004896,0.00608,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",8.42078,0.186464,0.054262,0.037792,0.029312,0.04144,0.005088,0.006528,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",9.23474,0.187072,0.039474,0.037696,0.028192,0.042144,0.00496,0.006304,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",9.98286,0.185376,0.043412,0.038688,0.026848,0.042528,0.004896,0.005824,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",9.04403,0.186912,0.045596,0.03856,0.026976,0.042624,0.004864,0.006944,6819408,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,direct,0,"NVIDIA GeForce RTX 2080 Ti",64.4396,0.49648,0.04737,0,0.456192,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,1,"NVIDIA GeForce RTX 2080 Ti",58.0176,0.495328,0.05311,0,0.455136,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,2,"NVIDIA GeForce RTX 2080 Ti",59.9502,0.496384,0.03711,0,0.4552,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,3,"NVIDIA GeForce RTX 2080 Ti",67.3886,0.730176,0.060614,0,0.688544,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,4,"NVIDIA GeForce RTX 2080 Ti",56.4472,0.498496,0.044785,0,0.458752,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,5,"NVIDIA GeForce RTX 2080 Ti",66.2251,0.500224,0.044694,0,0.459072,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,6,"NVIDIA GeForce RTX 2080 Ti",68.0461,0.52704,0.049523,0,0.46112,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,7,"NVIDIA GeForce RTX 2080 Ti",60.2179,0.498144,0.032361,0,0.4576,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,8,"NVIDIA GeForce RTX 2080 Ti",65.268,0.497056,0.061966,0,0.456192,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,9,"NVIDIA GeForce RTX 2080 Ti",64.3224,0.735392,0.054052,0,0.692224,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,10,"NVIDIA GeForce RTX 2080 Ti",61.3496,0.499264,0.043252,0,0.45872,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,11,"NVIDIA GeForce RTX 2080 Ti",64.5657,0.49824,0.034716,0,0.457536,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,12,"NVIDIA GeForce RTX 2080 Ti",62.4987,0.497248,0.045686,0,0.456704,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,13,"NVIDIA GeForce RTX 2080 Ti",66.1241,0.501472,0.037981,0,0.454656,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,14,"NVIDIA GeForce RTX 2080 Ti",66.4261,0.495488,0.041929,0,0.454656,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,15,"NVIDIA GeForce RTX 2080 Ti",68.2954,0.495328,0.054984,0,0.45568,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,16,"NVIDIA GeForce RTX 2080 Ti",69.2105,0.497184,0.056446,0,0.456416,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,17,"NVIDIA GeForce RTX 2080 Ti",68.8537,0.536608,0.045866,0,0.464896,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,18,"NVIDIA GeForce RTX 2080 Ti",64.8945,0.495808,0.052288,0,0.456,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,19,"NVIDIA GeForce RTX 2080 Ti",76.0082,0.496256,0.055124,0,0.45664,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,20,"NVIDIA GeForce RTX 2080 Ti",74.2833,0.49632,0.056236,0,0.4544,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,21,"NVIDIA GeForce RTX 2080 Ti",72.3056,0.497088,0.044945,0,0.456256,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,22,"NVIDIA GeForce RTX 2080 Ti",60.9426,0.496384,0.038763,0,0.455936,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,23,"NVIDIA GeForce RTX 2080 Ti",64.2515,0.49472,0.036468,0,0.454432,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,24,"NVIDIA GeForce RTX 2080 Ti",60.9964,0.746976,0.054253,0,0.7064,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,25,"NVIDIA GeForce RTX 2080 Ti",67.4297,0.517056,0.069792,0,0.465536,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,26,"NVIDIA GeForce RTX 2080 Ti",70.3453,0.49712,0.044484,0,0.456704,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,27,"NVIDIA GeForce RTX 2080 Ti",57.5937,0.497088,0.046618,0,0.456768,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,28,"NVIDIA GeForce RTX 2080 Ti",65.3587,0.529568,0.03686,0,0.463936,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,29,"NVIDIA GeForce RTX 2080 Ti",64.4943,0.501056,0.035837,0,0.45952,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",8.6352,0.13904,0.05836,0.029632,0.042144,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",9.05267,0.187584,0.04768,0.048032,0.070752,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",8.65342,0.139488,0.056887,0.029984,0.041888,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",19.2678,0.1384,0.072226,0.030432,0.042464,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",14.3476,0.13984,0.071165,0.030048,0.04256,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",11.3512,0.140128,0.06355,0.0296,0.04272,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",11.213,0.139552,0.053742,0.029632,0.04272,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",11.5847,0.13936,0.062307,0.029824,0.042464,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",10.643,0.13952,0.064913,0.030592,0.042624,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",12.2985,0.140384,0.076283,0.029696,0.043456,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",11.0792,0.13952,0.054253,0.030528,0.042656,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",11.3426,0.139072,0.057849,0.030656,0.042336,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",9.90738,0.1392,0.046357,0.030048,0.041632,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",18.989,0.139328,0.061706,0.030112,0.041792,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",11.276,0.139904,0.059402,0.03056,0.042656,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",10.8583,0.140768,0.081494,0.030304,0.042304,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",9.70736,0.139712,0.059742,0.030336,0.042528,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",10.3601,0.13984,0.062959,0.029728,0.042144,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",9.41402,0.139456,0.06343,0.029792,0.041952,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",9.73082,0.14464,0.060424,0.029504,0.042528,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",10.2232,0.139488,0.044994,0.030592,0.042464,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",11.342,0.163936,0.043032,0.030176,0.053792,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",12.4635,0.139072,0.053641,0.02944,0.042624,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",10.7382,0.138528,0.041889,0.02992,0.04176,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",11.4175,0.14032,0.054172,0.03008,0.042304,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",10.1806,0.139936,0.056346,0.030592,0.042784,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",10.1526,0.171712,0.06919,0.031104,0.056864,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",11.6436,0.13968,0.047299,0.030112,0.042304,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",9.98992,0.139776,0.072687,0.029632,0.04272,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",8.98136,0.150432,0.045035,0.040384,0.04208,0,0,0,5417552,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",15.4406,0.208256,0.060675,0.046656,0.041408,0.042336,0.005024,0.005888,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",16.9006,0.205024,0.053551,0.043392,0.040864,0.041504,0.00512,0.006528,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",14.9356,0.20496,0.058431,0.04272,0.04128,0.0416,0.00512,0.006784,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",9.69331,0.203072,0.046227,0.041536,0.04208,0.041312,0.004864,0.006592,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",7.67454,0.20464,0.03144,0.043104,0.040864,0.042048,0.004832,0.006368,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",8.91389,0.240064,0.049473,0.042944,0.04128,0.076416,0.005504,0.006144,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",8.41653,0.204288,0.041979,0.042976,0.040992,0.042336,0.0048,0.006112,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",7.85512,0.26832,0.055044,0.069504,0.070496,0.044768,0.006144,0.007616,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",8.08804,0.204064,0.037861,0.043584,0.040384,0.0424,0.00496,0.005888,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",8.16941,0.203808,0.045956,0.043136,0.040832,0.042048,0.004832,0.006368,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",12.6278,0.20304,0.057929,0.042656,0.041312,0.041568,0.005024,0.006528,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",12.9564,0.204448,0.041519,0.043072,0.04128,0.041408,0.005088,0.006624,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",12.8892,0.204704,0.059122,0.043552,0.04192,0.041504,0.004832,0.006688,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",9.84178,0.205696,0.04239,0.043392,0.041472,0.04224,0.004832,0.006176,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",8.49582,0.255776,0.031079,0.04688,0.053472,0.060096,0.005152,0.006432,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",9.14433,0.206624,0.055004,0.044256,0.041696,0.042432,0.004992,0.007072,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",11.326,0.204672,0.04798,0.042688,0.04128,0.042496,0.004896,0.005856,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",8.86254,0.204672,0.038933,0.043008,0.041184,0.0424,0.004896,0.005952,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",8.03203,0.203552,0.035297,0.04352,0.040448,0.0424,0.004832,0.006016,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",8.25494,0.20448,0.033513,0.043008,0.041408,0.041312,0.004832,0.007136,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",7.51362,0.203712,0.035297,0.042656,0.041632,0.041312,0.004832,0.006528,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",9.89206,0.204704,0.050986,0.043008,0.041472,0.041184,0.005216,0.006816,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",22.9562,0.217344,0.053631,0.0416,0.042112,0.041568,0.005088,0.006624,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",10.6307,0.205632,0.06405,0.043328,0.04192,0.041568,0.004896,0.006784,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",12.4421,0.20352,0.050595,0.043264,0.041632,0.041344,0.004864,0.006016,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",9.48528,0.204448,0.037431,0.043744,0.042112,0.041408,0.005024,0.00656,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",9.44922,0.204256,0.045666,0.042976,0.041536,0.041376,0.005024,0.00656,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",8.78257,0.204192,0.033113,0.043488,0.041856,0.041248,0.0048,0.006912,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",9.16427,0.203296,0.037461,0.042496,0.041504,0.041216,0.004864,0.00608,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",13.5869,0.204352,0.04809,0.042848,0.04112,0.041664,0.00512,0.006464,6819408,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
occluded,direct,0,"NVIDIA GeForce RTX 2080 Ti",72.0395,0.493824,0.069381,0,0.454208,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,1,"NVIDIA GeForce RTX 2080 Ti",63.9924,0.493344,0.055735,0,0.452608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,2,"NVIDIA GeForce RTX 2080 Ti",70.1858,0.494432,0.044984,0,0.453056,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,3,"NVIDIA GeForce RTX 2080 Ti",69.0933,0.492736,0.037891,0,0.452416,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,4,"NVIDIA GeForce RTX 2080 Ti",69.3276,0.493696,0.087234,0,0.453664,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,5,"NVIDIA GeForce RTX 2080 Ti",58.6939,0.49344,0.043322,0,0.453696,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,6,"NVIDIA GeForce RTX 2080 Ti",64.9665,0.49152,0.036649,0,0.45184,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,7,"NVIDIA GeForce RTX 2080 Ti",58.7955,0.53232,0.039946,0,0.460512,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,8,"NVIDIA GeForce RTX 2080 Ti",71.5945,0.493632,0.291701,0,0.452608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,9,"NVIDIA GeForce RTX 2080 Ti",74.2933,0.522944,0.054122,0,0.456992,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,10,"NVIDIA GeForce RTX 2080 Ti",67.4207,0.494624,0.045396,0,0.454592,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,11,"NVIDIA GeForce RTX 2080 Ti",69.9245,0.495648,0.057008,0,0.454656,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,12,"NVIDIA GeForce RTX 2080 Ti",78.8739,0.49456,0.112503,0,0.454016,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,13,"NVIDIA GeForce RTX 2080 Ti",76.0727,0.49408,0.044093,0,0.452736,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,14,"NVIDIA GeForce RTX 2080 Ti",70.7361,0.495424,0.050385,0,0.454368,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,15,"NVIDIA GeForce RTX 2080 Ti",64.616,0.493632,0.051627,0,0.452608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,16,"NVIDIA GeForce RTX 2080 Ti",67.4304,0.565536,0.051988,0,0.523232,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,17,"NVIDIA GeForce RTX 2080 Ti",70.1538,0.494656,0.046908,0,0.454656,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,18,"NVIDIA GeForce RTX 2080 Ti",57.7371,0.518432,0.042841,0,0.456672,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,19,"NVIDIA GeForce RTX 2080 Ti",64.522,0.493824,0.036539,0,0.453728,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,20,"NVIDIA GeForce RTX 2080 Ti",65.9956,0.495136,0.051898,0,0.454496,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,21,"NVIDIA GeForce RTX 2080 Ti",58.7591,0.49696,0.041589,0,0.446752,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,22,"NVIDIA GeForce RTX 2080 Ti",69.3101,0.525056,0.035958,0,0.460064,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,23,"NVIDIA GeForce RTX 2080 Ti",80.0559,0.491904,0.081023,0,0.449088,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,24,"NVIDIA GeForce RTX 2080 Ti",63.8609,0.525824,0.04787,0,0.461504,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,25,"NVIDIA GeForce RTX 2080 Ti",70.8083,0.496512,0.090501,0,0.45536,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,26,"NVIDIA GeForce RTX 2080 Ti",65.0395,0.495424,0.045085,0,0.454656,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,27,"NVIDIA GeForce RTX 2080 Ti",72.6645,0.514176,0.04792,0,0.464608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,28,"NVIDIA GeForce RTX 2080 Ti",76.5585,0.533536,0.058521,0,0.458752,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,29,"NVIDIA GeForce RTX 2080 Ti",64.427,0.493984,0.059602,0,0.452672,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",11.5289,0.137696,0.03199,0.030464,0.039424,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",8.77561,0.136416,0.054192,0.030176,0.039104,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",9.44827,0.137152,0.03166,0.03056,0.04048,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",9.44359,0.13696,0.045986,0.0304,0.039232,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",8.42381,0.135616,0.048532,0.029536,0.038912,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",9.49471,0.140608,0.043522,0.03104,0.04112,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",7.82336,0.138944,0.041979,0.031712,0.039424,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",9.29054,0.136736,0.041579,0.02992,0.039776,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",16.1594,0.13792,0.054563,0.02976,0.040288,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",16.6257,0.135904,0.049513,0.030784,0.038848,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",9.42571,0.187936,0.036148,0.047488,0.070656,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",7.99912,0.136384,0.042881,0.029376,0.040128,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",7.44392,0.135744,0.034686,0.03008,0.039008,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",11.6971,0.139072,0.048452,0.030112,0.04144,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",10.9917,0.13552,0.048381,0.029568,0.038912,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",11.2683,0.13712,0.067407,0.029792,0.03984,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",9.21603,0.137536,0.037741,0.02976,0.040608,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",9.75108,0.137024,0.048983,0.029856,0.040256,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",10.6004,0.138016,0.04241,0.029568,0.040256,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",11.998,0.13712,0.043442,0.030784,0.040192,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",16.0927,0.13904,0.164521,0.030784,0.040768,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",11.4503,0.138784,0.044714,0.02992,0.040704,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",11.1066,0.136448,0.039865,0.029632,0.039744,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",9.78753,0.136928,0.04219,0.030688,0.04032,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",7.80913,0.135872,0.033403,0.030432,0.038912,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",8.51336,0.137152,0.03687,0.030048,0.040896,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",9.89724,0.135456,0.039775,0.029984,0.037696,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",12.0487,0.136256,0.05315,0.030368,0.038208,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",11.5522,0.156512,0.048972,0.03504,0.039232,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",11.6254,0.138016,0.15921,0.030848,0.04048,0,0,0,5418080,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",8.52137,0.194784,0.046768,0.041632,0.01872,0.04096,0.013152,0.006592,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",11.3129,0.188896,0.060374,0.040896,0.018784,0.04176,0.013056,0.006624,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",11.457,0.18736,0.050455,0.04048,0.018944,0.041984,0.012416,0.006592,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",12.0558,0.189504,0.04764,0.042848,0.018592,0.042368,0.012416,0.006528,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",11.0588,0.188864,0.060915,0.04256,0.018816,0.041248,0.01264,0.007136,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",16.9926,0.187584,0.0525,0.041856,0.019264,0.041216,0.012704,0.005728,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",11.4371,0.18688,0.047339,0.040544,0.019104,0.041664,0.01248,0.0056,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",10.5963,0.185536,0.035317,0.040416,0.018688,0.041184,0.012416,0.00608,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",10.2081,0.188352,0.057328,0.042528,0.018848,0.041632,0.01248,0.006784,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",9.21582,0.187232,0.044153,0.040608,0.018784,0.042016,0.01248,0.00656,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",8.43438,0.187872,0.039655,0.041376,0.018912,0.04176,0.012576,0.006592,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",11.3257,0.186752,0.036879,0.040928,0.018912,0.041312,0.012288,0.006144,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",8.20408,0.188096,0.084759,0.041664,0.019264,0.041408,0.012416,0.0064,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",12.0968,0.187104,0.056146,0.041344,0.018432,0.041696,0.012416,0.00656,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",21.321,0.20752,0.038964,0.041408,0.019264,0.060768,0.012736,0.00672,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",13.1759,0.1872,0.043652,0.03968,0.018496,0.042464,0.01248,0.006496,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",8.75432,0.188032,0.055265,0.0408,0.019072,0.042368,0.012512,0.006528,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",9.69946,0.18768,0.086353,0.041376,0.019136,0.041472,0.012704,0.006144,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",9.9436,0.221056,0.041168,0.055488,0.019264,0.0424,0.01296,0.00608,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",10.8525,0.20224,0.068169,0.041728,0.020032,0.041344,0.024928,0.007232,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",10.1771,0.191808,0.038302,0.044768,0.01984,0.041376,0.01232,0.006624,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",8.72859,0.189664,0.043041,0.04176,0.019872,0.041792,0.012896,0.00656,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",9.45092,0.188704,0.04209,0.041376,0.019072,0.041952,0.012448,0.005984,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",13.7873,0.186784,0.037771,0.040576,0.019072,0.041632,0.012096,0.005664,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",11.2646,0.187264,0.041258,0.04256,0.0184,0.041344,0.012416,0.006112,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",14.4215,0.188352,0.06395,0.041024,0.0192,0.041536,0.012608,0.006528,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",9.60467,0.188224,0.037921,0.040256,0.019392,0.042176,0.012864,0.0064,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",9.34017,0.187584,0.052529,0.041792,0.01904,0.04144,0.012288,0.006176,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",9.13302,0.188096,0.045686,0.041728,0.019712,0.04144,0.012512,0.006656,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",10.2,0.186496,0.038994,0.040448,0.018528,0.0416,0.01248,0.00624,6819936,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
|
@@ -0,0 +1,271 @@
|
||||
scenario,mode,frame,device,cpu_ms,gpu_ms,readback_cpu_ms,gpu_main_cull_ms,gpu_main_raster_ms,gpu_hzb_ms,gpu_post_cull_ms,gpu_post_raster_ms,gpu_bytes,draw_calls,gpu_bins,gpu_visible,gpu_frustum_rejected,gpu_deferred,gpu_post_visible,lod0,lod1,lod2,lod3,hzb_valid,gpu_visibility_active,visibility_diagnostics,visibility_counters_valid,validation_errors
|
||||
frustum,direct,0,"NVIDIA GeForce RTX 2080 Ti",74.0692,0.240032,0.035046,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,1,"NVIDIA GeForce RTX 2080 Ti",67.3058,0.240576,0.054443,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,2,"NVIDIA GeForce RTX 2080 Ti",66.7667,0.239456,0.04795,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,3,"NVIDIA GeForce RTX 2080 Ti",69.6725,0.240128,0.043583,0,0.19488,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,4,"NVIDIA GeForce RTX 2080 Ti",66.9348,0.239392,0.038142,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,5,"NVIDIA GeForce RTX 2080 Ti",68.7339,0.240832,0.05866,0,0.195872,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,6,"NVIDIA GeForce RTX 2080 Ti",73.6867,0.240288,0.040356,0,0.194688,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,7,"NVIDIA GeForce RTX 2080 Ti",74.0007,0.23872,0.050455,0,0.193184,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,8,"NVIDIA GeForce RTX 2080 Ti",73.1515,0.238496,0.047429,0,0.192864,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,9,"NVIDIA GeForce RTX 2080 Ti",76.679,0.241024,0.043853,0,0.195104,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,10,"NVIDIA GeForce RTX 2080 Ti",66.3907,0.240256,0.050755,0,0.195712,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,11,"NVIDIA GeForce RTX 2080 Ti",87.0981,0.240992,0.06356,0,0.195104,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,12,"NVIDIA GeForce RTX 2080 Ti",90.8851,0.239744,0.083237,0,0.194208,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,13,"NVIDIA GeForce RTX 2080 Ti",78.9936,0.378144,0.045476,0,0.329792,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,14,"NVIDIA GeForce RTX 2080 Ti",77.1545,0.239072,0.056967,0,0.194336,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,15,"NVIDIA GeForce RTX 2080 Ti",69.9802,0.24064,0.046418,0,0.195968,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,16,"NVIDIA GeForce RTX 2080 Ti",67.8533,0.241856,0.03711,0,0.197216,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,17,"NVIDIA GeForce RTX 2080 Ti",68.5841,0.240544,0.049193,0,0.195168,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,18,"NVIDIA GeForce RTX 2080 Ti",63.6544,0.241376,0.048983,0,0.194912,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,19,"NVIDIA GeForce RTX 2080 Ti",73.707,0.23856,0.037321,0,0.194368,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,20,"NVIDIA GeForce RTX 2080 Ti",71.3519,0.370848,0.044955,0,0.323584,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,21,"NVIDIA GeForce RTX 2080 Ti",67.7002,0.238656,0.054913,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,22,"NVIDIA GeForce RTX 2080 Ti",72.1913,0.238528,0.033714,0,0.192896,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,23,"NVIDIA GeForce RTX 2080 Ti",70.2099,0.23904,0.043873,0,0.193888,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,24,"NVIDIA GeForce RTX 2080 Ti",72.6693,0.240576,0.051457,0,0.19616,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,25,"NVIDIA GeForce RTX 2080 Ti",68.3818,0.2368,0.045456,0,0.192256,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,26,"NVIDIA GeForce RTX 2080 Ti",89.9903,0.238624,0.044664,0,0.194432,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,27,"NVIDIA GeForce RTX 2080 Ti",89.151,0.238528,0.055715,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,28,"NVIDIA GeForce RTX 2080 Ti",68.6403,0.240832,0.066766,0,0.195584,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,29,"NVIDIA GeForce RTX 2080 Ti",79.7181,0.264736,0.044183,0,0.197184,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",13.8567,3.59251,0.052358,3.50557,0.043136,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",13.6739,3.61104,0.055554,3.52506,0.041568,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",15.9272,4.53514,0.04777,4.46058,0.029472,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",24.2343,4.17952,0.081233,4.10822,0.028736,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",15.6138,4.90038,0.045967,4.82803,0.02912,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",15.5077,3.71494,0.062328,3.64602,0.025792,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",15.9432,4.05062,0.064783,3.97859,0.027872,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",20.4135,3.59376,0.052539,3.49229,0.057088,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",15.6531,4.21523,0.05289,4.14458,0.027328,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",15.2208,3.7824,0.060183,3.69629,0.04336,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",13.0337,3.9097,0.034144,3.83936,0.027264,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",11.8926,4.15763,0.052129,4.08659,0.02784,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",12.9166,4.48611,0.040145,4.38317,0.060832,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",12.6122,3.60944,0.201671,3.54198,0.025152,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",12.1218,3.5911,0.036298,3.52294,0.0256,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",15.1862,3.64659,0.061216,3.56122,0.041728,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",22.0867,4.0689,0.056858,4.00051,0.02768,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",13.1842,4.18413,0.061977,4.11619,0.026656,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",16.3947,4.41875,0.062728,4.35082,0.02688,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",12.9027,4.58195,0.053231,4.51424,0.026496,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",12.1724,4.07098,0.060234,3.98544,0.043296,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",10.7979,3.45997,0.040877,3.38394,0.035584,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",15.4973,3.94048,0.052459,3.87338,0.025952,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",15.0207,3.65946,0.041609,3.59603,0.022784,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",13.2827,3.892,0.062829,3.81098,0.039744,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",11.3938,3.59715,0.039865,3.5216,0.0352,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",12.0599,4.09907,0.056667,4.03242,0.026048,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",11.9462,4.46182,0.0422,4.39446,0.025568,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",11.6719,3.61667,0.040807,3.55229,0.02352,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",12.2197,3.60854,0.043502,3.52326,0.044352,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",19.4239,4.38106,0.058851,4.2744,0.026272,0.033408,0.004608,0.005632,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",16.1382,3.91712,0.044544,3.81181,0.025984,0.033152,0.004608,0.005248,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",14.603,3.91005,0.046387,3.80413,0.025696,0.033056,0.004704,0.005248,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",12.0357,4.0721,0.047159,3.9663,0.025248,0.034304,0.00448,0.005728,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",12.0385,4.2384,0.044263,4.13261,0.02544,0.03312,0.004736,0.005152,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",13.4353,3.59712,0.05308,3.49421,0.023424,0.033344,0.004576,0.005664,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",17.8825,4.21082,0.050866,4.07024,0.029408,0.064192,0.004736,0.00512,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",15.189,4.47322,0.048101,4.36781,0.026304,0.032896,0.004512,0.005696,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",12.5033,3.96762,0.044955,3.86128,0.026176,0.03312,0.004672,0.005216,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",13.0891,3.64861,0.096993,3.54413,0.02464,0.032736,0.004416,0.006464,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",12.4221,3.95744,0.048652,3.83494,0.025856,0.033472,0.004768,0.005888,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",11.1876,3.49571,0.044134,3.36397,0.024352,0.038912,0.0088,0.017824,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",16.8877,3.87779,0.04247,3.77213,0.026144,0.032768,0.00464,0.005984,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",21.5329,3.70755,0.072888,3.60134,0.023872,0.034016,0.004768,0.006272,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",14.7119,4.40576,0.078939,4.29926,0.026368,0.033216,0.004672,0.005472,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",11.5023,3.94323,0.044194,3.83763,0.026144,0.033152,0.004512,0.005632,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",12.6379,4.24384,0.046007,4.13696,0.02672,0.032928,0.00464,0.0056,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",11.6211,3.70246,0.046799,3.57923,0.043392,0.032768,0.005248,0.004992,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",12.9379,4.34646,0.070674,4.23978,0.026528,0.033024,0.004832,0.005152,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",15.5539,4.41859,0.044144,4.31216,0.025504,0.033568,0.004736,0.006432,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",21.7802,4.51933,0.054953,4.39811,0.028768,0.033632,0.005024,0.006624,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",14.5108,4.05936,0.051507,3.95277,0.026336,0.032992,0.004544,0.005888,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",11.5666,3.43882,0.047049,3.33219,0.0272,0.0328,0.004544,0.0056,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",14.7028,3.62282,0.058881,3.51638,0.024864,0.034048,0.004608,0.006176,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",12.7464,3.48211,0.049624,3.36176,0.039968,0.033184,0.00464,0.005184,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",13.4874,4.04717,0.050665,3.94179,0.025184,0.033824,0.004672,0.00576,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",15.4448,3.67616,0.057839,3.53482,0.056832,0.035552,0.005472,0.006304,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",16.7768,3.75709,0.081904,3.65226,0.023904,0.03344,0.004832,0.006176,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",14.5581,4.07581,0.047339,3.96976,0.026176,0.033056,0.004672,0.00528,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",11.4402,4.26435,0.046047,4.15664,0.02832,0.03312,0.004512,0.005984,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,direct,0,"NVIDIA GeForce RTX 2080 Ti",64.2224,0.491776,0.050205,0,0.448224,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,1,"NVIDIA GeForce RTX 2080 Ti",69.9009,0.496192,0.065814,0,0.452608,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,2,"NVIDIA GeForce RTX 2080 Ti",84.9538,0.493248,0.054814,0,0.450144,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,3,"NVIDIA GeForce RTX 2080 Ti",65.9806,0.496448,0.056838,0,0.45296,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,4,"NVIDIA GeForce RTX 2080 Ti",71.8666,0.525632,0.065795,0,0.4608,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,5,"NVIDIA GeForce RTX 2080 Ti",66.6741,0.49392,0.05268,0,0.450432,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,6,"NVIDIA GeForce RTX 2080 Ti",77.1584,0.495392,0.04761,0,0.452448,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,7,"NVIDIA GeForce RTX 2080 Ti",69.9233,0.49552,0.045195,0,0.452416,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,8,"NVIDIA GeForce RTX 2080 Ti",65.3531,0.496832,0.058671,0,0.453632,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,9,"NVIDIA GeForce RTX 2080 Ti",64.8595,0.501696,0.051587,0,0.452992,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,10,"NVIDIA GeForce RTX 2080 Ti",58.9757,0.500896,0.044113,0,0.452672,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,11,"NVIDIA GeForce RTX 2080 Ti",69.3062,0.51248,0.058981,0,0.458464,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,12,"NVIDIA GeForce RTX 2080 Ti",89.677,0.517088,0.04765,0,0.454016,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,13,"NVIDIA GeForce RTX 2080 Ti",77.2645,0.500672,0.046037,0,0.452992,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,14,"NVIDIA GeForce RTX 2080 Ti",73.1794,0.526624,0.056196,0,0.462592,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,15,"NVIDIA GeForce RTX 2080 Ti",89.7382,0.53856,0.051106,0,0.468992,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,16,"NVIDIA GeForce RTX 2080 Ti",71.2718,0.501248,0.050866,0,0.453952,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,17,"NVIDIA GeForce RTX 2080 Ti",73.1617,0.499872,0.055695,0,0.452096,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,18,"NVIDIA GeForce RTX 2080 Ti",72.7174,0.500192,0.054764,0,0.45376,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,19,"NVIDIA GeForce RTX 2080 Ti",67.101,0.501088,0.047931,0,0.453664,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,20,"NVIDIA GeForce RTX 2080 Ti",63.5622,0.503232,0.035136,0,0.455168,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,21,"NVIDIA GeForce RTX 2080 Ti",65.3194,0.50208,0.035086,0,0.454656,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,22,"NVIDIA GeForce RTX 2080 Ti",63.9591,0.501888,0.046689,0,0.454528,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,23,"NVIDIA GeForce RTX 2080 Ti",71.2482,0.522688,0.050545,0,0.45552,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,24,"NVIDIA GeForce RTX 2080 Ti",69.9222,0.502976,0.046357,0,0.455328,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,25,"NVIDIA GeForce RTX 2080 Ti",64.344,0.503104,0.050155,0,0.456224,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,26,"NVIDIA GeForce RTX 2080 Ti",78.2206,0.501376,0.041668,0,0.4528,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,27,"NVIDIA GeForce RTX 2080 Ti",69.5483,0.502112,0.044875,0,0.45456,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,28,"NVIDIA GeForce RTX 2080 Ti",70.6912,0.502976,0.054793,0,0.454912,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,29,"NVIDIA GeForce RTX 2080 Ti",59.5799,0.506144,0.054182,0,0.459072,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",28.95,19.0675,0.090671,18.9777,0.046176,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",30.1903,19.0265,0.055985,18.9312,0.045632,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",29.528,17.7257,0.05839,17.6361,0.04608,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",37.1126,17.7724,0.082345,17.6819,0.047072,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",32.7784,17.9287,0.074441,17.8387,0.046496,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",27.6314,18.546,0.040025,18.4577,0.045504,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",28.1386,16.5328,0.05282,16.4442,0.046016,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",39.3953,17.5788,0.068609,17.4893,0.045856,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",33.6281,18.3301,0.057739,18.2407,0.045888,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",26.884,17.4571,0.081564,17.3646,0.045152,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",27.706,18.2631,0.067808,18.1392,0.078112,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",31.3403,19.0904,0.124896,19.0016,0.0448,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",31.2898,18.0163,0.053331,17.9268,0.045632,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",29.5633,17.4606,0.055475,17.3705,0.045952,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",30.9779,18.326,0.062017,18.2369,0.045632,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",28.9766,18.2192,0.049303,18.1311,0.044896,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",39.4051,17.8111,0.138211,17.7086,0.045536,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",29.2116,18.1303,0.086103,18.0403,0.045568,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",28.3562,18.4117,0.050225,18.322,0.044864,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",25.9879,18.8113,0.057979,18.7227,0.045632,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",27.5498,17.4982,0.062798,17.409,0.045632,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",31.5507,17.4853,0.059472,17.3964,0.045728,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",26.4812,17.3325,0.07939,17.2421,0.045728,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",25.9898,17.5309,0.051908,17.4409,0.045984,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",27.3971,17.781,0.050025,17.6911,0.045888,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",28.9852,18.1281,0.07442,18.0382,0.04672,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",25.6142,17.1462,0.054883,17.0576,0.045504,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",25.9652,17.5127,0.044695,17.4246,0.0448,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",25.8046,17.1183,0.057358,17.0306,0.045312,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",33.0322,19.1989,0.060193,19.1099,0.04544,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",41.7078,18.7039,0.099958,18.5698,0.045984,0.033504,0.00496,0.006304,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",29.8563,17.9899,0.053691,17.8579,0.044352,0.033888,0.004672,0.00576,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",29.4706,17.9535,0.062357,17.822,0.044736,0.032896,0.004832,0.00528,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",32.8318,18.6156,0.063479,18.4673,0.044512,0.03296,0.004544,0.005696,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",25.7447,17.5505,0.051797,17.4204,0.044448,0.032672,0.00448,0.006336,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",33.5728,18.0636,0.09504,17.9313,0.044544,0.034272,0.004544,0.005984,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",28.4606,17.7085,0.072898,17.5756,0.045056,0.033536,0.004672,0.006816,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",28.4747,18.2442,0.07937,18.1121,0.045312,0.032736,0.004736,0.005696,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",28.2865,18.0632,0.072467,17.9026,0.072608,0.033408,0.005152,0.0064,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",27.376,17.707,0.047339,17.5769,0.044096,0.033248,0.00464,0.00512,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",33.5824,18.0599,0.069071,17.9285,0.0448,0.032768,0.004608,0.005632,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",30.6338,18.9726,0.07912,18.8394,0.046336,0.033216,0.004672,0.005664,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",29.8219,18.3131,0.050085,18.1818,0.044832,0.033088,0.00448,0.005696,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",26.9429,19.0889,0.083728,18.9567,0.044736,0.033024,0.004704,0.005536,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",28.7635,18.001,0.05843,17.8698,0.044672,0.033088,0.004512,0.00576,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",35.0194,18.4051,0.311407,18.2721,0.045216,0.032768,0.00512,0.00512,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",34.8701,18.5402,0.122802,18.3664,0.064416,0.034816,0.006528,0.0096,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",35.1234,19.6287,0.061356,19.4973,0.04464,0.033088,0.005024,0.00592,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",29.0683,18.096,0.057759,17.9647,0.044736,0.032832,0.004672,0.005696,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",32.5114,18.3869,0.056988,18.2545,0.044704,0.033344,0.00448,0.00576,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",31.4406,18.4908,0.566239,18.3587,0.045056,0.032896,0.0048,0.005696,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",37.7439,18.3917,0.135075,18.2604,0.04448,0.032928,0.004544,0.005728,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",34.613,19.0891,0.061285,18.9574,0.043936,0.033504,0.004704,0.006112,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",30.6351,17.8327,0.062939,17.7,0.044576,0.033376,0.004992,0.006368,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",48.9926,17.3412,0.055194,17.2095,0.043648,0.034688,0.004672,0.005664,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",30.326,19.0691,0.083077,18.9365,0.045408,0.033216,0.004704,0.006048,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",36.8077,19.0332,1.40424,18.9014,0.044512,0.032768,0.00544,0.006368,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",34.0379,19.2326,0.152708,19.0999,0.045344,0.032896,0.00512,0.004992,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",30.7649,18.2679,0.13259,18.1358,0.044608,0.03312,0.0048,0.005696,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",32.7112,17.9475,0.067297,17.8169,0.0448,0.032896,0.004832,0.005696,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
occluded,direct,0,"NVIDIA GeForce RTX 2080 Ti",76.1931,0.493024,0.050425,0,0.44912,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,1,"NVIDIA GeForce RTX 2080 Ti",68.5893,0.49552,0.052158,0,0.452,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,2,"NVIDIA GeForce RTX 2080 Ti",66.0354,0.495872,0.041799,0,0.453344,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,3,"NVIDIA GeForce RTX 2080 Ti",62.1102,0.496448,0.752088,0,0.45264,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,4,"NVIDIA GeForce RTX 2080 Ti",101.252,0.497792,0.088387,0,0.452832,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,5,"NVIDIA GeForce RTX 2080 Ti",94.6413,0.49712,0.054032,0,0.453056,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,6,"NVIDIA GeForce RTX 2080 Ti",80.445,0.509344,0.056286,0,0.456544,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,7,"NVIDIA GeForce RTX 2080 Ti",65.6563,0.495776,0.067367,0,0.452352,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,8,"NVIDIA GeForce RTX 2080 Ti",70.7713,0.492352,0.03724,0,0.448512,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,9,"NVIDIA GeForce RTX 2080 Ti",69.5214,0.499424,0.032882,0,0.452064,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,10,"NVIDIA GeForce RTX 2080 Ti",65.0521,0.518176,0.059372,0,0.463776,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,11,"NVIDIA GeForce RTX 2080 Ti",61.2619,0.5088,0.034745,0,0.442528,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,12,"NVIDIA GeForce RTX 2080 Ti",76.8997,0.499744,0.049113,0,0.452608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,13,"NVIDIA GeForce RTX 2080 Ti",67.881,0.500672,0.052439,0,0.451552,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,14,"NVIDIA GeForce RTX 2080 Ti",66.5388,0.499168,0.052469,0,0.451232,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,15,"NVIDIA GeForce RTX 2080 Ti",66.9611,0.50032,0.051407,0,0.452416,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,16,"NVIDIA GeForce RTX 2080 Ti",68.6982,0.518368,0.050816,0,0.461504,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,17,"NVIDIA GeForce RTX 2080 Ti",68.4052,0.501504,0.046207,0,0.454464,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,18,"NVIDIA GeForce RTX 2080 Ti",67.5584,0.501056,0.035788,0,0.452736,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,19,"NVIDIA GeForce RTX 2080 Ti",63.4503,0.500928,0.03137,0,0.453024,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,20,"NVIDIA GeForce RTX 2080 Ti",58.6131,0.53168,0.045556,0,0.45856,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,21,"NVIDIA GeForce RTX 2080 Ti",66.8696,0.500192,0.060004,0,0.452608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,22,"NVIDIA GeForce RTX 2080 Ti",70.3105,0.498368,0.060344,0,0.45056,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,23,"NVIDIA GeForce RTX 2080 Ti",67.8161,0.499488,0.040166,0,0.451232,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,24,"NVIDIA GeForce RTX 2080 Ti",74.8262,0.503008,0.114936,0,0.456384,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,25,"NVIDIA GeForce RTX 2080 Ti",70.4877,0.498752,0.044854,0,0.45056,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,26,"NVIDIA GeForce RTX 2080 Ti",77.6733,0.499328,0.050515,0,0.45056,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,27,"NVIDIA GeForce RTX 2080 Ti",69.4743,0.502112,0.038622,0,0.45456,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,28,"NVIDIA GeForce RTX 2080 Ti",71.1859,0.500288,0.038753,0,0.452608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,29,"NVIDIA GeForce RTX 2080 Ti",72.204,0.544224,0.041959,0,0.495552,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",30.027,18.2252,0.157086,18.1366,0.047264,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",27.2397,18.5654,0.043883,18.4792,0.044928,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",27.9147,19.3856,0.049444,19.298,0.047136,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",29.0567,17.4974,0.049163,17.4086,0.046944,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",28.6719,18.2787,0.0582,18.1921,0.046368,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",27.5111,17.3768,0.170672,17.288,0.047744,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",27.403,18.7724,0.049704,18.6848,0.046528,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",37.4615,18.1988,0.054643,18.1084,0.0488,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",27.5264,18.1369,0.064652,18.0496,0.046176,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",26.8143,17.4664,0.041378,17.3796,0.046592,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",28.9701,18.4421,0.067347,18.3543,0.046944,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",31.0049,18.8785,0.066516,18.79,0.0472,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",28.9493,18.6696,0.072667,18.5677,0.046912,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",28.7397,16.9495,0.051497,16.8614,0.04688,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",28.3134,17.6847,0.041869,17.5972,0.046368,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",28.1837,17.9915,0.064662,17.9031,0.046432,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",26.7178,17.903,0.04767,17.8164,0.046048,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",25.1679,16.8469,0.045526,16.759,0.046752,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",36.3074,18.1494,0.085111,18.0612,0.047072,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",26.5862,18.1494,0.041769,18.0644,0.045024,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",25.9622,18.0638,0.049533,17.9773,0.045408,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",27.4616,17.2983,0.051437,17.2115,0.045984,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",33.3683,18.3685,0.141206,18.2802,0.046944,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",30.6567,18.3387,0.06357,18.2497,0.04784,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",29.1121,17.1729,0.049894,17.0859,0.046496,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",39.7285,18.7929,0.066706,18.7049,0.047808,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",29.8697,18.9138,0.045596,18.7881,0.08272,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",25.2412,16.7205,0.039574,16.6338,0.045728,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",26.9274,17.2279,0.055295,17.1404,0.046368,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",40.9795,19.6298,0.054843,19.5404,0.048064,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",28.5883,17.8362,0.05306,17.7115,0.01808,0.035392,0.02384,0.00624,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",27.7322,17.566,0.052459,17.4453,0.016608,0.0336,0.02368,0.005632,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",42.1017,18.8188,0.128082,18.6742,0.018528,0.03712,0.03984,0.006816,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",30.2072,17.4621,0.056807,17.3419,0.01696,0.033344,0.023744,0.005664,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",32.7593,19.2904,0.152788,19.1657,0.019136,0.033248,0.023872,0.006816,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",31.2117,19.4538,0.064642,19.3306,0.018816,0.033248,0.023712,0.005152,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",32.8475,18.1724,0.046477,18.0502,0.017856,0.03296,0.023712,0.006464,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",32.6473,19.1206,0.151506,18.995,0.016704,0.034496,0.025344,0.00688,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",30.1001,18.0559,0.062568,17.9337,0.017728,0.03328,0.02416,0.005984,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",31.5778,19.3441,0.066195,19.2231,0.017472,0.033632,0.024064,0.005632,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",30.838,19.4191,0.070153,19.2963,0.01792,0.033312,0.02384,0.006208,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",32.769,17.3356,0.049684,17.2144,0.016288,0.032768,0.025024,0.005696,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",45.0191,18.129,0.33952,18.0069,0.017504,0.033312,0.024032,0.006144,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",36.6621,19.6666,0.058149,19.5448,0.017696,0.032896,0.02368,0.005408,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",27.7215,18.5221,0.070934,18.3996,0.018048,0.033376,0.023744,0.005056,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",28.611,18.5088,0.059091,18.3865,0.018304,0.033088,0.024,0.00624,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",30.0473,17.5453,0.058069,17.4224,0.017952,0.03344,0.024,0.00496,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",35.7001,18.4428,0.060404,18.321,0.017376,0.033888,0.023776,0.005824,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",33.8689,18.407,0.072116,18.2854,0.017792,0.033024,0.023712,0.005152,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",31.1593,18.6534,0.072556,18.5312,0.016416,0.0336,0.024512,0.006432,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",31.0397,18.3658,0.080672,18.2432,0.018048,0.033024,0.024064,0.006208,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",30.0133,18.5009,0.068689,18.3795,0.017184,0.033088,0.023968,0.006304,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",30.0481,18.4971,0.141938,18.3733,0.018752,0.033856,0.023776,0.005856,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",30.9812,18.9874,0.140765,18.8642,0.017376,0.033536,0.024224,0.006784,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",29.5908,17.5829,0.076425,17.4613,0.017792,0.032768,0.023968,0.005632,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",30.4352,18.2353,0.06888,18.1125,0.018272,0.033152,0.02384,0.005184,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",30.5196,18.0447,0.12167,17.9219,0.0184,0.032992,0.024032,0.006624,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",44.3519,18.8445,0.066335,18.7222,0.01744,0.033024,0.024128,0.005824,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",31.4541,18.0633,0.074511,17.9404,0.01648,0.03392,0.02448,0.005088,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",34.4574,19.1689,0.086323,19.0465,0.018112,0.032992,0.023904,0.005824,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
|
@@ -0,0 +1,271 @@
|
||||
scenario,mode,frame,device,cpu_ms,gpu_ms,readback_cpu_ms,gpu_main_cull_ms,gpu_main_raster_ms,gpu_hzb_ms,gpu_post_cull_ms,gpu_post_raster_ms,gpu_bytes,draw_calls,gpu_bins,gpu_visible,gpu_frustum_rejected,gpu_deferred,gpu_post_visible,lod0,lod1,lod2,lod3,hzb_valid,gpu_visibility_active,visibility_diagnostics,visibility_counters_valid,validation_errors
|
||||
frustum,direct,0,"NVIDIA GeForce RTX 2080 Ti",66.1609,0.242784,0.075262,0,0.192512,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,1,"NVIDIA GeForce RTX 2080 Ti",68.3263,0.242272,0.036999,0,0.195872,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,2,"NVIDIA GeForce RTX 2080 Ti",68.5854,0.24224,0.043843,0,0.194464,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,3,"NVIDIA GeForce RTX 2080 Ti",61.0177,0.241088,0.074972,0,0.193504,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,4,"NVIDIA GeForce RTX 2080 Ti",75.1802,0.241536,0.046448,0,0.194048,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,5,"NVIDIA GeForce RTX 2080 Ti",67.1904,0.241984,0.050064,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,6,"NVIDIA GeForce RTX 2080 Ti",69.1559,0.242112,0.048682,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,7,"NVIDIA GeForce RTX 2080 Ti",73.2458,0.240576,0.038663,0,0.192608,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,8,"NVIDIA GeForce RTX 2080 Ti",76.4015,0.241888,0.065804,0,0.19312,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,9,"NVIDIA GeForce RTX 2080 Ti",79.865,0.243456,0.060113,0,0.195008,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,10,"NVIDIA GeForce RTX 2080 Ti",66.7561,0.242368,0.087365,0,0.194528,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,11,"NVIDIA GeForce RTX 2080 Ti",71.2419,0.243552,0.03716,0,0.194784,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,12,"NVIDIA GeForce RTX 2080 Ti",74.0436,0.241696,0.07411,0,0.193024,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,13,"NVIDIA GeForce RTX 2080 Ti",69.8803,0.24128,0.052088,0,0.192608,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,14,"NVIDIA GeForce RTX 2080 Ti",67.6187,0.244096,0.04203,0,0.194368,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,15,"NVIDIA GeForce RTX 2080 Ti",71.5013,0.242368,0.041719,0,0.196096,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,16,"NVIDIA GeForce RTX 2080 Ti",76.1721,0.243328,0.053792,0,0.196544,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,17,"NVIDIA GeForce RTX 2080 Ti",66.9329,0.240384,0.055365,0,0.192736,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,18,"NVIDIA GeForce RTX 2080 Ti",90.9824,0.243072,0.054824,0,0.194976,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,19,"NVIDIA GeForce RTX 2080 Ti",74.168,0.241024,0.058751,0,0.192928,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,20,"NVIDIA GeForce RTX 2080 Ti",77.8858,0.242304,0.054693,0,0.194496,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,21,"NVIDIA GeForce RTX 2080 Ti",71.9848,0.241312,0.211349,0,0.194432,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,22,"NVIDIA GeForce RTX 2080 Ti",70.2748,0.242784,0.040877,0,0.196096,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,23,"NVIDIA GeForce RTX 2080 Ti",73.3592,0.241824,0.050305,0,0.193504,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,24,"NVIDIA GeForce RTX 2080 Ti",75.369,0.243552,0.056216,0,0.196256,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,25,"NVIDIA GeForce RTX 2080 Ti",75.5086,0.241184,0.06409,0,0.194112,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,26,"NVIDIA GeForce RTX 2080 Ti",76.409,0.242816,0.055304,0,0.194912,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,27,"NVIDIA GeForce RTX 2080 Ti",70.5823,0.244608,0.067166,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,28,"NVIDIA GeForce RTX 2080 Ti",70.7893,0.270944,0.045887,0,0.200512,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,29,"NVIDIA GeForce RTX 2080 Ti",67.5317,0.2416,0.038242,0,0.193536,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",12.2652,3.66669,0.056416,3.59363,0.029088,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",13.0303,3.64883,0.049213,3.57485,0.028224,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",14.7693,3.75651,0.055224,3.66861,0.04272,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",14.57,3.9831,0.054543,3.89037,0.047936,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",12.8408,4.20621,0.071605,4.1304,0.031136,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",13.8355,4.53206,0.054202,4.45549,0.031872,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",14.5372,3.8039,0.059372,3.72947,0.028608,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",12.2308,3.64522,0.060264,3.57187,0.028544,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",12.8853,4.10477,0.044243,4.03078,0.0304,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",12.2396,4.3184,0.049915,4.2431,0.031072,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",17.6088,3.8769,0.04756,3.77546,0.049664,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",16.3436,4.63565,0.059683,4.56442,0.027776,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",12.0509,3.65834,0.056156,3.58963,0.02688,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",13.9493,4.38125,0.048051,4.31101,0.028544,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",14.6877,4.69514,0.056567,4.62403,0.028832,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",12.2102,3.76861,0.080261,3.69914,0.026176,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",14.1855,3.79494,0.044774,3.7271,0.02544,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",16.0333,3.89805,0.045235,3.82592,0.030016,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",15.0521,3.79693,0.070724,3.71594,0.039392,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",14.3517,3.55882,0.054884,3.45366,0.062752,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",14.3495,4.27942,0.046207,4.21005,0.028288,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",12.0303,4.0281,0.081163,3.93693,0.04848,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",14.3333,4.45747,0.051958,4.38669,0.029216,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",12.2754,3.52659,0.051968,3.45802,0.02704,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",23.4937,3.83741,0.065203,3.75542,0.04128,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",16.516,4.63072,0.057408,4.56326,0.026304,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",15.3843,3.78736,0.074992,3.69926,0.046304,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",16.3565,4.46115,0.06935,4.39171,0.02784,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",12.3977,4.69267,0.048742,4.62451,0.027552,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",16.4187,3.6647,0.051106,3.5993,0.023616,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",16.8839,4.3735,0.065734,4.26205,0.02656,0.033376,0.004832,0.005408,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",14.9948,3.88058,0.065584,3.77171,0.023232,0.033312,0.005152,0.00624,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",14.4652,4.00362,0.07989,3.89229,0.023232,0.033408,0.004576,0.005376,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",16.5989,4.59565,0.062909,4.48339,0.027552,0.033248,0.004736,0.005824,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",14.7896,4.38035,0.066596,4.26858,0.02608,0.032992,0.004896,0.00624,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",15.1495,3.79091,0.059733,3.68483,0.022048,0.033504,0.004512,0.004992,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",13.8677,3.76458,0.046428,3.63843,0.023392,0.033088,0.004512,0.005408,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",22.0606,4.24832,0.062648,4.13648,0.025952,0.033536,0.004736,0.005888,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",14.9021,3.91434,0.061987,3.80598,0.023104,0.033344,0.004672,0.005504,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",13.7153,3.79104,0.049494,3.68333,0.022944,0.032992,0.004576,0.005888,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",15.3138,4.56838,0.094569,4.45328,0.027008,0.033504,0.005216,0.00688,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",12.7674,4.34733,0.044634,4.2376,0.026016,0.032992,0.004704,0.005504,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",14.4036,4.26525,0.04276,4.15539,0.024992,0.034112,0.00448,0.005632,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",28.5979,4.58384,0.069351,4.47178,0.027392,0.033056,0.004544,0.005792,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",21.8617,4.65187,0.057418,4.53837,0.027232,0.033312,0.005248,0.00624,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",13.8758,4.30333,0.076975,4.19098,0.026528,0.032768,0.005856,0.006208,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",14.2286,3.82544,0.048392,3.71549,0.02512,0.032768,0.005472,0.004768,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",12.9851,3.94019,0.06865,3.80829,0.046304,0.033472,0.004512,0.005024,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",14.5844,3.5375,0.062878,3.42928,0.023296,0.033344,0.004672,0.00544,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",16.9018,4.0472,0.296309,3.93488,0.026336,0.033184,0.005024,0.006784,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",14.3215,3.70998,0.049152,3.60323,0.022272,0.033792,0.004384,0.004832,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",15.4161,4.24403,0.057078,4.10294,0.026368,0.037504,0.009312,0.018688,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",17.2157,3.79514,0.066496,3.67322,0.036384,0.033568,0.004832,0.006112,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",13.9644,3.67958,0.055515,3.57117,0.023072,0.034016,0.004576,0.00608,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",13.3739,3.56653,0.046638,3.4585,0.023104,0.034176,0.00448,0.005856,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",15.3203,4.02573,0.050696,3.91597,0.0248,0.033888,0.004576,0.005696,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",24.1009,4.64227,0.057238,4.5313,0.026048,0.03296,0.004896,0.006176,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",13.371,4.28486,0.055595,4.17245,0.027168,0.033344,0.0048,0.005696,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",12.5154,3.79654,0.063029,3.68909,0.0232,0.03328,0.004384,0.00576,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",16.5618,3.52202,0.053,3.39971,0.038848,0.032992,0.004768,0.005248,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,direct,0,"NVIDIA GeForce RTX 2080 Ti",72.4653,0.525856,0.076093,0,0.456672,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,1,"NVIDIA GeForce RTX 2080 Ti",70.7023,0.49504,0.062467,0,0.454112,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,2,"NVIDIA GeForce RTX 2080 Ti",81.3127,0.495392,0.080652,0,0.454208,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,3,"NVIDIA GeForce RTX 2080 Ti",77.4199,0.52416,0.060243,0,0.461472,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,4,"NVIDIA GeForce RTX 2080 Ti",61.8899,0.498176,0.049884,0,0.456704,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,5,"NVIDIA GeForce RTX 2080 Ti",64.482,0.494112,0.049713,0,0.453184,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,6,"NVIDIA GeForce RTX 2080 Ti",65.8003,0.492416,0.040296,0,0.450752,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,7,"NVIDIA GeForce RTX 2080 Ti",55.3772,0.494208,0.043923,0,0.453152,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,8,"NVIDIA GeForce RTX 2080 Ti",64.7034,0.51328,0.061946,0,0.46384,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,9,"NVIDIA GeForce RTX 2080 Ti",70.0662,0.501888,0.043963,0,0.45712,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,10,"NVIDIA GeForce RTX 2080 Ti",61.0657,0.497984,0.049013,0,0.453696,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,11,"NVIDIA GeForce RTX 2080 Ti",62.9217,0.536032,0.045155,0,0.463008,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,12,"NVIDIA GeForce RTX 2080 Ti",62.8878,0.500384,0.035817,0,0.456256,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,13,"NVIDIA GeForce RTX 2080 Ti",65.4875,0.497568,0.057649,0,0.45344,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,14,"NVIDIA GeForce RTX 2080 Ti",65.4235,0.497312,0.056957,0,0.452608,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,15,"NVIDIA GeForce RTX 2080 Ti",61.4875,0.51936,0.049073,0,0.466944,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,16,"NVIDIA GeForce RTX 2080 Ti",79.2119,0.50368,0.055856,0,0.458752,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,17,"NVIDIA GeForce RTX 2080 Ti",70.6097,0.499072,0.072026,0,0.45376,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,18,"NVIDIA GeForce RTX 2080 Ti",62.8699,0.500544,0.049543,0,0.456416,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,19,"NVIDIA GeForce RTX 2080 Ti",58.4991,0.50224,0.046578,0,0.456928,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,20,"NVIDIA GeForce RTX 2080 Ti",64.0851,0.501248,0.034044,0,0.456192,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,21,"NVIDIA GeForce RTX 2080 Ti",67.3253,0.501536,0.045747,0,0.456704,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,22,"NVIDIA GeForce RTX 2080 Ti",89.302,0.498528,0.086152,0,0.453696,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,23,"NVIDIA GeForce RTX 2080 Ti",101.67,0.49904,0.056597,0,0.4536,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,24,"NVIDIA GeForce RTX 2080 Ti",94.5509,0.499584,0.059602,0,0.454944,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,25,"NVIDIA GeForce RTX 2080 Ti",70.8627,0.50048,0.043262,0,0.456448,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,26,"NVIDIA GeForce RTX 2080 Ti",81.6516,0.499872,0.071996,0,0.45504,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,27,"NVIDIA GeForce RTX 2080 Ti",78.6317,0.497696,0.065924,0,0.453632,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,28,"NVIDIA GeForce RTX 2080 Ti",80.6076,0.501344,0.050605,0,0.45776,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,29,"NVIDIA GeForce RTX 2080 Ti",72.6452,0.50064,0.067588,0,0.456064,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",29.245,17.8214,0.064943,17.736,0.04464,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",31.3521,18.7652,0.064462,18.6796,0.045088,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",34.7003,19.2139,0.06859,19.1284,0.044704,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",30.0787,18.7535,0.065123,18.6476,0.063104,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",27.6475,18.3723,0.119826,18.2861,0.046464,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",31.285,18.8391,0.062538,18.7534,0.045056,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",37.9713,17.3197,0.057118,17.2342,0.045088,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",30.8541,17.7554,0.066796,17.6676,0.045792,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",31.4572,18.0148,0.076956,17.9286,0.045216,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",29.3802,17.7023,0.083968,17.6158,0.04544,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",32.8623,18.7766,0.061085,18.6908,0.044832,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",40.3662,17.988,0.073709,17.9023,0.04432,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",32.6503,17.889,0.059843,17.8035,0.043776,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",29.2223,17.9782,0.085682,17.8699,0.067424,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",32.553,18.421,0.051838,18.3345,0.0448,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",32.6268,17.116,0.092504,17.0359,0.038592,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",29.6657,18.0403,0.07458,17.9531,0.04528,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",30.0886,18.0092,0.089899,17.9228,0.045312,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",29.5011,18.0414,0.054994,17.9353,0.048704,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",37.2712,17.8837,0.074921,17.7968,0.045184,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",27.381,16.7135,0.044945,16.6272,0.045376,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",27.68,18.2506,0.18016,18.1619,0.047168,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",27.1979,17.1442,0.045045,17.0587,0.044128,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",32.1824,18.376,0.19084,18.289,0.044768,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",35.9684,19.6251,0.072497,19.5382,0.044992,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",28.3108,18.1039,0.075964,18.0177,0.045696,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",25.7986,17.8082,0.04234,17.7229,0.04496,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",28.4042,18.3007,0.054834,18.2148,0.044544,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",35.3444,18.0331,0.154822,17.9473,0.044544,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",30.4851,18.0803,0.075763,17.9934,0.04512,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",25.6151,17.2506,0.063139,17.1197,0.046272,0.033408,0.004544,0.005728,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",26.4576,17.2634,0.042881,17.1339,0.044416,0.034208,0.004544,0.0056,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",35.303,18.5771,0.05302,18.4471,0.045632,0.033472,0.004672,0.005568,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",26.8731,17.8981,0.05333,17.7676,0.045952,0.032928,0.004736,0.005504,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",28.0724,17.4549,0.051106,17.3233,0.04576,0.034016,0.004928,0.006112,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",31.1932,17.8851,0.051607,17.7552,0.046016,0.032768,0.00496,0.00528,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",29.659,18.5768,0.188776,18.4443,0.046688,0.033408,0.00512,0.006048,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",27.9955,18.6248,0.040146,18.4945,0.044928,0.03408,0.004544,0.005728,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",25.784,17.7532,0.054383,17.623,0.045504,0.033344,0.004672,0.004992,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",33.2763,17.187,0.052549,17.0571,0.0456,0.033344,0.004512,0.005728,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",33.4845,18.8791,0.066596,18.7452,0.04768,0.03328,0.004896,0.006528,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",27.7019,16.9263,0.06339,16.796,0.045792,0.033664,0.004544,0.005792,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",27.7323,17.5782,0.066956,17.4152,0.072448,0.03664,0.00544,0.006752,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",31.2446,17.2717,0.051888,17.1416,0.045504,0.033088,0.004512,0.0056,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",30.0714,18.3229,0.077737,18.192,0.046656,0.033312,0.00464,0.0056,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",27.9889,18.9183,0.046127,18.7876,0.045728,0.032768,0.005312,0.004928,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",26.9597,18.0464,0.083999,17.9147,0.04624,0.034112,0.004704,0.005824,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",30.473,18.0955,0.12724,17.965,0.045664,0.033312,0.004672,0.005024,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",36.0596,19.7913,0.050134,19.6605,0.0456,0.033888,0.004544,0.005888,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",29.3395,18.682,0.062508,18.5511,0.045824,0.033248,0.004544,0.006944,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",28.5117,18.3156,0.081845,18.1831,0.045984,0.034048,0.004704,0.006144,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",30.0566,18.3983,0.047139,18.2688,0.044384,0.033984,0.004512,0.005632,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",33.5899,18.7714,0.14269,18.6402,0.047008,0.033376,0.004704,0.005696,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",28.5571,17.7053,0.13783,17.5736,0.04688,0.033152,0.004576,0.005888,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",30.1274,18.0992,0.073378,17.9682,0.04576,0.033504,0.004864,0.005824,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",28.8706,17.6903,0.052449,17.5603,0.046368,0.033312,0.004832,0.004864,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",29.4792,18.1158,0.059031,17.9844,0.046144,0.032768,0.005504,0.00592,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",28.4486,18.0173,0.052769,17.8855,0.045728,0.033952,0.004768,0.006016,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",29.3532,17.5242,0.074831,17.3932,0.046592,0.033312,0.004544,0.005952,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",27.5402,17.3059,0.056536,17.1766,0.044992,0.03392,0.004512,0.00592,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
occluded,direct,0,"NVIDIA GeForce RTX 2080 Ti",59.3118,0.494336,0.045526,0,0.450944,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,1,"NVIDIA GeForce RTX 2080 Ti",68.4237,0.496704,0.052459,0,0.452608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,2,"NVIDIA GeForce RTX 2080 Ti",69.8323,0.49632,0.070112,0,0.452608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,3,"NVIDIA GeForce RTX 2080 Ti",58.6022,0.496192,0.044424,0,0.4536,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,4,"NVIDIA GeForce RTX 2080 Ti",68.6386,0.493664,0.04226,0,0.450208,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,5,"NVIDIA GeForce RTX 2080 Ti",70.3443,0.498432,0.048251,0,0.453056,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,6,"NVIDIA GeForce RTX 2080 Ti",75.7748,0.495776,0.050034,0,0.452224,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,7,"NVIDIA GeForce RTX 2080 Ti",67.7425,0.787424,0.070763,0,0.741376,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,8,"NVIDIA GeForce RTX 2080 Ti",67.2227,0.49664,0.04765,0,0.451296,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,9,"NVIDIA GeForce RTX 2080 Ti",61.9873,0.497344,0.048111,0,0.453344,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,10,"NVIDIA GeForce RTX 2080 Ti",69.7143,0.503136,0.075963,0,0.454656,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,11,"NVIDIA GeForce RTX 2080 Ti",66.0564,0.499968,0.032291,0,0.452672,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,12,"NVIDIA GeForce RTX 2080 Ti",60.2812,0.499136,0.055294,0,0.452512,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,13,"NVIDIA GeForce RTX 2080 Ti",66.9893,0.500224,0.051346,0,0.452608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,14,"NVIDIA GeForce RTX 2080 Ti",75.2515,0.504672,0.252627,0,0.456608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,15,"NVIDIA GeForce RTX 2080 Ti",67.1819,0.500576,0.041368,0,0.453056,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,16,"NVIDIA GeForce RTX 2080 Ti",64.3475,0.504064,0.047781,0,0.456608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,17,"NVIDIA GeForce RTX 2080 Ti",69.0903,0.501952,0.039975,0,0.45456,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,18,"NVIDIA GeForce RTX 2080 Ti",65.2047,0.513408,0.042049,0,0.4608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,19,"NVIDIA GeForce RTX 2080 Ti",65.3647,0.501248,0.04232,0,0.453856,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,20,"NVIDIA GeForce RTX 2080 Ti",67.6695,0.503328,0.061295,0,0.454656,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,21,"NVIDIA GeForce RTX 2080 Ti",64.7599,0.500256,0.057228,0,0.452,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,22,"NVIDIA GeForce RTX 2080 Ti",70.1995,0.500928,0.067697,0,0.453888,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,23,"NVIDIA GeForce RTX 2080 Ti",65.6527,0.501792,0.038723,0,0.453216,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,24,"NVIDIA GeForce RTX 2080 Ti",59.455,0.499904,0.04797,0,0.452608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,25,"NVIDIA GeForce RTX 2080 Ti",68.5474,0.501856,0.041268,0,0.454528,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,26,"NVIDIA GeForce RTX 2080 Ti",74.7478,0.49872,0.072086,0,0.45056,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,27,"NVIDIA GeForce RTX 2080 Ti",70.2172,0.738016,0.066305,0,0.688544,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,28,"NVIDIA GeForce RTX 2080 Ti",66.2711,0.503872,0.065183,0,0.455776,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,29,"NVIDIA GeForce RTX 2080 Ti",72.4094,0.5024,0.033653,0,0.454944,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",29.4074,17.7684,0.056657,17.6803,0.047232,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",27.681,17.5781,0.079099,17.4894,0.047616,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",29.9062,18.5249,0.115969,18.4381,0.046592,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",30.8325,18.0383,0.070543,17.9507,0.04624,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",32.8241,19.0072,0.06875,18.9191,0.046304,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",31.9167,18.3397,0.082646,18.2509,0.047456,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",28.0415,17.4767,0.054252,17.3888,0.045792,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",28.7951,17.0943,0.064031,17.0079,0.045472,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",30.1276,19.5859,0.047239,19.4636,0.058048,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",27.4857,18.4978,0.055925,18.4103,0.04624,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",26.7085,17.3482,0.044874,17.2604,0.047104,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",28.9901,18.1116,0.060113,18.024,0.047008,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",28.9482,18.9477,0.056476,18.86,0.046752,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",28.0518,18.5903,0.048111,18.504,0.044704,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",35.1882,18.8958,0.053841,18.8077,0.046176,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",41.5527,18.3833,0.064201,18.2944,0.045984,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",29.4888,18.1247,0.046317,18.0372,0.046336,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",27.1293,18.1766,0.057849,18.0879,0.04768,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",29.3715,17.2684,0.050936,17.1801,0.04736,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",41.1616,18.4478,0.059963,18.3596,0.046592,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",30.7117,18.8622,0.101561,18.7739,0.046688,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",28.0277,18.7782,0.078919,18.6874,0.049472,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",33.5102,18.3076,0.070402,18.2191,0.046976,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",45.6373,17.5671,0.066796,17.4797,0.046784,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",28.7209,18.035,0.074651,17.9484,0.045312,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",31.6408,18.6111,0.054673,18.481,0.08768,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",28.4236,18.321,0.083367,18.2011,0.077696,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",29.587,18.0164,0.049052,17.9292,0.046144,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",43.2576,18.0742,0.081224,17.947,0.085504,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",34.3899,18.373,0.130446,18.2849,0.045728,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",27.3069,18.3138,0.082315,18.1906,0.017792,0.033376,0.024064,0.005888,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",31.8759,19.0241,0.044124,18.8998,0.0184,0.033536,0.024416,0.005536,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",27.6391,16.7698,0.06887,16.6253,0.018784,0.0376,0.040288,0.00608,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",30.335,18.4741,0.051247,18.3538,0.016768,0.034144,0.023712,0.005632,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",29.0454,19.0139,0.078949,18.8906,0.017536,0.03392,0.023872,0.006752,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",28.6342,17.7767,0.080301,17.6547,0.017472,0.03312,0.024128,0.005728,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",28.9265,17.6885,0.135596,17.5683,0.017344,0.033088,0.023328,0.005664,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",33.8068,18.4788,0.086684,18.3546,0.018368,0.033152,0.02448,0.0072,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",29.6926,18.4138,0.064191,18.2916,0.017536,0.034016,0.02432,0.005152,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",28.5787,17.4874,0.077416,17.3657,0.017568,0.033696,0.02384,0.005888,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",32.4026,19.2327,0.060063,19.1113,0.017056,0.03328,0.024128,0.006048,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",32.3829,17.1625,0.055765,17.0414,0.017184,0.03312,0.024128,0.005824,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",30.5328,18.1117,0.244651,17.9874,0.018016,0.033728,0.024896,0.00672,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",30.6542,18.5373,0.058872,18.416,0.017408,0.033184,0.023456,0.00544,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",26.8597,18.8081,0.056165,18.6877,0.016704,0.03344,0.023936,0.005664,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",30.9608,18.2385,0.059392,18.1172,0.017792,0.032768,0.024864,0.005856,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",41.101,17.4621,0.075723,17.3332,0.018528,0.03424,0.029856,0.006144,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",32.2826,19.3706,0.05832,19.2484,0.01824,0.033056,0.024192,0.005152,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",32.5615,18.6187,0.068329,18.4956,0.017792,0.033568,0.023936,0.006368,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",28.4861,18.9286,0.346313,18.8054,0.017728,0.03344,0.024352,0.005696,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",27.3125,17.8936,0.064252,17.7717,0.017216,0.034272,0.024,0.005216,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",27.7025,17.3756,0.050815,17.2564,0.01648,0.033216,0.023936,0.005696,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",34.3059,18.599,0.061987,18.4546,0.018752,0.036832,0.039936,0.006784,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",27.5462,18.3532,0.081053,18.2315,0.017664,0.033248,0.02416,0.005696,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",29.9655,18.9615,0.049203,18.839,0.018112,0.033088,0.023936,0.005344,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",25.4532,17.4165,0.166063,17.2967,0.016896,0.032864,0.024,0.00592,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",37.9467,18.9785,0.088637,18.8561,0.017568,0.033696,0.023872,0.005792,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",29.9581,18.687,0.050004,18.5662,0.017152,0.033344,0.02384,0.00608,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",25.9481,18.1282,0.044304,18.0061,0.018304,0.03312,0.023808,0.005952,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",27.4058,17.4194,0.044544,17.2987,0.01696,0.033472,0.023936,0.005632,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
|
@@ -0,0 +1,271 @@
|
||||
scenario,mode,frame,device,cpu_ms,gpu_ms,readback_cpu_ms,gpu_main_cull_ms,gpu_main_raster_ms,gpu_hzb_ms,gpu_post_cull_ms,gpu_post_raster_ms,gpu_bytes,draw_calls,gpu_bins,gpu_visible,gpu_frustum_rejected,gpu_deferred,gpu_post_visible,lod0,lod1,lod2,lod3,hzb_valid,gpu_visibility_active,visibility_diagnostics,visibility_counters_valid,validation_errors
|
||||
frustum,direct,0,"NVIDIA GeForce RTX 2080 Ti",93.8725,0.23984,0.05314,0,0.195616,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,1,"NVIDIA GeForce RTX 2080 Ti",72.6142,0.239936,0.049743,0,0.19584,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,2,"NVIDIA GeForce RTX 2080 Ti",88.0211,0.239584,0.065223,0,0.192832,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,3,"NVIDIA GeForce RTX 2080 Ti",78.2073,0.276736,0.044924,0,0.198656,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,4,"NVIDIA GeForce RTX 2080 Ti",73.1667,0.239328,0.049514,0,0.193184,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,5,"NVIDIA GeForce RTX 2080 Ti",90.6366,0.240736,0.0374,0,0.196064,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,6,"NVIDIA GeForce RTX 2080 Ti",73.5559,0.240096,0.060124,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,7,"NVIDIA GeForce RTX 2080 Ti",73.644,0.239296,0.057929,0,0.1944,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,8,"NVIDIA GeForce RTX 2080 Ti",74.2932,0.239008,0.041298,0,0.194208,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,9,"NVIDIA GeForce RTX 2080 Ti",87.3979,0.24064,0.070012,0,0.194752,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,10,"NVIDIA GeForce RTX 2080 Ti",84.099,0.240992,0.07401,0,0.195904,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,11,"NVIDIA GeForce RTX 2080 Ti",90.7987,0.240192,0.065093,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,12,"NVIDIA GeForce RTX 2080 Ti",81.6204,0.240416,0.04769,0,0.196576,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,13,"NVIDIA GeForce RTX 2080 Ti",94.9211,0.241088,0.063129,0,0.196096,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,14,"NVIDIA GeForce RTX 2080 Ti",77.274,0.240672,0.044113,0,0.196192,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,15,"NVIDIA GeForce RTX 2080 Ti",94.9484,0.240928,0.08437,0,0.196416,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,16,"NVIDIA GeForce RTX 2080 Ti",72.684,0.239264,0.050044,0,0.194784,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,17,"NVIDIA GeForce RTX 2080 Ti",70.9211,0.241056,0.054253,0,0.196064,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,18,"NVIDIA GeForce RTX 2080 Ti",81.2235,0.238656,0.057729,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,19,"NVIDIA GeForce RTX 2080 Ti",71.7002,0.23872,0.051828,0,0.19456,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,20,"NVIDIA GeForce RTX 2080 Ti",85.7993,0.275072,0.063861,0,0.198848,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,21,"NVIDIA GeForce RTX 2080 Ti",71.1468,0.239136,0.054613,0,0.194464,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,22,"NVIDIA GeForce RTX 2080 Ti",80.3144,0.24224,0.046518,0,0.196736,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,23,"NVIDIA GeForce RTX 2080 Ti",90.3626,0.23792,0.080562,0,0.192512,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,24,"NVIDIA GeForce RTX 2080 Ti",79.6581,0.23872,0.069952,0,0.194368,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,25,"NVIDIA GeForce RTX 2080 Ti",86.7153,0.237568,0.073338,0,0.192928,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,26,"NVIDIA GeForce RTX 2080 Ti",105.535,0.239808,0.048983,0,0.19488,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,27,"NVIDIA GeForce RTX 2080 Ti",90.4653,0.239424,0.067317,0,0.194656,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,28,"NVIDIA GeForce RTX 2080 Ti",82.4022,0.246176,0.057298,0,0.19712,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,direct,29,"NVIDIA GeForce RTX 2080 Ti",69.9484,0.24688,0.059452,0,0.19712,0,0,0,7811584,416,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
frustum,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",19.3669,4.39968,0.072576,4.3257,0.030208,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",15.7535,3.9465,0.059572,3.87264,0.030752,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",15.2249,3.83805,0.055485,3.76752,0.027072,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",16.4207,4.83411,0.05318,4.76048,0.030432,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",18.089,4.42224,0.237638,4.3489,0.029568,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",16.4043,4.16947,0.059382,4.09533,0.031168,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",26.3979,4.01258,0.319733,3.93216,0.038304,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",20.4476,4.63619,0.059282,4.5624,0.031008,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",18.2016,3.86666,0.060254,3.77907,0.044544,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",14.964,4.21133,0.055304,4.13994,0.029152,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",13.6549,4.32074,0.046377,4.23382,0.044672,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",12.5237,3.74387,0.053551,3.65994,0.042848,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",31.3421,5.13533,0.080532,5.06534,0.028032,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",14.5948,3.78154,0.063369,3.71475,0.024896,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",15.2246,4.31379,0.091132,4.24256,0.027616,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",16.0754,5.05866,0.070483,4.988,0.029504,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",13.9159,3.64512,0.057568,3.57869,0.025792,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",15.1862,4.1081,0.066205,4.0215,0.043776,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",14.419,4.22557,0.052269,4.1551,0.02896,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",22.4779,4.31062,0.05836,4.23917,0.03008,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",16.1069,3.8457,0.06354,3.7599,0.043232,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",14.3488,3.93782,0.075252,3.86992,0.02608,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",12.9291,3.82083,0.05832,3.73139,0.049568,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",13.2736,3.90512,0.078608,3.82621,0.038368,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",12.6893,3.96976,0.051677,3.90218,0.027936,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",13.6491,3.53974,0.052059,3.46147,0.038496,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",24.5044,4.49805,0.056106,4.41584,0.040832,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",15.0732,4.21635,0.093036,4.148,0.02832,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",15.1523,4.12198,0.068419,4.05331,0.02848,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",16.2747,4.04384,0.062488,3.95376,0.049856,0,0,0,5417504,1,1,416,608,0,0,1024,0,0,0,0,1,1,1,0
|
||||
frustum,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",16.1367,3.89664,0.056957,3.78477,0.02432,0.033408,0.005376,0.006016,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",19.5531,3.93331,0.056867,3.8129,0.033248,0.032768,0.005568,0.006048,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",16.1321,4.36762,0.055695,4.25536,0.024896,0.03392,0.004768,0.005952,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",13.9535,3.63126,0.064131,3.52253,0.022336,0.034144,0.004416,0.005888,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",13.1434,4.4961,0.050485,4.38173,0.025824,0.033184,0.004704,0.007168,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",16.2221,4.42038,0.049483,4.30858,0.025408,0.033248,0.004672,0.005088,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",22.8249,3.82531,0.048361,3.68829,0.022688,0.043264,0.00928,0.019104,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",17.8131,4.22666,0.052609,4.1143,0.025984,0.033216,0.004544,0.005728,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",15.2164,3.92509,0.062157,3.79622,0.023648,0.033408,0.00512,0.005952,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",16.8552,4.00406,0.061586,3.87715,0.039104,0.03328,0.004768,0.005376,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",15.9779,3.90365,0.046668,3.79267,0.02336,0.033216,0.005024,0.006048,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",13.6492,4.2559,0.059703,4.11997,0.043616,0.036384,0.005152,0.006816,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",21.7755,3.89962,0.048111,3.76205,0.046016,0.037984,0.004832,0.005696,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",22.2044,4.25507,0.081845,4.1392,0.028,0.033472,0.004768,0.005248,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",14.6486,3.84714,0.05804,3.73795,0.022176,0.033632,0.004512,0.005952,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",14.1162,3.90032,0.081283,3.792,0.022944,0.032992,0.004416,0.005632,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",15.0207,4.06464,0.085512,3.9225,0.047168,0.041248,0.004896,0.005056,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",15.4038,4.62122,0.054523,4.50896,0.025312,0.03344,0.004672,0.005952,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",14.684,3.95261,0.066255,3.80032,0.053472,0.042688,0.005152,0.007456,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",15.4262,4.13955,0.05816,4.02643,0.025856,0.033184,0.004512,0.006016,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",21.3651,3.9159,0.043593,3.79853,0.031232,0.033792,0.004384,0.004832,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",17.3423,3.96237,0.052178,3.81568,0.050912,0.040416,0.004768,0.006176,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",14.6369,4.39661,0.061166,4.28288,0.02704,0.033184,0.004512,0.005952,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",15.4981,4.59818,0.07943,4.48384,0.02608,0.03408,0.004928,0.005664,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",17.4442,3.91299,0.072446,3.8025,0.02304,0.03424,0.004416,0.00608,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",15.6137,4.1815,0.067377,4.03248,0.026912,0.033312,0.004576,0.011488,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",15.7201,3.68115,0.049905,3.57171,0.022592,0.033216,0.004768,0.005024,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",25.2425,4.96784,0.042881,4.85472,0.025888,0.033344,0.004672,0.005024,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",15.0285,4.25296,0.065073,4.13866,0.026368,0.033664,0.004576,0.005664,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
frustum,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",14.0565,3.90509,0.053081,3.79514,0.02304,0.03312,0.004704,0.005344,6819360,2,1,416,608,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,direct,0,"NVIDIA GeForce RTX 2080 Ti",75.4159,0.508224,0.105619,0,0.46112,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,1,"NVIDIA GeForce RTX 2080 Ti",71.9423,0.495904,0.054683,0,0.452544,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,2,"NVIDIA GeForce RTX 2080 Ti",72.1826,0.49408,0.055505,0,0.450176,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,3,"NVIDIA GeForce RTX 2080 Ti",70.6288,0.498816,0.077135,0,0.454528,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,4,"NVIDIA GeForce RTX 2080 Ti",64.3715,0.497312,0.04744,0,0.45376,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,5,"NVIDIA GeForce RTX 2080 Ti",64.6311,0.519136,0.037631,0,0.463712,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,6,"NVIDIA GeForce RTX 2080 Ti",66.4933,0.495104,0.056857,0,0.451168,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,7,"NVIDIA GeForce RTX 2080 Ti",63.3715,0.497344,0.054283,0,0.453856,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,8,"NVIDIA GeForce RTX 2080 Ti",82.412,0.506464,0.052018,0,0.45872,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,9,"NVIDIA GeForce RTX 2080 Ti",67.0274,0.504928,0.039174,0,0.45712,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,10,"NVIDIA GeForce RTX 2080 Ti",73.8591,0.501952,0.054402,0,0.4544,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,11,"NVIDIA GeForce RTX 2080 Ti",66.3768,0.5,0.038142,0,0.45248,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,12,"NVIDIA GeForce RTX 2080 Ti",70.3189,0.50464,0.064662,0,0.456704,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,13,"NVIDIA GeForce RTX 2080 Ti",65.2081,0.643744,0.056717,0,0.59552,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,14,"NVIDIA GeForce RTX 2080 Ti",63.5455,0.5048,0.054894,0,0.456928,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,15,"NVIDIA GeForce RTX 2080 Ti",80.4749,0.503264,0.101531,0,0.455008,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,16,"NVIDIA GeForce RTX 2080 Ti",75.2705,0.50176,0.052669,0,0.4536,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,17,"NVIDIA GeForce RTX 2080 Ti",80.0808,0.50208,0.045095,0,0.454368,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,18,"NVIDIA GeForce RTX 2080 Ti",93.9014,0.745664,0.064411,0,0.698336,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,19,"NVIDIA GeForce RTX 2080 Ti",73.3681,0.503296,0.053902,0,0.454656,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,20,"NVIDIA GeForce RTX 2080 Ti",67.2312,0.501632,0.051327,0,0.454016,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,21,"NVIDIA GeForce RTX 2080 Ti",80.4576,0.503776,0.068249,0,0.456704,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,22,"NVIDIA GeForce RTX 2080 Ti",86.3815,0.502624,0.050736,0,0.454656,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,23,"NVIDIA GeForce RTX 2080 Ti",70.3502,0.502176,0.046908,0,0.454656,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,24,"NVIDIA GeForce RTX 2080 Ti",78.2226,0.504288,0.062368,0,0.456704,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,25,"NVIDIA GeForce RTX 2080 Ti",71.0836,0.501952,0.078839,0,0.454176,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,26,"NVIDIA GeForce RTX 2080 Ti",67.9296,0.503904,0.054853,0,0.456384,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,27,"NVIDIA GeForce RTX 2080 Ti",68.8549,0.520544,0.046027,0,0.452608,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,28,"NVIDIA GeForce RTX 2080 Ti",92.9701,0.500672,0.06391,0,0.452608,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,direct,29,"NVIDIA GeForce RTX 2080 Ti",79.0998,0.533728,0.04765,0,0.464896,0,0,0,7811584,1024,0,0,0,0,0,1024,0,0,0,0,0,1,0,0
|
||||
open,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",29.988,18.3438,0.071275,18.2524,0.047168,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",27.8357,18.0194,0.058,17.9242,0.048544,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",24.3574,16.846,0.077016,16.7574,0.04576,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",28.6013,17.984,0.053962,17.893,0.045472,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",37.7658,18.3212,0.057167,18.2322,0.046016,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",30.6567,18.6845,0.076464,18.5544,0.084416,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",28.5088,17.7775,0.06891,17.6895,0.045536,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",28.324,18.5474,0.053451,18.4579,0.045568,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",26.4022,18.0869,0.057268,17.9586,0.083968,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",35.8476,18.6815,0.059493,18.592,0.045696,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",29.5405,18.4589,0.128041,18.369,0.04544,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",28.9524,18.6512,0.050174,18.5228,0.084736,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",29.4448,17.5729,0.117241,17.4833,0.045856,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",42.3364,17.4876,0.058019,17.398,0.045664,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",28.2529,18.3513,0.075352,18.2618,0.04576,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",29.0273,18.2315,0.061897,18.1417,0.046464,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",29.9301,18.7874,0.05258,18.6876,0.055968,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",37.164,18.2667,0.04814,18.1759,0.047072,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",29.4363,18.7093,0.065414,18.6178,0.046656,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",29.6403,19.8892,0.067768,19.7987,0.046464,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",32.7416,19.4688,0.082456,19.3375,0.085696,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",29.5868,18.1427,0.05328,18.0532,0.04656,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",28.8153,16.8258,0.068049,16.7443,0.038752,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",28.9586,17.5112,0.064301,17.3821,0.08528,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",29.1362,19.4576,0.054944,19.3681,0.046944,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",24.577,16.4695,0.048311,16.3804,0.045536,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",27.0231,17.7367,0.051758,17.6471,0.046304,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",35.9085,19.1104,0.053551,19.0206,0.046304,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",31.4475,18.1968,0.06851,18.1075,0.045888,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",29.3173,18.081,0.088197,17.9485,0.084096,0,0,0,5417504,1,1,1024,0,0,0,1024,0,0,0,0,1,1,1,0
|
||||
open,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",34.1327,17.7203,0.04757,17.5952,0.045248,0.033344,0.00448,0.00576,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",37.526,18.9227,0.439369,18.7964,0.045504,0.03312,0.004544,0.005344,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",27.7994,17.2956,0.048281,17.168,0.045408,0.033568,0.004896,0.005952,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",27.7663,18.1303,0.070653,18.0015,0.046464,0.033408,0.005088,0.005984,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",31.5291,18.8135,0.043692,18.6844,0.04656,0.033088,0.004768,0.00544,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",33.5083,18.5115,0.048842,18.3816,0.046272,0.033472,0.005376,0.005984,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",38.1542,19.8109,0.050365,19.6849,0.045152,0.033152,0.004832,0.005408,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",40.3854,18.8748,0.07424,18.7441,0.046752,0.033088,0.005312,0.00592,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",29.4444,18.5252,0.071395,18.3971,0.04656,0.0336,0.004992,0.005088,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",34.2684,18.9979,0.061316,18.8686,0.046752,0.034048,0.00464,0.00608,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",36.2919,18.6141,0.061305,18.4867,0.046048,0.033152,0.0048,0.00544,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",38.7246,18.8321,0.055154,18.6632,0.082688,0.036736,0.005184,0.006656,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",29.287,18.0387,1.77014,17.9113,0.045248,0.03472,0.004576,0.00576,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",30.3873,18.9993,0.065523,18.8549,0.046496,0.03392,0.00496,0.0056,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",37.0305,19.4941,0.064923,19.3242,0.085088,0.035648,0.005024,0.00624,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",30.6531,18.7176,0.069391,18.5455,0.08512,0.036352,0.005312,0.007008,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",31.3,18.7644,0.077326,18.6372,0.045408,0.032896,0.005024,0.00656,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",44.8168,17.4992,0.053391,17.3733,0.04512,0.032864,0.004512,0.006176,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",35.6551,18.4565,0.06363,18.3302,0.045568,0.033312,0.00448,0.006048,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",37.8271,18.6476,0.082887,18.52,0.045056,0.033952,0.0048,0.006304,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",33.2102,18.8188,0.062848,18.6911,0.0456,0.033152,0.004512,0.006176,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",33.6445,18.4574,0.088477,18.3308,0.045664,0.03296,0.005088,0.00496,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",31.2976,18.6736,0.159961,18.5472,0.045696,0.03312,0.00448,0.006304,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",31.9702,18.3362,0.062177,18.2091,0.0456,0.033248,0.0048,0.006048,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",36.1229,17.8715,0.057569,17.696,0.085344,0.036864,0.005792,0.006496,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",30.8702,18.3402,0.069341,18.17,0.084096,0.036224,0.00496,0.00592,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",31.6967,18.9345,0.057719,18.8092,0.044672,0.03392,0.004512,0.005696,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",32.5823,18.3771,0.06853,18.2506,0.04464,0.03392,0.004576,0.005888,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",37.1916,19.1221,0.076965,18.9511,0.084704,0.035936,0.005472,0.007008,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
open,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",30.1716,18.4681,0.060484,18.3419,0.045312,0.033024,0.004512,0.005984,6819360,2,1,1024,0,0,0,1024,0,0,0,1,1,1,1,0
|
||||
occluded,direct,0,"NVIDIA GeForce RTX 2080 Ti",63.3464,0.492128,0.041188,0,0.45408,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,1,"NVIDIA GeForce RTX 2080 Ti",64.5729,0.530432,0.047049,0,0.457184,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,2,"NVIDIA GeForce RTX 2080 Ti",68.0189,0.604768,0.074941,0,0.566656,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,3,"NVIDIA GeForce RTX 2080 Ti",64.9456,0.492864,0.045907,0,0.45536,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,4,"NVIDIA GeForce RTX 2080 Ti",65.5335,0.5616,0.046518,0,0.523104,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,5,"NVIDIA GeForce RTX 2080 Ti",76.4501,0.49296,0.045866,0,0.45504,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,6,"NVIDIA GeForce RTX 2080 Ti",80.3929,0.489472,0.048441,0,0.451424,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,7,"NVIDIA GeForce RTX 2080 Ti",78.6841,0.49408,0.057879,0,0.45536,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,8,"NVIDIA GeForce RTX 2080 Ti",68.9975,0.489632,0.108535,0,0.452608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,9,"NVIDIA GeForce RTX 2080 Ti",66.42,0.495232,0.043572,0,0.45264,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,10,"NVIDIA GeForce RTX 2080 Ti",60.8563,0.498656,0.034074,0,0.456704,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,11,"NVIDIA GeForce RTX 2080 Ti",66.8851,0.497504,0.04204,0,0.455968,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,12,"NVIDIA GeForce RTX 2080 Ti",60.9754,0.494656,0.043452,0,0.453376,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,13,"NVIDIA GeForce RTX 2080 Ti",62.6399,0.493984,0.040506,0,0.452576,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,14,"NVIDIA GeForce RTX 2080 Ti",66.5386,0.654048,0.062768,0,0.610848,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,15,"NVIDIA GeForce RTX 2080 Ti",61.5022,0.49696,0.037961,0,0.45552,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,16,"NVIDIA GeForce RTX 2080 Ti",74.3849,0.49584,0.068489,0,0.454656,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,17,"NVIDIA GeForce RTX 2080 Ti",67.9715,0.496128,0.056016,0,0.454752,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,18,"NVIDIA GeForce RTX 2080 Ti",93.7392,0.495936,0.051838,0,0.454656,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,19,"NVIDIA GeForce RTX 2080 Ti",85.0805,0.49744,0.060254,0,0.455328,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,20,"NVIDIA GeForce RTX 2080 Ti",83.2493,0.507008,0.050896,0,0.459776,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,21,"NVIDIA GeForce RTX 2080 Ti",89.0997,0.497152,0.060053,0,0.455136,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,22,"NVIDIA GeForce RTX 2080 Ti",62.5398,0.494464,0.047049,0,0.45328,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,23,"NVIDIA GeForce RTX 2080 Ti",67.3232,0.497504,0.055846,0,0.456128,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,24,"NVIDIA GeForce RTX 2080 Ti",70.2749,0.498336,0.05866,0,0.45776,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,25,"NVIDIA GeForce RTX 2080 Ti",65.115,0.49552,0.052349,0,0.45408,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,26,"NVIDIA GeForce RTX 2080 Ti",68.924,0.49584,0.042169,0,0.45312,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,27,"NVIDIA GeForce RTX 2080 Ti",69.8577,0.497632,0.203183,0,0.456256,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,28,"NVIDIA GeForce RTX 2080 Ti",81.2869,0.495392,0.055514,0,0.452608,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,direct,29,"NVIDIA GeForce RTX 2080 Ti",75.7277,0.495552,0.048752,0,0.454336,0,0,0,7816768,1026,0,0,0,0,0,1026,0,0,0,0,0,1,0,0
|
||||
occluded,gpu_frustum,0,"NVIDIA GeForce RTX 2080 Ti",30.8317,17.6516,0.052519,17.5672,0.04816,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,1,"NVIDIA GeForce RTX 2080 Ti",27.3587,18.3679,0.051978,18.2836,0.048128,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,2,"NVIDIA GeForce RTX 2080 Ti",30.9536,17.4843,0.051818,17.3997,0.048064,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,3,"NVIDIA GeForce RTX 2080 Ti",28.9336,18.2879,0.173617,18.2031,0.048224,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,4,"NVIDIA GeForce RTX 2080 Ti",27.911,17.8547,0.048942,17.7709,0.047392,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,5,"NVIDIA GeForce RTX 2080 Ti",29.6767,19.311,0.066926,19.2266,0.048288,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,6,"NVIDIA GeForce RTX 2080 Ti",36.6422,18.3951,0.048481,18.3143,0.045632,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,7,"NVIDIA GeForce RTX 2080 Ti",30.7874,18.5284,0.059773,18.446,0.046304,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,8,"NVIDIA GeForce RTX 2080 Ti",31.8146,18.6606,0.056547,18.5762,0.048288,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,9,"NVIDIA GeForce RTX 2080 Ti",30.2338,17.9315,0.066546,17.848,0.047168,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,10,"NVIDIA GeForce RTX 2080 Ti",27.3433,18.1383,0.072967,18.0144,0.086112,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,11,"NVIDIA GeForce RTX 2080 Ti",33.028,17.9224,0.056266,17.8391,0.046656,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,12,"NVIDIA GeForce RTX 2080 Ti",39.2899,19.1367,0.05811,19.0528,0.047488,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,13,"NVIDIA GeForce RTX 2080 Ti",30.933,18.9442,0.070082,18.8217,0.08544,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,14,"NVIDIA GeForce RTX 2080 Ti",32.4794,17.9719,0.062277,17.8875,0.048224,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,15,"NVIDIA GeForce RTX 2080 Ti",27.2453,18.2206,0.050325,18.1364,0.047776,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,16,"NVIDIA GeForce RTX 2080 Ti",29.5202,18.8119,0.056036,18.7284,0.046592,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,17,"NVIDIA GeForce RTX 2080 Ti",33.3184,18.3911,0.058831,18.3066,0.047648,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,18,"NVIDIA GeForce RTX 2080 Ti",29.3055,17.9568,0.065153,17.8725,0.047488,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,19,"NVIDIA GeForce RTX 2080 Ti",30.5783,18.734,0.228321,18.6199,0.062656,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,20,"NVIDIA GeForce RTX 2080 Ti",31.8372,17.7959,0.073308,17.7122,0.047712,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,21,"NVIDIA GeForce RTX 2080 Ti",36.5122,18.3571,0.049273,18.2325,0.086848,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,22,"NVIDIA GeForce RTX 2080 Ti",37.6488,18.9845,0.06362,18.8996,0.047424,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,23,"NVIDIA GeForce RTX 2080 Ti",30.5148,18.4183,0.062197,18.3331,0.048704,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,24,"NVIDIA GeForce RTX 2080 Ti",30.0404,18.2389,0.073289,18.1562,0.046432,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,25,"NVIDIA GeForce RTX 2080 Ti",30.5177,18.6789,0.076935,18.5652,0.076896,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,26,"NVIDIA GeForce RTX 2080 Ti",32.4181,18.086,0.122861,17.9997,0.048256,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,27,"NVIDIA GeForce RTX 2080 Ti",35.8143,19.1104,0.062188,18.9879,0.084992,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,28,"NVIDIA GeForce RTX 2080 Ti",30.6415,19.2991,0.062518,19.2154,0.047872,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_frustum,29,"NVIDIA GeForce RTX 2080 Ti",27.3059,17.7803,0.057869,17.6977,0.046944,0,0,0,5418032,1,1,1026,0,0,0,1026,0,0,0,0,1,1,1,0
|
||||
occluded,gpu_occlusion,0,"NVIDIA GeForce RTX 2080 Ti",28.5581,18.5991,0.07449,18.4815,0.016864,0.034176,0.023936,0.005376,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,1,"NVIDIA GeForce RTX 2080 Ti",28.4824,17.1929,0.058661,17.077,0.017344,0.032992,0.023872,0.006048,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,2,"NVIDIA GeForce RTX 2080 Ti",34.9814,19.1306,0.072908,19.0125,0.018304,0.033344,0.024288,0.005984,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,3,"NVIDIA GeForce RTX 2080 Ti",32.3468,17.8426,0.059703,17.7237,0.018272,0.033344,0.024256,0.005888,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,4,"NVIDIA GeForce RTX 2080 Ti",28.7413,18.7033,0.056997,18.5849,0.017504,0.033984,0.024064,0.006528,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,5,"NVIDIA GeForce RTX 2080 Ti",25.4956,17.1483,0.055134,17.0333,0.016192,0.034016,0.023744,0.005728,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,6,"NVIDIA GeForce RTX 2080 Ti",31.2985,19.291,0.04754,19.1754,0.016896,0.0328,0.024032,0.005984,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,7,"NVIDIA GeForce RTX 2080 Ti",30.6246,17.6645,0.061867,17.5465,0.017248,0.033344,0.024064,0.005792,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,8,"NVIDIA GeForce RTX 2080 Ti",28.1205,18.1701,0.067918,18.0516,0.018208,0.033216,0.024352,0.005984,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,9,"NVIDIA GeForce RTX 2080 Ti",27.3062,17.9326,0.045415,17.8162,0.0176,0.033216,0.023872,0.005024,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,10,"NVIDIA GeForce RTX 2080 Ti",32.6151,19.0294,0.055615,18.914,0.01712,0.033088,0.023904,0.005312,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,11,"NVIDIA GeForce RTX 2080 Ti",31.0474,17.7137,0.065063,17.5972,0.017216,0.033376,0.024192,0.005984,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,12,"NVIDIA GeForce RTX 2080 Ti",27.9083,17.0977,0.049053,16.9817,0.016448,0.034656,0.023744,0.005088,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,13,"NVIDIA GeForce RTX 2080 Ti",26.5257,17.5348,0.052709,17.4188,0.017376,0.033312,0.023808,0.005152,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,14,"NVIDIA GeForce RTX 2080 Ti",30.9145,17.2025,0.050766,17.0868,0.0176,0.033344,0.023776,0.0048,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,15,"NVIDIA GeForce RTX 2080 Ti",31.1376,17.9252,0.077677,17.8076,0.017824,0.033184,0.02432,0.006048,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,16,"NVIDIA GeForce RTX 2080 Ti",28.9649,18.1055,0.060294,17.9881,0.017824,0.033536,0.023968,0.005888,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,17,"NVIDIA GeForce RTX 2080 Ti",31.0883,18.5147,0.057368,18.3985,0.017152,0.03344,0.02384,0.005696,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,18,"NVIDIA GeForce RTX 2080 Ti",28.6956,17.7632,0.044995,17.6459,0.01744,0.033984,0.024064,0.006112,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,19,"NVIDIA GeForce RTX 2080 Ti",31.811,17.8688,0.046437,17.7501,0.018432,0.033152,0.023904,0.006496,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,20,"NVIDIA GeForce RTX 2080 Ti",29.399,18.8337,0.064522,18.7163,0.016768,0.034368,0.024192,0.004928,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,21,"NVIDIA GeForce RTX 2080 Ti",28.268,18.285,0.050094,18.169,0.016928,0.034112,0.023584,0.005696,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,22,"NVIDIA GeForce RTX 2080 Ti",29.3513,17.5258,0.044794,17.4092,0.017216,0.033536,0.023904,0.005632,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,23,"NVIDIA GeForce RTX 2080 Ti",32.4829,18.6526,0.067237,18.5358,0.017568,0.033216,0.024064,0.005824,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,24,"NVIDIA GeForce RTX 2080 Ti",28.8413,17.4774,0.045286,17.3376,0.017984,0.037472,0.040288,0.006208,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,25,"NVIDIA GeForce RTX 2080 Ti",24.1706,16.2484,0.045967,16.1326,0.01696,0.033312,0.023712,0.00544,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,26,"NVIDIA GeForce RTX 2080 Ti",31.6643,18.1406,0.052038,18.0234,0.017472,0.033312,0.023904,0.00592,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,27,"NVIDIA GeForce RTX 2080 Ti",30.7269,17.392,0.070453,17.276,0.017376,0.033216,0.023936,0.005632,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,28,"NVIDIA GeForce RTX 2080 Ti",28.1413,17.5251,0.049734,17.4092,0.017184,0.033152,0.023744,0.005792,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
occluded,gpu_occlusion,29,"NVIDIA GeForce RTX 2080 Ti",26.4721,17.5592,0.049724,17.4434,0.01728,0.032992,0.023616,0.00544,6819888,2,1,1,0,1025,0,1026,0,0,0,1,1,1,1,0
|
||||
|
@@ -0,0 +1,124 @@
|
||||
# P2 GPU Visibility and Mesh LOD Implementation Plan
|
||||
|
||||
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||||
|
||||
**Goal:** Deliver all of PLAN P2: stable GPU instance IDs, GPU frustum culling, fixed indirect bins, a visible HZB debug mode, conservative two-pass occlusion, prepared mesh LOD with hysteresis, and measured comparisons to the direct renderer.
|
||||
|
||||
**Architecture:** Keep the current direct path as a selectable reference. Add an opaque instanced path with local mesh geometry, instance/visible-ID storage buffers and compute-authored indirect instance counts. Split opaque rasterization around an ordinary-Z max-depth HZB; repair previous-frame occlusion guesses in a current-frame post pass. Keep shadows and ordered sprites/UI independent.
|
||||
|
||||
**Tech Stack:** C++20, Vulkan 1.3, Slang/SPIR-V, CMake/Ninja, SDL3, CPU contract tests and GPU validation/image tests.
|
||||
|
||||
**Spec:** `docs/superpowers/specs/2026-09-23-p2-gpu-visibility-design.md`
|
||||
|
||||
## Global Constraints
|
||||
|
||||
- Preserve the existing direct renderer and a runtime switch that selects it.
|
||||
- Player/export contain cooked SPIR-V and metadata; no Slang compiler is required at runtime.
|
||||
- MCP remains editor-only and never exposes the live Player world.
|
||||
- Forward Z uses max-depth HZB, depth clear 1, and `LESS_OR_EQUAL`.
|
||||
- No camera-frustum decision may remove a shadow caster; sprites and UI remain ordered.
|
||||
- No required ray tracing, mesh shader, multi-draw-indirect, `drawIndirectFirstInstance`, or synchronous GPU visibility readback.
|
||||
- Check actual Vulkan feature/format/limit support and retain a direct fallback if the P2 profile is unavailable.
|
||||
|
||||
## Review Focus
|
||||
|
||||
- Empty scene and exact bin capacity: indirect counts reset to zero and cannot address outside reserved ID ranges; Task 3 pins this.
|
||||
- Door opens or disappears: a previously hidden object appears in the same final frame through Post; Task 5 pins this.
|
||||
- Odd and resized viewports: HZB padding is far depth and stale history cannot be sampled; Tasks 4–5 pin this.
|
||||
- Offscreen shadow caster: camera visibility leaves shadow generation intact; Task 3 pins this.
|
||||
- Mesh/key reuse and LOD changes: previous transforms and occlusion are invalidated; Tasks 1 and 6 pin this.
|
||||
|
||||
---
|
||||
|
||||
**Implementation note, 23 September 2026:** this checklist records the proposed execution sequence. A checked item has direct code/test/commit evidence; an unchecked item may be an unrecorded test-first step or a narrower validation/documentation gap, even where the corresponding P2 feature works. The [acceptance protocol](../../studies/19-p2-gpu-visibility-acceptance.md), [initial benchmark](../../studies/20-p2-gpu-visibility-benchmark-2026-09-23.md) and [optimized repeat](../../studies/21-p2-gpu-visibility-optimization-2026-09-23.md) report the observed Linux scope. Other platforms and real-game performance require separate evidence.
|
||||
|
||||
### Task 1: Stable instances, conservative bounds, and LOD policy
|
||||
|
||||
**Files:** Modify `include/faset/render/renderer.hpp`, `src/player/SceneView.cpp`, `cmake/Renderer.cmake`; create `include/faset/render/visibility.hpp`, `src/render/visibility.cpp`, `tests/render_visibility_policy_tests.cpp`.
|
||||
|
||||
**Interfaces:** Produce `InstanceTracker::update(key, meshIdentity, model, bounds, viewId)` returning slot, generation, previous bounds and `previousValid`; `select_lod(projectedPixels, previousLevel, thresholds, hysteresis)`; `transformed_bounds(mesh, model)`. Add optional `DrawItem::instance_key`, `DrawItem::lod_meshes`, `Snapshot::view_id`, `Snapshot::camera_cut` without changing existing aggregate initialization order.
|
||||
|
||||
- [x] **Step 1: Write failing CPU tests.** Assert transformed bounds for rotated, negative/nonuniform scaled meshes; stable slot through reorder; generation change after removal/reuse or mesh replacement; no previous state on camera cut; LOD hysteresis on both sides of a threshold; fallback when a level is absent. Include this core assertion:
|
||||
```cpp
|
||||
auto first = tracker.update("object/primitive", meshA, identity, box, "game");
|
||||
auto second = tracker.update("object/primitive", meshA, moved, box, "game");
|
||||
require(first.slot == second.slot && second.previous_valid);
|
||||
tracker.finish_frame();
|
||||
require(!tracker.update("object/primitive", meshB, moved, box, "game").previous_valid);
|
||||
```
|
||||
- [ ] **Step 2: Run the focused test target and record the expected missing-interface failure.** `cmake --build --preset linux-debug --target faset_render_visibility_policy_tests -j 6` must fail before implementation because the new interfaces/target do not exist.
|
||||
- [x] **Step 3: Implement the policy and extraction keys.** Derive keys from persistent scene object and imported primitive identity; anonymous draws remain renderable without temporal state. Use all eight local AABB corners and finite-value checks. Define an explicit LOD threshold/hysteresis contract in the header.
|
||||
- [x] **Step 4: Rebuild/run the focused CPU test, then the existing scene-view tests.** `ctest --test-dir build/linux-debug --output-on-failure -R 'visibility_policy|player_scene_contracts'` must pass.
|
||||
- [x] **Step 5: Commit** `Introduce stable render instances and prepared LOD policy`.
|
||||
|
||||
### Task 2: P2 Slang bundle and checked shader metadata
|
||||
|
||||
**Files:** Create `shaders/gpu_scene.slang`; modify `tools/compile_shader.py`, `cmake/Renderer.cmake`, `src/render/shader_contract.cpp`, `src/render/shader_contract.hpp`, `src/editor/build_service.cpp`, relevant shader/build tests.
|
||||
|
||||
**Interfaces:** Compile and validate `gpuVertexMain`, `gpuShadowMain`, `gpuCullMain`, `gpuHzbMain`, `gpuPostCullMain` with documented set/binding layouts. Baseline `vertexMain`, `fragmentMain`, `shadowMain` and their hot-reload fingerprint contract remain valid. Export includes each new `.spv` and `.reflection.json` pair.
|
||||
|
||||
- [x] **Step 1: Write failing reflection/package tests.** A storage-buffer/storage-image Slang reflection fixture must normalize to a typed descriptor; missing or tampered P2 SPIR-V/metadata must fail validation; a packaged Player must contain all required P2 shaders.
|
||||
- [ ] **Step 2: Run focused tests and verify the expected rejection or missing-artifact failure.** `ctest --test-dir build/linux-debug --output-on-failure -R 'render_shader_reload|build_schema_publication'` plus the new reflection test target.
|
||||
- [x] **Step 3: Extend the compiler's descriptor normalization and add the P2 shader entries.** Vertex resolves `visibleIds[binBase + SV_InstanceID]`; compute writes bounded per-bin IDs/counts; HZB computes max of valid children and far depth for padding. Keep C++/Slang record strides explicit and checked.
|
||||
- [x] **Step 4: Validate generated reflection and package.** Rebuild `faset_shaders`, run the focused tests and inspect each generated metadata stage/binding/fingerprint.
|
||||
- [x] **Step 5: Commit** `Add checked Slang shaders for GPU visibility and HZB`.
|
||||
|
||||
### Task 3: GPU frustum culling and fixed indirect bins
|
||||
|
||||
**Files:** Modify `src/render/renderer.cpp`, `include/faset/render/renderer.hpp`, `tests/render_tests.cpp`; create `tests/render_gpu_visibility_tests.cpp`.
|
||||
|
||||
**Interfaces:** `RendererConfig::visibility_mode` selects direct/auto/GPU; `FrameStats` exposes submitted bin and frustum-visible counts. Renderer-owned buffers hold local vertices, instance records, candidate/bin tables, visible IDs and `VkDrawIndirectCommand` templates. One draw per bin uses `firstInstance=0`.
|
||||
|
||||
- [ ] **Step 1: Write GPU integration tests.** Direct/GPU images must agree on the same opaque cube/plane scene; empty and one-instance scenes have zero/one visible instances; over-capacity growth and all-six-plane rejects remain validation-clean; an offscreen caster continues to affect a visible receiver.
|
||||
- [ ] **Step 2: Run the new GPU test and verify that GPU mode is absent/fails for the intended reason.** Use `ctest --test-dir build/linux-debug --output-on-failure -R '^render_gpu_visibility$'`.
|
||||
- [x] **Step 3: Add checked device capability selection and distinct GPU scene resources.** Build mesh+texture bins, upload local vertices once per unique mesh each frame, reserve one ID range per bin, create/update descriptors, dispatch frustum cull, barrier compute writes to indirect and vertex-storage reads, and issue fixed indirect draws. Keep the direct path byte-for-byte selectable.
|
||||
- [x] **Step 4: Run the focused GPU test with Khronos validation and the existing offscreen renderer tests.** No Vulkan errors, no visible image holes, and no shadow regression.
|
||||
- [x] **Step 5: Commit** `Render opaque meshes through GPU culling and fixed indirect bins`.
|
||||
|
||||
### Task 4: Current HZB and diagnostic view
|
||||
|
||||
**Files:** Modify `src/render/renderer.cpp`, `include/faset/render/renderer.hpp`, `shaders/gpu_scene.slang`, `tests/render_gpu_visibility_tests.cpp`; add a focused HZB CPU oracle test if the reduction/projection contract needs isolation.
|
||||
|
||||
**Interfaces:** `RendererConfig` or `Snapshot` selects HZB visualization; `FrameStats` records HZB extent, levels and build time. The current depth attachment is stored and sampled; a per-mip `R32_SFLOAT` image stores max-depth reduction.
|
||||
|
||||
- [ ] **Step 1: Write failing tests.** Assert odd 319×241 extent, a far-depth hole, mip chain dimensions/padding, resized target recreation and an HZB debug image with non-uniform depth.
|
||||
- [ ] **Step 2: Run the tests and confirm the missing HZB/debug capability is the failure.** `ctest --test-dir build/linux-debug --output-on-failure -R '^render_gpu_visibility$'`.
|
||||
- [x] **Step 3: Split Main opaque raster from sprites/UI, store depth, allocate sampled/storage HZB mip views, dispatch each reduction with explicit depth→compute and mip→mip barriers, and draw a selectable debug visualization.** Preserve existing forward-Z convention.
|
||||
- [x] **Step 4: Run focused GPU tests and baseline image tests under validation; compare HZB-off output with direct mode.**
|
||||
- [x] **Step 5: Commit** `Build and visualize current-frame max-depth HZB`.
|
||||
|
||||
### Task 5: Previous-HZB main pass and same-frame post repair
|
||||
|
||||
**Files:** Modify `src/render/renderer.cpp`, `src/render/visibility.cpp`, `shaders/gpu_scene.slang`, `tests/render_gpu_visibility_tests.cpp`.
|
||||
|
||||
**Interfaces:** View history contains view identity, extent/viewport/projection, frame epoch, previous VP and HZB handle. MainCull may defer only a candidate with valid previous instance/view history; PostCull retests deferred candidates against current HZB and writes separate post args/IDs. PostRaster loads existing color and depth.
|
||||
|
||||
- [ ] **Step 1: Write failing frame-sequence tests.** A wall hides an object in frame N; opening/deleting/teleporting it in N+1 reveals that object in the final N+1 image. Camera cut, projection change, view ID change and resize force history invalid; near-plane crossing fails open. Compare every frame against HZB-disabled output.
|
||||
- [ ] **Step 2: Run the tests and observe the missing deferral/post behavior.** `ctest --test-dir build/linux-debug --output-on-failure -R '^render_gpu_visibility$'`.
|
||||
- [x] **Step 3: Implement previous/current projection tests, bounded deferred/post buffers, history ping-pong and invalidation, explicit compute→indirect/vertex barriers and Main/CurrentHZB/Post pass order.** Use ordinary-Z max-depth comparison with precision bias and full projected rectangle.
|
||||
- [x] **Step 4: Run the sequence and full GPU render suites with validation; confirm no same-frame holes.**
|
||||
- [x] **Step 5: Commit** `Repair temporal occlusion with current-frame post pass`.
|
||||
|
||||
### Task 6: Prepared mesh LOD, editor controls and profiling
|
||||
|
||||
**Files:** Modify `src/player/SceneView.cpp`, `src/editor/editor_ui.cpp`, `include/faset/render/renderer.hpp`, `src/render/renderer.cpp`, `tests/render_gpu_visibility_tests.cpp`; add a prepared-LOD example asset/scene and manual page under `docs/manual/editor/`.
|
||||
|
||||
**Interfaces:** Imported or C++-supplied prepared LOD meshes are selected by projected size and Task 1 hysteresis. Changing level changes the bin but keeps the logical instance key and invalidates previous occlusion. Editor can switch direct/GPU/HZB modes and inspect culling/LOD counters without adding MCP access to the Player.
|
||||
|
||||
- [x] **Step 1: Write failing tests.** Jitter around both thresholds must retain the previous LOD; moving well across a threshold selects a different mesh/bin; missing levels fall back; both modes keep a valid image through level changes.
|
||||
- [ ] **Step 2: Run focused tests and verify the missing selection/control behavior.**
|
||||
- [ ] **Step 3: Hook prepared LODs into extraction and GPU binning, expose compact editor controls/statistics and a documented C++/asset authoring path.** Keep source scene IDs unchanged.
|
||||
- [x] **Step 4: Run CPU/GPU/editor UI suites and capture a representative debug screenshot.**
|
||||
- [x] **Step 5: Commit** `Expose prepared mesh LOD and GPU visibility diagnostics`.
|
||||
|
||||
### Task 7: Adversarial validation, baselines and publication
|
||||
|
||||
**Files:** Add `docs/validation/p2-gpu-visibility/README.md` and capture artifacts; update `PLAN.md`, `docs/manual/editor/profiling.md`, `docs/ARCHITECTURE.md`, CI GPU test registration as appropriate.
|
||||
|
||||
**Interfaces:** Close P2 only with exact revision, compiler/driver/GPU/OS, scene/camera paths, commands, full-frame direct/GPU timings, pass counters, image comparison and stated coverage limits.
|
||||
|
||||
- [ ] **Step 1: Add adversarial fixtures for mass deletion/reuse, near-plane, camera inside bounds, odd/offset viewport, door/wall, open scene and offscreen shadow caster; confirm at least one fails before its corresponding fix.**
|
||||
- [ ] **Step 2: Run Debug and Release build/test suites, GPU validation, shader reload, two sample-game export/relaunch checks, and available Windows CI.** Record exact outputs; a platform without executed GPU coverage remains explicitly unverified.
|
||||
- [ ] **Step 3: Profile the same closed and open scenes in direct and GPU modes.** Record CPU extraction/upload/submission, GPU pass and full-frame time, readback conditions, memory and culling counters. Do not turn a scene-specific result into a universal performance claim.
|
||||
- [ ] **Step 4: Review all PLAN P2 criteria against evidence, update docs, run `graphify update .`, request independent code review and fix load-bearing findings.**
|
||||
- [ ] **Step 5: Commit** `Validate and document P2 GPU visibility milestone`; publish only after all checks are green.
|
||||
@@ -0,0 +1,29 @@
|
||||
# P2 GPU visibility and mesh LOD design
|
||||
|
||||
This design implements [PLAN P2](../../../PLAN.md#p2-gpu-driven-visibility-и-lod) for the desktop Vulkan 1.3 renderer. The direct renderer remains a selectable reference for image and full-frame performance comparisons. The feature is limited to opaque triangle meshes. Ordered sprites, UI, and shadow casters keep their independent paths; camera visibility must never remove an offscreen shadow caster.
|
||||
|
||||
## Data and ownership
|
||||
|
||||
`DrawItem` receives an optional stable instance key and an optional ordered list of prepared coarser meshes. Scene extraction derives a key from persistent object/asset-primitive identity; ad-hoc draws without a key render correctly but do not use previous-frame occlusion or LOD history. The renderer assigns a slot and generation to each live key, invalidating previous transforms when the mesh identity changes or a slot is reused. An immutable frame snapshot contains current and previous world bounds, transforms, material values, selected mesh LOD, and a bin ID. A conservative world AABB is formed from all eight transformed corners of each mesh's local bounds. The bound used for culling covers the selected geometry; source content must not claim a narrower bound than its vertices.
|
||||
|
||||
Prepared LODs are optional. The renderer chooses one by projected size, applies hysteresis around every threshold, and falls back to the nearest available level. A level switch retains the stable instance key but invalidates occlusion history for that instance. LOD selection never changes source asset IDs or authoring scene data.
|
||||
|
||||
## GPU path
|
||||
|
||||
The renderer groups opaque candidates by compatible mesh and texture into fixed bins. It uploads local mesh vertices once per unique mesh in the frame and uploads one transform/material/bounds record per instance. A compute pass tests current frustum and writes visible instance IDs into a pre-reserved range per bin, atomically updating the bin's indirect `instanceCount`. Each bin has a CPU-authored fixed draw template and one `vkCmdDrawIndirect` call; zero instances submit no geometry. The vertex shader resolves `SV_InstanceID` through the visible-ID buffer and transforms the local vertex on the GPU. The command uses `firstInstance = 0` and a pushed bin base, so it does not require optional `drawIndirectFirstInstance` or `multiDrawIndirect` features. Overflow is prevented by reserving exactly the number of bin candidates; buffer growth is checked before recording commands.
|
||||
|
||||
The direct path continues to use existing CPU-transformed vertices, CPU frustum culling, and direct draws. Scene shading and texture descriptors are shared where possible. GPU and direct modes must produce equivalent final opaque images within stated raster tolerance. Scene culling does not affect the shadow pass.
|
||||
|
||||
## HZB and two-pass occlusion
|
||||
|
||||
Faset uses normal forward Z: depth clear is 1 and the comparison is `LESS_OR_EQUAL`. Its furthest-depth HZB therefore stores the **maximum** child depth, padding odd dimensions with 1. A candidate is marked occluded only when its conservative nearest depth is strictly beyond the maximum over its complete screen rectangle plus precision bias. Near-plane intersections, nonfinite projections, unknown previous transforms, a camera cut, a resized view, a different view identity, and an invalid history all fail open as visible.
|
||||
|
||||
The pass order is: initialize fixed arguments/counters; MainCull against the current frustum and previous HZB; MainRaster into cleared color/depth; build current HZB from stored depth with per-mip barriers; PostCull deferred candidates against current HZB; PostRaster loading Main color/depth; then ordered sprites/UI and capture/presentation. Current HZB after Main is intentionally incomplete: a false previous occlusion is repaired by Post in the same frame, while absent occluders only reduce culling efficiency. Current HZB and its view metadata survive to the next rendered frame. History is per renderer/view and is invalidated by explicit cut, view/extent/projection changes, or incompatible instance generation. No GPU visibility decision requires synchronous CPU readback.
|
||||
|
||||
RenderGraph names and validates pass order; Vulkan image and buffer barriers remain explicit in the backend. Compute writes become visible separately to indirect-command reads and vertex shader storage reads. Depth attachment writes become visible to HZB compute sampling only after ending the Main rendering instance. HZB mip writes become visible to the next mip's reads. The single-queue, one-frame-in-flight lifetime model is retained until measured work warrants a wider pipeline.
|
||||
|
||||
## Diagnostics and acceptance
|
||||
|
||||
The editor exposes GPU/direct and HZB-enabled modes and a current-HZB/debug visualization. Frame statistics distinguish submitted bins, main/deferred/post counts, frustum rejects, selected LODs, pass timings, and GPU allocation sizes. Debug counters may be read after the existing frame fence; normal culling decisions never use them. Full-frame profiles record both closed and open scenes with the same snapshot, camera path, resolution, driver, and build. Existing synchronous frame capture is accounted for or disabled in the comparison profile; no blanket speedup claim is made.
|
||||
|
||||
Acceptance includes shader/reflection validation and package/export contents; CPU policy tests; GPU image comparison to direct mode; empty and capacity-boundary cases; wall/door reveal in the same final frame; camera cut/teleport, near-plane and camera-inside cases; odd viewport dimensions and resize; repeated spawn/despawn/mesh replacement; LOD threshold jitter; offscreen shadow caster; and zero Vulkan validation errors on the Linux reference GPU. Windows compile and available native GPU checks are reported separately without claiming hardware coverage that was not run.
|
||||
@@ -3,6 +3,7 @@
|
||||
These files preserve bounded checks and their inputs. Each record states its source revision or working-tree limitation; a passing record does not certify later commits or every supported platform.
|
||||
|
||||
- [MVP acceptance dossier](mvp-acceptance.md): criterion-by-criterion closure, tested revisions and remaining compatibility coverage.
|
||||
- [P2 GPU visibility Linux evidence](p2-gpu-visibility-2026-09-23/README.md): Debug/Release GPU acceptance, lavapipe functional checks, relocated Player exports, and explicit platform/performance limits.
|
||||
- [Windows software Vulkan](windows-software-vulkan-2026-09-18/README.md): fresh native build, 35 tests, launcher/window/MCP workflows and both relocated Release games on SwiftShader.
|
||||
- [Checkpoint 5 Linux acceptance](checkpoint5-linux-2026-09-18/README.md): clean offline source build, first Editor launch, exact-candidate standalone games and live Blender checks.
|
||||
- [Final Linux source checks](final-linux-2026-09-18/README.md): `4cb8255` integrated test results and both Release games after the asset-relocation correction, including package manifests and standalone captures.
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
# P2 GPU visibility: Linux validation, 2026-09-23
|
||||
|
||||
The P2 implementation adds selectable GPU frustum and two-pass HZB occlusion for opaque static meshes, prepared mesh LODs, renderer and Editor diagnostics, and a standalone Player option. Direct rendering remains the default and comparison path. The code built and tested here is at `9990234` (following `3be3d0d` for device-local GPU outputs); the later working-tree changes while gathering this record were documentation only.
|
||||
|
||||
## Builds and functional tests
|
||||
|
||||
| Environment | Check | Result |
|
||||
| --- | --- | --- |
|
||||
| Ubuntu Linux, Clang 21, Debug, RTX 2080 Ti | `cmake --build --preset linux-debug -j6`; `ctest --test-dir build/linux-debug --output-on-failure -j6` | Build passed; 57/57 tests passed, including 15 P2 cases. `render_window_lifecycle` reported its pre-existing compositor skip. |
|
||||
| Ubuntu Linux, Clang 21, Release, RTX 2080 Ti | `cmake --build build/p2-release -j6`; `ctest --test-dir build/p2-release --output-on-failure -j6` | Build passed; 57/57 tests passed, with the same window skip. |
|
||||
| Linux lavapipe software Vulkan | `VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/lvp_icd.json ctest --test-dir build/p2-release -L p2 --output-on-failure -j2` | 15/15 P2 cases passed; the frustum and occlusion examples each reported an active GPU path, both prepared LOD levels, and zero Vulkan validation errors. |
|
||||
| Release shader bundle | `spirv-val --target-env vulkan1.3` on all nine generated `.spv` files | All passed. |
|
||||
|
||||
The 15 P2 cases include empty and dense scenes, fixed-bin capacity, camera cut, resize, near-plane handling, multiple views, projection change, teleports, shadow and transparent passes, LOD selection and an open sequence. This is functional coverage, not a performance claim.
|
||||
|
||||
The complete [Debug CTest log](ctest-linux-debug.txt), [Release CTest log](ctest-linux-release.txt) and [lavapipe P2 log](ctest-lavapipe-p2.txt) retain every test name and the explicit window skip. The [shader validation record](shader-validation.txt) lists hashes and `spirv-val` results for the Release bundle.
|
||||
|
||||
## Independent exported Player checks
|
||||
|
||||
The [export report](report.json) records a Release export through the real Editor for both checked-in playable projects. Their packages were copied outside the SDK into a Unicode path, source project directories were hidden, and each package passed CPU validation plus 120 headless frames on the RTX 2080 Ti with Khronos validation active and zero errors. The 3D export includes the imported Blender asset. Package file hashes are retained in the [2D manifest](collect-2d-manifest.json) and [3D manifest](collect-3d-manifest.json). The [2D](collect-2d-profile.json) and [3D](collect-3d-profile.json) 120-frame profiles preserve device and frame counters.
|
||||
|
||||
Each relocated Player was then launched for six frames in **both** `--visibility gpu-frustum` and `--visibility gpu-occlusion`. All four [GPU-mode runs](p2-exported-gpu-visibility.json) completed with `gpu_visibility_active=true` in every profile sample and zero Vulkan validation errors. The raw profiles are [2D frustum](collect-2d-gpu-frustum-profile.json), [2D occlusion](collect-2d-gpu-occlusion-profile.json), [3D frustum](collect-3d-gpu-frustum-profile.json) and [3D occlusion](collect-3d-gpu-occlusion-profile.json). The Player also validated both shader bundles with `--validate --visibility MODE` before rendering.
|
||||
|
||||
The [capture comparison](capture-comparison.json) uses the same six-frame static camera for Direct and GPU modes. The 2D captures match pixel-for-pixel. In 3D, GPU frustum and GPU occlusion match pixel-for-pixel; each differs from Direct at only 7 of 921,600 pixels (maximum RGB channel delta 41), all at rasterized geometry edges. The result is deterministic across repeated runs and frame counts. A diagnostic with just the floor mesh and camera retains three edge pixels, isolating the difference from gameplay timing, occlusion decisions and draw ordering. Direct pretransforms vertices on the CPU in `renderer.cpp`; GPU modes transform them in `gpu_scene.slang`. Their floating-point rounding can change triangle coverage at subpixel boundaries. This is a bounded visual difference on this device, not evidence of lost geometry, and exact pixel counts should not be expected across GPU drivers.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## Performance evidence and limits
|
||||
|
||||
The [first benchmark](../../studies/20-p2-gpu-visibility-benchmark-2026-09-23.md) exposed a slow GPU `MainCull` pass. The [optimization study](../../studies/21-p2-gpu-visibility-optimization-2026-09-23.md) keeps raw samples from baseline, device-local-only and device-local-plus-atomic variants and explains the measured improvement. Those are synthetic Debug/validation workloads on one RTX 2080 Ti, not Player frame rates or a promise that GPU culling wins in every scene. Open scenes pay extra HZB work. Direct remains the default until broader Release/game-content profiling supports another choice.
|
||||
|
||||
This record does not establish physical Windows GPU performance, other hardware/driver combinations, native Wayland restore, or automatic LOD mesh generation. The lavapipe run broadens functional driver coverage but is not a hardware speed measurement. Native Windows CI and later GPU families require their own evidence.
|
||||
@@ -0,0 +1,138 @@
|
||||
{
|
||||
"collect-2d": {
|
||||
"direct_vs_gpu_frustum": {
|
||||
"size": [
|
||||
1280,
|
||||
720
|
||||
],
|
||||
"changed_pixels": 0,
|
||||
"total_pixels": 921600,
|
||||
"max_channel_delta": 0,
|
||||
"coordinates_and_max_channel_delta": []
|
||||
},
|
||||
"direct_vs_gpu_occlusion": {
|
||||
"size": [
|
||||
1280,
|
||||
720
|
||||
],
|
||||
"changed_pixels": 0,
|
||||
"total_pixels": 921600,
|
||||
"max_channel_delta": 0,
|
||||
"coordinates_and_max_channel_delta": []
|
||||
},
|
||||
"gpu_frustum_vs_gpu_occlusion": {
|
||||
"size": [
|
||||
1280,
|
||||
720
|
||||
],
|
||||
"changed_pixels": 0,
|
||||
"total_pixels": 921600,
|
||||
"max_channel_delta": 0,
|
||||
"coordinates_and_max_channel_delta": []
|
||||
}
|
||||
},
|
||||
"collect-3d": {
|
||||
"direct_vs_gpu_frustum": {
|
||||
"size": [
|
||||
1280,
|
||||
720
|
||||
],
|
||||
"changed_pixels": 7,
|
||||
"total_pixels": 921600,
|
||||
"max_channel_delta": 41,
|
||||
"coordinates_and_max_channel_delta": [
|
||||
[
|
||||
939,
|
||||
361,
|
||||
41
|
||||
],
|
||||
[
|
||||
647,
|
||||
366,
|
||||
11
|
||||
],
|
||||
[
|
||||
468,
|
||||
465,
|
||||
6
|
||||
],
|
||||
[
|
||||
588,
|
||||
517,
|
||||
6
|
||||
],
|
||||
[
|
||||
700,
|
||||
566,
|
||||
6
|
||||
],
|
||||
[
|
||||
827,
|
||||
624,
|
||||
11
|
||||
],
|
||||
[
|
||||
848,
|
||||
627,
|
||||
15
|
||||
]
|
||||
]
|
||||
},
|
||||
"direct_vs_gpu_occlusion": {
|
||||
"size": [
|
||||
1280,
|
||||
720
|
||||
],
|
||||
"changed_pixels": 7,
|
||||
"total_pixels": 921600,
|
||||
"max_channel_delta": 41,
|
||||
"coordinates_and_max_channel_delta": [
|
||||
[
|
||||
939,
|
||||
361,
|
||||
41
|
||||
],
|
||||
[
|
||||
647,
|
||||
366,
|
||||
11
|
||||
],
|
||||
[
|
||||
468,
|
||||
465,
|
||||
6
|
||||
],
|
||||
[
|
||||
588,
|
||||
517,
|
||||
6
|
||||
],
|
||||
[
|
||||
700,
|
||||
566,
|
||||
6
|
||||
],
|
||||
[
|
||||
827,
|
||||
624,
|
||||
11
|
||||
],
|
||||
[
|
||||
848,
|
||||
627,
|
||||
15
|
||||
]
|
||||
]
|
||||
},
|
||||
"gpu_frustum_vs_gpu_occlusion": {
|
||||
"size": [
|
||||
1280,
|
||||
720
|
||||
],
|
||||
"changed_pixels": 0,
|
||||
"total_pixels": 921600,
|
||||
"max_channel_delta": 0,
|
||||
"coordinates_and_max_channel_delta": []
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 3.9 KiB |
@@ -0,0 +1,198 @@
|
||||
{
|
||||
"completed_frames": 6,
|
||||
"device": "NVIDIA GeForce RTX 2080 Ti",
|
||||
"dimension": 2,
|
||||
"fixed_delta_seconds": 0.016666666666666666,
|
||||
"format": "faset.player-profile",
|
||||
"height": 720,
|
||||
"percentile_method": "nearest_rank_all_completed_frames_no_warmup_exclusion",
|
||||
"presentation_mode": "offscreen",
|
||||
"requested_frames": 6,
|
||||
"resource_notes": "gpu_allocated_bytes sums live Vulkan memory allocations, including alignment, excluding driver internals. texture_count includes the white fallback texture.",
|
||||
"samples": [
|
||||
{
|
||||
"draw_calls": 11,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 1,
|
||||
"gpu_allocated_bytes": 15750704,
|
||||
"gpu_ms": 0.583936,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 10.370041,
|
||||
"renderer_cpu_ms": 10.363859,
|
||||
"renderer_readback_cpu_ms": 3.834413,
|
||||
"simulation_ms": 0.262835,
|
||||
"snapshot_ms": 0.214305,
|
||||
"texture_count": 1,
|
||||
"tick": 1,
|
||||
"vertices": 66,
|
||||
"wall_ms": 10.973259
|
||||
},
|
||||
{
|
||||
"draw_calls": 11,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 2,
|
||||
"gpu_allocated_bytes": 15750704,
|
||||
"gpu_ms": 0.571552,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 3.686664,
|
||||
"renderer_cpu_ms": 3.678208,
|
||||
"renderer_readback_cpu_ms": 0.613398,
|
||||
"simulation_ms": 0.23866,
|
||||
"snapshot_ms": 0.193525,
|
||||
"texture_count": 1,
|
||||
"tick": 2,
|
||||
"vertices": 66,
|
||||
"wall_ms": 4.128828
|
||||
},
|
||||
{
|
||||
"draw_calls": 11,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 3,
|
||||
"gpu_allocated_bytes": 15750704,
|
||||
"gpu_ms": 0.5704,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 3.985278,
|
||||
"renderer_cpu_ms": 3.978084,
|
||||
"renderer_readback_cpu_ms": 0.584382,
|
||||
"simulation_ms": 0.4082,
|
||||
"snapshot_ms": 0.21229,
|
||||
"texture_count": 1,
|
||||
"tick": 3,
|
||||
"vertices": 66,
|
||||
"wall_ms": 4.63867
|
||||
},
|
||||
{
|
||||
"draw_calls": 11,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 4,
|
||||
"gpu_allocated_bytes": 15750704,
|
||||
"gpu_ms": 0.570496,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 3.324371,
|
||||
"renderer_cpu_ms": 3.316877,
|
||||
"renderer_readback_cpu_ms": 1.097139,
|
||||
"simulation_ms": 0.404904,
|
||||
"snapshot_ms": 0.192392,
|
||||
"texture_count": 1,
|
||||
"tick": 4,
|
||||
"vertices": 66,
|
||||
"wall_ms": 3.933279
|
||||
},
|
||||
{
|
||||
"draw_calls": 11,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 5,
|
||||
"gpu_allocated_bytes": 15750704,
|
||||
"gpu_ms": 0.57696,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 5.0101,
|
||||
"renderer_cpu_ms": 5.000393,
|
||||
"renderer_readback_cpu_ms": 0.68915,
|
||||
"simulation_ms": 0.191871,
|
||||
"snapshot_ms": 0.222941,
|
||||
"texture_count": 1,
|
||||
"tick": 5,
|
||||
"vertices": 66,
|
||||
"wall_ms": 5.437566
|
||||
},
|
||||
{
|
||||
"draw_calls": 11,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 6,
|
||||
"gpu_allocated_bytes": 15750704,
|
||||
"gpu_ms": 0.616,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 2.787518,
|
||||
"renderer_cpu_ms": 2.780405,
|
||||
"renderer_readback_cpu_ms": 0.68932,
|
||||
"simulation_ms": 0.254069,
|
||||
"snapshot_ms": 0.198174,
|
||||
"texture_count": 1,
|
||||
"tick": 6,
|
||||
"vertices": 66,
|
||||
"wall_ms": 3.251403
|
||||
}
|
||||
],
|
||||
"simulation_mode": "synthetic_fixed_timestep",
|
||||
"startup_ms": {
|
||||
"main_to_first_frame": 659.174505,
|
||||
"renderer_initialization": 644.33295,
|
||||
"scene_read": 0.541101,
|
||||
"world_initialization": 0.882825
|
||||
},
|
||||
"summary_ms": {
|
||||
"gpu": {
|
||||
"max": 0.616,
|
||||
"min": 0.5704,
|
||||
"p50": 0.571552,
|
||||
"p95": 0.616,
|
||||
"samples": 6
|
||||
},
|
||||
"render_call": {
|
||||
"max": 10.370041,
|
||||
"min": 2.787518,
|
||||
"p50": 3.686664,
|
||||
"p95": 10.370041,
|
||||
"samples": 6
|
||||
},
|
||||
"renderer_cpu": {
|
||||
"max": 10.363859,
|
||||
"min": 2.780405,
|
||||
"p50": 3.678208,
|
||||
"p95": 10.363859,
|
||||
"samples": 6
|
||||
},
|
||||
"renderer_readback_cpu": {
|
||||
"max": 3.834413,
|
||||
"min": 0.584382,
|
||||
"p50": 0.68915,
|
||||
"p95": 3.834413,
|
||||
"samples": 6
|
||||
},
|
||||
"simulation": {
|
||||
"max": 0.4082,
|
||||
"min": 0.191871,
|
||||
"p50": 0.254069,
|
||||
"p95": 0.4082,
|
||||
"samples": 6
|
||||
},
|
||||
"snapshot": {
|
||||
"max": 0.222941,
|
||||
"min": 0.192392,
|
||||
"p50": 0.198174,
|
||||
"p95": 0.222941,
|
||||
"samples": 6
|
||||
},
|
||||
"wall": {
|
||||
"max": 10.973259,
|
||||
"min": 3.251403,
|
||||
"p50": 4.128828,
|
||||
"p95": 10.973259,
|
||||
"samples": 6
|
||||
}
|
||||
},
|
||||
"timing_notes": "Durations use steady_clock wall time, not thread CPU usage. render_call/renderer_cpu include GPU waits, readback and window presentation. renderer_readback_cpu measures map/copy/unmap wall time within that call. GPU timestamps cover submitted rendering, not CPU work. A missing/zero GPU timestamp is null. Frame durations exclude profile bookkeeping and final capture/profile file writes. Startup begins at Player application entry after platform argument normalization, excluding OS loader/launcher.",
|
||||
"validation_enabled": true,
|
||||
"validation_errors": 0,
|
||||
"version": 1,
|
||||
"visibility_mode": "gpu-frustum",
|
||||
"width": 1280
|
||||
}
|
||||
|
After Width: | Height: | Size: 3.9 KiB |
@@ -0,0 +1,198 @@
|
||||
{
|
||||
"completed_frames": 6,
|
||||
"device": "NVIDIA GeForce RTX 2080 Ti",
|
||||
"dimension": 2,
|
||||
"fixed_delta_seconds": 0.016666666666666666,
|
||||
"format": "faset.player-profile",
|
||||
"height": 720,
|
||||
"percentile_method": "nearest_rank_all_completed_frames_no_warmup_exclusion",
|
||||
"presentation_mode": "offscreen",
|
||||
"requested_frames": 6,
|
||||
"resource_notes": "gpu_allocated_bytes sums live Vulkan memory allocations, including alignment, excluding driver internals. texture_count includes the white fallback texture.",
|
||||
"samples": [
|
||||
{
|
||||
"draw_calls": 11,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 1,
|
||||
"gpu_allocated_bytes": 38124080,
|
||||
"gpu_ms": 0.757824,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 16.535401,
|
||||
"renderer_cpu_ms": 16.528628,
|
||||
"renderer_readback_cpu_ms": 3.846085,
|
||||
"simulation_ms": 0.27565,
|
||||
"snapshot_ms": 0.228551,
|
||||
"texture_count": 1,
|
||||
"tick": 1,
|
||||
"vertices": 66,
|
||||
"wall_ms": 17.199143
|
||||
},
|
||||
{
|
||||
"draw_calls": 11,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 2,
|
||||
"gpu_allocated_bytes": 38124080,
|
||||
"gpu_ms": 0.676832,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 3.418728,
|
||||
"renderer_cpu_ms": 3.406727,
|
||||
"renderer_readback_cpu_ms": 0.717063,
|
||||
"simulation_ms": 0.239893,
|
||||
"snapshot_ms": 0.26525,
|
||||
"texture_count": 1,
|
||||
"tick": 2,
|
||||
"vertices": 66,
|
||||
"wall_ms": 3.936004
|
||||
},
|
||||
{
|
||||
"draw_calls": 11,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 3,
|
||||
"gpu_allocated_bytes": 38124080,
|
||||
"gpu_ms": 0.715808,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 3.096992,
|
||||
"renderer_cpu_ms": 3.087514,
|
||||
"renderer_readback_cpu_ms": 0.62547,
|
||||
"simulation_ms": 0.245012,
|
||||
"snapshot_ms": 0.21197,
|
||||
"texture_count": 1,
|
||||
"tick": 3,
|
||||
"vertices": 66,
|
||||
"wall_ms": 3.565927
|
||||
},
|
||||
{
|
||||
"draw_calls": 11,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 4,
|
||||
"gpu_allocated_bytes": 38124080,
|
||||
"gpu_ms": 0.687936,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 2.784262,
|
||||
"renderer_cpu_ms": 2.775977,
|
||||
"renderer_readback_cpu_ms": 0.665536,
|
||||
"simulation_ms": 0.21729,
|
||||
"snapshot_ms": 0.19633,
|
||||
"texture_count": 1,
|
||||
"tick": 4,
|
||||
"vertices": 66,
|
||||
"wall_ms": 3.208973
|
||||
},
|
||||
{
|
||||
"draw_calls": 11,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 5,
|
||||
"gpu_allocated_bytes": 38124080,
|
||||
"gpu_ms": 0.675488,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 2.720792,
|
||||
"renderer_cpu_ms": 2.709341,
|
||||
"renderer_readback_cpu_ms": 0.654685,
|
||||
"simulation_ms": 0.170141,
|
||||
"snapshot_ms": 0.137158,
|
||||
"texture_count": 1,
|
||||
"tick": 5,
|
||||
"vertices": 66,
|
||||
"wall_ms": 3.040926
|
||||
},
|
||||
{
|
||||
"draw_calls": 11,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 6,
|
||||
"gpu_allocated_bytes": 38124080,
|
||||
"gpu_ms": 0.67584,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 2.505646,
|
||||
"renderer_cpu_ms": 2.498283,
|
||||
"renderer_readback_cpu_ms": 0.559014,
|
||||
"simulation_ms": 0.229363,
|
||||
"snapshot_ms": 0.224584,
|
||||
"texture_count": 1,
|
||||
"tick": 6,
|
||||
"vertices": 66,
|
||||
"wall_ms": 2.971696
|
||||
}
|
||||
],
|
||||
"simulation_mode": "synthetic_fixed_timestep",
|
||||
"startup_ms": {
|
||||
"main_to_first_frame": 352.01617,
|
||||
"renderer_initialization": 331.461939,
|
||||
"scene_read": 0.514401,
|
||||
"world_initialization": 0.607015
|
||||
},
|
||||
"summary_ms": {
|
||||
"gpu": {
|
||||
"max": 0.757824,
|
||||
"min": 0.675488,
|
||||
"p50": 0.676832,
|
||||
"p95": 0.757824,
|
||||
"samples": 6
|
||||
},
|
||||
"render_call": {
|
||||
"max": 16.535401,
|
||||
"min": 2.505646,
|
||||
"p50": 2.784262,
|
||||
"p95": 16.535401,
|
||||
"samples": 6
|
||||
},
|
||||
"renderer_cpu": {
|
||||
"max": 16.528628,
|
||||
"min": 2.498283,
|
||||
"p50": 2.775977,
|
||||
"p95": 16.528628,
|
||||
"samples": 6
|
||||
},
|
||||
"renderer_readback_cpu": {
|
||||
"max": 3.846085,
|
||||
"min": 0.559014,
|
||||
"p50": 0.654685,
|
||||
"p95": 3.846085,
|
||||
"samples": 6
|
||||
},
|
||||
"simulation": {
|
||||
"max": 0.27565,
|
||||
"min": 0.170141,
|
||||
"p50": 0.229363,
|
||||
"p95": 0.27565,
|
||||
"samples": 6
|
||||
},
|
||||
"snapshot": {
|
||||
"max": 0.26525,
|
||||
"min": 0.137158,
|
||||
"p50": 0.21197,
|
||||
"p95": 0.26525,
|
||||
"samples": 6
|
||||
},
|
||||
"wall": {
|
||||
"max": 17.199143,
|
||||
"min": 2.971696,
|
||||
"p50": 3.208973,
|
||||
"p95": 17.199143,
|
||||
"samples": 6
|
||||
}
|
||||
},
|
||||
"timing_notes": "Durations use steady_clock wall time, not thread CPU usage. render_call/renderer_cpu include GPU waits, readback and window presentation. renderer_readback_cpu measures map/copy/unmap wall time within that call. GPU timestamps cover submitted rendering, not CPU work. A missing/zero GPU timestamp is null. Frame durations exclude profile bookkeeping and final capture/profile file writes. Startup begins at Player application entry after platform argument normalization, excluding OS loader/launcher.",
|
||||
"validation_enabled": true,
|
||||
"validation_errors": 0,
|
||||
"version": 1,
|
||||
"visibility_mode": "gpu-occlusion",
|
||||
"width": 1280
|
||||
}
|
||||
|
After Width: | Height: | Size: 3.9 KiB |
@@ -0,0 +1,195 @@
|
||||
{
|
||||
"asset_generations": {},
|
||||
"build_fingerprint": "5c54fc6e20ba827fe1befee8b6194b5df360f053927cbdc83bcf32a654f32899",
|
||||
"configuration": "Release",
|
||||
"executable": "faset_player",
|
||||
"files": [
|
||||
{
|
||||
"path": "scene.fscene",
|
||||
"sha256": "0d7b221abc1cae5e9f1d04357c684ac6993f5878d634b4b950eec66dd8e55b2a",
|
||||
"size": 6214
|
||||
},
|
||||
{
|
||||
"path": "faset_player",
|
||||
"sha256": "cfd9e4edf524cd8963329aad68f8a97c67413c0ab6c5616e2377a199ca28e419",
|
||||
"size": 5972792
|
||||
},
|
||||
{
|
||||
"path": "shaders/vertexMain.spv",
|
||||
"sha256": "1ad2631c35d654f48166321ae43d4165043e1b919b14f1dc61caf97b1ada0898",
|
||||
"size": 1224
|
||||
},
|
||||
{
|
||||
"path": "shaders/fragmentMain.spv",
|
||||
"sha256": "f5c4f289917ecab5d00d543c053aac1d10e6cca311fd172daf06d315160a3505",
|
||||
"size": 7436
|
||||
},
|
||||
{
|
||||
"path": "shaders/shadowMain.spv",
|
||||
"sha256": "7643b4d688492b5ee923b9606f0b0e70343ca05fa67673838206119a6f86d8d8",
|
||||
"size": 784
|
||||
},
|
||||
{
|
||||
"path": "shaders/vertexMain.reflection.json",
|
||||
"sha256": "c584f3b957ebf194a292451362a98590f85ff3cfbfd8f917b1c1265039381777",
|
||||
"size": 2639
|
||||
},
|
||||
{
|
||||
"path": "shaders/fragmentMain.reflection.json",
|
||||
"sha256": "72ebf8d32452830650416dc4717d89a4324e97ece7028dfb97c66803c8dce71f",
|
||||
"size": 2649
|
||||
},
|
||||
{
|
||||
"path": "shaders/shadowMain.reflection.json",
|
||||
"sha256": "e3fd0889cd2f569d410f5d7558a4091d9f57f247a1dcf1788462f67525340819",
|
||||
"size": 2645
|
||||
},
|
||||
{
|
||||
"path": "shaders/gpuVertexMain.spv",
|
||||
"sha256": "041c1e5f0db4007c51e01ed5db6e0fbf4db09b8dcbcb085c0c73612cdc682fe3",
|
||||
"size": 5008
|
||||
},
|
||||
{
|
||||
"path": "shaders/gpuShadowMain.spv",
|
||||
"sha256": "9078577943bf9c51220d5341434834eb4a28cf0f0f6203bad2b96e1b0e11b360",
|
||||
"size": 2484
|
||||
},
|
||||
{
|
||||
"path": "shaders/gpuCullMain.spv",
|
||||
"sha256": "7691360ec55f41d40d43652f506b051cef8b3a3ddcdcc7db61a7d4d97f9e87d8",
|
||||
"size": 16180
|
||||
},
|
||||
{
|
||||
"path": "shaders/gpuHzbMain.spv",
|
||||
"sha256": "08682362ee2120ed19d260e613285071747c3e436bb09bb6238e46f9cedc2308",
|
||||
"size": 4140
|
||||
},
|
||||
{
|
||||
"path": "shaders/gpuPostCullMain.spv",
|
||||
"sha256": "62cb72e356346e1511c6d640a3cecb4a6e5283795338299b357edae5f7f52be4",
|
||||
"size": 12460
|
||||
},
|
||||
{
|
||||
"path": "shaders/gpuVertexMain.reflection.json",
|
||||
"sha256": "3726c09d38e68cf0b6e317daaddb7b5b3e1bb0b073afd0eff43b8f1125378cd9",
|
||||
"size": 3092
|
||||
},
|
||||
{
|
||||
"path": "shaders/gpuShadowMain.reflection.json",
|
||||
"sha256": "7fbe869421b61f0261729eac26ebda2a484d423583d3a5b739ba59bbf3afbe12",
|
||||
"size": 2749
|
||||
},
|
||||
{
|
||||
"path": "shaders/gpuCullMain.reflection.json",
|
||||
"sha256": "996fe5c7e31c6b8f316d8f290b3be0ae7063eb46c500a661e8715e9b822a2598",
|
||||
"size": 3587
|
||||
},
|
||||
{
|
||||
"path": "shaders/gpuHzbMain.reflection.json",
|
||||
"sha256": "589818f670881c64f3aba726ee3bc82fe4b9d835a347f99134e0e157dc4a112e",
|
||||
"size": 2050
|
||||
},
|
||||
{
|
||||
"path": "shaders/gpuPostCullMain.reflection.json",
|
||||
"sha256": "eed140bbe09c7d14935b688c770261ac0e81677c0974aa811c88ed67ea779b95",
|
||||
"size": 3591
|
||||
},
|
||||
{
|
||||
"path": "Notices/sdl3/LICENSE.txt",
|
||||
"sha256": "97f35b302b361680ec1e891e95d2d52097bb95abff361434916d99dc1305f127",
|
||||
"size": 884
|
||||
},
|
||||
{
|
||||
"path": "Notices/entt/LICENSE",
|
||||
"sha256": "0785027ce472d7c61f05fba664a1d3ba6639c1593ced351ad9e4bed868765d99",
|
||||
"size": 1097
|
||||
},
|
||||
{
|
||||
"path": "Notices/box2d/LICENSE",
|
||||
"sha256": "68a3e676d7e94093b102d5cba0d4e04af812040d6f230c3db67a6664574e43d2",
|
||||
"size": 1067
|
||||
},
|
||||
{
|
||||
"path": "Notices/box3d/LICENSE",
|
||||
"sha256": "da5e31a26bf3cfd5ba5c96d6823e480128c81e76c107ef9d3ee5d94789184b90",
|
||||
"size": 1067
|
||||
},
|
||||
{
|
||||
"path": "Notices/json/LICENSE.MIT",
|
||||
"sha256": "46a65cffd1ea955132d95a8dd921640714a8d6b537d2e4e482d31145ae95b603",
|
||||
"size": 1076
|
||||
},
|
||||
{
|
||||
"path": "Notices/stb/LICENSE",
|
||||
"sha256": "bebfe904b14301657e4e5d655c811d51fd31b97c455b9cc2d8600d6bac6cff63",
|
||||
"size": 2510
|
||||
},
|
||||
{
|
||||
"path": "Notices/dependencies.json",
|
||||
"sha256": "a54639ad2d9ad13c2e5f1ec90d6775f5dfc493656789b78c7e44debe2a378fdc",
|
||||
"size": 2206
|
||||
},
|
||||
{
|
||||
"path": "Notices/Faset-NOTICE.txt",
|
||||
"sha256": "30c2e7e80f5153b31ab57675e07246aef9165965d64e36022b426a26449ece3f",
|
||||
"size": 204
|
||||
},
|
||||
{
|
||||
"path": "README.txt",
|
||||
"sha256": "82bf72bc542643f6c4090e0a5de69b0014ca3fa17c6f9dfb12cc41e44c8b8db6",
|
||||
"size": 262
|
||||
}
|
||||
],
|
||||
"format": "faset.export",
|
||||
"generation": "e10bfc78-962f-45ef-a570-1237628cc7ec",
|
||||
"lua_enabled": false,
|
||||
"lua_fingerprint": "",
|
||||
"platform": "linux",
|
||||
"prerequisites": [
|
||||
"Linux x86_64",
|
||||
"Vulkan 1.3 driver",
|
||||
"Compatible glibc and libstdc++ runtime"
|
||||
],
|
||||
"renderer_profile": {
|
||||
"api": "Vulkan 1.3",
|
||||
"materials": [
|
||||
"base-color factor and texture",
|
||||
"metallic and roughness factors"
|
||||
],
|
||||
"required_features": [
|
||||
"dynamicRendering",
|
||||
"synchronization2"
|
||||
],
|
||||
"shadow_map": {
|
||||
"resolution": 1024,
|
||||
"world_extent": 40
|
||||
},
|
||||
"texture_sampling": "linear clamp, one mip level",
|
||||
"unsupported_material_features": [
|
||||
"normal maps",
|
||||
"metallic-roughness maps",
|
||||
"emissive and occlusion maps",
|
||||
"alpha mode selection",
|
||||
"unlit mode",
|
||||
"per-material face culling"
|
||||
]
|
||||
},
|
||||
"scene_hash": "fdfa1c49cf78a1cf52cd41b201c35bb0b5f852c90b7626b2a7f17da3e2e3e24c",
|
||||
"simulation": {
|
||||
"fixed_delta": 0.016666666666666666,
|
||||
"gravity": [
|
||||
0,
|
||||
-9.81,
|
||||
0
|
||||
],
|
||||
"max_catch_up_ticks": 4,
|
||||
"physics_substeps": 4
|
||||
},
|
||||
"units": {
|
||||
"angle": "radian",
|
||||
"coordinates": "right-handed Y-up",
|
||||
"distance": "metre"
|
||||
},
|
||||
"validation_log": "{\"dimension\":2,\"validated\":true}\n",
|
||||
"version": 1
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"arguments": [
|
||||
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-2d/faset_player",
|
||||
"--headless",
|
||||
"--frames",
|
||||
"120",
|
||||
"--capture",
|
||||
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-2d/verification.ppm",
|
||||
"--profile",
|
||||
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-2d/profile.json"
|
||||
],
|
||||
"cwd": "/tmp/faset-playable-exports-u_8rjufs/empty-working-directory",
|
||||
"seconds": 0.9394604200206231,
|
||||
"exit_code": 0,
|
||||
"timed_out": false,
|
||||
"stdout": "New round: collect the three gold cubes, then reach the green exit. E resets.\n{\"device\":\"NVIDIA GeForce RTX 2080 Ti\",\"dimension\":2,\"frames\":120,\"gpu_visibility_active\":false,\"ticks\":120,\"validation_errors\":0,\"visibility_mode\":\"direct\"}\n",
|
||||
"stderr": ""
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"arguments": [
|
||||
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-2d/faset_player",
|
||||
"--validate"
|
||||
],
|
||||
"cwd": "/tmp/faset-playable-exports-u_8rjufs/empty-working-directory",
|
||||
"seconds": 0.011183144990354776,
|
||||
"exit_code": 0,
|
||||
"timed_out": false,
|
||||
"stdout": "{\"dimension\":2,\"validated\":true}\n",
|
||||
"stderr": ""
|
||||
}
|
||||
|
After Width: | Height: | Size: 19 KiB |
@@ -0,0 +1,198 @@
|
||||
{
|
||||
"completed_frames": 6,
|
||||
"device": "NVIDIA GeForce RTX 2080 Ti",
|
||||
"dimension": 3,
|
||||
"fixed_delta_seconds": 0.016666666666666666,
|
||||
"format": "faset.player-profile",
|
||||
"height": 720,
|
||||
"percentile_method": "nearest_rank_all_completed_frames_no_warmup_exclusion",
|
||||
"presentation_mode": "offscreen",
|
||||
"requested_frames": 6,
|
||||
"resource_notes": "gpu_allocated_bytes sums live Vulkan memory allocations, including alignment, excluding driver internals. texture_count includes the white fallback texture.",
|
||||
"samples": [
|
||||
{
|
||||
"draw_calls": 20,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 1,
|
||||
"gpu_allocated_bytes": 15798512,
|
||||
"gpu_ms": 0.61888,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 14.210575,
|
||||
"renderer_cpu_ms": 14.203583,
|
||||
"renderer_readback_cpu_ms": 6.924622,
|
||||
"simulation_ms": 0.255843,
|
||||
"snapshot_ms": 1.021316,
|
||||
"texture_count": 1,
|
||||
"tick": 1,
|
||||
"vertices": 720,
|
||||
"wall_ms": 15.597061
|
||||
},
|
||||
{
|
||||
"draw_calls": 20,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 2,
|
||||
"gpu_allocated_bytes": 15798512,
|
||||
"gpu_ms": 0.608416,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 5.125658,
|
||||
"renderer_cpu_ms": 5.116,
|
||||
"renderer_readback_cpu_ms": 0.658192,
|
||||
"simulation_ms": 0.28099,
|
||||
"snapshot_ms": 0.235524,
|
||||
"texture_count": 1,
|
||||
"tick": 2,
|
||||
"vertices": 720,
|
||||
"wall_ms": 5.652933
|
||||
},
|
||||
{
|
||||
"draw_calls": 20,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 3,
|
||||
"gpu_allocated_bytes": 15798512,
|
||||
"gpu_ms": 0.60528,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 4.80823,
|
||||
"renderer_cpu_ms": 4.797389,
|
||||
"renderer_readback_cpu_ms": 0.641901,
|
||||
"simulation_ms": 0.297551,
|
||||
"snapshot_ms": 0.276121,
|
||||
"texture_count": 1,
|
||||
"tick": 3,
|
||||
"vertices": 720,
|
||||
"wall_ms": 5.392282
|
||||
},
|
||||
{
|
||||
"draw_calls": 20,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 4,
|
||||
"gpu_allocated_bytes": 15798512,
|
||||
"gpu_ms": 0.605824,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 5.855645,
|
||||
"renderer_cpu_ms": 5.846038,
|
||||
"renderer_readback_cpu_ms": 0.696824,
|
||||
"simulation_ms": 0.32371,
|
||||
"snapshot_ms": 0.245643,
|
||||
"texture_count": 1,
|
||||
"tick": 4,
|
||||
"vertices": 720,
|
||||
"wall_ms": 6.438234
|
||||
},
|
||||
{
|
||||
"draw_calls": 20,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 5,
|
||||
"gpu_allocated_bytes": 15798512,
|
||||
"gpu_ms": 0.607584,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 4.411862,
|
||||
"renderer_cpu_ms": 4.402855,
|
||||
"renderer_readback_cpu_ms": 0.724306,
|
||||
"simulation_ms": 0.290087,
|
||||
"snapshot_ms": 0.231477,
|
||||
"texture_count": 1,
|
||||
"tick": 5,
|
||||
"vertices": 720,
|
||||
"wall_ms": 4.943475
|
||||
},
|
||||
{
|
||||
"draw_calls": 20,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 6,
|
||||
"gpu_allocated_bytes": 15798512,
|
||||
"gpu_ms": 0.606208,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 3.279987,
|
||||
"renderer_cpu_ms": 3.266321,
|
||||
"renderer_readback_cpu_ms": 0.664774,
|
||||
"simulation_ms": 0.318361,
|
||||
"snapshot_ms": 0.250953,
|
||||
"texture_count": 1,
|
||||
"tick": 6,
|
||||
"vertices": 720,
|
||||
"wall_ms": 3.862496
|
||||
}
|
||||
],
|
||||
"simulation_mode": "synthetic_fixed_timestep",
|
||||
"startup_ms": {
|
||||
"main_to_first_frame": 343.895332,
|
||||
"renderer_initialization": 323.914923,
|
||||
"scene_read": 0.505263,
|
||||
"world_initialization": 1.141073
|
||||
},
|
||||
"summary_ms": {
|
||||
"gpu": {
|
||||
"max": 0.61888,
|
||||
"min": 0.60528,
|
||||
"p50": 0.606208,
|
||||
"p95": 0.61888,
|
||||
"samples": 6
|
||||
},
|
||||
"render_call": {
|
||||
"max": 14.210575,
|
||||
"min": 3.279987,
|
||||
"p50": 4.80823,
|
||||
"p95": 14.210575,
|
||||
"samples": 6
|
||||
},
|
||||
"renderer_cpu": {
|
||||
"max": 14.203583,
|
||||
"min": 3.266321,
|
||||
"p50": 4.797389,
|
||||
"p95": 14.203583,
|
||||
"samples": 6
|
||||
},
|
||||
"renderer_readback_cpu": {
|
||||
"max": 6.924622,
|
||||
"min": 0.641901,
|
||||
"p50": 0.664774,
|
||||
"p95": 6.924622,
|
||||
"samples": 6
|
||||
},
|
||||
"simulation": {
|
||||
"max": 0.32371,
|
||||
"min": 0.255843,
|
||||
"p50": 0.290087,
|
||||
"p95": 0.32371,
|
||||
"samples": 6
|
||||
},
|
||||
"snapshot": {
|
||||
"max": 1.021316,
|
||||
"min": 0.231477,
|
||||
"p50": 0.245643,
|
||||
"p95": 1.021316,
|
||||
"samples": 6
|
||||
},
|
||||
"wall": {
|
||||
"max": 15.597061,
|
||||
"min": 3.862496,
|
||||
"p50": 5.392282,
|
||||
"p95": 15.597061,
|
||||
"samples": 6
|
||||
}
|
||||
},
|
||||
"timing_notes": "Durations use steady_clock wall time, not thread CPU usage. render_call/renderer_cpu include GPU waits, readback and window presentation. renderer_readback_cpu measures map/copy/unmap wall time within that call. GPU timestamps cover submitted rendering, not CPU work. A missing/zero GPU timestamp is null. Frame durations exclude profile bookkeeping and final capture/profile file writes. Startup begins at Player application entry after platform argument normalization, excluding OS loader/launcher.",
|
||||
"validation_enabled": true,
|
||||
"validation_errors": 0,
|
||||
"version": 1,
|
||||
"visibility_mode": "gpu-frustum",
|
||||
"width": 1280
|
||||
}
|
||||
|
After Width: | Height: | Size: 19 KiB |
@@ -0,0 +1,198 @@
|
||||
{
|
||||
"completed_frames": 6,
|
||||
"device": "NVIDIA GeForce RTX 2080 Ti",
|
||||
"dimension": 3,
|
||||
"fixed_delta_seconds": 0.016666666666666666,
|
||||
"format": "faset.player-profile",
|
||||
"height": 720,
|
||||
"percentile_method": "nearest_rank_all_completed_frames_no_warmup_exclusion",
|
||||
"presentation_mode": "offscreen",
|
||||
"requested_frames": 6,
|
||||
"resource_notes": "gpu_allocated_bytes sums live Vulkan memory allocations, including alignment, excluding driver internals. texture_count includes the white fallback texture.",
|
||||
"samples": [
|
||||
{
|
||||
"draw_calls": 24,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 1,
|
||||
"gpu_allocated_bytes": 38171888,
|
||||
"gpu_ms": 0.771968,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 11.369366,
|
||||
"renderer_cpu_ms": 11.362463,
|
||||
"renderer_readback_cpu_ms": 3.603508,
|
||||
"simulation_ms": 0.338388,
|
||||
"snapshot_ms": 0.880631,
|
||||
"texture_count": 1,
|
||||
"tick": 1,
|
||||
"vertices": 720,
|
||||
"wall_ms": 12.728099
|
||||
},
|
||||
{
|
||||
"draw_calls": 24,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 2,
|
||||
"gpu_allocated_bytes": 38171888,
|
||||
"gpu_ms": 0.724864,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 3.184266,
|
||||
"renderer_cpu_ms": 3.170179,
|
||||
"renderer_readback_cpu_ms": 0.641099,
|
||||
"simulation_ms": 0.223501,
|
||||
"snapshot_ms": 0.269128,
|
||||
"texture_count": 1,
|
||||
"tick": 2,
|
||||
"vertices": 720,
|
||||
"wall_ms": 3.687185
|
||||
},
|
||||
{
|
||||
"draw_calls": 24,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 3,
|
||||
"gpu_allocated_bytes": 38171888,
|
||||
"gpu_ms": 0.721568,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 3.179287,
|
||||
"renderer_cpu_ms": 3.170631,
|
||||
"renderer_readback_cpu_ms": 0.509361,
|
||||
"simulation_ms": 0.307731,
|
||||
"snapshot_ms": 0.283124,
|
||||
"texture_count": 1,
|
||||
"tick": 3,
|
||||
"vertices": 720,
|
||||
"wall_ms": 3.785811
|
||||
},
|
||||
{
|
||||
"draw_calls": 24,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 4,
|
||||
"gpu_allocated_bytes": 38171888,
|
||||
"gpu_ms": 0.722336,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 5.69337,
|
||||
"renderer_cpu_ms": 5.685525,
|
||||
"renderer_readback_cpu_ms": 0.436172,
|
||||
"simulation_ms": 0.289446,
|
||||
"snapshot_ms": 0.252797,
|
||||
"texture_count": 1,
|
||||
"tick": 4,
|
||||
"vertices": 720,
|
||||
"wall_ms": 6.245241
|
||||
},
|
||||
{
|
||||
"draw_calls": 24,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 5,
|
||||
"gpu_allocated_bytes": 38171888,
|
||||
"gpu_ms": 0.73584,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 5.95359,
|
||||
"renderer_cpu_ms": 5.941097,
|
||||
"renderer_readback_cpu_ms": 0.531442,
|
||||
"simulation_ms": 0.274438,
|
||||
"snapshot_ms": 0.223482,
|
||||
"texture_count": 1,
|
||||
"tick": 5,
|
||||
"vertices": 720,
|
||||
"wall_ms": 6.460516
|
||||
},
|
||||
{
|
||||
"draw_calls": 24,
|
||||
"dropped_simulation_seconds": 0.0,
|
||||
"fixed_ticks": 1,
|
||||
"frame": 6,
|
||||
"gpu_allocated_bytes": 38171888,
|
||||
"gpu_ms": 0.72576,
|
||||
"gpu_visibility_active": true,
|
||||
"interpolation_alpha": 0.0,
|
||||
"physics_debug": false,
|
||||
"render_call_ms": 5.297592,
|
||||
"renderer_cpu_ms": 5.082367,
|
||||
"renderer_readback_cpu_ms": 0.648092,
|
||||
"simulation_ms": 0.275159,
|
||||
"snapshot_ms": 0.235665,
|
||||
"texture_count": 1,
|
||||
"tick": 6,
|
||||
"vertices": 720,
|
||||
"wall_ms": 5.82136
|
||||
}
|
||||
],
|
||||
"simulation_mode": "synthetic_fixed_timestep",
|
||||
"startup_ms": {
|
||||
"main_to_first_frame": 367.40061,
|
||||
"renderer_initialization": 351.144686,
|
||||
"scene_read": 0.607135,
|
||||
"world_initialization": 0.946856
|
||||
},
|
||||
"summary_ms": {
|
||||
"gpu": {
|
||||
"max": 0.771968,
|
||||
"min": 0.721568,
|
||||
"p50": 0.724864,
|
||||
"p95": 0.771968,
|
||||
"samples": 6
|
||||
},
|
||||
"render_call": {
|
||||
"max": 11.369366,
|
||||
"min": 3.179287,
|
||||
"p50": 5.297592,
|
||||
"p95": 11.369366,
|
||||
"samples": 6
|
||||
},
|
||||
"renderer_cpu": {
|
||||
"max": 11.362463,
|
||||
"min": 3.170179,
|
||||
"p50": 5.082367,
|
||||
"p95": 11.362463,
|
||||
"samples": 6
|
||||
},
|
||||
"renderer_readback_cpu": {
|
||||
"max": 3.603508,
|
||||
"min": 0.436172,
|
||||
"p50": 0.531442,
|
||||
"p95": 3.603508,
|
||||
"samples": 6
|
||||
},
|
||||
"simulation": {
|
||||
"max": 0.338388,
|
||||
"min": 0.223501,
|
||||
"p50": 0.275159,
|
||||
"p95": 0.338388,
|
||||
"samples": 6
|
||||
},
|
||||
"snapshot": {
|
||||
"max": 0.880631,
|
||||
"min": 0.223482,
|
||||
"p50": 0.252797,
|
||||
"p95": 0.880631,
|
||||
"samples": 6
|
||||
},
|
||||
"wall": {
|
||||
"max": 12.728099,
|
||||
"min": 3.687185,
|
||||
"p50": 5.82136,
|
||||
"p95": 12.728099,
|
||||
"samples": 6
|
||||
}
|
||||
},
|
||||
"timing_notes": "Durations use steady_clock wall time, not thread CPU usage. render_call/renderer_cpu include GPU waits, readback and window presentation. renderer_readback_cpu measures map/copy/unmap wall time within that call. GPU timestamps cover submitted rendering, not CPU work. A missing/zero GPU timestamp is null. Frame durations exclude profile bookkeeping and final capture/profile file writes. Startup begins at Player application entry after platform argument normalization, excluding OS loader/launcher.",
|
||||
"validation_enabled": true,
|
||||
"validation_errors": 0,
|
||||
"version": 1,
|
||||
"visibility_mode": "gpu-occlusion",
|
||||
"width": 1280
|
||||
}
|
||||
|
After Width: | Height: | Size: 19 KiB |
@@ -0,0 +1,222 @@
|
||||
{
|
||||
"asset_generations": {
|
||||
"5832763b-3ed0-44d6-9088-0b524f196a91": "4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2"
|
||||
},
|
||||
"build_fingerprint": "337f590d99812f1509c9373117bda21a3ff7eb3e192f60a3752828d813e74b25",
|
||||
"configuration": "Release",
|
||||
"executable": "faset_player",
|
||||
"files": [
|
||||
{
|
||||
"path": "scene.fscene",
|
||||
"sha256": "21c364140669ec82c6886102667b255df5ccdf0ec77e0ca64060f84dd7b86632",
|
||||
"size": 8639
|
||||
},
|
||||
{
|
||||
"path": "faset_player",
|
||||
"sha256": "716d250a863ccc9fc13304a1f7775b9c820c186d5b0a21e6c9a88bd98798abbf",
|
||||
"size": 5977808
|
||||
},
|
||||
{
|
||||
"path": "shaders/vertexMain.spv",
|
||||
"sha256": "1ad2631c35d654f48166321ae43d4165043e1b919b14f1dc61caf97b1ada0898",
|
||||
"size": 1224
|
||||
},
|
||||
{
|
||||
"path": "shaders/fragmentMain.spv",
|
||||
"sha256": "f5c4f289917ecab5d00d543c053aac1d10e6cca311fd172daf06d315160a3505",
|
||||
"size": 7436
|
||||
},
|
||||
{
|
||||
"path": "shaders/shadowMain.spv",
|
||||
"sha256": "7643b4d688492b5ee923b9606f0b0e70343ca05fa67673838206119a6f86d8d8",
|
||||
"size": 784
|
||||
},
|
||||
{
|
||||
"path": "shaders/vertexMain.reflection.json",
|
||||
"sha256": "c584f3b957ebf194a292451362a98590f85ff3cfbfd8f917b1c1265039381777",
|
||||
"size": 2639
|
||||
},
|
||||
{
|
||||
"path": "shaders/fragmentMain.reflection.json",
|
||||
"sha256": "72ebf8d32452830650416dc4717d89a4324e97ece7028dfb97c66803c8dce71f",
|
||||
"size": 2649
|
||||
},
|
||||
{
|
||||
"path": "shaders/shadowMain.reflection.json",
|
||||
"sha256": "e3fd0889cd2f569d410f5d7558a4091d9f57f247a1dcf1788462f67525340819",
|
||||
"size": 2645
|
||||
},
|
||||
{
|
||||
"path": "shaders/gpuVertexMain.spv",
|
||||
"sha256": "041c1e5f0db4007c51e01ed5db6e0fbf4db09b8dcbcb085c0c73612cdc682fe3",
|
||||
"size": 5008
|
||||
},
|
||||
{
|
||||
"path": "shaders/gpuShadowMain.spv",
|
||||
"sha256": "9078577943bf9c51220d5341434834eb4a28cf0f0f6203bad2b96e1b0e11b360",
|
||||
"size": 2484
|
||||
},
|
||||
{
|
||||
"path": "shaders/gpuCullMain.spv",
|
||||
"sha256": "7691360ec55f41d40d43652f506b051cef8b3a3ddcdcc7db61a7d4d97f9e87d8",
|
||||
"size": 16180
|
||||
},
|
||||
{
|
||||
"path": "shaders/gpuHzbMain.spv",
|
||||
"sha256": "08682362ee2120ed19d260e613285071747c3e436bb09bb6238e46f9cedc2308",
|
||||
"size": 4140
|
||||
},
|
||||
{
|
||||
"path": "shaders/gpuPostCullMain.spv",
|
||||
"sha256": "62cb72e356346e1511c6d640a3cecb4a6e5283795338299b357edae5f7f52be4",
|
||||
"size": 12460
|
||||
},
|
||||
{
|
||||
"path": "shaders/gpuVertexMain.reflection.json",
|
||||
"sha256": "3726c09d38e68cf0b6e317daaddb7b5b3e1bb0b073afd0eff43b8f1125378cd9",
|
||||
"size": 3092
|
||||
},
|
||||
{
|
||||
"path": "shaders/gpuShadowMain.reflection.json",
|
||||
"sha256": "7fbe869421b61f0261729eac26ebda2a484d423583d3a5b739ba59bbf3afbe12",
|
||||
"size": 2749
|
||||
},
|
||||
{
|
||||
"path": "shaders/gpuCullMain.reflection.json",
|
||||
"sha256": "996fe5c7e31c6b8f316d8f290b3be0ae7063eb46c500a661e8715e9b822a2598",
|
||||
"size": 3587
|
||||
},
|
||||
{
|
||||
"path": "shaders/gpuHzbMain.reflection.json",
|
||||
"sha256": "589818f670881c64f3aba726ee3bc82fe4b9d835a347f99134e0e157dc4a112e",
|
||||
"size": 2050
|
||||
},
|
||||
{
|
||||
"path": "shaders/gpuPostCullMain.reflection.json",
|
||||
"sha256": "eed140bbe09c7d14935b688c770261ac0e81677c0974aa811c88ed67ea779b95",
|
||||
"size": 3591
|
||||
},
|
||||
{
|
||||
"path": "assets/5832763b-3ed0-44d6-9088-0b524f196a91/generations/4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2/meshes/mesh-fc069a07a87e0f831fd92efdbc4efa1f-0.fmesh",
|
||||
"sha256": "98b38aca7d2786c58a2265ba4d1f2255123f03d31d947e239232cf55bfdc2c97",
|
||||
"size": 928
|
||||
},
|
||||
{
|
||||
"path": "assets/5832763b-3ed0-44d6-9088-0b524f196a91/generations/4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2/meshes/mesh-0961e2a3f92977836a3aa80cab09277e-0.fmesh",
|
||||
"sha256": "98b38aca7d2786c58a2265ba4d1f2255123f03d31d947e239232cf55bfdc2c97",
|
||||
"size": 928
|
||||
},
|
||||
{
|
||||
"path": "assets/5832763b-3ed0-44d6-9088-0b524f196a91/generations/4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2/meshes/mesh-93b5b3e52cb6bb120fefb80e2d8e222b-0.fmesh",
|
||||
"sha256": "3875c16ea628d4126373ebfe07816621fbad3961596a2fcd112f1eec0e378071",
|
||||
"size": 928
|
||||
},
|
||||
{
|
||||
"path": "assets/5832763b-3ed0-44d6-9088-0b524f196a91/generations/4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2/manifest.json",
|
||||
"sha256": "ee3f68794c6dc44ab492b1ba4640aa74e4de79a5ec10aed8dcdd45a03afc508e",
|
||||
"size": 4532
|
||||
},
|
||||
{
|
||||
"path": "assets/5832763b-3ed0-44d6-9088-0b524f196a91/current.json",
|
||||
"sha256": "b0732959808ce61ef5a3223fba2d9ad8c17a3ea7873d4a81c00aadee6c51032e",
|
||||
"size": 134
|
||||
},
|
||||
{
|
||||
"path": "Notices/sdl3/LICENSE.txt",
|
||||
"sha256": "97f35b302b361680ec1e891e95d2d52097bb95abff361434916d99dc1305f127",
|
||||
"size": 884
|
||||
},
|
||||
{
|
||||
"path": "Notices/entt/LICENSE",
|
||||
"sha256": "0785027ce472d7c61f05fba664a1d3ba6639c1593ced351ad9e4bed868765d99",
|
||||
"size": 1097
|
||||
},
|
||||
{
|
||||
"path": "Notices/box2d/LICENSE",
|
||||
"sha256": "68a3e676d7e94093b102d5cba0d4e04af812040d6f230c3db67a6664574e43d2",
|
||||
"size": 1067
|
||||
},
|
||||
{
|
||||
"path": "Notices/box3d/LICENSE",
|
||||
"sha256": "da5e31a26bf3cfd5ba5c96d6823e480128c81e76c107ef9d3ee5d94789184b90",
|
||||
"size": 1067
|
||||
},
|
||||
{
|
||||
"path": "Notices/json/LICENSE.MIT",
|
||||
"sha256": "46a65cffd1ea955132d95a8dd921640714a8d6b537d2e4e482d31145ae95b603",
|
||||
"size": 1076
|
||||
},
|
||||
{
|
||||
"path": "Notices/stb/LICENSE",
|
||||
"sha256": "bebfe904b14301657e4e5d655c811d51fd31b97c455b9cc2d8600d6bac6cff63",
|
||||
"size": 2510
|
||||
},
|
||||
{
|
||||
"path": "Notices/dependencies.json",
|
||||
"sha256": "a54639ad2d9ad13c2e5f1ec90d6775f5dfc493656789b78c7e44debe2a378fdc",
|
||||
"size": 2206
|
||||
},
|
||||
{
|
||||
"path": "Notices/Faset-NOTICE.txt",
|
||||
"sha256": "30c2e7e80f5153b31ab57675e07246aef9165965d64e36022b426a26449ece3f",
|
||||
"size": 204
|
||||
},
|
||||
{
|
||||
"path": "README.txt",
|
||||
"sha256": "82bf72bc542643f6c4090e0a5de69b0014ca3fa17c6f9dfb12cc41e44c8b8db6",
|
||||
"size": 262
|
||||
}
|
||||
],
|
||||
"format": "faset.export",
|
||||
"generation": "013fe953-8787-45ac-963f-ffbd9ac5f636",
|
||||
"lua_enabled": false,
|
||||
"lua_fingerprint": "",
|
||||
"platform": "linux",
|
||||
"prerequisites": [
|
||||
"Linux x86_64",
|
||||
"Vulkan 1.3 driver",
|
||||
"Compatible glibc and libstdc++ runtime"
|
||||
],
|
||||
"renderer_profile": {
|
||||
"api": "Vulkan 1.3",
|
||||
"materials": [
|
||||
"base-color factor and texture",
|
||||
"metallic and roughness factors"
|
||||
],
|
||||
"required_features": [
|
||||
"dynamicRendering",
|
||||
"synchronization2"
|
||||
],
|
||||
"shadow_map": {
|
||||
"resolution": 1024,
|
||||
"world_extent": 40
|
||||
},
|
||||
"texture_sampling": "linear clamp, one mip level",
|
||||
"unsupported_material_features": [
|
||||
"normal maps",
|
||||
"metallic-roughness maps",
|
||||
"emissive and occlusion maps",
|
||||
"alpha mode selection",
|
||||
"unlit mode",
|
||||
"per-material face culling"
|
||||
]
|
||||
},
|
||||
"scene_hash": "ee12794145c14ba5b599c5d9ae21648cccdfa91c47ee7742549f60d5fe7bc3e0",
|
||||
"simulation": {
|
||||
"fixed_delta": 0.016666666666666666,
|
||||
"gravity": [
|
||||
0,
|
||||
-9.81,
|
||||
0
|
||||
],
|
||||
"max_catch_up_ticks": 4,
|
||||
"physics_substeps": 4
|
||||
},
|
||||
"units": {
|
||||
"angle": "radian",
|
||||
"coordinates": "right-handed Y-up",
|
||||
"distance": "metre"
|
||||
},
|
||||
"validation_log": "warning: material material-bb63b094febbf90bb7049c9bcf7587bc has features beyond the initial base-color/PBR renderer\n{\"dimension\":3,\"validated\":true}\n",
|
||||
"version": 1
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"arguments": [
|
||||
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-3d/faset_player",
|
||||
"--headless",
|
||||
"--frames",
|
||||
"120",
|
||||
"--capture",
|
||||
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-3d/verification.ppm",
|
||||
"--profile",
|
||||
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-3d/profile.json"
|
||||
],
|
||||
"cwd": "/tmp/faset-playable-exports-u_8rjufs/empty-working-directory",
|
||||
"seconds": 1.485020653984975,
|
||||
"exit_code": 0,
|
||||
"timed_out": false,
|
||||
"stdout": "New round: collect the three gold cubes, then reach the green exit. E resets.\n{\"device\":\"NVIDIA GeForce RTX 2080 Ti\",\"dimension\":3,\"frames\":120,\"gpu_visibility_active\":false,\"ticks\":120,\"validation_errors\":0,\"visibility_mode\":\"direct\"}\n",
|
||||
"stderr": "warning: material material-bb63b094febbf90bb7049c9bcf7587bc has features beyond the initial base-color/PBR renderer\n"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"arguments": [
|
||||
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-3d/faset_player",
|
||||
"--validate"
|
||||
],
|
||||
"cwd": "/tmp/faset-playable-exports-u_8rjufs/empty-working-directory",
|
||||
"seconds": 0.01345648302230984,
|
||||
"exit_code": 0,
|
||||
"timed_out": false,
|
||||
"stdout": "{\"dimension\":3,\"validated\":true}\n",
|
||||
"stderr": "warning: material material-bb63b094febbf90bb7049c9bcf7587bc has features beyond the initial base-color/PBR renderer\n"
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
Test project /home/emil/Desktop/.worktrees/Faset_Engine-p2/build/p2-release
|
||||
Start 26: render_gpu_lifecycle
|
||||
Start 29: render_gpu_open_sequence
|
||||
1/15 Test #26: render_gpu_lifecycle ............. Passed 0.80 sec
|
||||
Start 30: render_gpu_transparent
|
||||
2/15 Test #30: render_gpu_transparent ........... Passed 0.43 sec
|
||||
Start 27: render_gpu_views
|
||||
3/15 Test #27: render_gpu_views ................. Passed 0.43 sec
|
||||
Start 25: render_gpu_near
|
||||
4/15 Test #25: render_gpu_near .................. Passed 0.36 sec
|
||||
Start 23: render_gpu_lod
|
||||
5/15 Test #23: render_gpu_lod ................... Passed 0.69 sec
|
||||
Start 28: render_gpu_projection
|
||||
6/15 Test #29: render_gpu_open_sequence ......... Passed 3.05 sec
|
||||
Start 17: render_gpu_capacity
|
||||
7/15 Test #28: render_gpu_projection ............ Passed 0.43 sec
|
||||
Start 22: render_gpu_resize
|
||||
8/15 Test #17: render_gpu_capacity .............. Passed 0.37 sec
|
||||
Start 18: render_gpu_dense
|
||||
9/15 Test #22: render_gpu_resize ................ Passed 0.38 sec
|
||||
Start 24: render_gpu_teleport
|
||||
10/15 Test #18: render_gpu_dense ................. Passed 0.30 sec
|
||||
Start 16: render_gpu_empty
|
||||
11/15 Test #24: render_gpu_teleport .............. Passed 0.38 sec
|
||||
Start 21: render_gpu_cut
|
||||
12/15 Test #16: render_gpu_empty ................. Passed 0.31 sec
|
||||
Start 19: render_gpu_door
|
||||
13/15 Test #21: render_gpu_cut ................... Passed 0.44 sec
|
||||
Start 20: render_gpu_shadow
|
||||
14/15 Test #19: render_gpu_door .................. Passed 0.42 sec
|
||||
15/15 Test #20: render_gpu_shadow ................ Passed 0.30 sec
|
||||
|
||||
100% tests passed, 0 tests failed out of 15
|
||||
|
||||
Label Time Summary:
|
||||
gpu = 9.09 sec*proc (15 tests)
|
||||
p2 = 9.09 sec*proc (15 tests)
|
||||
|
||||
Total Test time (real) = 4.65 sec
|
||||
@@ -0,0 +1,127 @@
|
||||
Test project /home/emil/Desktop/.worktrees/Faset_Engine-p2/build/linux-debug
|
||||
Start 37: build_schema_publication
|
||||
Start 50: editor_gui_mcp
|
||||
Start 44: editor_ui_reload
|
||||
Start 46: editor_ui_templates
|
||||
Start 34: lua_player_reload
|
||||
Start 48: editor_ui_authoring
|
||||
1/57 Test #48: editor_ui_authoring .............. Passed 2.61 sec
|
||||
Start 32: player_shutdown_diagnostics
|
||||
2/57 Test #34: lua_player_reload ................ Passed 3.22 sec
|
||||
Start 47: editor_ui_gizmos
|
||||
3/57 Test #46: editor_ui_templates .............. Passed 4.08 sec
|
||||
Start 43: editor_ui_project_settings
|
||||
4/57 Test #47: editor_ui_gizmos ................. Passed 1.50 sec
|
||||
Start 45: editor_ui_launcher
|
||||
5/57 Test #32: player_shutdown_diagnostics ...... Passed 2.37 sec
|
||||
Start 42: editor_ui_import_conflicts
|
||||
6/57 Test #44: editor_ui_reload ................. Passed 4.99 sec
|
||||
Start 10: render_shader_reload
|
||||
7/57 Test #43: editor_ui_project_settings ....... Passed 1.64 sec
|
||||
Start 57: playable_3d
|
||||
8/57 Test #45: editor_ui_launcher ............... Passed 1.24 sec
|
||||
Start 41: ui_render
|
||||
9/57 Test #42: editor_ui_import_conflicts ....... Passed 1.53 sec
|
||||
Start 29: render_gpu_open_sequence
|
||||
10/57 Test #50: editor_gui_mcp ................... Passed 6.83 sec
|
||||
Start 8: render_offscreen
|
||||
11/57 Test #57: playable_3d ...................... Passed 1.27 sec
|
||||
Start 12: render_shader_reflection
|
||||
12/57 Test #41: ui_render ........................ Passed 1.16 sec
|
||||
Start 9: render_sprite_alpha
|
||||
13/57 Test #8: render_offscreen ................. Passed 0.95 sec
|
||||
Start 15: gpu_visibility
|
||||
14/57 Test #9: render_sprite_alpha .............. Passed 0.76 sec
|
||||
Start 26: render_gpu_lifecycle
|
||||
15/57 Test #12: render_shader_reflection ......... Passed 1.58 sec
|
||||
Start 56: playable_2d
|
||||
16/57 Test #56: playable_2d ...................... Passed 0.60 sec
|
||||
Start 28: render_gpu_projection
|
||||
17/57 Test #15: gpu_visibility ................... Passed 2.00 sec
|
||||
Start 25: render_gpu_near
|
||||
18/57 Test #29: render_gpu_open_sequence ......... Passed 4.14 sec
|
||||
Start 30: render_gpu_transparent
|
||||
19/57 Test #10: render_shader_reload ............. Passed 6.04 sec
|
||||
Start 17: render_gpu_capacity
|
||||
20/57 Test #28: render_gpu_projection ............ Passed 2.29 sec
|
||||
Start 24: render_gpu_teleport
|
||||
21/57 Test #26: render_gpu_lifecycle ............. Passed 3.96 sec
|
||||
Start 22: render_gpu_resize
|
||||
22/57 Test #25: render_gpu_near .................. Passed 2.20 sec
|
||||
Start 27: render_gpu_views
|
||||
23/57 Test #30: render_gpu_transparent ........... Passed 2.74 sec
|
||||
Start 23: render_gpu_lod
|
||||
24/57 Test #17: render_gpu_capacity .............. Passed 2.51 sec
|
||||
Start 16: render_gpu_empty
|
||||
25/57 Test #24: render_gpu_teleport .............. Passed 2.28 sec
|
||||
Start 18: render_gpu_dense
|
||||
26/57 Test #22: render_gpu_resize ................ Passed 2.30 sec
|
||||
Start 21: render_gpu_cut
|
||||
27/57 Test #27: render_gpu_views ................. Passed 2.29 sec
|
||||
Start 20: render_gpu_shadow
|
||||
28/57 Test #37: build_schema_publication ......... Passed 14.35 sec
|
||||
Start 36: process_and_cook
|
||||
29/57 Test #36: process_and_cook ................. Passed 0.33 sec
|
||||
Start 49: editor_mcp_stdio
|
||||
30/57 Test #49: editor_mcp_stdio ................. Passed 0.28 sec
|
||||
Start 19: render_gpu_door
|
||||
31/57 Test #23: render_gpu_lod ................... Passed 2.55 sec
|
||||
Start 6: lua_safety_contracts
|
||||
32/57 Test #18: render_gpu_dense ................. Passed 2.42 sec
|
||||
Start 3: assets_pipeline
|
||||
33/57 Test #6: lua_safety_contracts ............. Passed 0.26 sec
|
||||
Start 51: core
|
||||
34/57 Test #16: render_gpu_empty ................. Passed 2.70 sec
|
||||
Start 33: lua_cli_contracts
|
||||
35/57 Test #3: assets_pipeline .................. Passed 0.17 sec
|
||||
Start 2: runtime_contracts
|
||||
36/57 Test #33: lua_cli_contracts ................ Passed 0.18 sec
|
||||
Start 40: ui_widgets
|
||||
37/57 Test #51: core ............................. Passed 0.21 sec
|
||||
Start 5: lua_contracts
|
||||
38/57 Test #21: render_gpu_cut ................... Passed 2.29 sec
|
||||
Start 4: assets_blender_bundle
|
||||
39/57 Test #20: render_gpu_shadow ................ Passed 2.23 sec
|
||||
Start 55: tutorial_physics
|
||||
40/57 Test #2: runtime_contracts ................ Passed 0.16 sec
|
||||
Start 11: render_gpu_shader_contract
|
||||
41/57 Test #5: lua_contracts .................... Passed 0.14 sec
|
||||
Start 1: authoring
|
||||
42/57 Test #55: tutorial_physics ................. Passed 0.09 sec
|
||||
Start 38: editor_plugins
|
||||
43/57 Test #4: assets_blender_bundle ............ Passed 0.14 sec
|
||||
Start 52: tutorial_moving
|
||||
44/57 Test #11: render_gpu_shader_contract ....... Passed 0.11 sec
|
||||
Start 39: editor_session_settings
|
||||
45/57 Test #40: ui_widgets ....................... Passed 0.21 sec
|
||||
46/57 Test #1: authoring ........................ Passed 0.06 sec
|
||||
Start 54: tutorial_spawning
|
||||
Start 53: tutorial_following
|
||||
47/57 Test #38: editor_plugins ................... Passed 0.08 sec
|
||||
48/57 Test #52: tutorial_moving .................. Passed 0.07 sec
|
||||
49/57 Test #54: tutorial_spawning ................ Passed 0.04 sec
|
||||
Start 35: editor_mcp
|
||||
Start 31: player_scene_contracts
|
||||
Start 7: render_graph
|
||||
50/57 Test #53: tutorial_following ............... Passed 0.05 sec
|
||||
Start 14: visibility_policy
|
||||
51/57 Test #35: editor_mcp ....................... Passed 0.03 sec
|
||||
52/57 Test #31: player_scene_contracts ........... Passed 0.02 sec
|
||||
53/57 Test #7: render_graph ..................... Passed 0.02 sec
|
||||
Start 13: render_window_lifecycle
|
||||
54/57 Test #39: editor_session_settings .......... Passed 0.08 sec
|
||||
55/57 Test #14: visibility_policy ................ Passed 0.01 sec
|
||||
56/57 Test #19: render_gpu_door .................. Passed 1.76 sec
|
||||
57/57 Test #13: render_window_lifecycle ..........***Skipped 4.22 sec
|
||||
|
||||
100% tests passed, 0 tests failed out of 57
|
||||
|
||||
Label Time Summary:
|
||||
gpu = 81.79 sec*proc (30 tests)
|
||||
p2 = 38.66 sec*proc (15 tests)
|
||||
window = 11.04 sec*proc (2 tests)
|
||||
|
||||
Total Test time (real) = 20.92 sec
|
||||
|
||||
The following tests did not run:
|
||||
13 - render_window_lifecycle (Skipped)
|
||||
@@ -0,0 +1,127 @@
|
||||
Test project /home/emil/Desktop/.worktrees/Faset_Engine-p2/build/p2-release
|
||||
Start 10: render_shader_reload
|
||||
Start 32: player_shutdown_diagnostics
|
||||
Start 44: editor_ui_reload
|
||||
Start 34: lua_player_reload
|
||||
Start 15: gpu_visibility
|
||||
Start 29: render_gpu_open_sequence
|
||||
1/57 Test #29: render_gpu_open_sequence ......... Passed 3.15 sec
|
||||
Start 26: render_gpu_lifecycle
|
||||
2/57 Test #15: gpu_visibility ................... Passed 3.31 sec
|
||||
Start 37: build_schema_publication
|
||||
3/57 Test #34: lua_player_reload ................ Passed 3.51 sec
|
||||
Start 28: render_gpu_projection
|
||||
4/57 Test #32: player_shutdown_diagnostics ...... Passed 4.60 sec
|
||||
Start 30: render_gpu_transparent
|
||||
5/57 Test #44: editor_ui_reload ................. Passed 5.01 sec
|
||||
Start 25: render_gpu_near
|
||||
6/57 Test #28: render_gpu_projection ............ Passed 1.77 sec
|
||||
Start 23: render_gpu_lod
|
||||
7/57 Test #37: build_schema_publication ......... Passed 2.03 sec
|
||||
Start 27: render_gpu_views
|
||||
8/57 Test #30: render_gpu_transparent ........... Passed 2.48 sec
|
||||
Start 8: render_offscreen
|
||||
9/57 Test #26: render_gpu_lifecycle ............. Passed 3.92 sec
|
||||
Start 50: editor_gui_mcp
|
||||
10/57 Test #10: render_shader_reload ............. Passed 7.15 sec
|
||||
Start 24: render_gpu_teleport
|
||||
11/57 Test #25: render_gpu_near .................. Passed 2.30 sec
|
||||
Start 12: render_shader_reflection
|
||||
12/57 Test #23: render_gpu_lod ................... Passed 2.23 sec
|
||||
Start 9: render_sprite_alpha
|
||||
13/57 Test #27: render_gpu_views ................. Passed 2.39 sec
|
||||
Start 46: editor_ui_templates
|
||||
14/57 Test #8: render_offscreen ................. Passed 1.53 sec
|
||||
Start 45: editor_ui_launcher
|
||||
15/57 Test #9: render_sprite_alpha .............. Passed 1.26 sec
|
||||
Start 22: render_gpu_resize
|
||||
16/57 Test #12: render_shader_reflection ......... Passed 1.56 sec
|
||||
Start 18: render_gpu_dense
|
||||
17/57 Test #24: render_gpu_teleport .............. Passed 2.04 sec
|
||||
Start 17: render_gpu_capacity
|
||||
18/57 Test #46: editor_ui_templates .............. Passed 1.98 sec
|
||||
Start 16: render_gpu_empty
|
||||
19/57 Test #50: editor_gui_mcp ................... Passed 2.78 sec
|
||||
Start 21: render_gpu_cut
|
||||
20/57 Test #45: editor_ui_launcher ............... Passed 1.57 sec
|
||||
Start 48: editor_ui_authoring
|
||||
21/57 Test #18: render_gpu_dense ................. Passed 2.48 sec
|
||||
Start 19: render_gpu_door
|
||||
22/57 Test #22: render_gpu_resize ................ Passed 2.74 sec
|
||||
Start 43: editor_ui_project_settings
|
||||
23/57 Test #48: editor_ui_authoring .............. Passed 1.58 sec
|
||||
Start 20: render_gpu_shadow
|
||||
24/57 Test #17: render_gpu_capacity .............. Passed 2.90 sec
|
||||
Start 42: editor_ui_import_conflicts
|
||||
25/57 Test #16: render_gpu_empty ................. Passed 2.48 sec
|
||||
Start 41: ui_render
|
||||
26/57 Test #21: render_gpu_cut ................... Passed 2.46 sec
|
||||
Start 47: editor_ui_gizmos
|
||||
27/57 Test #43: editor_ui_project_settings ....... Passed 1.66 sec
|
||||
Start 36: process_and_cook
|
||||
28/57 Test #36: process_and_cook ................. Passed 0.30 sec
|
||||
Start 49: editor_mcp_stdio
|
||||
29/57 Test #49: editor_mcp_stdio ................. Passed 0.25 sec
|
||||
Start 4: assets_blender_bundle
|
||||
30/57 Test #42: editor_ui_import_conflicts ....... Passed 1.75 sec
|
||||
Start 33: lua_cli_contracts
|
||||
31/57 Test #4: assets_blender_bundle ............ Passed 0.14 sec
|
||||
Start 40: ui_widgets
|
||||
32/57 Test #19: render_gpu_door .................. Passed 2.52 sec
|
||||
Start 57: playable_3d
|
||||
33/57 Test #41: ui_render ........................ Passed 1.71 sec
|
||||
34/57 Test #47: editor_ui_gizmos ................. Passed 1.57 sec
|
||||
Start 6: lua_safety_contracts
|
||||
Start 51: core
|
||||
35/57 Test #20: render_gpu_shadow ................ Passed 2.23 sec
|
||||
Start 56: playable_2d
|
||||
36/57 Test #51: core ............................. Passed 0.10 sec
|
||||
Start 3: assets_pipeline
|
||||
37/57 Test #6: lua_safety_contracts ............. Passed 0.14 sec
|
||||
Start 38: editor_plugins
|
||||
38/57 Test #57: playable_3d ...................... Passed 0.18 sec
|
||||
Start 5: lua_contracts
|
||||
39/57 Test #38: editor_plugins ................... Passed 0.03 sec
|
||||
Start 1: authoring
|
||||
40/57 Test #3: assets_pipeline .................. Passed 0.08 sec
|
||||
Start 2: runtime_contracts
|
||||
41/57 Test #40: ui_widgets ....................... Passed 0.22 sec
|
||||
Start 11: render_gpu_shader_contract
|
||||
42/57 Test #33: lua_cli_contracts ................ Passed 0.25 sec
|
||||
Start 31: player_scene_contracts
|
||||
43/57 Test #56: playable_2d ...................... Passed 0.10 sec
|
||||
Start 55: tutorial_physics
|
||||
44/57 Test #1: authoring ........................ Passed 0.03 sec
|
||||
Start 39: editor_session_settings
|
||||
45/57 Test #31: player_scene_contracts ........... Passed 0.01 sec
|
||||
Start 35: editor_mcp
|
||||
46/57 Test #2: runtime_contracts ................ Passed 0.04 sec
|
||||
47/57 Test #11: render_gpu_shader_contract ....... Passed 0.03 sec
|
||||
48/57 Test #39: editor_session_settings .......... Passed 0.02 sec
|
||||
49/57 Test #35: editor_mcp ....................... Passed 0.01 sec
|
||||
Start 7: render_graph
|
||||
Start 14: visibility_policy
|
||||
Start 54: tutorial_spawning
|
||||
Start 52: tutorial_moving
|
||||
50/57 Test #5: lua_contracts .................... Passed 0.09 sec
|
||||
51/57 Test #7: render_graph ..................... Passed 0.02 sec
|
||||
52/57 Test #14: visibility_policy ................ Passed 0.02 sec
|
||||
Start 53: tutorial_following
|
||||
Start 13: render_window_lifecycle
|
||||
53/57 Test #55: tutorial_physics ................. Passed 0.06 sec
|
||||
54/57 Test #54: tutorial_spawning ................ Passed 0.03 sec
|
||||
55/57 Test #52: tutorial_moving .................. Passed 0.02 sec
|
||||
56/57 Test #53: tutorial_following ............... Passed 0.02 sec
|
||||
57/57 Test #13: render_window_lifecycle ..........***Skipped 4.23 sec
|
||||
|
||||
100% tests passed, 0 tests failed out of 57
|
||||
|
||||
Label Time Summary:
|
||||
gpu = 79.96 sec*proc (30 tests)
|
||||
p2 = 38.08 sec*proc (15 tests)
|
||||
window = 7.01 sec*proc (2 tests)
|
||||
|
||||
Total Test time (real) = 18.39 sec
|
||||
|
||||
The following tests did not run:
|
||||
13 - render_window_lifecycle (Skipped)
|
||||
@@ -0,0 +1,97 @@
|
||||
{
|
||||
"source_report": "report.json",
|
||||
"runs": [
|
||||
{
|
||||
"name": "collect-2d",
|
||||
"mode": "gpu-frustum",
|
||||
"frames": 6,
|
||||
"gpu_visibility_active": true,
|
||||
"validation_errors": 0,
|
||||
"device": "NVIDIA GeForce RTX 2080 Ti",
|
||||
"capture_sha256": "f9d74067d87c1ebf30c6db372a26d93b7285791c8cb0307a24af5adb23bf201a",
|
||||
"profile": "collect-2d-gpu-frustum-profile.json",
|
||||
"capture": "collect-2d-gpu-frustum.ppm",
|
||||
"command": [
|
||||
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-2d/faset_player",
|
||||
"--headless",
|
||||
"--frames",
|
||||
"6",
|
||||
"--visibility",
|
||||
"gpu-frustum",
|
||||
"--profile",
|
||||
"/home/emil/Desktop/.worktrees/Faset_Engine-p2/.cache/p2-playable-exports-retry/evidence/collect-2d-gpu-frustum-profile.json",
|
||||
"--capture",
|
||||
"/home/emil/Desktop/.worktrees/Faset_Engine-p2/.cache/p2-playable-exports-retry/evidence/collect-2d-gpu-frustum.ppm"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "collect-2d",
|
||||
"mode": "gpu-occlusion",
|
||||
"frames": 6,
|
||||
"gpu_visibility_active": true,
|
||||
"validation_errors": 0,
|
||||
"device": "NVIDIA GeForce RTX 2080 Ti",
|
||||
"capture_sha256": "f9d74067d87c1ebf30c6db372a26d93b7285791c8cb0307a24af5adb23bf201a",
|
||||
"profile": "collect-2d-gpu-occlusion-profile.json",
|
||||
"capture": "collect-2d-gpu-occlusion.ppm",
|
||||
"command": [
|
||||
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-2d/faset_player",
|
||||
"--headless",
|
||||
"--frames",
|
||||
"6",
|
||||
"--visibility",
|
||||
"gpu-occlusion",
|
||||
"--profile",
|
||||
"/home/emil/Desktop/.worktrees/Faset_Engine-p2/.cache/p2-playable-exports-retry/evidence/collect-2d-gpu-occlusion-profile.json",
|
||||
"--capture",
|
||||
"/home/emil/Desktop/.worktrees/Faset_Engine-p2/.cache/p2-playable-exports-retry/evidence/collect-2d-gpu-occlusion.ppm"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "collect-3d",
|
||||
"mode": "gpu-frustum",
|
||||
"frames": 6,
|
||||
"gpu_visibility_active": true,
|
||||
"validation_errors": 0,
|
||||
"device": "NVIDIA GeForce RTX 2080 Ti",
|
||||
"capture_sha256": "7d18da12d685ed41705175fd7c65887d767668c1614b1b7669c99f05c694d435",
|
||||
"profile": "collect-3d-gpu-frustum-profile.json",
|
||||
"capture": "collect-3d-gpu-frustum.ppm",
|
||||
"command": [
|
||||
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-3d/faset_player",
|
||||
"--headless",
|
||||
"--frames",
|
||||
"6",
|
||||
"--visibility",
|
||||
"gpu-frustum",
|
||||
"--profile",
|
||||
"/home/emil/Desktop/.worktrees/Faset_Engine-p2/.cache/p2-playable-exports-retry/evidence/collect-3d-gpu-frustum-profile.json",
|
||||
"--capture",
|
||||
"/home/emil/Desktop/.worktrees/Faset_Engine-p2/.cache/p2-playable-exports-retry/evidence/collect-3d-gpu-frustum.ppm"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "collect-3d",
|
||||
"mode": "gpu-occlusion",
|
||||
"frames": 6,
|
||||
"gpu_visibility_active": true,
|
||||
"validation_errors": 0,
|
||||
"device": "NVIDIA GeForce RTX 2080 Ti",
|
||||
"capture_sha256": "7d18da12d685ed41705175fd7c65887d767668c1614b1b7669c99f05c694d435",
|
||||
"profile": "collect-3d-gpu-occlusion-profile.json",
|
||||
"capture": "collect-3d-gpu-occlusion.ppm",
|
||||
"command": [
|
||||
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-3d/faset_player",
|
||||
"--headless",
|
||||
"--frames",
|
||||
"6",
|
||||
"--visibility",
|
||||
"gpu-occlusion",
|
||||
"--profile",
|
||||
"/home/emil/Desktop/.worktrees/Faset_Engine-p2/.cache/p2-playable-exports-retry/evidence/collect-3d-gpu-occlusion-profile.json",
|
||||
"--capture",
|
||||
"/home/emil/Desktop/.worktrees/Faset_Engine-p2/.cache/p2-playable-exports-retry/evidence/collect-3d-gpu-occlusion.ppm"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,435 @@
|
||||
{
|
||||
"format": "faset.playable-export-verification",
|
||||
"version": 1,
|
||||
"started_utc": "2026-09-23T20:13:26.594779+00:00",
|
||||
"platform": "linux",
|
||||
"engine": "/home/emil/Desktop/.worktrees/Faset_Engine-p2",
|
||||
"editor": "/home/emil/Desktop/.worktrees/Faset_Engine-p2/build/p2-release/faset_editor",
|
||||
"standalone_root": "/tmp/faset-playable-exports-u_8rjufs",
|
||||
"frames_per_game": 120,
|
||||
"status": "passed",
|
||||
"projects": [
|
||||
{
|
||||
"name": "collect-2d",
|
||||
"dimension": 2,
|
||||
"source_inputs": [
|
||||
{
|
||||
"path": ".gitignore",
|
||||
"sha256": "53aa4d7124d4c8d93b8d7c4cb470b6c82b844e019a660d6243ffeadc50602de1"
|
||||
},
|
||||
{
|
||||
"path": "README.md",
|
||||
"sha256": "8cf5a2d6de849eb090b9ea6d5e27841f551bd06947e5054f0d2f59639a90edd0"
|
||||
},
|
||||
{
|
||||
"path": "Scenes/main.scene.json",
|
||||
"sha256": "be48a6d21385e717b6c8ebf9a3b4322eebbeff6bb067428e089ab5214be79854"
|
||||
},
|
||||
{
|
||||
"path": "Scripts/Gameplay.cpp",
|
||||
"sha256": "6b581b24da613e1915819de0a0f0ea820dd3333efa62c4b479a9ea7ffdbc6bcc"
|
||||
},
|
||||
{
|
||||
"path": "Scripts/Gameplay.hpp",
|
||||
"sha256": "4121587182ed4f74901b1c0757c53daadbf309af1d6bb5dd87fef142130ccbbe"
|
||||
},
|
||||
{
|
||||
"path": "project.faset.json",
|
||||
"sha256": "36e2acd32210f5489372a2331346a3294ead2395f0713e3e5fd2da4e83263689"
|
||||
}
|
||||
],
|
||||
"generation": "e10bfc78-962f-45ef-a570-1237628cc7ec",
|
||||
"configuration": "Release",
|
||||
"standalone_directory": "/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-2d",
|
||||
"executable": "faset_player",
|
||||
"package_file_count": 27,
|
||||
"asset_generations": {},
|
||||
"device": "NVIDIA GeForce RTX 2080 Ti",
|
||||
"validation_enabled": true,
|
||||
"validation_errors": 0,
|
||||
"completed_frames": 120,
|
||||
"summary_ms": {
|
||||
"gpu": {
|
||||
"max": 0.581792,
|
||||
"min": 0.55696,
|
||||
"p50": 0.56032,
|
||||
"p95": 0.571968,
|
||||
"samples": 120
|
||||
},
|
||||
"render_call": {
|
||||
"max": 8.92785,
|
||||
"min": 1.767093,
|
||||
"p50": 2.388886,
|
||||
"p95": 4.916754,
|
||||
"samples": 120
|
||||
},
|
||||
"renderer_cpu": {
|
||||
"max": 8.922791,
|
||||
"min": 1.762985,
|
||||
"p50": 2.372405,
|
||||
"p95": 4.910192,
|
||||
"samples": 120
|
||||
},
|
||||
"renderer_readback_cpu": {
|
||||
"max": 3.480115,
|
||||
"min": 0.461981,
|
||||
"p50": 0.631702,
|
||||
"p95": 1.483368,
|
||||
"samples": 120
|
||||
},
|
||||
"simulation": {
|
||||
"max": 4.035202,
|
||||
"min": 0.141437,
|
||||
"p50": 0.213794,
|
||||
"p95": 0.321327,
|
||||
"samples": 120
|
||||
},
|
||||
"snapshot": {
|
||||
"max": 0.740767,
|
||||
"min": 0.13285,
|
||||
"p50": 0.194106,
|
||||
"p95": 0.407779,
|
||||
"samples": 120
|
||||
},
|
||||
"wall": {
|
||||
"max": 9.833829,
|
||||
"min": 2.085394,
|
||||
"p50": 2.880784,
|
||||
"p95": 5.96917,
|
||||
"samples": 120
|
||||
}
|
||||
},
|
||||
"capture": {
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"sampled_colors": 7,
|
||||
"sha256": "f9d74067d87c1ebf30c6db372a26d93b7285791c8cb0307a24af5adb23bf201a"
|
||||
},
|
||||
"source_project_paths_unavailable": true,
|
||||
"status": "passed"
|
||||
},
|
||||
{
|
||||
"name": "collect-3d",
|
||||
"dimension": 3,
|
||||
"source_inputs": [
|
||||
{
|
||||
"path": ".gitignore",
|
||||
"sha256": "53aa4d7124d4c8d93b8d7c4cb470b6c82b844e019a660d6243ffeadc50602de1"
|
||||
},
|
||||
{
|
||||
"path": "Assets/exit-arch/create.py",
|
||||
"sha256": "9c7291124fb1498a3f992ef74afc39cd98f9cc3e2ff4687c633bece85d580905"
|
||||
},
|
||||
{
|
||||
"path": "Assets/exit-arch/manifest.json",
|
||||
"sha256": "7a13347adc89761fb02ebeab3c58ba87f319cd62f53ec87a3bb61bcd066ffa55"
|
||||
},
|
||||
{
|
||||
"path": "Assets/exit-arch/manifest.json.faset-import.json",
|
||||
"sha256": "ef4eef28a18a0cc40a40df75db34c97faa5d783b891265f862633f3aec514afc"
|
||||
},
|
||||
{
|
||||
"path": "Assets/exit-arch/payload/ee6c748a212905fc9c465cbe95c033e94b80be643624f4f240ad5353761205b3.glb",
|
||||
"sha256": "ee6c748a212905fc9c465cbe95c033e94b80be643624f4f240ad5353761205b3"
|
||||
},
|
||||
{
|
||||
"path": "Assets/exit-arch/source.blend",
|
||||
"sha256": "ff2676bec97ab778e531e87a185ad716049ea3b05b4a4f0027a6345737735035"
|
||||
},
|
||||
{
|
||||
"path": "README.md",
|
||||
"sha256": "2df5ca4df47ab5d3d05d41508201296d4ad5ec876245f19f061767ade6a30e8f"
|
||||
},
|
||||
{
|
||||
"path": "Scenes/main.scene.json",
|
||||
"sha256": "61b65baf79e52f07ac386a7f98acf985a1b09e88770cdde37ef461dc94b9dcd7"
|
||||
},
|
||||
{
|
||||
"path": "Scripts/Extensions/Beacon.hpp",
|
||||
"sha256": "c60d56161eead16f541835053ad32ac3333383d83015709c060b7d45e0af5a97"
|
||||
},
|
||||
{
|
||||
"path": "Scripts/Gameplay.cpp",
|
||||
"sha256": "5d419786a6861d7f14ed4eca54634694d8cd43be5dbbd60a2c6790db665c3a6a"
|
||||
},
|
||||
{
|
||||
"path": "Scripts/Gameplay.hpp",
|
||||
"sha256": "4121587182ed4f74901b1c0757c53daadbf309af1d6bb5dd87fef142130ccbbe"
|
||||
},
|
||||
{
|
||||
"path": "project.faset.json",
|
||||
"sha256": "43d273b1054ec9069369073f54cc1fc7efb3d6b699dcd342c552a2dc2ef852ef"
|
||||
}
|
||||
],
|
||||
"import": {
|
||||
"asset_id": "5832763b-3ed0-44d6-9088-0b524f196a91",
|
||||
"cache_hit": false,
|
||||
"diagnostics": [],
|
||||
"generation": "4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2",
|
||||
"manifest": {
|
||||
"asset_id": "5832763b-3ed0-44d6-9088-0b524f196a91",
|
||||
"files": [
|
||||
{
|
||||
"path": "meshes/mesh-fc069a07a87e0f831fd92efdbc4efa1f-0.fmesh",
|
||||
"sha256": "98b38aca7d2786c58a2265ba4d1f2255123f03d31d947e239232cf55bfdc2c97",
|
||||
"size": 928
|
||||
},
|
||||
{
|
||||
"path": "meshes/mesh-0961e2a3f92977836a3aa80cab09277e-0.fmesh",
|
||||
"sha256": "98b38aca7d2786c58a2265ba4d1f2255123f03d31d947e239232cf55bfdc2c97",
|
||||
"size": 928
|
||||
},
|
||||
{
|
||||
"path": "meshes/mesh-93b5b3e52cb6bb120fefb80e2d8e222b-0.fmesh",
|
||||
"sha256": "3875c16ea628d4126373ebfe07816621fbad3961596a2fcd112f1eec0e378071",
|
||||
"size": 928
|
||||
}
|
||||
],
|
||||
"generation": "4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2",
|
||||
"importer": "faset-gltf-1/cgltf-1.15",
|
||||
"input_key": {
|
||||
"bundle_sha256": "7a13347adc89761fb02ebeab3c58ba87f319cd62f53ec87a3bb61bcd066ffa55",
|
||||
"dependencies": {},
|
||||
"importer": "faset-gltf-1/cgltf-1.15",
|
||||
"settings": {},
|
||||
"source": "ee6c748a212905fc9c465cbe95c033e94b80be643624f4f240ad5353761205b3",
|
||||
"target_profile": "desktop-static-pbr-v1",
|
||||
"toolchain": {
|
||||
"cgltf": "360db1a95480fe102ae9c69b27c5d101167ff5ba",
|
||||
"stb": "2c980bb59875b0d32144a71867fbdebb2f77cd20"
|
||||
}
|
||||
},
|
||||
"kind": "scene",
|
||||
"materials": [
|
||||
{
|
||||
"alpha_cutoff": 0.5,
|
||||
"alpha_mode": "OPAQUE",
|
||||
"base_color": [
|
||||
0.2199999988079071,
|
||||
0.28999999165534973,
|
||||
0.3400000035762787,
|
||||
1.0
|
||||
],
|
||||
"base_color_texture": -1,
|
||||
"double_sided": true,
|
||||
"emissive": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"emissive_texture": -1,
|
||||
"format": "faset.material",
|
||||
"id": "material-bb63b094febbf90bb7049c9bcf7587bc",
|
||||
"metallic": 0.07999999821186066,
|
||||
"metallic_roughness_texture": -1,
|
||||
"name": "Weathered stone",
|
||||
"normal_texture": -1,
|
||||
"occlusion_texture": -1,
|
||||
"roughness": 0.800000011920929,
|
||||
"unlit": false,
|
||||
"version": 1
|
||||
}
|
||||
],
|
||||
"meshes": [
|
||||
{
|
||||
"id": "mesh-fc069a07a87e0f831fd92efdbc4efa1f",
|
||||
"name": "Cube.001",
|
||||
"primitives": [
|
||||
{
|
||||
"material": 0,
|
||||
"path": "meshes/mesh-fc069a07a87e0f831fd92efdbc4efa1f-0.fmesh"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "mesh-0961e2a3f92977836a3aa80cab09277e",
|
||||
"name": "Cube.002",
|
||||
"primitives": [
|
||||
{
|
||||
"material": 0,
|
||||
"path": "meshes/mesh-0961e2a3f92977836a3aa80cab09277e-0.fmesh"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "mesh-93b5b3e52cb6bb120fefb80e2d8e222b",
|
||||
"name": "Cube.003",
|
||||
"primitives": [
|
||||
{
|
||||
"material": 0,
|
||||
"path": "meshes/mesh-93b5b3e52cb6bb120fefb80e2d8e222b-0.fmesh"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes": [
|
||||
{
|
||||
"id": "node-cec6e8cea80cf5a98ba3263a0156bee4",
|
||||
"local_transform": [
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.4500000476837158,
|
||||
1.2999999523162842,
|
||||
1.0
|
||||
],
|
||||
"mesh": 0,
|
||||
"name": "Left post",
|
||||
"parent_id": "",
|
||||
"stable_source_id": true
|
||||
},
|
||||
{
|
||||
"id": "node-5f8a90a6c4d27020d20bd4fa81d1d958",
|
||||
"local_transform": [
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.4500000476837158,
|
||||
-1.2999999523162842,
|
||||
1.0
|
||||
],
|
||||
"mesh": 1,
|
||||
"name": "Right post",
|
||||
"parent_id": "",
|
||||
"stable_source_id": true
|
||||
},
|
||||
{
|
||||
"id": "node-482463e486a8d1fd741340c653cd128f",
|
||||
"local_transform": [
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
3.0,
|
||||
0.0,
|
||||
1.0
|
||||
],
|
||||
"mesh": 2,
|
||||
"name": "Lintel",
|
||||
"parent_id": "",
|
||||
"stable_source_id": true
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
"node-cec6e8cea80cf5a98ba3263a0156bee4",
|
||||
"node-5f8a90a6c4d27020d20bd4fa81d1d958",
|
||||
"node-482463e486a8d1fd741340c653cd128f",
|
||||
"mesh-fc069a07a87e0f831fd92efdbc4efa1f",
|
||||
"mesh-0961e2a3f92977836a3aa80cab09277e",
|
||||
"mesh-93b5b3e52cb6bb120fefb80e2d8e222b",
|
||||
"material-bb63b094febbf90bb7049c9bcf7587bc"
|
||||
],
|
||||
"payload_source": "/home/emil/Desktop/.worktrees/Faset_Engine-p2/.cache/p2-playable-exports-retry/Faset Café 世界/collect-3d/Assets/exit-arch/payload/ee6c748a212905fc9c465cbe95c033e94b80be643624f4f240ad5353761205b3.glb",
|
||||
"schema_version": 1,
|
||||
"settings": {},
|
||||
"source": "/home/emil/Desktop/.worktrees/Faset_Engine-p2/.cache/p2-playable-exports-retry/Faset Café 世界/collect-3d/Assets/exit-arch/manifest.json",
|
||||
"source_sha256": "ee6c748a212905fc9c465cbe95c033e94b80be643624f4f240ad5353761205b3",
|
||||
"textures": []
|
||||
},
|
||||
"previous_generation": "",
|
||||
"removed_output_ids": []
|
||||
},
|
||||
"generation": "013fe953-8787-45ac-963f-ffbd9ac5f636",
|
||||
"configuration": "Release",
|
||||
"standalone_directory": "/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-3d",
|
||||
"executable": "faset_player",
|
||||
"package_file_count": 32,
|
||||
"asset_generations": {
|
||||
"5832763b-3ed0-44d6-9088-0b524f196a91": "4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2"
|
||||
},
|
||||
"device": "NVIDIA GeForce RTX 2080 Ti",
|
||||
"validation_enabled": true,
|
||||
"validation_errors": 0,
|
||||
"completed_frames": 120,
|
||||
"summary_ms": {
|
||||
"gpu": {
|
||||
"max": 0.603104,
|
||||
"min": 0.57088,
|
||||
"p50": 0.57456,
|
||||
"p95": 0.587488,
|
||||
"samples": 120
|
||||
},
|
||||
"render_call": {
|
||||
"max": 15.27347,
|
||||
"min": 1.95597,
|
||||
"p50": 2.713318,
|
||||
"p95": 8.219264,
|
||||
"samples": 120
|
||||
},
|
||||
"renderer_cpu": {
|
||||
"max": 15.265616,
|
||||
"min": 1.95115,
|
||||
"p50": 2.705423,
|
||||
"p95": 8.212883,
|
||||
"samples": 120
|
||||
},
|
||||
"renderer_readback_cpu": {
|
||||
"max": 5.034867,
|
||||
"min": 0.493391,
|
||||
"p50": 0.680484,
|
||||
"p95": 2.359841,
|
||||
"samples": 120
|
||||
},
|
||||
"simulation": {
|
||||
"max": 9.318287,
|
||||
"min": 0.205918,
|
||||
"p50": 0.288985,
|
||||
"p95": 1.079266,
|
||||
"samples": 120
|
||||
},
|
||||
"snapshot": {
|
||||
"max": 2.595406,
|
||||
"min": 0.178897,
|
||||
"p50": 0.267054,
|
||||
"p95": 0.536412,
|
||||
"samples": 120
|
||||
},
|
||||
"wall": {
|
||||
"max": 15.872521,
|
||||
"min": 2.389648,
|
||||
"p50": 3.497057,
|
||||
"p95": 9.960939,
|
||||
"samples": 120
|
||||
}
|
||||
},
|
||||
"capture": {
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"sampled_colors": 42,
|
||||
"sha256": "914060401de93d08b33bf09a1e210859e491a0060c331e5e2044f517356f4980"
|
||||
},
|
||||
"source_project_paths_unavailable": true,
|
||||
"status": "passed"
|
||||
}
|
||||
],
|
||||
"finished_utc": "2026-09-23T20:19:17.315585+00:00"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
spirv-val --target-env vulkan1.3 (Release bundle)
|
||||
compatibility.spv sha256=83d519113c99c7b14cf92bc6e0e9867edd91da1f370f964df6ba978d51470a54 exit=0
|
||||
fragmentMain.spv sha256=f5c4f289917ecab5d00d543c053aac1d10e6cca311fd172daf06d315160a3505 exit=0
|
||||
gpuCullMain.spv sha256=7691360ec55f41d40d43652f506b051cef8b3a3ddcdcc7db61a7d4d97f9e87d8 exit=0
|
||||
gpuHzbMain.spv sha256=08682362ee2120ed19d260e613285071747c3e436bb09bb6238e46f9cedc2308 exit=0
|
||||
gpuPostCullMain.spv sha256=62cb72e356346e1511c6d640a3cecb4a6e5283795338299b357edae5f7f52be4 exit=0
|
||||
gpuShadowMain.spv sha256=9078577943bf9c51220d5341434834eb4a28cf0f0f6203bad2b96e1b0e11b360 exit=0
|
||||
gpuVertexMain.spv sha256=041c1e5f0db4007c51e01ed5db6e0fbf4db09b8dcbcb085c0c73612cdc682fe3 exit=0
|
||||
shadowMain.spv sha256=7643b4d688492b5ee923b9606f0b0e70343ca05fa67673838206119a6f86d8d8 exit=0
|
||||
vertexMain.spv sha256=1ad2631c35d654f48166321ae43d4165043e1b919b14f1dc61caf97b1ada0898 exit=0
|
||||
@@ -0,0 +1,90 @@
|
||||
#include <faset/render/renderer.hpp>
|
||||
|
||||
#include <exception>
|
||||
#include <filesystem>
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
#include <utility>
|
||||
|
||||
using namespace faset::render;
|
||||
|
||||
namespace {
|
||||
std::shared_ptr<const Mesh> coarse_mesh() {
|
||||
auto mesh = std::make_shared<Mesh>();
|
||||
mesh->vertices = {
|
||||
Vertex{{-1, -1, -1}, {-1, -1, -1}},
|
||||
Vertex{{1, -1, -1}, {1, -1, -1}},
|
||||
Vertex{{0, 1, 0}, {0, 1, 0}},
|
||||
Vertex{{0, -1, 1}, {0, -1, 1}},
|
||||
};
|
||||
mesh->indices = {0, 2, 1, 0, 1, 3, 1, 2, 3, 2, 0, 3};
|
||||
return mesh;
|
||||
}
|
||||
|
||||
VisibilityMode mode_from_argument(std::string_view argument) {
|
||||
if (argument == "direct")
|
||||
return VisibilityMode::Direct;
|
||||
if (argument == "frustum")
|
||||
return VisibilityMode::GpuFrustum;
|
||||
if (argument == "occlusion")
|
||||
return VisibilityMode::GpuOcclusion;
|
||||
throw std::invalid_argument("mode must be direct, frustum, or occlusion");
|
||||
}
|
||||
} // namespace
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
try {
|
||||
if (argc > 3)
|
||||
throw std::invalid_argument("usage: faset_p2_visibility_example "
|
||||
"[direct|frustum|occlusion] [capture.ppm]");
|
||||
RendererConfig config;
|
||||
config.width = 640;
|
||||
config.height = 360;
|
||||
config.headless = true;
|
||||
config.visibility_mode = argc > 1 ? mode_from_argument(argv[1])
|
||||
: VisibilityMode::GpuOcclusion;
|
||||
config.visibility_diagnostics = true;
|
||||
Renderer renderer(config);
|
||||
|
||||
Snapshot frame;
|
||||
frame.view_id = "p2-lod-example-camera";
|
||||
frame.eye = {0, 2, 12};
|
||||
frame.projection = perspective(.9f, float(config.width) / config.height, .1f, 100);
|
||||
frame.view_projection = multiply(frame.projection,
|
||||
look_at(frame.eye, {0, 0, 0}));
|
||||
const auto prepared_coarse = coarse_mesh();
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
DrawItem item;
|
||||
item.mesh = cube_mesh();
|
||||
item.lod_meshes = {prepared_coarse};
|
||||
item.instance_key = "example/cube/" + std::to_string(i);
|
||||
const bool near_detail = i == 2;
|
||||
item.model = transform({float(i - 4) * 1.8f, 0,
|
||||
near_detail ? 6.f : (i % 2 ? -5.f : 0.f)},
|
||||
{}, near_detail ? Vec3{4, 4, 4} : Vec3{1, 1, 1});
|
||||
item.color = {0.28f + .07f * i, .6f, .8f, 1};
|
||||
item.cast_shadow = false;
|
||||
frame.draws.push_back(std::move(item));
|
||||
}
|
||||
|
||||
// The second and later frames have compatible HZB history for this view.
|
||||
for (int i = 0; i < 3; ++i)
|
||||
renderer.render(frame);
|
||||
const auto& stats = renderer.stats();
|
||||
renderer.capture(argc > 2 ? std::filesystem::path(argv[2])
|
||||
: std::filesystem::path("p2-visibility.ppm"));
|
||||
std::cout << "GPU path: " << (stats.gpu_visibility_active ? "active" : "unavailable")
|
||||
<< ", bins: " << stats.gpu_bins
|
||||
<< ", visible: " << stats.gpu_visible_instances
|
||||
<< ", LOD0: " << stats.lod_counts[0]
|
||||
<< ", LOD1: " << stats.lod_counts[1]
|
||||
<< ", validation errors: " << stats.validation_errors << '\n';
|
||||
return stats.validation_errors ? 1 : 0;
|
||||
} catch (const std::exception& error) {
|
||||
std::cerr << error.what() << '\n';
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,7 @@ class DebugOverlay {
|
||||
void set_visible(bool);
|
||||
// F12 toggles the overlay; events captured by its widgets are removed for this frame.
|
||||
std::vector<render::Event> process_events(std::span<const render::Event>);
|
||||
void append(render::Snapshot&, const render::Renderer&, float delta_seconds);
|
||||
void append(render::Snapshot&, render::Renderer&, float delta_seconds);
|
||||
|
||||
private:
|
||||
struct Impl;
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include <cstdint>
|
||||
#include <filesystem>
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
@@ -39,6 +40,11 @@ struct DrawItem {
|
||||
float metallic{0.0f};
|
||||
bool cast_shadow{true};
|
||||
std::shared_ptr<const Texture> texture{};
|
||||
// Empty means an ad-hoc draw without temporal visibility state. Scene extraction
|
||||
// derives this from persistent object and primitive identities, not draw order.
|
||||
std::string instance_key{};
|
||||
// Optional prepared coarser meshes: element zero is LOD 1; mesh is LOD 0.
|
||||
std::vector<std::shared_ptr<const Mesh>> lod_meshes{};
|
||||
};
|
||||
struct Sprite {
|
||||
Vec3 position{};
|
||||
@@ -79,6 +85,9 @@ struct Snapshot {
|
||||
// target.
|
||||
std::array<float, 4> scene_rect{};
|
||||
Mat4 view_projection{identity};
|
||||
// Supplying the projection separately lets temporal visibility invalidate
|
||||
// history on FOV/near/far changes without invalidating normal camera motion.
|
||||
Mat4 projection{identity};
|
||||
Vec3 eye{4, 3, 5};
|
||||
Vec3 light_direction{-0.5f, -1, -0.3f};
|
||||
Color clear_color{0.055f, 0.065f, 0.085f, 1};
|
||||
@@ -88,15 +97,23 @@ struct Snapshot {
|
||||
std::vector<Quad> ui_quads;
|
||||
std::vector<Text> ui_text;
|
||||
std::vector<UiTriangles> ui_triangles;
|
||||
// Distinguishes temporal histories when one Renderer displays different views.
|
||||
std::string view_id{};
|
||||
bool camera_cut{};
|
||||
};
|
||||
enum class VisibilityMode { Direct, GpuFrustum, GpuOcclusion };
|
||||
// CPU-only validation used before publishing a game or creating Vulkan pipelines.
|
||||
void validate_shader_bundle(const std::filesystem::path& directory);
|
||||
void validate_gpu_shader_bundle(const std::filesystem::path& directory);
|
||||
|
||||
struct RendererConfig {
|
||||
std::uint32_t width{1280}, height{720};
|
||||
std::string title{"Faset Engine"};
|
||||
bool headless{false};
|
||||
bool validation{true};
|
||||
VisibilityMode visibility_mode{VisibilityMode::Direct};
|
||||
// GPU counter readback is diagnostic-only; normal visibility uses no CPU feedback.
|
||||
bool visibility_diagnostics{false};
|
||||
// Optional isolated shader bundle, useful for editor preview and shader reload tests.
|
||||
std::filesystem::path shader_directory{};
|
||||
};
|
||||
@@ -132,9 +149,20 @@ struct FrameStats {
|
||||
std::uint64_t gpu_allocated_bytes{};
|
||||
std::uint32_t texture_count{};
|
||||
std::uint32_t vertices{}, draw_calls{}, culled_meshes{}, validation_errors{};
|
||||
bool gpu_visibility_active{}, hzb_valid{};
|
||||
bool visibility_counters_valid{};
|
||||
std::uint32_t gpu_bins{}, gpu_visible_instances{}, gpu_frustum_rejected{};
|
||||
std::uint32_t gpu_occlusion_deferred{}, gpu_post_visible{};
|
||||
std::array<std::uint32_t, 4> lod_counts{};
|
||||
double cpu_ms{}, gpu_ms{}, readback_cpu_ms{};
|
||||
double gpu_main_cull_ms{}, gpu_main_raster_ms{}, gpu_hzb_ms{};
|
||||
double gpu_post_cull_ms{}, gpu_post_raster_ms{};
|
||||
std::string device;
|
||||
};
|
||||
struct HzbDebugImage {
|
||||
std::uint32_t width{}, height{};
|
||||
std::vector<std::uint8_t> rgba;
|
||||
};
|
||||
class Renderer {
|
||||
public:
|
||||
explicit Renderer(const RendererConfig& = {});
|
||||
@@ -146,6 +174,12 @@ class Renderer {
|
||||
std::vector<Event> poll_events();
|
||||
void render(const Snapshot&);
|
||||
void resize(std::uint32_t width, std::uint32_t height);
|
||||
void set_visibility_mode(VisibilityMode);
|
||||
VisibilityMode visibility_mode() const;
|
||||
void set_visibility_diagnostics(bool enabled);
|
||||
// Reads the most recently completed HZB mip for editor diagnostics only.
|
||||
// Normal visibility decisions remain entirely on the GPU.
|
||||
std::optional<HzbDebugImage> hzb_debug_image(std::uint32_t mip = 0);
|
||||
// Rebuilds graphics pipelines from SPIR-V; a failure preserves the current pipelines.
|
||||
bool reload_shaders(std::string& error);
|
||||
// Saves the latest completed frame as a portable RGB PPM image.
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
#pragma once
|
||||
#include <faset/render/renderer.hpp>
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
#include <span>
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
#include <unordered_map>
|
||||
#include <unordered_set>
|
||||
#include <vector>
|
||||
|
||||
namespace faset::render {
|
||||
struct Bounds {
|
||||
Vec3 min{};
|
||||
Vec3 max{};
|
||||
};
|
||||
|
||||
// Mesh bounds are computed from all vertices; world bounds transform all eight
|
||||
// corners of the local AABB, including rotation, reflection and nonuniform scale.
|
||||
// Empty or nonfinite geometry/matrices are rejected instead of being culled.
|
||||
Bounds local_bounds(const Mesh& mesh);
|
||||
Bounds transformed_bounds(const Bounds& local, const Mat4& model);
|
||||
Bounds transformed_bounds(const Mesh& mesh, const Mat4& model);
|
||||
|
||||
struct InstanceUpdate {
|
||||
std::uint32_t slot{};
|
||||
std::uint64_t generation{};
|
||||
Mat4 previous_model{identity};
|
||||
Bounds previous_bounds{};
|
||||
bool previous_valid{};
|
||||
};
|
||||
|
||||
// One update per logical instance per rendered frame. finish_frame() promotes the
|
||||
// current state to *rendered* history and retires keys absent from that frame.
|
||||
// Reordering the input never renumbers live instances. Mesh changes retain the
|
||||
// slot but advance its generation; slot reuse also advances its generation.
|
||||
class InstanceTracker {
|
||||
public:
|
||||
// Prefer this overload for engine-owned meshes. Retaining the owner prevents
|
||||
// allocator address reuse from impersonating the previously rendered mesh.
|
||||
InstanceUpdate update(std::string_view key, std::shared_ptr<const Mesh> mesh_identity,
|
||||
const Mat4& model, const Bounds& world_bounds,
|
||||
std::string_view view_id);
|
||||
// Non-owning overload for meshes whose lifetime is guaranteed by the caller.
|
||||
InstanceUpdate update(std::string_view key, const Mesh* mesh_identity, const Mat4& model,
|
||||
const Bounds& world_bounds, std::string_view view_id);
|
||||
void finish_frame();
|
||||
void invalidate_view(std::string_view view_id);
|
||||
|
||||
private:
|
||||
struct Record {
|
||||
std::uint32_t slot{};
|
||||
std::uint64_t generation{};
|
||||
const Mesh* mesh{};
|
||||
std::shared_ptr<const Mesh> mesh_owner{};
|
||||
Mat4 current_model{identity}, previous_model{identity};
|
||||
Bounds current_bounds{}, previous_bounds{};
|
||||
std::string current_view, previous_view;
|
||||
std::uint64_t seen_frame{};
|
||||
bool committed{};
|
||||
};
|
||||
std::unordered_map<std::string, Record> records_;
|
||||
std::vector<std::uint32_t> free_slots_;
|
||||
std::vector<std::uint64_t> slot_generations_;
|
||||
std::unordered_set<std::string> invalid_views_;
|
||||
std::uint64_t frame_{1};
|
||||
};
|
||||
|
||||
// thresholds[i] is the projected-pixel boundary between levels i and i+1,
|
||||
// ordered strictly high-to-low. Moving toward a coarser level requires size <
|
||||
// threshold*(1-hysteresis); toward a finer level requires size >
|
||||
// threshold*(1+hysteresis). SIZE_MAX means no prior level and uses raw thresholds.
|
||||
// available is optional; when given it has thresholds.size()+1 entries, with 0
|
||||
// marking missing prepared geometry. Nearest available wins; ties prefer finer.
|
||||
std::size_t select_lod(float projected_pixels, std::size_t previous_level,
|
||||
std::span<const float> thresholds, float hysteresis,
|
||||
std::span<const std::uint8_t> available = {});
|
||||
} // namespace faset::render
|
||||
@@ -44,6 +44,7 @@ nav:
|
||||
- Editor workspace: editor/workspace.md
|
||||
- Scene templates: editor/templates.md
|
||||
- Assets and Blender: editor/assets.md
|
||||
- GPU visibility and mesh LOD: editor/visibility-lod.md
|
||||
- Build, Play, and export: editor/export.md
|
||||
- Profiling and measurements: editor/profiling.md
|
||||
- Optional developer diagnostics: editor/diagnostics.md
|
||||
|
||||
@@ -0,0 +1,256 @@
|
||||
// GPU-visible opaque scene. All host records use 16-byte lanes; reflected strides
|
||||
// are validated before pipelines are created. Sprites/UI and shadow caster selection
|
||||
// remain independent of camera culling.
|
||||
struct GpuSceneVertex {
|
||||
float3 position : POSITION;
|
||||
float3 normal : NORMAL;
|
||||
float4 color : COLOR0;
|
||||
float2 uv : TEXCOORD0;
|
||||
};
|
||||
struct GpuSceneOutput {
|
||||
float4 position : SV_Position;
|
||||
float3 world : TEXCOORD0;
|
||||
float3 normal : NORMAL;
|
||||
float4 color : COLOR0;
|
||||
float2 material : TEXCOORD1;
|
||||
float2 uv : TEXCOORD2;
|
||||
};
|
||||
struct InstanceRecord {
|
||||
column_major float4x4 model; // 0..63
|
||||
float4 normalRow0; // 64..79, inverse-transpose 3x3
|
||||
float4 normalRow1; // 80..95
|
||||
float4 normalRow2; // 96..111
|
||||
float4 color; // 112..127
|
||||
float4 material; // 128..143: roughness, metallic, texture flags
|
||||
float4 currentCenter; // 144..159: world AABB center
|
||||
float4 currentExtent; // 160..175: world AABB half extents
|
||||
float4 previousCenter; // 176..191
|
||||
float4 previousExtent; // 192..207
|
||||
uint4 metadata; // 208..223: x=previousValid, others reserved
|
||||
};
|
||||
struct ViewRecord {
|
||||
column_major float4x4 currentViewProjection; // 0..63
|
||||
column_major float4x4 previousViewProjection; // 64..127
|
||||
float4 currentViewport; // 128..143: x/y/width/height in target pixels
|
||||
float4 previousViewport; // 144..159
|
||||
uint4 currentHzbSize; // 160..175: width/height/mipCount/reserved
|
||||
uint4 previousHzbSize; // 176..191
|
||||
uint4 flags; // 192..207: x=historyValid
|
||||
};
|
||||
struct BinRecord {
|
||||
uint candidateFirst, candidateCount, visibleBase, capacity;
|
||||
};
|
||||
struct Candidate {
|
||||
uint instanceId, binIndex, flags, reserved;
|
||||
};
|
||||
// Exactly VkDrawIndirectCommand: vertexCount, instanceCount, firstVertex, firstInstance.
|
||||
struct IndirectArgs {
|
||||
uint vertexCount, instanceCount, firstVertex, firstInstance;
|
||||
};
|
||||
|
||||
#if defined(FASET_GPU_GRAPHICS)
|
||||
struct GpuFrameParameters {
|
||||
column_major float4x4 lightViewProjection; // same first 96 bytes as baseline fragment
|
||||
float4 lightDirection;
|
||||
float4 eye;
|
||||
uint4 drawInfo; // x=visible ID range base; firstInstance is always zero
|
||||
};
|
||||
[[vk::push_constant]] ConstantBuffer<GpuFrameParameters> gpuFrame;
|
||||
[[vk::binding(0,1)]] StructuredBuffer<InstanceRecord> gfxInstances;
|
||||
[[vk::binding(1,1)]] StructuredBuffer<uint> gfxVisibleIds;
|
||||
[[vk::binding(2,1)]] StructuredBuffer<ViewRecord> gfxViews;
|
||||
|
||||
[shader("vertex")]
|
||||
GpuSceneOutput gpuVertexMain(GpuSceneVertex vertex, uint drawInstance : SV_InstanceID) {
|
||||
InstanceRecord instance = gfxInstances[gfxVisibleIds[gpuFrame.drawInfo.x + drawInstance]];
|
||||
float4 world = mul(instance.model, float4(vertex.position, 1));
|
||||
GpuSceneOutput output;
|
||||
output.position = mul(gfxViews[0].currentViewProjection, world);
|
||||
output.world = world.xyz;
|
||||
float3 normal = float3(dot(instance.normalRow0.xyz, vertex.normal),
|
||||
dot(instance.normalRow1.xyz, vertex.normal),
|
||||
dot(instance.normalRow2.xyz, vertex.normal));
|
||||
float normalLength = length(normal);
|
||||
output.normal = normalLength > 1e-8 ? normal / normalLength : float3(0, 0, 0);
|
||||
output.color = vertex.color * instance.color;
|
||||
output.material = instance.material.xy;
|
||||
output.uv = vertex.uv;
|
||||
return output;
|
||||
}
|
||||
|
||||
[shader("vertex")]
|
||||
float4 gpuShadowMain(GpuSceneVertex vertex, uint drawInstance : SV_InstanceID) : SV_Position {
|
||||
InstanceRecord instance = gfxInstances[gfxVisibleIds[gpuFrame.drawInfo.x + drawInstance]];
|
||||
return mul(gpuFrame.lightViewProjection, mul(instance.model, float4(vertex.position, 1)));
|
||||
}
|
||||
|
||||
#elif defined(FASET_GPU_CULL)
|
||||
struct CullParameters {
|
||||
uint candidateCount;
|
||||
uint deferredCapacity;
|
||||
uint reserved0;
|
||||
uint reserved1;
|
||||
};
|
||||
[[vk::push_constant]] ConstantBuffer<CullParameters> cullParameters;
|
||||
[[vk::binding(0,0)]] StructuredBuffer<InstanceRecord> cullInstances;
|
||||
[[vk::binding(1,0)]] StructuredBuffer<Candidate> candidates;
|
||||
[[vk::binding(2,0)]] StructuredBuffer<BinRecord> bins;
|
||||
[[vk::binding(3,0)]] RWStructuredBuffer<uint> visibleIds;
|
||||
[[vk::binding(4,0)]] RWStructuredBuffer<IndirectArgs> args;
|
||||
[[vk::binding(5,0)]] RWStructuredBuffer<uint> deferredIds;
|
||||
[[vk::binding(6,0)]] RWStructuredBuffer<uint> deferredCount;
|
||||
[[vk::binding(7,0)]] Texture2D<float> previousHzb;
|
||||
[[vk::binding(8,0)]] Texture2D<float> currentHzb;
|
||||
[[vk::binding(9,0)]] StructuredBuffer<ViewRecord> cullViews;
|
||||
|
||||
float4 boundsCorner(float4 center, float4 extent, uint corner) {
|
||||
return float4(center.xyz + extent.xyz * float3((corner & 1) != 0 ? 1 : -1,
|
||||
(corner & 2) != 0 ? 1 : -1,
|
||||
(corner & 4) != 0 ? 1 : -1), 1);
|
||||
}
|
||||
bool finiteClip(float4 clip) {
|
||||
return all(isfinite(clip));
|
||||
}
|
||||
// A plane may reject an AABB only when all eight corners are strictly outside.
|
||||
// Nonfinite arithmetic fails open so malformed data cannot cause disappearing meshes.
|
||||
bool inFrustum(float4 center, float4 extent, float4x4 viewProjection) {
|
||||
uint rejected[6] = {0, 0, 0, 0, 0, 0};
|
||||
[unroll] for (uint corner = 0; corner < 8; ++corner) {
|
||||
float4 clip = mul(viewProjection, boundsCorner(center, extent, corner));
|
||||
if (!finiteClip(clip)) return true;
|
||||
float planes[6] = {clip.x + clip.w, clip.w - clip.x,
|
||||
clip.y + clip.w, clip.w - clip.y,
|
||||
clip.z, clip.w - clip.z};
|
||||
[unroll] for (uint plane = 0; plane < 6; ++plane)
|
||||
rejected[plane] += planes[plane] < 0 ? 1 : 0;
|
||||
}
|
||||
[unroll] for (uint plane = 0; plane < 6; ++plane)
|
||||
if (rejected[plane] == 8) return false;
|
||||
return true;
|
||||
}
|
||||
// Ordinary Z: the HZB contains the furthest depth (maximum) in every footprint.
|
||||
// The nearest candidate depth must be farther than *all* those samples to occlude.
|
||||
bool occluded(float4 center, float4 extent, float4x4 viewProjection,
|
||||
float4 viewport, uint4 pyramidSize, Texture2D<float> pyramid) {
|
||||
if (pyramidSize.x == 0 || pyramidSize.y == 0 || pyramidSize.z == 0 ||
|
||||
viewport.z <= 0 || viewport.w <= 0) return false;
|
||||
float2 minPixel = float2(1e30, 1e30), maxPixel = float2(-1e30, -1e30);
|
||||
float nearestDepth = 1;
|
||||
[unroll] for (uint corner = 0; corner < 8; ++corner) {
|
||||
float4 clip = mul(viewProjection, boundsCorner(center, extent, corner));
|
||||
// Near-plane crossings and perspective singularities are always visible.
|
||||
if (!finiteClip(clip) || clip.w <= 0 || clip.z <= 0 || clip.z >= clip.w) return false;
|
||||
float3 projected = clip.xyz / clip.w;
|
||||
float2 pixel = viewport.xy + (projected.xy * 0.5 + 0.5) * viewport.zw;
|
||||
if (!all(isfinite(pixel)) || !isfinite(projected.z)) return false;
|
||||
minPixel = min(minPixel, pixel);
|
||||
maxPixel = max(maxPixel, pixel);
|
||||
nearestDepth = min(nearestDepth, projected.z);
|
||||
}
|
||||
if (minPixel.x < 0 || minPixel.y < 0 || maxPixel.x >= pyramidSize.x ||
|
||||
maxPixel.y >= pyramidSize.y) return false;
|
||||
float extentPixels = max(maxPixel.x - minPixel.x, maxPixel.y - minPixel.y);
|
||||
uint mip = min((uint)ceil(log2(max(extentPixels, 1.0))), pyramidSize.z - 1);
|
||||
uint2 size = max(uint2(1, 1), (pyramidSize.xy + ((1u << mip) - 1)) >> mip);
|
||||
uint2 first = min((uint2)floor(minPixel / (1u << mip)), size - 1);
|
||||
uint2 last = min((uint2)floor(maxPixel / (1u << mip)), size - 1);
|
||||
float furthest = 0;
|
||||
for (uint y = first.y; y <= last.y; ++y)
|
||||
for (uint x = first.x; x <= last.x; ++x)
|
||||
furthest = max(furthest, pyramid.Load(int3(x, y, mip)));
|
||||
return nearestDepth > furthest + 0.0001;
|
||||
}
|
||||
bool appendVisible(uint binIndex, uint instanceId) {
|
||||
BinRecord bin = bins[binIndex];
|
||||
// Every candidate is dispatched once and each bin reserves its full candidate
|
||||
// count. A fetch-add therefore needs no retry on valid host-generated input.
|
||||
uint slot;
|
||||
InterlockedAdd(args[binIndex].instanceCount, 1u, slot);
|
||||
if (slot < bin.capacity) {
|
||||
visibleIds[bin.visibleBase + slot] = instanceId;
|
||||
return true;
|
||||
}
|
||||
// Keep the final indirect count bounded even if a malformed candidate table
|
||||
// violates that invariant. No raster pass reads it until this dispatch ends.
|
||||
uint ignored;
|
||||
InterlockedAdd(args[binIndex].instanceCount, 0xffffffffu, ignored);
|
||||
return false;
|
||||
}
|
||||
bool appendDeferred(uint candidateIndex) {
|
||||
uint slot;
|
||||
InterlockedAdd(deferredCount[0], 1u, slot);
|
||||
if (slot < cullParameters.deferredCapacity) {
|
||||
deferredIds[slot] = candidateIndex;
|
||||
return true;
|
||||
}
|
||||
uint ignored;
|
||||
InterlockedAdd(deferredCount[0], 0xffffffffu, ignored);
|
||||
return false;
|
||||
}
|
||||
[shader("compute")]
|
||||
[numthreads(64, 1, 1)]
|
||||
void gpuCullMain(uint3 dispatchId : SV_DispatchThreadID) {
|
||||
uint index = dispatchId.x + cullParameters.reserved0;
|
||||
if (index >= cullParameters.candidateCount) return;
|
||||
Candidate candidate = candidates[index];
|
||||
InstanceRecord instance = cullInstances[candidate.instanceId];
|
||||
ViewRecord view = cullViews[0];
|
||||
if (!inFrustum(instance.currentCenter, instance.currentExtent,
|
||||
view.currentViewProjection)) return;
|
||||
bool guessedHidden = view.flags.x != 0 && instance.metadata.x != 0 &&
|
||||
occluded(instance.previousCenter, instance.previousExtent,
|
||||
view.previousViewProjection, view.previousViewport,
|
||||
view.previousHzbSize, previousHzb);
|
||||
if (guessedHidden && appendDeferred(index)) return;
|
||||
appendVisible(candidate.binIndex, candidate.instanceId);
|
||||
}
|
||||
[shader("compute")]
|
||||
[numthreads(64, 1, 1)]
|
||||
void gpuPostCullMain(uint3 dispatchId : SV_DispatchThreadID) {
|
||||
uint index = dispatchId.x + cullParameters.reserved0;
|
||||
if (index >= cullParameters.deferredCapacity || index >= deferredCount[0]) return;
|
||||
Candidate candidate = candidates[deferredIds[index]];
|
||||
InstanceRecord instance = cullInstances[candidate.instanceId];
|
||||
ViewRecord view = cullViews[0];
|
||||
if (!occluded(instance.currentCenter, instance.currentExtent,
|
||||
view.currentViewProjection, view.currentViewport,
|
||||
view.currentHzbSize, currentHzb))
|
||||
appendVisible(candidate.binIndex, candidate.instanceId);
|
||||
}
|
||||
|
||||
#elif defined(FASET_GPU_HZB)
|
||||
struct HzbParameters {
|
||||
uint sourceWidth, sourceHeight, outputWidth, outputHeight;
|
||||
};
|
||||
[[vk::push_constant]] ConstantBuffer<HzbParameters> hzbParameters;
|
||||
[[vk::binding(0,0)]] Texture2D<float> hzbSource;
|
||||
[[vk::binding(1,0)]] [vk::image_format("r32f")] RWTexture2D<float> hzbOutput;
|
||||
[shader("compute")]
|
||||
[numthreads(8, 8, 1)]
|
||||
void gpuHzbMain(uint3 dispatchId : SV_DispatchThreadID) {
|
||||
uint2 pixel = dispatchId.xy;
|
||||
if (pixel.x >= hzbParameters.outputWidth || pixel.y >= hzbParameters.outputHeight) return;
|
||||
if (hzbParameters.outputWidth >= hzbParameters.sourceWidth &&
|
||||
hzbParameters.outputHeight >= hzbParameters.sourceHeight) {
|
||||
// Mip 0 copies depth into a power-of-two base. Missing edge texels are
|
||||
// ordinary-Z far depth, so a padded region can never hide geometry.
|
||||
hzbOutput[pixel] = pixel.x < hzbParameters.sourceWidth &&
|
||||
pixel.y < hzbParameters.sourceHeight
|
||||
? hzbSource.Load(int3(pixel, 0)) : 1.0;
|
||||
return;
|
||||
}
|
||||
float furthest = 0;
|
||||
[unroll] for (uint y = 0; y < 2; ++y)
|
||||
[unroll] for (uint x = 0; x < 2; ++x) {
|
||||
uint2 child = pixel * 2 + uint2(x, y);
|
||||
// Ordinary-Z clear/far depth is 1. Padding therefore cannot occlude.
|
||||
float depth = child.x < hzbParameters.sourceWidth &&
|
||||
child.y < hzbParameters.sourceHeight
|
||||
? hzbSource.Load(int3(child, 0)) : 1.0;
|
||||
furthest = max(furthest, depth);
|
||||
}
|
||||
hzbOutput[pixel] = furthest;
|
||||
}
|
||||
#else
|
||||
#error Select FASET_GPU_GRAPHICS, FASET_GPU_CULL, or FASET_GPU_HZB.
|
||||
#endif
|
||||
@@ -334,7 +334,11 @@ struct BuildService::Impl {
|
||||
copy_required_file(exporter, staging / ("faset_schema_exporter" + executable_suffix()));
|
||||
for (const auto* file : {"vertexMain.spv", "fragmentMain.spv", "shadowMain.spv",
|
||||
"vertexMain.reflection.json", "fragmentMain.reflection.json",
|
||||
"shadowMain.reflection.json"})
|
||||
"shadowMain.reflection.json", "gpuVertexMain.spv",
|
||||
"gpuShadowMain.spv", "gpuCullMain.spv", "gpuHzbMain.spv",
|
||||
"gpuPostCullMain.spv", "gpuVertexMain.reflection.json",
|
||||
"gpuShadowMain.reflection.json", "gpuCullMain.reflection.json",
|
||||
"gpuHzbMain.reflection.json", "gpuPostCullMain.reflection.json"})
|
||||
copy_required_file(native_directory / "shaders" / file, staging / "shaders" / file);
|
||||
copy_runtime_libraries(job, player, staging, native_directory, configuration);
|
||||
Json manifest{{"format", "faset.build"},
|
||||
@@ -582,7 +586,11 @@ struct BuildService::Impl {
|
||||
staging / ("faset_player" + executable_suffix()));
|
||||
for (const auto* shader : {"vertexMain.spv", "fragmentMain.spv", "shadowMain.spv",
|
||||
"vertexMain.reflection.json", "fragmentMain.reflection.json",
|
||||
"shadowMain.reflection.json"})
|
||||
"shadowMain.reflection.json", "gpuVertexMain.spv",
|
||||
"gpuShadowMain.spv", "gpuCullMain.spv", "gpuHzbMain.spv",
|
||||
"gpuPostCullMain.spv", "gpuVertexMain.reflection.json",
|
||||
"gpuShadowMain.reflection.json", "gpuCullMain.reflection.json",
|
||||
"gpuHzbMain.reflection.json", "gpuPostCullMain.reflection.json"})
|
||||
copy_required_file(build_directory / "shaders" / shader,
|
||||
staging / "shaders" / shader);
|
||||
for (const auto& entry : fs::directory_iterator(build_directory)) {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include <algorithm>
|
||||
#include <bit>
|
||||
#include <cmath>
|
||||
#include <faset/editor/debug_overlay.hpp>
|
||||
#include <imgui.h>
|
||||
@@ -38,13 +39,18 @@ ImGuiKey key(std::string_view name) {
|
||||
} // namespace
|
||||
struct DebugOverlay::Impl {
|
||||
ImGuiContext* context{};
|
||||
bool visible{}, freeze{};
|
||||
bool visible{}, freeze{}, show_hzb{};
|
||||
bool hzb_sampled{}, hzb_available{};
|
||||
int hzb_mip{3}, hzb_last_mip{-1};
|
||||
std::uint64_t hzb_frame{};
|
||||
std::string hzb_error;
|
||||
std::uint32_t overlay_buttons{}, editor_buttons{};
|
||||
std::array<float, 2> pointer{-1, -1};
|
||||
float scale{};
|
||||
std::array<float, 4> window_rect{};
|
||||
render::FrameStats displayed;
|
||||
std::shared_ptr<render::Texture> atlas;
|
||||
std::shared_ptr<render::Texture> hzb_preview;
|
||||
Impl() {
|
||||
IMGUI_CHECKVERSION();
|
||||
auto* previous = ImGui::GetCurrentContext();
|
||||
@@ -77,6 +83,10 @@ bool DebugOverlay::visible() const {
|
||||
}
|
||||
void DebugOverlay::set_visible(bool value) {
|
||||
impl_->visible = value;
|
||||
if (!value) {
|
||||
impl_->hzb_preview.reset();
|
||||
impl_->hzb_available = impl_->hzb_sampled = false;
|
||||
}
|
||||
}
|
||||
std::vector<render::Event> DebugOverlay::process_events(std::span<const render::Event> events) {
|
||||
CurrentContext current(impl_->context);
|
||||
@@ -98,8 +108,13 @@ std::vector<render::Event> DebugOverlay::process_events(std::span<const render::
|
||||
for (const auto& event : events) {
|
||||
using Type = render::Event::Type;
|
||||
if ((event.type == Type::KeyDown || event.type == Type::KeyUp) && event.key == "F12") {
|
||||
if (event.type == Type::KeyDown && !event.repeat)
|
||||
if (event.type == Type::KeyDown && !event.repeat) {
|
||||
impl_->visible = !impl_->visible;
|
||||
if (!impl_->visible) {
|
||||
impl_->hzb_preview.reset();
|
||||
impl_->hzb_available = impl_->hzb_sampled = false;
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
io.AddKeyEvent(ImGuiMod_Ctrl, event.control);
|
||||
@@ -168,7 +183,7 @@ std::vector<render::Event> DebugOverlay::process_events(std::span<const render::
|
||||
}
|
||||
return forwarded;
|
||||
}
|
||||
void DebugOverlay::append(render::Snapshot& output, const render::Renderer& renderer, float delta) {
|
||||
void DebugOverlay::append(render::Snapshot& output, render::Renderer& renderer, float delta) {
|
||||
CurrentContext current(impl_->context);
|
||||
auto& state = *impl_;
|
||||
auto& io = ImGui::GetIO();
|
||||
@@ -180,17 +195,36 @@ void DebugOverlay::append(render::Snapshot& output, const render::Renderer& rend
|
||||
auto& style = ImGui::GetStyle();
|
||||
style = ImGuiStyle{};
|
||||
ImGui::StyleColorsDark();
|
||||
// Developer tooling follows the editor's neutral, low-contrast dark palette.
|
||||
style.Colors[ImGuiCol_WindowBg] = {0.11f, 0.11f, 0.115f, 0.98f};
|
||||
style.Colors[ImGuiCol_TitleBg] = {0.085f, 0.085f, 0.087f, 1.f};
|
||||
style.Colors[ImGuiCol_TitleBgActive] = {0.11f, 0.11f, 0.115f, 1.f};
|
||||
style.Colors[ImGuiCol_FrameBg] = {0.15f, 0.15f, 0.16f, 1.f};
|
||||
style.Colors[ImGuiCol_FrameBgHovered] = {0.19f, 0.19f, 0.20f, 1.f};
|
||||
style.Colors[ImGuiCol_Button] = {0.15f, 0.15f, 0.16f, 1.f};
|
||||
style.Colors[ImGuiCol_ButtonHovered] = {0.21f, 0.21f, 0.22f, 1.f};
|
||||
style.Colors[ImGuiCol_ButtonActive] = {0.24f, 0.23f, 0.28f, 1.f};
|
||||
style.Colors[ImGuiCol_Border] = {0.23f, 0.23f, 0.24f, 1.f};
|
||||
style.Colors[ImGuiCol_Separator] = style.Colors[ImGuiCol_Border];
|
||||
style.Colors[ImGuiCol_Text] = {0.88f, 0.88f, 0.89f, 1.f};
|
||||
style.Colors[ImGuiCol_TextDisabled] = {0.60f, 0.60f, 0.62f, 1.f};
|
||||
style.Colors[ImGuiCol_CheckMark] = {0.66f, 0.63f, 0.76f, 1.f};
|
||||
style.WindowRounding = 5.f;
|
||||
style.FrameRounding = 4.f;
|
||||
style.WindowBorderSize = 1.f;
|
||||
style.ScaleAllSizes(scale);
|
||||
style.FontScaleMain = scale;
|
||||
if (state.window_rect[2] == 0)
|
||||
state.window_rect = {16 * scale, 44 * scale, 390 * scale, 310 * scale};
|
||||
state.window_rect = {16 * scale, 44 * scale, 420 * scale, 455 * scale};
|
||||
state.scale = scale;
|
||||
}
|
||||
// Complete an ImGui frame while hidden too, so queued input cannot accumulate.
|
||||
ImGui::NewFrame();
|
||||
if (state.visible) {
|
||||
ImGui::SetNextWindowPos({16 * scale, 44 * scale}, ImGuiCond_FirstUseEver);
|
||||
ImGui::SetNextWindowSize({390 * scale, 310 * scale}, ImGuiCond_FirstUseEver);
|
||||
ImGui::SetNextWindowSize({420 * scale,
|
||||
std::min(455 * scale, std::max(220.f, io.DisplaySize.y - 60.f * scale))},
|
||||
ImGuiCond_FirstUseEver);
|
||||
if (ImGui::Begin("Faset diagnostics (F12)", &state.visible,
|
||||
ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoCollapse)) {
|
||||
const auto position = ImGui::GetWindowPos(), size = ImGui::GetWindowSize();
|
||||
@@ -198,10 +232,34 @@ void DebugOverlay::append(render::Snapshot& output, const render::Renderer& rend
|
||||
if (!state.freeze)
|
||||
state.displayed = renderer.stats();
|
||||
const auto& stats = state.displayed;
|
||||
ImGui::TextUnformatted("Previous completed frame");
|
||||
ImGui::TextWrapped("%s", stats.device.c_str());
|
||||
ImGui::Checkbox("Freeze counters", &state.freeze);
|
||||
ImGui::TextUnformatted("Visibility");
|
||||
const auto current_mode = renderer.visibility_mode();
|
||||
const struct {
|
||||
const char* label;
|
||||
render::VisibilityMode value;
|
||||
} modes[] = {{"Direct", render::VisibilityMode::Direct},
|
||||
{"GPU frustum", render::VisibilityMode::GpuFrustum},
|
||||
{"GPU occlusion", render::VisibilityMode::GpuOcclusion}};
|
||||
const float button_width =
|
||||
(ImGui::GetContentRegionAvail().x - 2.f * ImGui::GetStyle().ItemSpacing.x) / 3.f;
|
||||
for (int i = 0; i < 3; ++i) {
|
||||
if (i)
|
||||
ImGui::SameLine();
|
||||
const bool selected = current_mode == modes[i].value;
|
||||
if (selected)
|
||||
ImGui::PushStyleColor(ImGuiCol_Button, ImVec4{.35f, .33f, .43f, 1.f});
|
||||
if (ImGui::Button(modes[i].label, {button_width, 0}))
|
||||
renderer.set_visibility_mode(modes[i].value);
|
||||
if (selected)
|
||||
ImGui::PopStyleColor();
|
||||
}
|
||||
const auto selected_mode = renderer.visibility_mode();
|
||||
ImGui::TextDisabled("Renderer mode; no scene or export changes");
|
||||
ImGui::Separator();
|
||||
ImGui::TextUnformatted("Previous completed frame");
|
||||
ImGui::SameLine();
|
||||
ImGui::Checkbox("Freeze counters", &state.freeze);
|
||||
ImGui::TextWrapped("%s", stats.device.c_str());
|
||||
ImGui::Text("Frame: %llu", static_cast<unsigned long long>(stats.frame));
|
||||
ImGui::Text("Render call (wall): %.3f ms", stats.cpu_ms);
|
||||
if (stats.gpu_ms > 0)
|
||||
@@ -212,6 +270,103 @@ void DebugOverlay::append(render::Snapshot& output, const render::Renderer& rend
|
||||
ImGui::Text("Draws: %u Packed vertices: %u", stats.draw_calls, stats.vertices);
|
||||
ImGui::Text("Culled meshes: %u Textures: %u", stats.culled_meshes,
|
||||
stats.texture_count);
|
||||
ImGui::Separator();
|
||||
ImGui::TextUnformatted("GPU visibility");
|
||||
ImGui::Text("Path: %s", stats.gpu_visibility_active ? "active" : "inactive");
|
||||
ImGui::Text("Indirect bins: %u", stats.gpu_bins);
|
||||
if (stats.gpu_visibility_active && stats.visibility_counters_valid) {
|
||||
ImGui::Text("Visible: %u Frustum rejected: %u",
|
||||
stats.gpu_visible_instances, stats.gpu_frustum_rejected);
|
||||
ImGui::Text("Deferred: %u Post visible: %u", stats.gpu_occlusion_deferred,
|
||||
stats.gpu_post_visible);
|
||||
} else {
|
||||
ImGui::TextDisabled("Visibility counters: %s",
|
||||
stats.gpu_visibility_active
|
||||
? state.freeze ? "frozen before sample" : "awaiting sample"
|
||||
: "GPU path inactive");
|
||||
}
|
||||
if (stats.gpu_visibility_active && stats.gpu_ms > 0) {
|
||||
ImGui::Text("Pass ms: cull %.2f raster %.2f", stats.gpu_main_cull_ms,
|
||||
stats.gpu_main_raster_ms);
|
||||
if (stats.gpu_hzb_ms > 0 || stats.gpu_post_cull_ms > 0 ||
|
||||
stats.gpu_post_raster_ms > 0)
|
||||
ImGui::Text("HZB %.2f post cull %.2f raster %.2f",
|
||||
stats.gpu_hzb_ms, stats.gpu_post_cull_ms,
|
||||
stats.gpu_post_raster_ms);
|
||||
}
|
||||
ImGui::Text("Previous HZB history: %s", stats.hzb_valid ? "valid" : "invalid");
|
||||
if (ImGui::Checkbox("Show HZB", &state.show_hzb)) {
|
||||
state.hzb_sampled = false;
|
||||
state.hzb_error.clear();
|
||||
if (state.show_hzb) {
|
||||
const float expanded = std::min(
|
||||
620.f * scale, std::max(220.f, io.DisplaySize.y - 60.f * scale));
|
||||
if (ImGui::GetWindowSize().y < expanded)
|
||||
ImGui::SetWindowSize({ImGui::GetWindowSize().x, expanded});
|
||||
} else {
|
||||
state.hzb_available = false;
|
||||
state.hzb_preview.reset();
|
||||
}
|
||||
}
|
||||
if (state.show_hzb && state.visible &&
|
||||
selected_mode == render::VisibilityMode::GpuOcclusion) {
|
||||
const auto max_extent = std::max(renderer.width(), renderer.height());
|
||||
const int max_mip = static_cast<int>(std::bit_width(std::bit_ceil(max_extent))) - 1;
|
||||
state.hzb_mip = std::clamp(state.hzb_mip, 0, max_mip);
|
||||
ImGui::SliderInt("Mip", &state.hzb_mip, 0, max_mip);
|
||||
const auto frame = renderer.stats().frame;
|
||||
if (!state.hzb_sampled || state.hzb_frame != frame ||
|
||||
state.hzb_last_mip != state.hzb_mip) {
|
||||
state.hzb_sampled = true;
|
||||
state.hzb_frame = frame;
|
||||
state.hzb_last_mip = state.hzb_mip;
|
||||
try {
|
||||
if (auto image = renderer.hzb_debug_image(
|
||||
static_cast<std::uint32_t>(state.hzb_mip))) {
|
||||
if (!state.hzb_preview)
|
||||
state.hzb_preview = std::make_shared<render::Texture>();
|
||||
state.hzb_preview->width = image->width;
|
||||
state.hzb_preview->height = image->height;
|
||||
state.hzb_preview->rgba = std::move(image->rgba);
|
||||
++state.hzb_preview->revision;
|
||||
state.hzb_available = true;
|
||||
} else {
|
||||
state.hzb_available = false;
|
||||
state.hzb_preview.reset();
|
||||
}
|
||||
} catch (const std::exception& error) {
|
||||
state.hzb_available = false;
|
||||
state.hzb_preview.reset();
|
||||
state.hzb_error = error.what();
|
||||
state.show_hzb = false;
|
||||
}
|
||||
}
|
||||
if (state.hzb_available && state.hzb_preview) {
|
||||
float width = ImGui::GetContentRegionAvail().x;
|
||||
float height = width * float(state.hzb_preview->height) /
|
||||
float(state.hzb_preview->width);
|
||||
if (height > 180.f * scale) {
|
||||
height = 180.f * scale;
|
||||
width = height * float(state.hzb_preview->width) /
|
||||
float(state.hzb_preview->height);
|
||||
}
|
||||
ImGui::Image(ImTextureID{2}, {width, height});
|
||||
ImGui::TextDisabled("Current HZB | mip %d (%u x %u)", state.hzb_mip,
|
||||
state.hzb_preview->width, state.hzb_preview->height);
|
||||
} else if (state.show_hzb) {
|
||||
ImGui::TextDisabled("Current HZB unavailable for this frame");
|
||||
}
|
||||
} else if (state.show_hzb) {
|
||||
state.hzb_available = false;
|
||||
state.hzb_preview.reset();
|
||||
state.hzb_sampled = false;
|
||||
ImGui::TextDisabled("Switch to GPU occlusion to view the HZB");
|
||||
}
|
||||
if (!state.hzb_error.empty())
|
||||
ImGui::TextWrapped("HZB preview error: %s", state.hzb_error.c_str());
|
||||
ImGui::Text("Prepared LOD: %u / %u / %u / %u+", stats.lod_counts[0],
|
||||
stats.lod_counts[1], stats.lod_counts[2], stats.lod_counts[3]);
|
||||
ImGui::Separator();
|
||||
ImGui::Text("Vulkan allocations: %.2f MiB",
|
||||
double(stats.gpu_allocated_bytes) / 1048576.0);
|
||||
ImGui::Text("Validation: %s Errors: %u",
|
||||
@@ -219,9 +374,20 @@ void DebugOverlay::append(render::Snapshot& output, const render::Renderer& rend
|
||||
stats.validation_errors);
|
||||
ImGui::Text("GPU pass labels: %s (%u)", stats.gpu_labels_enabled ? "on" : "unavailable",
|
||||
stats.gpu_label_count);
|
||||
const auto current_position = ImGui::GetWindowPos();
|
||||
const auto current_size = ImGui::GetWindowSize();
|
||||
state.window_rect = {current_position.x, current_position.y,
|
||||
current_size.x, current_size.y};
|
||||
}
|
||||
ImGui::End();
|
||||
}
|
||||
if (!state.visible) {
|
||||
state.hzb_available = false;
|
||||
state.hzb_preview.reset();
|
||||
state.hzb_sampled = false;
|
||||
}
|
||||
// GPU counters are a diagnostics readback, never a normal renderer dependency.
|
||||
renderer.set_visibility_diagnostics(state.visible);
|
||||
ImGui::Render();
|
||||
const auto* data = ImGui::GetDrawData();
|
||||
if (!data || !data->Valid)
|
||||
@@ -233,7 +399,11 @@ void DebugOverlay::append(render::Snapshot& output, const render::Renderer& rend
|
||||
command.UserCallback(list, &command);
|
||||
continue;
|
||||
}
|
||||
if (command.GetTexID() != ImTextureID{1})
|
||||
const auto texture = command.GetTexID() == ImTextureID{1}
|
||||
? state.atlas
|
||||
: command.GetTexID() == ImTextureID{2} ? state.hzb_preview
|
||||
: nullptr;
|
||||
if (!texture)
|
||||
throw std::runtime_error("Unsupported texture in Faset diagnostic overlay");
|
||||
const float x = command.ClipRect.x - data->DisplayPos.x;
|
||||
const float y = command.ClipRect.y - data->DisplayPos.y;
|
||||
@@ -242,7 +412,7 @@ void DebugOverlay::append(render::Snapshot& output, const render::Renderer& rend
|
||||
if (width <= 0 || height <= 0)
|
||||
continue;
|
||||
render::UiTriangles batch;
|
||||
batch.texture = state.atlas;
|
||||
batch.texture = texture;
|
||||
batch.clip_rect = {x, y, width, height};
|
||||
batch.vertices.reserve(command.ElemCount);
|
||||
for (unsigned i = 0; i < command.ElemCount; ++i) {
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include <numbers>
|
||||
#include <set>
|
||||
#include <stdexcept>
|
||||
#include <string_view>
|
||||
#include <unordered_map>
|
||||
#if defined(FASET_HAS_STB)
|
||||
#define STB_IMAGE_IMPLEMENTATION
|
||||
@@ -16,6 +17,15 @@
|
||||
namespace faset::player {
|
||||
namespace {
|
||||
using Json = nlohmann::json;
|
||||
std::string render_key(std::initializer_list<std::string_view> parts) {
|
||||
std::string key;
|
||||
for (const auto part : parts) {
|
||||
key += std::to_string(part.size());
|
||||
key += ':';
|
||||
key += part;
|
||||
}
|
||||
return key;
|
||||
}
|
||||
Json properties(const Json& entity, const std::string& name) {
|
||||
if (entity.contains("components")) {
|
||||
for (const auto& component : entity["components"])
|
||||
@@ -144,10 +154,11 @@ struct SceneView::Impl {
|
||||
throw std::runtime_error("Texture subasset does not exist: " + ref);
|
||||
}
|
||||
void imported(render::Snapshot& out, const std::string& ref, const render::Mat4& model,
|
||||
render::Color tint) {
|
||||
render::Color tint, std::string_view entity_id) {
|
||||
const auto [id, selector] = reference(ref);
|
||||
auto& asset = bundle(id);
|
||||
auto emit = [&](std::size_t meshIndex, const render::Mat4& local) {
|
||||
auto emit = [&](std::size_t meshIndex, const render::Mat4& local,
|
||||
std::string_view node_id) {
|
||||
if (meshIndex >= asset.meshes.size())
|
||||
throw std::runtime_error("Invalid cooked mesh index");
|
||||
for (std::size_t p = 0; p < asset.meshes[meshIndex].size(); ++p) {
|
||||
@@ -155,6 +166,10 @@ struct SceneView::Impl {
|
||||
draw.mesh = asset.meshes[meshIndex][p];
|
||||
draw.model = render::multiply(model, local);
|
||||
draw.color = tint;
|
||||
const auto primitive_id = std::to_string(p);
|
||||
draw.instance_key = render_key(
|
||||
{entity_id, "asset", ref, node_id, asset.data.meshes[meshIndex].id,
|
||||
primitive_id});
|
||||
const auto material = asset.data.meshes[meshIndex].primitives[p].material;
|
||||
if (material >= 0) {
|
||||
if (std::size_t(material) >= asset.data.materials.size())
|
||||
@@ -181,7 +196,7 @@ struct SceneView::Impl {
|
||||
if (!selector.empty())
|
||||
for (std::size_t i = 0; i < asset.data.meshes.size(); ++i)
|
||||
if (asset.data.meshes[i].id == selector) {
|
||||
emit(i, render::identity);
|
||||
emit(i, render::identity, "direct-mesh");
|
||||
return;
|
||||
}
|
||||
std::unordered_map<std::string, const assets::Node*> nodes;
|
||||
@@ -208,7 +223,7 @@ struct SceneView::Impl {
|
||||
};
|
||||
if (asset.data.nodes.empty())
|
||||
for (std::size_t i = 0; i < asset.meshes.size(); ++i)
|
||||
emit(i, render::identity);
|
||||
emit(i, render::identity, "unparented-mesh");
|
||||
for (const auto& node : asset.data.nodes)
|
||||
if (node.mesh >= 0) {
|
||||
bool selected = selector.empty();
|
||||
@@ -220,7 +235,7 @@ struct SceneView::Impl {
|
||||
current = parent == nodes.end() ? nullptr : parent->second;
|
||||
}
|
||||
if (selected)
|
||||
emit(static_cast<std::size_t>(node.mesh), world(world, node));
|
||||
emit(static_cast<std::size_t>(node.mesh), world(world, node), node.id);
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -238,6 +253,8 @@ render::Snapshot SceneView::build(const Json& scene, float aspect, CameraSetting
|
||||
throw std::invalid_argument("Viewport aspect must be positive");
|
||||
impl_->messages.clear();
|
||||
render::Snapshot out;
|
||||
const auto scene_id = scene.value("id", std::string{});
|
||||
std::string camera_id = camera.overrideSceneCamera ? "override" : "default";
|
||||
const auto& entities = scene.at("entities");
|
||||
if (!entities.is_array())
|
||||
throw std::invalid_argument("Scene entities must be an array");
|
||||
@@ -295,6 +312,7 @@ render::Snapshot SceneView::build(const Json& scene, float aspect, CameraSetting
|
||||
camera.nearPlane = fields.value("near", 0.1f);
|
||||
camera.farPlane = fields.value("far", 1000.0f);
|
||||
foundCamera = true;
|
||||
camera_id = entity.at("id").get<std::string>();
|
||||
}
|
||||
if (auto fields = properties(entity, "light"); !fields.is_null())
|
||||
out.light_direction = direction(model, {-0.5f, -1, -0.3f});
|
||||
@@ -331,20 +349,22 @@ render::Snapshot SceneView::build(const Json& scene, float aspect, CameraSetting
|
||||
: asset.substr(8);
|
||||
if (primitive != "plane" && primitive != "cube")
|
||||
throw std::invalid_argument("Unsupported builtin mesh: " + primitive);
|
||||
out.draws.push_back({primitive == "plane" ? plane() : render::cube_mesh(),
|
||||
model,
|
||||
tint,
|
||||
0.65f,
|
||||
0.0f,
|
||||
true,
|
||||
{}});
|
||||
render::DrawItem draw{primitive == "plane" ? plane() : render::cube_mesh(),
|
||||
model, tint, 0.65f, 0.0f, true, {}};
|
||||
const auto entity_id = entity.at("id").get<std::string>();
|
||||
draw.instance_key = render_key({entity_id, "builtin", primitive});
|
||||
out.draws.push_back(std::move(draw));
|
||||
} else
|
||||
try {
|
||||
impl_->imported(out, asset, model, tint);
|
||||
impl_->imported(out, asset, model, tint,
|
||||
entity.at("id").get<std::string>());
|
||||
} catch (const std::exception& e) {
|
||||
impl_->messages.push_back("error: " + std::string(e.what()));
|
||||
out.draws.push_back(
|
||||
{render::cube_mesh(), model, {1, 0, 1, 1}, 0.65f, 0.0f, true, {}});
|
||||
render::DrawItem draw{render::cube_mesh(), model, {1, 0, 1, 1},
|
||||
0.65f, 0.0f, true, {}};
|
||||
const auto entity_id = entity.at("id").get<std::string>();
|
||||
draw.instance_key = render_key({entity_id, "error", asset});
|
||||
out.draws.push_back(std::move(draw));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -357,10 +377,10 @@ render::Snapshot SceneView::build(const Json& scene, float aspect, CameraSetting
|
||||
if (!std::isfinite(height) || height <= 0)
|
||||
throw std::invalid_argument("Orthographic height must be positive");
|
||||
const auto center = foundCamera ? camera.eye : camera.target;
|
||||
out.view_projection =
|
||||
render::multiply(render::orthographic(-height * aspect / 2, height * aspect / 2,
|
||||
-height / 2, height / 2, -100, 100),
|
||||
render::transform({-center[0], -center[1], 0}));
|
||||
out.projection = render::orthographic(-height * aspect / 2, height * aspect / 2,
|
||||
-height / 2, height / 2, -100, 100);
|
||||
out.view_projection = render::multiply(
|
||||
out.projection, render::transform({-center[0], -center[1], 0}));
|
||||
out.eye = {center[0], center[1], 10};
|
||||
} else {
|
||||
if (!std::isfinite(camera.verticalFovDegrees) || camera.verticalFovDegrees <= 0 ||
|
||||
@@ -385,14 +405,16 @@ render::Snapshot SceneView::build(const Json& scene, float aspect, CameraSetting
|
||||
cross[0] * cross[0] + cross[1] * cross[1] + cross[2] * cross[2] < 1e-10f)
|
||||
throw std::invalid_argument("Camera basis is degenerate");
|
||||
out.eye = camera.eye;
|
||||
out.projection = render::perspective(
|
||||
camera.verticalFovDegrees * std::numbers::pi_v<float> / 180, aspect,
|
||||
camera.nearPlane, camera.farPlane);
|
||||
out.view_projection = render::multiply(
|
||||
render::perspective(camera.verticalFovDegrees * std::numbers::pi_v<float> / 180, aspect,
|
||||
camera.nearPlane, camera.farPlane),
|
||||
render::look_at(camera.eye, camera.target, cameraUp));
|
||||
out.projection, render::look_at(camera.eye, camera.target, cameraUp));
|
||||
}
|
||||
std::sort(impl_->messages.begin(), impl_->messages.end());
|
||||
impl_->messages.erase(std::unique(impl_->messages.begin(), impl_->messages.end()),
|
||||
impl_->messages.end());
|
||||
out.view_id = render_key({scene_id, "camera", camera_id});
|
||||
return out;
|
||||
}
|
||||
void SceneView::appendPhysicsDebug(render::Snapshot& snapshot, const Json& scene,
|
||||
|
||||
@@ -85,7 +85,72 @@ void validate_layout(const Json& layout, std::string_view entry) {
|
||||
locations(layout.at("outputs"), {}, "shadow outputs");
|
||||
}
|
||||
}
|
||||
void validate_spirv(const std::vector<std::uint32_t>& words, bool fragment) {
|
||||
void validate_gpu_layout(const Json& layout, std::string_view entry) {
|
||||
const bool graphics = entry == "gpuVertexMain" || entry == "gpuShadowMain";
|
||||
const bool hzb = entry == "gpuHzbMain";
|
||||
const bool compute = !graphics;
|
||||
require(layout.at("stage") == (compute ? "compute" : "vertex"), "GPU shader stage changed");
|
||||
const auto& descriptors = layout.at("descriptors");
|
||||
const std::size_t expected_count = graphics ? 3 : hzb ? 2 : 10;
|
||||
require(descriptors.is_array() && descriptors.size() == expected_count,
|
||||
"GPU descriptor count changed");
|
||||
const std::array<int, 10> compute_strides{224, 16, 16, 4, 16, 4, 4, 0, 0, 208};
|
||||
const std::array<int, 3> graphics_strides{224, 4, 208};
|
||||
for (std::size_t i = 0; i < expected_count; ++i) {
|
||||
const auto& binding = descriptors[i];
|
||||
require(binding.at("set") == (graphics ? 1 : 0) && binding.at("binding") == i &&
|
||||
binding.at("count") == 1,
|
||||
"GPU descriptor set, binding or count changed");
|
||||
const int stride = graphics ? graphics_strides[i] : hzb ? 0 : compute_strides[i];
|
||||
const char* type = hzb ? (i == 0 ? "sampled_image_2d" : "storage_image_2d")
|
||||
: stride > 0 ? "storage_buffer" : "sampled_image_2d";
|
||||
require(binding.at("type") == type, "GPU descriptor type changed");
|
||||
if (stride > 0)
|
||||
require(binding.at("element_stride") == stride, "GPU storage record stride changed");
|
||||
}
|
||||
const auto& constants = layout.at("push_constants");
|
||||
require(constants.is_array() && constants.size() == 1 &&
|
||||
constants[0].at("offset") == 0 &&
|
||||
constants[0].at("size") == (graphics ? 112 : 16),
|
||||
"GPU push-constant block changed");
|
||||
const auto& members = constants[0].at("members");
|
||||
require(members.is_array() && members.size() == 4, "GPU push-constant fields changed");
|
||||
const int graphics_offsets[] = {0, 64, 80, 96};
|
||||
const int graphics_sizes[] = {64, 16, 16, 16};
|
||||
const char* graphics_types[] = {"float32x4x4", "float32x4", "float32x4", "uint32x4"};
|
||||
for (std::size_t i = 0; i < 4; ++i) {
|
||||
require(members[i].at("offset") == (graphics ? graphics_offsets[i] : int(i) * 4) &&
|
||||
members[i].at("size") == (graphics ? graphics_sizes[i] : 4) &&
|
||||
members[i].at("type") == (graphics ? graphics_types[i] : "uint32"),
|
||||
"GPU push-constant layout changed");
|
||||
}
|
||||
const auto& blocks = layout.at("spirv_push_constants");
|
||||
require(blocks.is_array() && blocks.size() == 1, "GPU SPIR-V push block changed");
|
||||
const auto& actual = blocks[0].at("members");
|
||||
require(actual.is_array() && actual.size() == 4, "GPU SPIR-V push members changed");
|
||||
for (std::size_t i = 0; i < 4; ++i)
|
||||
require(actual[i].at("member") == i &&
|
||||
actual[i].at("offset") == (graphics ? graphics_offsets[i] : int(i) * 4),
|
||||
"GPU SPIR-V push offsets changed");
|
||||
if (graphics) {
|
||||
require(actual[0].at("matrix_layout") == "row-major" &&
|
||||
actual[0].at("matrix_stride") == 16,
|
||||
"GPU SPIR-V matrix storage convention changed");
|
||||
locations(layout.at("inputs"),
|
||||
{"float32x3", "float32x3", "float32x4", "float32x2"},
|
||||
"GPU vertex inputs");
|
||||
if (entry == "gpuVertexMain")
|
||||
locations(layout.at("outputs"),
|
||||
{"float32x3", "float32x3", "float32x4", "float32x2", "float32x2"},
|
||||
"GPU vertex outputs");
|
||||
else
|
||||
locations(layout.at("outputs"), {}, "GPU shadow outputs");
|
||||
} else {
|
||||
locations(layout.at("inputs"), {}, "GPU compute inputs");
|
||||
locations(layout.at("outputs"), {}, "GPU compute outputs");
|
||||
}
|
||||
}
|
||||
void validate_spirv(const std::vector<std::uint32_t>& words, std::uint32_t execution_model) {
|
||||
require(words.size() >= 5 && words[0] == 0x07230203 && words[1] >= 0x00010000 &&
|
||||
words[1] <= 0x00010600 && words[3] > 0 && words[3] < (1u << 20) && words[4] == 0,
|
||||
"invalid SPIR-V header");
|
||||
@@ -101,7 +166,7 @@ void validate_spirv(const std::vector<std::uint32_t>& words, bool fragment) {
|
||||
const auto* terminator = static_cast<const char*>(std::memchr(name, 0, available));
|
||||
require(terminator != nullptr, "unterminated SPIR-V entry name");
|
||||
if (std::string_view(name, terminator - name) == "main") {
|
||||
require(words[offset + 1] == (fragment ? 4u : 0u), "SPIR-V entry stage changed");
|
||||
require(words[offset + 1] == execution_model, "SPIR-V entry stage changed");
|
||||
entry_found = true;
|
||||
}
|
||||
}
|
||||
@@ -109,7 +174,8 @@ void validate_spirv(const std::vector<std::uint32_t>& words, bool fragment) {
|
||||
}
|
||||
require(entry_found, "SPIR-V main entry point missing");
|
||||
}
|
||||
detail::ShaderCode load(const std::filesystem::path& directory, const char* entry) {
|
||||
detail::ShaderCode load(const std::filesystem::path& directory, const char* entry,
|
||||
bool gpu = false) {
|
||||
const auto bytes = read_bounded(directory / (std::string(entry) + ".spv"), 16 * 1024 * 1024);
|
||||
require(bytes.size() >= 20 && bytes.size() % 4 == 0, "invalid SPIR-V byte length");
|
||||
const auto metadata = Json::parse(
|
||||
@@ -122,12 +188,17 @@ detail::ShaderCode load(const std::filesystem::path& directory, const char* entr
|
||||
const auto& layout = metadata.at("layout");
|
||||
const auto fingerprint = faset::sha256(layout.dump());
|
||||
require(metadata.at("layout_fingerprint") == fingerprint, "layout fingerprint mismatch");
|
||||
validate_layout(layout, entry);
|
||||
if (gpu)
|
||||
validate_gpu_layout(layout, entry);
|
||||
else
|
||||
validate_layout(layout, entry);
|
||||
detail::ShaderCode result;
|
||||
result.layout_fingerprint = fingerprint;
|
||||
result.words.resize(bytes.size() / 4);
|
||||
std::memcpy(result.words.data(), bytes.data(), bytes.size());
|
||||
validate_spirv(result.words, std::string_view(entry) == "fragmentMain");
|
||||
validate_spirv(result.words, gpu ? ((std::string_view(entry) == "gpuVertexMain" ||
|
||||
std::string_view(entry) == "gpuShadowMain") ? 0u : 5u)
|
||||
: (std::string_view(entry) == "fragmentMain" ? 4u : 0u));
|
||||
return result;
|
||||
}
|
||||
} // namespace
|
||||
@@ -136,7 +207,16 @@ detail::load_shader_bundle(const std::filesystem::path& directory) {
|
||||
return {load(directory, "vertexMain"), load(directory, "fragmentMain"),
|
||||
load(directory, "shadowMain")};
|
||||
}
|
||||
std::array<detail::ShaderCode, 5>
|
||||
detail::load_gpu_shader_bundle(const std::filesystem::path& directory) {
|
||||
return {load(directory, "gpuVertexMain", true), load(directory, "gpuShadowMain", true),
|
||||
load(directory, "gpuCullMain", true), load(directory, "gpuHzbMain", true),
|
||||
load(directory, "gpuPostCullMain", true)};
|
||||
}
|
||||
void validate_shader_bundle(const std::filesystem::path& directory) {
|
||||
(void)detail::load_shader_bundle(directory);
|
||||
}
|
||||
void validate_gpu_shader_bundle(const std::filesystem::path& directory) {
|
||||
(void)detail::load_gpu_shader_bundle(directory);
|
||||
}
|
||||
} // namespace faset::render
|
||||
|
||||
@@ -11,4 +11,6 @@ struct ShaderCode {
|
||||
std::string layout_fingerprint;
|
||||
};
|
||||
std::array<ShaderCode, 3> load_shader_bundle(const std::filesystem::path& directory);
|
||||
// Order: opaque vertex, optional instanced shadow vertex, main cull, HZB, post cull.
|
||||
std::array<ShaderCode, 5> load_gpu_shader_bundle(const std::filesystem::path& directory);
|
||||
} // namespace faset::render::detail
|
||||
|
||||
@@ -0,0 +1,178 @@
|
||||
#include <faset/render/visibility.hpp>
|
||||
#include <algorithm>
|
||||
#include <cmath>
|
||||
#include <limits>
|
||||
#include <stdexcept>
|
||||
|
||||
namespace faset::render {
|
||||
namespace {
|
||||
void validate(const Bounds& bounds) {
|
||||
for (int axis = 0; axis < 3; ++axis)
|
||||
if (!std::isfinite(bounds.min[axis]) || !std::isfinite(bounds.max[axis]) ||
|
||||
bounds.min[axis] > bounds.max[axis])
|
||||
throw std::invalid_argument("Invalid mesh bounds");
|
||||
}
|
||||
} // namespace
|
||||
|
||||
Bounds local_bounds(const Mesh& mesh) {
|
||||
if (mesh.vertices.empty())
|
||||
throw std::invalid_argument("Empty mesh has no bounds");
|
||||
Bounds out{{std::numeric_limits<float>::infinity(), std::numeric_limits<float>::infinity(),
|
||||
std::numeric_limits<float>::infinity()},
|
||||
{-std::numeric_limits<float>::infinity(), -std::numeric_limits<float>::infinity(),
|
||||
-std::numeric_limits<float>::infinity()}};
|
||||
for (const auto& vertex : mesh.vertices)
|
||||
for (int axis = 0; axis < 3; ++axis) {
|
||||
const float value = vertex.position[axis];
|
||||
if (!std::isfinite(value))
|
||||
throw std::invalid_argument("Nonfinite mesh vertex");
|
||||
out.min[axis] = std::min(out.min[axis], value);
|
||||
out.max[axis] = std::max(out.max[axis], value);
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
Bounds transformed_bounds(const Mesh& mesh, const Mat4& model) {
|
||||
return transformed_bounds(local_bounds(mesh), model);
|
||||
}
|
||||
|
||||
Bounds transformed_bounds(const Bounds& local, const Mat4& model) {
|
||||
validate(local);
|
||||
for (float value : model)
|
||||
if (!std::isfinite(value))
|
||||
throw std::invalid_argument("Nonfinite mesh transform");
|
||||
Bounds out{{std::numeric_limits<float>::infinity(), std::numeric_limits<float>::infinity(),
|
||||
std::numeric_limits<float>::infinity()},
|
||||
{-std::numeric_limits<float>::infinity(), -std::numeric_limits<float>::infinity(),
|
||||
-std::numeric_limits<float>::infinity()}};
|
||||
for (unsigned corner = 0; corner < 8; ++corner) {
|
||||
const Vec3 point{corner & 1 ? local.max[0] : local.min[0],
|
||||
corner & 2 ? local.max[1] : local.min[1],
|
||||
corner & 4 ? local.max[2] : local.min[2]};
|
||||
for (int axis = 0; axis < 3; ++axis) {
|
||||
const float transformed = model[12 + axis] + model[axis] * point[0] +
|
||||
model[4 + axis] * point[1] + model[8 + axis] * point[2];
|
||||
if (!std::isfinite(transformed))
|
||||
throw std::invalid_argument("Nonfinite transformed mesh bound");
|
||||
out.min[axis] = std::min(out.min[axis], transformed);
|
||||
out.max[axis] = std::max(out.max[axis], transformed);
|
||||
}
|
||||
}
|
||||
// Float transforms can round an extremum inward by one ULP. Expand outward
|
||||
// before using the result for a visibility rejection.
|
||||
for (int axis = 0; axis < 3; ++axis) {
|
||||
out.min[axis] = std::nextafter(out.min[axis], -std::numeric_limits<float>::infinity());
|
||||
out.max[axis] = std::nextafter(out.max[axis], std::numeric_limits<float>::infinity());
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
InstanceUpdate InstanceTracker::update(std::string_view key,
|
||||
std::shared_ptr<const Mesh> mesh_identity,
|
||||
const Mat4& model, const Bounds& world_bounds,
|
||||
std::string_view view_id) {
|
||||
auto result = update(key, mesh_identity.get(), model, world_bounds, view_id);
|
||||
records_.at(std::string(key)).mesh_owner = std::move(mesh_identity);
|
||||
return result;
|
||||
}
|
||||
|
||||
InstanceUpdate InstanceTracker::update(std::string_view key, const Mesh* mesh_identity,
|
||||
const Mat4& model, const Bounds& world_bounds,
|
||||
std::string_view view_id) {
|
||||
if (key.empty() || !mesh_identity)
|
||||
throw std::invalid_argument("Tracked instance requires a key and mesh");
|
||||
validate(world_bounds);
|
||||
for (float value : model)
|
||||
if (!std::isfinite(value))
|
||||
throw std::invalid_argument("Nonfinite instance transform");
|
||||
|
||||
auto [it, inserted] = records_.try_emplace(std::string(key));
|
||||
auto& record = it->second;
|
||||
if (inserted) {
|
||||
if (free_slots_.empty()) {
|
||||
if (slot_generations_.size() >= std::numeric_limits<std::uint32_t>::max())
|
||||
throw std::overflow_error("Instance slot capacity exhausted");
|
||||
record.slot = static_cast<std::uint32_t>(slot_generations_.size());
|
||||
slot_generations_.push_back(1);
|
||||
} else {
|
||||
record.slot = free_slots_.back();
|
||||
free_slots_.pop_back();
|
||||
++slot_generations_[record.slot];
|
||||
}
|
||||
record.generation = slot_generations_[record.slot];
|
||||
} else if (record.mesh != mesh_identity) {
|
||||
record.generation = ++slot_generations_[record.slot];
|
||||
record.committed = false;
|
||||
}
|
||||
|
||||
const bool previous_valid = record.committed && record.previous_view == view_id &&
|
||||
!invalid_views_.contains(std::string(view_id));
|
||||
InstanceUpdate result{record.slot, record.generation, record.previous_model,
|
||||
record.previous_bounds, previous_valid};
|
||||
record.mesh = mesh_identity;
|
||||
record.mesh_owner.reset();
|
||||
record.current_model = model;
|
||||
record.current_bounds = world_bounds;
|
||||
record.current_view = view_id;
|
||||
record.seen_frame = frame_;
|
||||
return result;
|
||||
}
|
||||
|
||||
void InstanceTracker::finish_frame() {
|
||||
for (auto it = records_.begin(); it != records_.end();) {
|
||||
auto& record = it->second;
|
||||
if (record.seen_frame != frame_) {
|
||||
free_slots_.push_back(record.slot);
|
||||
it = records_.erase(it);
|
||||
} else {
|
||||
record.previous_model = record.current_model;
|
||||
record.previous_bounds = record.current_bounds;
|
||||
record.previous_view = record.current_view;
|
||||
record.committed = true;
|
||||
++it;
|
||||
}
|
||||
}
|
||||
invalid_views_.clear();
|
||||
++frame_;
|
||||
}
|
||||
|
||||
void InstanceTracker::invalidate_view(std::string_view view_id) {
|
||||
invalid_views_.emplace(view_id);
|
||||
}
|
||||
|
||||
std::size_t select_lod(float projected_pixels, std::size_t previous_level,
|
||||
std::span<const float> thresholds, float hysteresis,
|
||||
std::span<const std::uint8_t> available) {
|
||||
if (!std::isfinite(projected_pixels) || projected_pixels < 0 ||
|
||||
!std::isfinite(hysteresis) || hysteresis < 0 || hysteresis >= 1)
|
||||
throw std::invalid_argument("Invalid LOD projection or hysteresis");
|
||||
for (std::size_t i = 0; i < thresholds.size(); ++i)
|
||||
if (!std::isfinite(thresholds[i]) || thresholds[i] <= 0 ||
|
||||
(i && thresholds[i] >= thresholds[i - 1]))
|
||||
throw std::invalid_argument("LOD thresholds must descend strictly");
|
||||
const auto count = thresholds.size() + 1;
|
||||
if (!available.empty() && available.size() != count)
|
||||
throw std::invalid_argument("LOD availability count mismatch");
|
||||
std::size_t level = previous_level;
|
||||
if (level >= count) {
|
||||
level = 0;
|
||||
while (level < thresholds.size() && projected_pixels < thresholds[level])
|
||||
++level;
|
||||
} else {
|
||||
while (level < thresholds.size() &&
|
||||
projected_pixels < thresholds[level] * (1 - hysteresis))
|
||||
++level;
|
||||
while (level && projected_pixels > thresholds[level - 1] * (1 + hysteresis))
|
||||
--level;
|
||||
}
|
||||
if (available.empty() || available[level])
|
||||
return level;
|
||||
for (std::size_t distance = 1; distance < count; ++distance) {
|
||||
if (level >= distance && available[level - distance])
|
||||
return level - distance;
|
||||
if (level + distance < count && available[level + distance])
|
||||
return level + distance;
|
||||
}
|
||||
throw std::invalid_argument("No available mesh LOD");
|
||||
}
|
||||
} // namespace faset::render
|
||||
@@ -148,6 +148,12 @@ int test_main(int argc, char** argv) {
|
||||
const auto first = builds.wait(builds.start_build());
|
||||
check(first.state == "succeeded", "Valid custom schema v2 publishes: " + first.error);
|
||||
const auto directory = path_from_utf8(first.result.at("directory").get<std::string>());
|
||||
for (const auto* entry : {"gpuVertexMain", "gpuShadowMain", "gpuCullMain",
|
||||
"gpuHzbMain", "gpuPostCullMain"})
|
||||
for (const auto* extension : {".spv", ".reflection.json"})
|
||||
check(fs::is_regular_file(directory / "shaders" /
|
||||
(std::string(entry) + extension)),
|
||||
"Published Player contains every checked P2 shader artifact");
|
||||
const auto player = path_from_utf8(first.result.at("player").get<std::string>());
|
||||
const auto schema = path_from_utf8(first.result.at("schema").get<std::string>());
|
||||
const auto last_build = builds.config().cache_root / "last_build.json";
|
||||
|
||||
@@ -60,7 +60,9 @@ int tool_main(int argc, char** argv) {
|
||||
for (const auto* target : {"faset_player", "faset_schema_exporter"})
|
||||
fs::copy_file(self, build / (std::string(target) + suffix),
|
||||
fs::copy_options::overwrite_existing);
|
||||
for (const auto* entry : {"vertexMain", "fragmentMain", "shadowMain"})
|
||||
for (const auto* entry : {"vertexMain", "fragmentMain", "shadowMain",
|
||||
"gpuVertexMain", "gpuShadowMain", "gpuCullMain",
|
||||
"gpuHzbMain", "gpuPostCullMain"})
|
||||
for (const auto* extension : {".spv", ".reflection.json"})
|
||||
atomic_write(build / "shaders" / (std::string(entry) + extension), "fixture\n");
|
||||
return 0;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include <faset/editor/debug_overlay.hpp>
|
||||
#include <algorithm>
|
||||
#include <iostream>
|
||||
#include <stdexcept>
|
||||
|
||||
@@ -25,6 +26,26 @@ int main(int argc, char** argv) {
|
||||
overlay.append(scene, renderer, 1.f / 60.f);
|
||||
require(!scene.ui_triangles.empty() && scene.ui_triangles.front().texture,
|
||||
"ImGui draw data reaches Faset's textured UI triangle API");
|
||||
require(renderer.visibility_mode() == render::VisibilityMode::Direct,
|
||||
"Diagnostic visibility mode starts with the renderer default");
|
||||
render::Event mode_click;
|
||||
mode_click.type = render::Event::Type::MouseDown;
|
||||
mode_click.button = 1;
|
||||
mode_click.x = 205;
|
||||
mode_click.y = 99;
|
||||
require(overlay.process_events(std::span(&mode_click, 1)).empty(),
|
||||
"Visibility mode button captures pointer down");
|
||||
scene.ui_triangles.clear();
|
||||
overlay.append(scene, renderer, 1.f / 60.f);
|
||||
mode_click.type = render::Event::Type::MouseUp;
|
||||
require(overlay.process_events(std::span(&mode_click, 1)).empty(),
|
||||
"Visibility mode button captures pointer up");
|
||||
scene.ui_triangles.clear();
|
||||
overlay.append(scene, renderer, 1.f / 60.f);
|
||||
require(renderer.visibility_mode() == render::VisibilityMode::GpuFrustum,
|
||||
"Clicking GPU frustum switches the live renderer");
|
||||
scene.ui_triangles.clear();
|
||||
overlay.append(scene, renderer, 1.f / 60.f);
|
||||
renderer.render(scene);
|
||||
auto shown = renderer.pixels();
|
||||
std::size_t changed{};
|
||||
@@ -71,6 +92,110 @@ int main(int argc, char** argv) {
|
||||
renderer.render(scene);
|
||||
require(renderer.pixels() == clean, "Hiding diagnostics restores the underlying frame");
|
||||
require(renderer.stats().validation_errors == 0, "Diagnostic overlay Vulkan validation");
|
||||
|
||||
render::RendererConfig hzb_config;
|
||||
hzb_config.width = 640;
|
||||
hzb_config.height = 700;
|
||||
hzb_config.title = "Faset HZB diagnostics test";
|
||||
hzb_config.headless = true;
|
||||
hzb_config.validation = true;
|
||||
hzb_config.visibility_mode = render::VisibilityMode::GpuOcclusion;
|
||||
render::Renderer hzb_renderer(hzb_config);
|
||||
render::Snapshot hzb_scene;
|
||||
hzb_scene.view_id = "overlay-hzb-scene";
|
||||
hzb_scene.eye = {4, 3, 6};
|
||||
hzb_scene.view_projection = render::multiply(
|
||||
render::perspective(.85f, 640.f / 700.f, .1f, 100.f),
|
||||
render::look_at(hzb_scene.eye, {0, 0, 0}));
|
||||
render::DrawItem cube;
|
||||
cube.mesh = render::cube_mesh();
|
||||
cube.instance_key = "hzb-cube";
|
||||
hzb_scene.draws.push_back(cube);
|
||||
hzb_renderer.render(hzb_scene);
|
||||
require(hzb_renderer.hzb_debug_image(3).has_value(),
|
||||
"Fixture creates a current HZB for the preview");
|
||||
editor::DebugOverlay hzb_overlay;
|
||||
hzb_overlay.set_visible(true);
|
||||
hzb_overlay.append(hzb_scene, hzb_renderer, 1.f / 60.f);
|
||||
require(!hzb_scene.ui_triangles.empty(), "HZB panel emits its normal font texture");
|
||||
const auto font_texture = hzb_scene.ui_triangles.front().texture;
|
||||
require(std::all_of(hzb_scene.ui_triangles.begin(), hzb_scene.ui_triangles.end(),
|
||||
[&](const auto& batch) { return batch.texture == font_texture; }),
|
||||
"HZB image is absent while preview toggle is off");
|
||||
render::Event preview_click;
|
||||
preview_click.button = 1;
|
||||
preview_click.x = 34;
|
||||
preview_click.y = 405;
|
||||
const auto click_preview = [&] {
|
||||
preview_click.type = render::Event::Type::MouseDown;
|
||||
require(hzb_overlay.process_events(std::span(&preview_click, 1)).empty(),
|
||||
"HZB preview checkbox captures pointer down");
|
||||
hzb_scene.ui_triangles.clear();
|
||||
hzb_overlay.append(hzb_scene, hzb_renderer, 1.f / 60.f);
|
||||
preview_click.type = render::Event::Type::MouseUp;
|
||||
require(hzb_overlay.process_events(std::span(&preview_click, 1)).empty(),
|
||||
"HZB preview checkbox captures pointer up");
|
||||
hzb_scene.ui_triangles.clear();
|
||||
hzb_overlay.append(hzb_scene, hzb_renderer, 1.f / 60.f);
|
||||
};
|
||||
click_preview();
|
||||
hzb_scene.ui_triangles.clear();
|
||||
hzb_overlay.append(hzb_scene, hzb_renderer, 1.f / 60.f);
|
||||
const auto preview = std::find_if(hzb_scene.ui_triangles.begin(),
|
||||
hzb_scene.ui_triangles.end(),
|
||||
[&](const auto& batch) {
|
||||
return batch.texture != font_texture;
|
||||
});
|
||||
require(preview != hzb_scene.ui_triangles.end() && preview->texture->width == 128 &&
|
||||
preview->texture->height == 128 && preview->texture->revision > 0,
|
||||
"Enabled HZB preview emits the selected mip as a revised texture");
|
||||
const std::weak_ptr<const render::Texture> first_preview = preview->texture;
|
||||
click_preview();
|
||||
hzb_scene.ui_triangles.clear();
|
||||
hzb_overlay.append(hzb_scene, hzb_renderer, 1.f / 60.f);
|
||||
require(std::all_of(hzb_scene.ui_triangles.begin(), hzb_scene.ui_triangles.end(),
|
||||
[&](const auto& batch) { return batch.texture == font_texture; }),
|
||||
"Disabling HZB preview removes its texture");
|
||||
require(first_preview.expired(),
|
||||
"Disabling HZB preview releases its CPU texture without rendering");
|
||||
click_preview();
|
||||
hzb_scene.ui_triangles.clear();
|
||||
hzb_overlay.append(hzb_scene, hzb_renderer, 1.f / 60.f);
|
||||
hzb_renderer.render(hzb_scene);
|
||||
require(hzb_renderer.stats().validation_errors == 0 &&
|
||||
hzb_renderer.stats().visibility_counters_valid,
|
||||
"HZB preview renders cleanly and open diagnostics enable GPU counters");
|
||||
hzb_scene.ui_triangles.clear();
|
||||
hzb_overlay.append(hzb_scene, hzb_renderer, 1.f / 60.f);
|
||||
const auto active_preview = std::find_if(hzb_scene.ui_triangles.begin(),
|
||||
hzb_scene.ui_triangles.end(),
|
||||
[&](const auto& batch) {
|
||||
return batch.texture != font_texture;
|
||||
});
|
||||
require(active_preview != hzb_scene.ui_triangles.end(),
|
||||
"Re-enabling HZB preview creates a live texture");
|
||||
const std::weak_ptr<const render::Texture> second_preview = active_preview->texture;
|
||||
hzb_renderer.render(hzb_scene);
|
||||
const auto with_preview_textures = hzb_renderer.stats().texture_count;
|
||||
require(with_preview_textures >= 3,
|
||||
"HZB preview uploads an additional GPU texture");
|
||||
if (argc > 2)
|
||||
hzb_renderer.capture(argv[2]);
|
||||
render::Event close_hzb;
|
||||
close_hzb.type = render::Event::Type::KeyDown;
|
||||
close_hzb.key = "F12";
|
||||
require(hzb_overlay.process_events(std::span(&close_hzb, 1)).empty() &&
|
||||
!hzb_overlay.visible(),
|
||||
"F12 closes an active HZB preview");
|
||||
hzb_scene.ui_triangles.clear();
|
||||
hzb_overlay.append(hzb_scene, hzb_renderer, 1.f / 60.f);
|
||||
require(hzb_scene.ui_triangles.empty(), "Hidden panel emits no HZB preview");
|
||||
hzb_renderer.render(hzb_scene);
|
||||
require(!hzb_renderer.stats().visibility_counters_valid,
|
||||
"Closing diagnostics disables GPU visibility readback");
|
||||
require(second_preview.expired() &&
|
||||
hzb_renderer.stats().texture_count + 1 == with_preview_textures,
|
||||
"Closing diagnostics retires its HZB GPU texture on the next frame");
|
||||
std::cout << "ImGui diagnostics, F12, font atlas, clipping and event isolation passed\n";
|
||||
return 0;
|
||||
} catch (const std::exception& error) {
|
||||
|
||||
@@ -36,4 +36,21 @@ with tempfile.TemporaryDirectory(prefix="faset-player-diagnostics-") as temporar
|
||||
assert validated.returncode == 0, validated.stderr
|
||||
assert "TEST_" not in validated.stderr, validated.stderr
|
||||
assert json.loads(validated.stdout)["validated"]
|
||||
|
||||
for mode, active in [("direct", False), ("gpu-frustum", True),
|
||||
("gpu-occlusion", True)]:
|
||||
mode_profile = root / f"{mode}.json"
|
||||
selected = subprocess.run([sys.argv[1], "--scene", str(scene), "--headless",
|
||||
"--frames", "2", "--visibility", mode,
|
||||
"--profile", str(mode_profile)],
|
||||
capture_output=True, text=True, encoding="utf-8", timeout=30)
|
||||
assert selected.returncode == 0, (mode, selected.stdout, selected.stderr)
|
||||
mode_report = json.loads(mode_profile.read_text(encoding="utf-8"))
|
||||
assert mode_report["visibility_mode"] == mode, mode_report
|
||||
assert all(sample["gpu_visibility_active"] is active
|
||||
for sample in mode_report["samples"]), mode_report["samples"]
|
||||
|
||||
invalid_mode = subprocess.run([sys.argv[1], "--visibility", "missing"],
|
||||
capture_output=True, text=True, encoding="utf-8", timeout=20)
|
||||
assert invalid_mode.returncode != 0 and "visibility" in invalid_mode.stderr.lower(), invalid_mode
|
||||
print("Player normal shutdown diagnostics, preserved tick/profile stats and callback-free validation passed")
|
||||
|
||||
@@ -0,0 +1,625 @@
|
||||
#include <faset/render/renderer.hpp>
|
||||
|
||||
#include <algorithm>
|
||||
#include <cmath>
|
||||
#include <cstdint>
|
||||
#include <filesystem>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
using namespace faset::render;
|
||||
|
||||
namespace {
|
||||
void require(bool condition, const std::string& message) {
|
||||
if (!condition)
|
||||
throw std::runtime_error(message);
|
||||
}
|
||||
|
||||
Renderer make_renderer(VisibilityMode mode, std::uint32_t width = 320,
|
||||
std::uint32_t height = 240) {
|
||||
RendererConfig config;
|
||||
config.width = width;
|
||||
config.height = height;
|
||||
config.headless = true;
|
||||
config.validation = true;
|
||||
config.visibility_mode = mode;
|
||||
config.visibility_diagnostics = true;
|
||||
return Renderer(config);
|
||||
}
|
||||
|
||||
struct Frame {
|
||||
std::vector<std::uint8_t> rgba;
|
||||
FrameStats stats;
|
||||
};
|
||||
|
||||
Frame frame(Renderer& renderer, const Snapshot& scene) {
|
||||
renderer.render(scene);
|
||||
return {renderer.pixels(), renderer.stats()};
|
||||
}
|
||||
|
||||
void compare(const Frame& reference, const Frame& gpu, std::string_view name,
|
||||
bool expect_gpu = true) {
|
||||
require(reference.rgba.size() == gpu.rgba.size() && reference.rgba.size() % 4 == 0,
|
||||
std::string(name) + ": render target dimensions differ");
|
||||
require(reference.stats.validation_errors == 0 && gpu.stats.validation_errors == 0,
|
||||
std::string(name) + ": Vulkan validation reported an error");
|
||||
if (expect_gpu) {
|
||||
require(gpu.stats.gpu_visibility_active,
|
||||
std::string(name) + ": GPU visibility silently fell back to direct rendering");
|
||||
require(gpu.stats.visibility_counters_valid,
|
||||
std::string(name) + ": GPU counter readback was unavailable");
|
||||
}
|
||||
std::size_t bad_pixels = 0;
|
||||
std::uint64_t absolute_error = 0;
|
||||
for (std::size_t i = 0; i < reference.rgba.size(); i += 4) {
|
||||
int worst = 0;
|
||||
for (int c = 0; c < 3; ++c) {
|
||||
const auto difference = std::abs(int(reference.rgba[i + c]) - int(gpu.rgba[i + c]));
|
||||
absolute_error += static_cast<std::uint64_t>(difference);
|
||||
worst = std::max(worst, difference);
|
||||
}
|
||||
if (worst > 16)
|
||||
++bad_pixels;
|
||||
}
|
||||
const auto pixels = reference.rgba.size() / 4;
|
||||
const auto allowed_bad = std::max<std::size_t>(24, pixels / 200);
|
||||
const auto average_error = double(absolute_error) / double(pixels * 3);
|
||||
require(bad_pixels <= allowed_bad && average_error <= 2.0,
|
||||
std::string(name) + ": direct/GPU image mismatch (bad pixels " +
|
||||
std::to_string(bad_pixels) + "/" + std::to_string(pixels) +
|
||||
", RGB mean error " + std::to_string(average_error) + ")");
|
||||
}
|
||||
|
||||
void compare_grid_centers(const Frame& reference, const Frame& gpu, std::size_t count,
|
||||
int columns, float stride) {
|
||||
// Every isolated cube must contribute at least its front-face center. This catches a
|
||||
// dropped instance even when its footprint is smaller than the whole-frame tolerance.
|
||||
for (std::size_t i = 0; i < count; ++i) {
|
||||
const float x = (float(i % columns) - float(columns - 1) * .5f) * stride;
|
||||
const float y = (float(i / columns) - 3.5f) * stride;
|
||||
const int px = std::clamp(int((x / 18.f + .5f) * 320.f), 0, 319);
|
||||
const int py = std::clamp(int((.5f - y / 16.f) * 240.f), 0, 239);
|
||||
const auto offset = (std::size_t(py) * 320 + std::size_t(px)) * 4;
|
||||
const auto reference_energy = int(reference.rgba[offset]) +
|
||||
int(reference.rgba[offset + 1]) +
|
||||
int(reference.rgba[offset + 2]);
|
||||
require(reference_energy > 90,
|
||||
"capacity fixture does not cover projected center of instance " +
|
||||
std::to_string(i));
|
||||
for (int channel = 0; channel < 3; ++channel)
|
||||
require(std::abs(int(reference.rgba[offset + channel]) -
|
||||
int(gpu.rgba[offset + channel])) <= 16,
|
||||
"instance " + std::to_string(i) + " differs at its projected center");
|
||||
}
|
||||
}
|
||||
|
||||
DrawItem cube(std::string key, Vec3 position, Vec3 scale = {1, 1, 1},
|
||||
Color color = {0.75f, 0.6f, 0.35f, 1}) {
|
||||
DrawItem item;
|
||||
item.mesh = cube_mesh();
|
||||
item.model = transform(position, {}, scale);
|
||||
item.color = color;
|
||||
item.instance_key = std::move(key);
|
||||
return item;
|
||||
}
|
||||
|
||||
Snapshot grid(std::size_t count, int columns = 9, float stride = 1.7f) {
|
||||
Snapshot result;
|
||||
result.view_id = "acceptance-grid";
|
||||
result.eye = {0, 0, 20};
|
||||
result.view_projection = multiply(orthographic(-9, 9, -8, 8, .1f, 100),
|
||||
look_at(result.eye, {0, 0, 0}));
|
||||
for (std::size_t i = 0; i < count; ++i) {
|
||||
float x = (float(i % columns) - float(columns - 1) * .5f) * stride;
|
||||
float y = (float(i / columns) - 3.5f) * stride;
|
||||
const Color tint{.35f + .5f * float(i % 3) / 2.f,
|
||||
.3f + .5f * float(i % 5) / 4.f,
|
||||
.3f + .5f * float(i % 7) / 6.f, 1};
|
||||
result.draws.push_back(
|
||||
cube("grid-" + std::to_string(i), {x, y, 0}, {.55f, .55f, .55f}, tint));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void empty_and_retirement() {
|
||||
auto direct = make_renderer(VisibilityMode::Direct);
|
||||
auto gpu = make_renderer(VisibilityMode::GpuFrustum);
|
||||
auto populated = grid(64);
|
||||
frame(gpu, populated);
|
||||
auto empty = grid(0);
|
||||
const auto expected = frame(direct, empty);
|
||||
const auto actual = frame(gpu, empty);
|
||||
compare(expected, actual, "empty scene after populated frame");
|
||||
require(actual.stats.gpu_visible_instances == 0,
|
||||
"empty scene reused an indirect instance count from the previous frame");
|
||||
}
|
||||
|
||||
void exact_capacity() {
|
||||
auto direct = make_renderer(VisibilityMode::Direct);
|
||||
auto gpu = make_renderer(VisibilityMode::GpuFrustum);
|
||||
for (const std::size_t count : {64u, 65u, 64u}) {
|
||||
auto scene = grid(count);
|
||||
const auto expected = frame(direct, scene);
|
||||
const auto actual = frame(gpu, scene);
|
||||
compare(expected, actual, "capacity " + std::to_string(count));
|
||||
compare_grid_centers(expected, actual, count, 9, 1.7f);
|
||||
require(actual.stats.gpu_visible_instances == count,
|
||||
"fixed bin dropped an in-frustum instance at a capacity boundary");
|
||||
}
|
||||
}
|
||||
|
||||
void dense_frustum() {
|
||||
auto direct = make_renderer(VisibilityMode::Direct);
|
||||
auto gpu = make_renderer(VisibilityMode::GpuFrustum);
|
||||
auto scene = grid(256, 16, 2.0f);
|
||||
const auto expected = frame(direct, scene);
|
||||
const auto actual = frame(gpu, scene);
|
||||
compare(expected, actual, "dense frustum scene");
|
||||
require(actual.stats.gpu_frustum_rejected > 0,
|
||||
"GPU frustum pass failed to reject offscreen objects");
|
||||
require(actual.stats.gpu_bins > 0 && actual.stats.gpu_bins < scene.draws.size(),
|
||||
"instances were not submitted through fixed indirect bins");
|
||||
}
|
||||
|
||||
Snapshot doorway(bool open) {
|
||||
Snapshot result;
|
||||
result.view_id = "acceptance-door";
|
||||
result.eye = {0, 0, 8};
|
||||
result.view_projection = multiply(perspective(.85f, 320.f / 240.f, .1f, 100),
|
||||
look_at(result.eye, {0, 0, 0}));
|
||||
auto wall = cube("door-wall", {open ? 20.f : 0.f, 0, 0}, {7, 7, .4f},
|
||||
{.65f, .65f, .65f, 1});
|
||||
wall.cast_shadow = false;
|
||||
result.draws.push_back(std::move(wall));
|
||||
auto behind = cube("behind-door", {0, 0, -2}, {1.8f, 1.8f, 1.8f},
|
||||
{.9f, .15f, .12f, 1});
|
||||
behind.cast_shadow = false;
|
||||
result.draws.push_back(std::move(behind));
|
||||
return result;
|
||||
}
|
||||
|
||||
void door_reveal() {
|
||||
auto direct = make_renderer(VisibilityMode::Direct);
|
||||
auto gpu = make_renderer(VisibilityMode::GpuOcclusion);
|
||||
auto closed = doorway(false);
|
||||
auto open = doorway(true);
|
||||
frame(gpu, closed);
|
||||
frame(gpu, closed); // Give the previous-view pyramid an ordinary settled frame.
|
||||
const auto expected = frame(direct, open);
|
||||
const auto actual = frame(gpu, open);
|
||||
compare(expected, actual, "door reveal");
|
||||
require(actual.stats.gpu_occlusion_deferred > 0 && actual.stats.gpu_post_visible > 0,
|
||||
"newly revealed instance did not pass through post-occlusion recovery (deferred=" +
|
||||
std::to_string(actual.stats.gpu_occlusion_deferred) + ", post=" +
|
||||
std::to_string(actual.stats.gpu_post_visible) + ", hzb_valid=" +
|
||||
std::to_string(actual.stats.hzb_valid) + ")");
|
||||
}
|
||||
|
||||
Snapshot shadow_scene(bool caster) {
|
||||
Snapshot result;
|
||||
result.view_id = "acceptance-shadow";
|
||||
result.eye = {0, 5, 8};
|
||||
result.view_projection = multiply(orthographic(-2.5f, 2.5f, -2, 2, .1f, 50),
|
||||
look_at(result.eye, {0, -1, 0}));
|
||||
result.draws.push_back(cube("receiver", {0, -1, 0}, {8, .1f, 8},
|
||||
{.8f, .8f, .8f, 1}));
|
||||
if (caster)
|
||||
result.draws.push_back(cube("offscreen-caster", {3, 1, 0}, {.8f, .8f, .8f},
|
||||
{.2f, .2f, .8f, 1}));
|
||||
return result;
|
||||
}
|
||||
|
||||
void offscreen_shadow() {
|
||||
auto direct = make_renderer(VisibilityMode::Direct);
|
||||
auto gpu = make_renderer(VisibilityMode::GpuFrustum);
|
||||
auto with_caster = shadow_scene(true);
|
||||
const auto expected = frame(direct, with_caster);
|
||||
const auto actual = frame(gpu, with_caster);
|
||||
compare(expected, actual, "offscreen shadow caster");
|
||||
require(actual.stats.gpu_frustum_rejected > 0,
|
||||
"shadow fixture caster must be outside the camera frustum");
|
||||
auto without = frame(direct, shadow_scene(false));
|
||||
std::size_t shadow_pixels = 0;
|
||||
for (std::size_t i = 0; i < expected.rgba.size(); i += 4)
|
||||
if (int(without.rgba[i]) > int(expected.rgba[i]) + 12) {
|
||||
++shadow_pixels;
|
||||
for (int channel = 0; channel < 3; ++channel)
|
||||
require(std::abs(int(expected.rgba[i + channel]) -
|
||||
int(actual.rgba[i + channel])) <= 16,
|
||||
"GPU culling removed the visible shadow of an offscreen caster");
|
||||
}
|
||||
require(shadow_pixels > 20,
|
||||
"offscreen shadow fixture did not cast a visible shadow on the receiver");
|
||||
}
|
||||
|
||||
void camera_cut() {
|
||||
auto direct = make_renderer(VisibilityMode::Direct);
|
||||
auto gpu = make_renderer(VisibilityMode::GpuOcclusion);
|
||||
auto scene = doorway(false);
|
||||
frame(gpu, scene);
|
||||
scene.eye = {0, 0, -8};
|
||||
scene.view_projection = multiply(perspective(.85f, 320.f / 240.f, .1f, 100),
|
||||
look_at(scene.eye, {0, 0, 0}));
|
||||
scene.camera_cut = true;
|
||||
compare(frame(direct, scene), frame(gpu, scene), "camera cut");
|
||||
}
|
||||
|
||||
void unmarked_teleport() {
|
||||
auto direct = make_renderer(VisibilityMode::Direct);
|
||||
auto gpu = make_renderer(VisibilityMode::GpuOcclusion);
|
||||
auto scene = doorway(false);
|
||||
frame(gpu, scene);
|
||||
frame(gpu, scene);
|
||||
scene.eye = {0, 0, -8};
|
||||
scene.view_projection = multiply(perspective(.85f, 320.f / 240.f, .1f, 100),
|
||||
look_at(scene.eye, {0, 0, 0}));
|
||||
// Some clients cannot label a teleport immediately. The previous HZB may be reused,
|
||||
// but post-cull must fail open and restore anything it incorrectly deferred.
|
||||
const auto actual = frame(gpu, scene);
|
||||
compare(frame(direct, scene), actual, "unmarked camera teleport");
|
||||
require(actual.stats.hzb_valid && actual.stats.gpu_post_visible > 0,
|
||||
"teleport reused HZB without post-cull recovery (post=" +
|
||||
std::to_string(actual.stats.gpu_post_visible) + ")");
|
||||
}
|
||||
|
||||
void near_plane_and_camera_inside() {
|
||||
auto direct = make_renderer(VisibilityMode::Direct);
|
||||
auto gpu = make_renderer(VisibilityMode::GpuOcclusion);
|
||||
Snapshot scene;
|
||||
scene.view_id = "acceptance-near-plane";
|
||||
scene.eye = {0, 0, 0};
|
||||
scene.view_projection = multiply(perspective(.85f, 320.f / 240.f, .1f, 100),
|
||||
look_at(scene.eye, {0, 0, -1}));
|
||||
auto near = cube("near-object", {0, 0, -.2f}, {.4f, .4f, .4f});
|
||||
near.cast_shadow = false;
|
||||
scene.draws.push_back(std::move(near));
|
||||
auto actual = frame(gpu, scene);
|
||||
compare(frame(direct, scene), actual, "mesh crossing near plane");
|
||||
require(actual.stats.gpu_visible_instances == 1,
|
||||
"near-plane bounds were wrongly rejected by GPU frustum culling");
|
||||
|
||||
scene.draws.front().model = transform({0, 0, 0}, {}, {4, 4, 4});
|
||||
actual = frame(gpu, scene);
|
||||
compare(frame(direct, scene), actual, "camera inside mesh bounds");
|
||||
require(actual.stats.gpu_visible_instances == 1,
|
||||
"camera-inside bounds were wrongly rejected using HZB history");
|
||||
}
|
||||
|
||||
void odd_resize() {
|
||||
auto direct = make_renderer(VisibilityMode::Direct, 319, 241);
|
||||
auto gpu = make_renderer(VisibilityMode::GpuOcclusion, 319, 241);
|
||||
auto scene = doorway(false);
|
||||
scene.view_id = "acceptance-resize";
|
||||
frame(gpu, scene);
|
||||
direct.resize(321, 239);
|
||||
gpu.resize(321, 239);
|
||||
scene.camera_cut = true;
|
||||
scene.view_projection = multiply(perspective(.85f, 321.f / 239.f, .1f, 100),
|
||||
look_at(scene.eye, {0, 0, 0}));
|
||||
const auto expected = frame(direct, scene);
|
||||
const auto actual = frame(gpu, scene);
|
||||
require(actual.rgba.size() == 321u * 239u * 4u, "odd resize returned stale image extent");
|
||||
compare(expected, actual, "odd resize");
|
||||
}
|
||||
|
||||
std::shared_ptr<const Mesh> coarse_cube() {
|
||||
static const auto mesh = [] {
|
||||
auto result = std::make_shared<Mesh>(*cube_mesh());
|
||||
for (auto& vertex : result->vertices)
|
||||
for (auto& coordinate : vertex.position)
|
||||
coordinate *= .6f;
|
||||
return result;
|
||||
}();
|
||||
return mesh;
|
||||
}
|
||||
|
||||
void spawn_despawn_and_key_reuse() {
|
||||
auto direct = make_renderer(VisibilityMode::Direct);
|
||||
auto gpu = make_renderer(VisibilityMode::GpuOcclusion);
|
||||
auto populated = grid(512, 16, 1.5f);
|
||||
compare(frame(direct, populated), frame(gpu, populated), "mass spawn");
|
||||
auto empty = grid(0);
|
||||
const auto retired = frame(gpu, empty);
|
||||
compare(frame(direct, empty), retired, "mass despawn");
|
||||
require(retired.stats.gpu_visible_instances == 0,
|
||||
"despawn left stale indirect counts or visible IDs");
|
||||
auto respawn = grid(513, 16, 1.5f);
|
||||
for (auto& draw : respawn.draws)
|
||||
draw.model[12] += .75f;
|
||||
compare(frame(direct, respawn), frame(gpu, respawn), "mass respawn after capacity growth");
|
||||
|
||||
auto reuse_direct = make_renderer(VisibilityMode::Direct);
|
||||
auto reuse_gpu = make_renderer(VisibilityMode::GpuOcclusion);
|
||||
auto closed = doorway(false);
|
||||
frame(reuse_gpu, closed);
|
||||
frame(reuse_gpu, closed);
|
||||
closed.draws.pop_back();
|
||||
frame(reuse_gpu, closed); // Remove the old key for a complete submitted frame.
|
||||
auto replacement = doorway(false);
|
||||
replacement.draws.back().mesh = coarse_cube();
|
||||
replacement.draws.back().model = transform({0, 0, 2}, {}, {3, 3, 3});
|
||||
const auto reused = frame(reuse_gpu, replacement);
|
||||
compare(frame(reuse_direct, replacement), reused, "reused key with a different mesh");
|
||||
require(reused.stats.hzb_valid && reused.stats.gpu_visible_instances >= 1,
|
||||
"reused key/mesh inherited invalid previous visibility");
|
||||
}
|
||||
|
||||
void independent_view_ids() {
|
||||
auto direct = make_renderer(VisibilityMode::Direct);
|
||||
auto gpu = make_renderer(VisibilityMode::GpuOcclusion);
|
||||
auto a = doorway(false);
|
||||
a.view_id = "acceptance-view-A";
|
||||
frame(gpu, a);
|
||||
frame(gpu, a);
|
||||
auto b = doorway(true);
|
||||
b.view_id = "acceptance-view-B";
|
||||
auto first_b = frame(gpu, b);
|
||||
compare(frame(direct, b), first_b, "first frame of a second view");
|
||||
require(!first_b.stats.hzb_valid,
|
||||
"second view inherited the first view's HZB history");
|
||||
auto next_b = frame(gpu, b);
|
||||
compare(frame(direct, b), next_b, "second frame of a second view");
|
||||
require(next_b.stats.hzb_valid,
|
||||
"second view failed to establish its own HZB history");
|
||||
compare(frame(direct, a), frame(gpu, a), "return to first view");
|
||||
}
|
||||
|
||||
void projection_change() {
|
||||
auto direct = make_renderer(VisibilityMode::Direct);
|
||||
auto gpu = make_renderer(VisibilityMode::GpuOcclusion);
|
||||
auto scene = doorway(false);
|
||||
scene.view_id = "acceptance-projection";
|
||||
scene.projection = perspective(.85f, 320.f / 240.f, .1f, 100);
|
||||
scene.view_projection = multiply(scene.projection, look_at(scene.eye, {0, 0, 0}));
|
||||
frame(gpu, scene);
|
||||
const auto settled = frame(gpu, scene);
|
||||
require(settled.stats.hzb_valid, "projection fixture failed to establish HZB history");
|
||||
|
||||
scene.projection = perspective(1.2f, 320.f / 240.f, .1f, 100);
|
||||
scene.view_projection = multiply(scene.projection, look_at(scene.eye, {0, 0, 0}));
|
||||
const auto changed = frame(gpu, scene);
|
||||
compare(frame(direct, scene), changed, "FOV change");
|
||||
require(!changed.stats.hzb_valid,
|
||||
"FOV/projection change retained incompatible HZB history");
|
||||
const auto next = frame(gpu, scene);
|
||||
require(next.stats.hzb_valid,
|
||||
"new projection failed to establish fresh HZB history");
|
||||
}
|
||||
|
||||
void long_open_sequence() {
|
||||
auto direct = make_renderer(VisibilityMode::Direct);
|
||||
auto gpu = make_renderer(VisibilityMode::GpuOcclusion);
|
||||
auto scene = grid(64);
|
||||
scene.view_id = "acceptance-open-sequence";
|
||||
for (auto& draw : scene.draws)
|
||||
draw.cast_shadow = false;
|
||||
for (int index = 0; index < 96; ++index) {
|
||||
const float pan = .8f * std::sin(float(index) * .17f);
|
||||
scene.eye = {pan, 0, 20};
|
||||
scene.view_projection = multiply(orthographic(-9, 9, -8, 8, .1f, 100),
|
||||
look_at(scene.eye, {pan, 0, 0}));
|
||||
const auto actual = frame(gpu, scene);
|
||||
compare(frame(direct, scene), actual,
|
||||
"open scene frame " + std::to_string(index));
|
||||
require(actual.stats.gpu_visible_instances == scene.draws.size(),
|
||||
"open scene lost an instance on frame " + std::to_string(index));
|
||||
if (index > 0)
|
||||
require(actual.stats.hzb_valid,
|
||||
"stable open view lost HZB history on frame " + std::to_string(index));
|
||||
}
|
||||
}
|
||||
|
||||
void transparent_foreground() {
|
||||
auto direct = make_renderer(VisibilityMode::Direct);
|
||||
auto gpu = make_renderer(VisibilityMode::GpuOcclusion);
|
||||
auto scene = doorway(true);
|
||||
scene.view_id = "acceptance-transparent";
|
||||
scene.draws.clear();
|
||||
auto opaque = cube("opaque-behind", {0, 0, -2}, {1.8f, 1.8f, 1.8f},
|
||||
{.9f, .15f, .12f, 1});
|
||||
opaque.cast_shadow = false;
|
||||
scene.draws.push_back(std::move(opaque));
|
||||
auto glass = cube("transparent-foreground", {0, 0, 0}, {7, 7, .4f},
|
||||
{.1f, .35f, .9f, .28f});
|
||||
glass.cast_shadow = false;
|
||||
scene.draws.push_back(std::move(glass));
|
||||
const auto reference = frame(direct, scene);
|
||||
auto without_opaque = scene;
|
||||
without_opaque.draws.erase(without_opaque.draws.begin());
|
||||
const auto glass_only = frame(direct, without_opaque);
|
||||
std::size_t affected = 0;
|
||||
for (std::size_t i = 0; i < reference.rgba.size(); i += 4)
|
||||
if (std::abs(int(reference.rgba[i]) - int(glass_only.rgba[i])) > 20)
|
||||
++affected;
|
||||
require(affected > 100,
|
||||
"transparent fixture does not reveal the opaque object behind it");
|
||||
for (int index = 0; index < 3; ++index) {
|
||||
const auto actual = frame(gpu, scene);
|
||||
compare(reference, actual,
|
||||
"transparent foreground frame " + std::to_string(index));
|
||||
require(actual.stats.gpu_visible_instances >= 1,
|
||||
"transparent foreground hid the opaque GPU instance");
|
||||
}
|
||||
scene.draws.pop_back();
|
||||
compare(frame(direct, scene), frame(gpu, scene),
|
||||
"opaque object after transparent foreground disappears");
|
||||
}
|
||||
|
||||
Snapshot lod_scene(float scale) {
|
||||
Snapshot result;
|
||||
result.view_id = "acceptance-lod";
|
||||
result.eye = {0, 0, 8};
|
||||
result.view_projection = multiply(orthographic(-2, 2, -2, 2, .1f, 30),
|
||||
look_at(result.eye, {0, 0, 0}));
|
||||
auto item = cube("lod-object", {0, 0, 0}, {scale, scale, scale});
|
||||
item.cast_shadow = false;
|
||||
item.lod_meshes.push_back(coarse_cube());
|
||||
result.draws.push_back(std::move(item));
|
||||
return result;
|
||||
}
|
||||
|
||||
void prepared_lod_hysteresis() {
|
||||
auto gpu = make_renderer(VisibilityMode::GpuFrustum);
|
||||
auto direct = make_renderer(VisibilityMode::Direct);
|
||||
auto near = lod_scene(4.f);
|
||||
const auto fine = frame(gpu, near);
|
||||
require(fine.stats.lod_counts[0] == 1, "near prepared mesh did not use LOD 0");
|
||||
near.draws.front().lod_meshes.clear();
|
||||
compare(frame(direct, near), fine, "near prepared LOD");
|
||||
|
||||
float transition_scale = 0;
|
||||
for (float scale = 3.92f; scale >= .5f; scale *= .98f) {
|
||||
auto sample = lod_scene(scale);
|
||||
const auto actual = frame(gpu, sample);
|
||||
if (actual.stats.lod_counts[1] == 1) {
|
||||
transition_scale = scale;
|
||||
sample.draws.front().mesh = coarse_cube();
|
||||
sample.draws.front().lod_meshes.clear();
|
||||
compare(frame(direct, sample), actual, "prepared coarse LOD");
|
||||
break;
|
||||
}
|
||||
}
|
||||
require(transition_scale > 0, "prepared mesh never transitioned to LOD 1");
|
||||
|
||||
auto jitter = lod_scene(transition_scale * 1.04f);
|
||||
const auto stable = frame(gpu, jitter);
|
||||
require(stable.stats.lod_counts[1] == 1,
|
||||
"small reverse scale jitter changed LOD despite hysteresis");
|
||||
jitter.draws.front().mesh = coarse_cube();
|
||||
jitter.draws.front().lod_meshes.clear();
|
||||
compare(frame(direct, jitter), stable, "LOD hysteresis");
|
||||
|
||||
auto return_near = lod_scene(transition_scale * 1.4f);
|
||||
const auto recovered = frame(gpu, return_near);
|
||||
require(recovered.stats.lod_counts[0] == 1,
|
||||
"LOD hysteresis failed to return to the fine mesh after a large scale change");
|
||||
}
|
||||
|
||||
void csv_field(std::ostream& output, std::string_view value) {
|
||||
output << '"';
|
||||
for (char character : value) {
|
||||
if (character == '"')
|
||||
output << '"';
|
||||
output << character;
|
||||
}
|
||||
output << '"';
|
||||
}
|
||||
|
||||
void benchmark(const std::filesystem::path& output) {
|
||||
std::ofstream csv(output);
|
||||
require(bool(csv), "cannot open benchmark output: " + output.string());
|
||||
csv << "scenario,mode,frame,device,cpu_ms,gpu_ms,readback_cpu_ms,"
|
||||
"gpu_main_cull_ms,gpu_main_raster_ms,gpu_hzb_ms,gpu_post_cull_ms,"
|
||||
"gpu_post_raster_ms,gpu_bytes,draw_calls,"
|
||||
"gpu_bins,gpu_visible,gpu_frustum_rejected,gpu_deferred,gpu_post_visible,"
|
||||
"lod0,lod1,lod2,lod3,hzb_valid,gpu_visibility_active,"
|
||||
"visibility_diagnostics,visibility_counters_valid,validation_errors\n";
|
||||
auto frustum = grid(1024, 32, .7f);
|
||||
auto open = grid(0);
|
||||
open.view_id = "benchmark-open";
|
||||
for (std::size_t i = 0; i < 1024; ++i) {
|
||||
const float x = (float(i % 32) - 15.5f) * .48f;
|
||||
const float y = (float(i / 32) - 15.5f) * .48f;
|
||||
open.draws.push_back(cube("open-" + std::to_string(i), {x, y, 0}, {.18f, .18f, .18f}));
|
||||
}
|
||||
auto occluded = doorway(false);
|
||||
occluded.view_id = "benchmark-occluded";
|
||||
for (std::size_t i = 0; i < 1024; ++i) {
|
||||
const float x = (float(i % 32) - 15.5f) * .13f;
|
||||
const float y = (float(i / 32) - 15.5f) * .13f;
|
||||
occluded.draws.push_back(
|
||||
cube("hidden-" + std::to_string(i), {x, y, -3}, {.1f, .1f, .1f}));
|
||||
}
|
||||
for (auto* scene : {&frustum, &open, &occluded})
|
||||
for (auto& draw : scene->draws)
|
||||
draw.cast_shadow = false;
|
||||
struct Workload {
|
||||
const char* name;
|
||||
Snapshot* snapshot;
|
||||
};
|
||||
for (const auto workload : {Workload{"frustum", &frustum}, Workload{"open", &open},
|
||||
Workload{"occluded", &occluded}}) {
|
||||
for (const auto mode : {VisibilityMode::Direct, VisibilityMode::GpuFrustum,
|
||||
VisibilityMode::GpuOcclusion}) {
|
||||
auto renderer = make_renderer(mode);
|
||||
for (int warmup = 0; warmup < 10; ++warmup)
|
||||
renderer.render(*workload.snapshot);
|
||||
for (int sample = 0; sample < 30; ++sample) {
|
||||
renderer.render(*workload.snapshot);
|
||||
const auto& s = renderer.stats();
|
||||
const char* name = mode == VisibilityMode::Direct ? "direct"
|
||||
: mode == VisibilityMode::GpuFrustum ? "gpu_frustum"
|
||||
: "gpu_occlusion";
|
||||
csv << workload.name << ',' << name << ',' << sample << ',';
|
||||
csv_field(csv, s.device);
|
||||
csv << ',' << s.cpu_ms << ',' << s.gpu_ms << ',' << s.readback_cpu_ms << ','
|
||||
<< s.gpu_main_cull_ms << ',' << s.gpu_main_raster_ms << ',' << s.gpu_hzb_ms
|
||||
<< ',' << s.gpu_post_cull_ms << ',' << s.gpu_post_raster_ms << ','
|
||||
<< s.gpu_allocated_bytes << ',' << s.draw_calls << ',' << s.gpu_bins << ','
|
||||
<< s.gpu_visible_instances << ',' << s.gpu_frustum_rejected << ','
|
||||
<< s.gpu_occlusion_deferred << ',' << s.gpu_post_visible;
|
||||
for (auto count : s.lod_counts)
|
||||
csv << ',' << count;
|
||||
csv << ',' << (s.hzb_valid ? 1 : 0) << ','
|
||||
<< (s.gpu_visibility_active ? 1 : 0) << ",1,"
|
||||
<< (s.visibility_counters_valid ? 1 : 0) << ','
|
||||
<< s.validation_errors << '\n';
|
||||
}
|
||||
}
|
||||
}
|
||||
require(bool(csv), "failed to write benchmark output: " + output.string());
|
||||
}
|
||||
} // namespace
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
try {
|
||||
if (argc == 3 && std::string_view(argv[1]) == "--benchmark") {
|
||||
benchmark(argv[2]);
|
||||
return 0;
|
||||
}
|
||||
require(argc == 3 && std::string_view(argv[1]) == "--case",
|
||||
"usage: faset_render_gpu_acceptance_tests --case <name> | --benchmark <csv>");
|
||||
const std::string_view name = argv[2];
|
||||
if (name == "empty")
|
||||
empty_and_retirement();
|
||||
else if (name == "capacity")
|
||||
exact_capacity();
|
||||
else if (name == "dense")
|
||||
dense_frustum();
|
||||
else if (name == "door")
|
||||
door_reveal();
|
||||
else if (name == "shadow")
|
||||
offscreen_shadow();
|
||||
else if (name == "cut")
|
||||
camera_cut();
|
||||
else if (name == "teleport")
|
||||
unmarked_teleport();
|
||||
else if (name == "near")
|
||||
near_plane_and_camera_inside();
|
||||
else if (name == "lifecycle")
|
||||
spawn_despawn_and_key_reuse();
|
||||
else if (name == "views")
|
||||
independent_view_ids();
|
||||
else if (name == "projection")
|
||||
projection_change();
|
||||
else if (name == "open_sequence")
|
||||
long_open_sequence();
|
||||
else if (name == "transparent")
|
||||
transparent_foreground();
|
||||
else if (name == "resize")
|
||||
odd_resize();
|
||||
else if (name == "lod")
|
||||
prepared_lod_hysteresis();
|
||||
else
|
||||
throw std::invalid_argument("unknown acceptance case: " + std::string(name));
|
||||
std::cout << "P2 GPU visibility acceptance: " << name << " passed\n";
|
||||
} catch (const std::exception& exception) {
|
||||
std::cerr << "P2 GPU visibility acceptance: " << exception.what() << '\n';
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
#include "shader_contract.hpp"
|
||||
#include <faset/core/hash.hpp>
|
||||
#include <faset/core/io.hpp>
|
||||
#include <filesystem>
|
||||
#include <iostream>
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
|
||||
namespace fs = std::filesystem;
|
||||
namespace {
|
||||
void require(bool valid, const char* message) {
|
||||
if (!valid)
|
||||
throw std::runtime_error(message);
|
||||
}
|
||||
template <class Function> void must_reject(Function&& function, const char* message) {
|
||||
try {
|
||||
function();
|
||||
} catch (const std::exception&) {
|
||||
return;
|
||||
}
|
||||
throw std::runtime_error(message);
|
||||
}
|
||||
} // namespace
|
||||
int main() {
|
||||
const auto original = fs::path(FASET_TEST_SHADER_DIRECTORY);
|
||||
const auto temporary = fs::temp_directory_path() / "faset-gpu-shader-contract-test";
|
||||
struct Cleanup {
|
||||
fs::path path;
|
||||
~Cleanup() { std::error_code ignored; fs::remove_all(path, ignored); }
|
||||
} cleanup{temporary};
|
||||
try {
|
||||
fs::create_directories(temporary);
|
||||
constexpr const char* entries[] = {"gpuVertexMain", "gpuShadowMain", "gpuCullMain",
|
||||
"gpuHzbMain", "gpuPostCullMain"};
|
||||
for (const auto* entry : entries)
|
||||
for (const auto* extension : {".spv", ".reflection.json"}) {
|
||||
const auto file = std::string(entry) + extension;
|
||||
fs::copy_file(original / file, temporary / file, fs::copy_options::overwrite_existing);
|
||||
}
|
||||
auto shaders = faset::render::detail::load_gpu_shader_bundle(temporary);
|
||||
for (const auto& shader : shaders)
|
||||
require(!shader.words.empty() && !shader.layout_fingerprint.empty(),
|
||||
"Every P2 entry is valid SPIR-V with checked metadata");
|
||||
auto shader_file = temporary / "gpuCullMain.spv";
|
||||
const auto shader_bytes = faset::read_text(shader_file);
|
||||
faset::atomic_write(shader_file, "corrupt");
|
||||
must_reject([&] { (void)faset::render::detail::load_gpu_shader_bundle(temporary); },
|
||||
"Corrupt P2 SPIR-V must be rejected");
|
||||
faset::atomic_write(shader_file, shader_bytes);
|
||||
auto reflection_file = temporary / "gpuPostCullMain.reflection.json";
|
||||
auto metadata = faset::read_json(reflection_file);
|
||||
metadata["layout_fingerprint"] = "tampered";
|
||||
faset::atomic_write_json(reflection_file, metadata);
|
||||
must_reject([&] { (void)faset::render::detail::load_gpu_shader_bundle(temporary); },
|
||||
"Tampered P2 layout fingerprint must be rejected");
|
||||
metadata = faset::read_json(original / "gpuPostCullMain.reflection.json");
|
||||
metadata["layout"]["descriptors"][0]["element_stride"] = 208;
|
||||
metadata["layout_fingerprint"] = faset::sha256(metadata["layout"].dump());
|
||||
faset::atomic_write_json(reflection_file, metadata);
|
||||
must_reject([&] { (void)faset::render::detail::load_gpu_shader_bundle(temporary); },
|
||||
"A consistently rehashed but incompatible GPU record stride must be rejected");
|
||||
fs::remove(temporary / "gpuHzbMain.spv");
|
||||
must_reject([&] { (void)faset::render::detail::load_gpu_shader_bundle(temporary); },
|
||||
"Missing P2 entry must be rejected");
|
||||
std::cout << "GPU shader bundle validates every entry and rejects corrupt or missing artifacts\n";
|
||||
return 0;
|
||||
} catch (const std::exception& error) {
|
||||
std::cerr << error.what() << '\n';
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
#include <algorithm>
|
||||
#include <cmath>
|
||||
#include <cstdint>
|
||||
#include <faset/render/renderer.hpp>
|
||||
#include <iostream>
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
using namespace faset::render;
|
||||
|
||||
namespace {
|
||||
void require(bool condition, const std::string& message) {
|
||||
if (!condition)
|
||||
throw std::runtime_error(message);
|
||||
}
|
||||
|
||||
RendererConfig config(VisibilityMode mode) {
|
||||
RendererConfig result;
|
||||
result.width = 320;
|
||||
result.height = 240;
|
||||
result.headless = true;
|
||||
result.validation = true;
|
||||
result.visibility_mode = mode;
|
||||
result.visibility_diagnostics = true;
|
||||
return result;
|
||||
}
|
||||
|
||||
Snapshot scene() {
|
||||
Snapshot frame;
|
||||
frame.view_id = "gpu-visibility-test";
|
||||
frame.eye = {4, 3, 6};
|
||||
frame.view_projection =
|
||||
multiply(perspective(.85f, 320.f / 240.f, .1f, 100.f), look_at(frame.eye, {0, 0, 0}));
|
||||
DrawItem visible;
|
||||
visible.mesh = cube_mesh();
|
||||
visible.model = transform({0, 0, 0});
|
||||
visible.color = {.8f, .6f, .3f, 1};
|
||||
visible.instance_key = "visible-cube";
|
||||
frame.draws.push_back(visible);
|
||||
DrawItem hidden = visible;
|
||||
hidden.model = transform({100, 0, 0});
|
||||
hidden.instance_key = "outside-cube";
|
||||
frame.draws.push_back(hidden);
|
||||
return frame;
|
||||
}
|
||||
|
||||
std::size_t different_pixels(const std::vector<std::uint8_t>& a,
|
||||
const std::vector<std::uint8_t>& b, int tolerance) {
|
||||
require(a.size() == b.size(), "Image sizes differ");
|
||||
std::size_t result{};
|
||||
for (std::size_t i = 0; i < a.size(); i += 4)
|
||||
if (std::abs(int(a[i]) - int(b[i])) > tolerance ||
|
||||
std::abs(int(a[i + 1]) - int(b[i + 1])) > tolerance ||
|
||||
std::abs(int(a[i + 2]) - int(b[i + 2])) > tolerance)
|
||||
++result;
|
||||
return result;
|
||||
}
|
||||
} // namespace
|
||||
|
||||
int main() {
|
||||
try {
|
||||
Renderer direct(config(VisibilityMode::Direct));
|
||||
Renderer gpu(config(VisibilityMode::GpuFrustum));
|
||||
auto frame = scene();
|
||||
direct.render(frame);
|
||||
gpu.render(frame);
|
||||
require(gpu.stats().gpu_visibility_active, "GPU visibility path did not run");
|
||||
require(gpu.stats().gpu_bins == 1 && gpu.stats().gpu_visible_instances == 1 &&
|
||||
gpu.stats().gpu_frustum_rejected == 1,
|
||||
"GPU frustum/indirect counts are wrong");
|
||||
require(gpu.stats().validation_errors == 0, "Vulkan validation rejected GPU path");
|
||||
if (gpu.stats().gpu_ms > 0)
|
||||
require(gpu.stats().gpu_main_cull_ms > 0 &&
|
||||
gpu.stats().gpu_main_raster_ms > 0,
|
||||
"GPU visibility pass timings are missing");
|
||||
require(different_pixels(direct.pixels(), gpu.pixels(), 5) < 160,
|
||||
"GPU and direct opaque images differ");
|
||||
|
||||
frame.draws.clear();
|
||||
gpu.render(frame);
|
||||
require(gpu.stats().gpu_visible_instances == 0 && gpu.stats().gpu_bins == 0,
|
||||
"Empty frame must reset indirect counts");
|
||||
require(gpu.stats().validation_errors == 0, "Empty GPU frame failed validation");
|
||||
gpu.set_visibility_diagnostics(false);
|
||||
gpu.render(scene());
|
||||
require(!gpu.stats().visibility_counters_valid &&
|
||||
gpu.stats().gpu_visibility_active,
|
||||
"Normal GPU rendering must not read diagnostic visibility counters");
|
||||
gpu.set_visibility_diagnostics(true);
|
||||
gpu.render(scene());
|
||||
require(gpu.stats().visibility_counters_valid &&
|
||||
gpu.stats().gpu_visible_instances == 1,
|
||||
"Visibility counters can be enabled for diagnostics");
|
||||
Renderer occlusion(config(VisibilityMode::GpuOcclusion));
|
||||
occlusion.render(scene());
|
||||
auto hzb = occlusion.hzb_debug_image(0);
|
||||
if (occlusion.stats().gpu_ms > 0)
|
||||
require(occlusion.stats().gpu_hzb_ms > 0 &&
|
||||
occlusion.stats().gpu_post_cull_ms > 0 &&
|
||||
occlusion.stats().gpu_post_raster_ms > 0,
|
||||
"HZB/post pass timings are missing");
|
||||
require(hzb && hzb->width == 512 && hzb->height == 256 &&
|
||||
hzb->rgba.size() == std::size_t(hzb->width) * hzb->height * 4,
|
||||
"Current HZB debug image has wrong dimensions");
|
||||
require(std::any_of(hzb->rgba.begin(), hzb->rgba.end(),
|
||||
[](std::uint8_t value) { return value < 250; }),
|
||||
"Current HZB debug image contains no scene depth (min=" +
|
||||
std::to_string(*std::min_element(hzb->rgba.begin(), hzb->rgba.end())) +
|
||||
")");
|
||||
std::cout << "GPU frustum, fixed indirect and direct-image comparison passed\n";
|
||||
return 0;
|
||||
} catch (const std::exception& error) {
|
||||
std::cerr << error.what() << '\n';
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@@ -46,7 +46,9 @@ int main() {
|
||||
try {
|
||||
const auto bundle = temporary / "shaders";
|
||||
fs::create_directories(bundle);
|
||||
for (const auto* entry : {"vertexMain", "fragmentMain", "shadowMain"})
|
||||
for (const auto* entry : {"vertexMain", "fragmentMain", "shadowMain",
|
||||
"gpuVertexMain", "gpuShadowMain", "gpuCullMain",
|
||||
"gpuHzbMain", "gpuPostCullMain"})
|
||||
for (const auto* extension : {".spv", ".reflection.json"}) {
|
||||
const auto name = std::string(entry) + extension;
|
||||
fs::copy_file(path_from_utf8(FASET_TEST_SHADER_DIRECTORY) / name, bundle / name);
|
||||
@@ -63,6 +65,46 @@ int main() {
|
||||
configuration.validation = true;
|
||||
configuration.shader_directory = bundle;
|
||||
render::Renderer renderer(configuration);
|
||||
const auto baseline_only = temporary / "baseline-only";
|
||||
fs::create_directories(baseline_only);
|
||||
for (const auto* entry : {"vertexMain", "fragmentMain", "shadowMain"})
|
||||
for (const auto* extension : {".spv", ".reflection.json"}) {
|
||||
const auto name = std::string(entry) + extension;
|
||||
fs::copy_file(bundle / name, baseline_only / name);
|
||||
}
|
||||
auto direct_only_configuration = configuration;
|
||||
direct_only_configuration.shader_directory = baseline_only;
|
||||
render::Renderer direct_only(direct_only_configuration);
|
||||
direct_only.render(render::Snapshot{});
|
||||
require(direct_only.stats().validation_errors == 0,
|
||||
"Direct renderer starts without optional GPU shader bundle");
|
||||
bool unavailable_gpu_bundle = false;
|
||||
try {
|
||||
direct_only.set_visibility_mode(render::VisibilityMode::GpuFrustum);
|
||||
} catch (const std::exception&) {
|
||||
unavailable_gpu_bundle = true;
|
||||
}
|
||||
require(unavailable_gpu_bundle,
|
||||
"Switching to GPU visibility reports missing optional shader bundle");
|
||||
direct_only.render(render::Snapshot{});
|
||||
require(direct_only.visibility_mode() == render::VisibilityMode::Direct &&
|
||||
direct_only.stats().validation_errors == 0,
|
||||
"Failed GPU initialization preserves the direct renderer");
|
||||
auto gpu_configuration = configuration;
|
||||
gpu_configuration.visibility_mode = render::VisibilityMode::GpuFrustum;
|
||||
render::Renderer gpu_renderer(gpu_configuration);
|
||||
render::Snapshot opaque_scene;
|
||||
opaque_scene.eye = {0, 0, 5};
|
||||
opaque_scene.view_projection = render::multiply(
|
||||
render::perspective(.8f, 1.f, .1f, 20.f),
|
||||
render::look_at(opaque_scene.eye, {0, 0, 0}));
|
||||
render::DrawItem opaque_cube;
|
||||
opaque_cube.mesh = render::cube_mesh();
|
||||
opaque_cube.instance_key = "shader-reload-cube";
|
||||
opaque_cube.cast_shadow = false;
|
||||
opaque_scene.draws.push_back(opaque_cube);
|
||||
gpu_renderer.render(opaque_scene);
|
||||
const auto gpu_expected = gpu_renderer.pixels();
|
||||
render::Snapshot scene;
|
||||
scene.ui_quads.push_back({0, 0, 32, 64, {1, .8f, .4f, 1}});
|
||||
scene.sprites.push_back({{.5f, 0, .5f}, {1, 2}, {.2f, 1, .4f, 1}});
|
||||
@@ -76,7 +118,9 @@ int main() {
|
||||
require(deep_bundle.native().size() > 300,
|
||||
"Shader file fixture must exceed the legacy Windows path limit");
|
||||
fs::create_directories(native_io_path(deep_bundle));
|
||||
for (const auto* entry : {"vertexMain", "fragmentMain", "shadowMain"})
|
||||
for (const auto* entry : {"vertexMain", "fragmentMain", "shadowMain",
|
||||
"gpuVertexMain", "gpuShadowMain", "gpuCullMain",
|
||||
"gpuHzbMain", "gpuPostCullMain"})
|
||||
for (const auto* extension : {".spv", ".reflection.json"}) {
|
||||
const auto name = std::string(entry) + extension;
|
||||
atomic_write(deep_bundle / name, read_text(bundle / name));
|
||||
@@ -157,6 +201,12 @@ int main() {
|
||||
"Source-only behavior edit preserves normalized layout fingerprint");
|
||||
std::string error;
|
||||
require(renderer.reload_shaders(error), "Compatible shader edit reloads successfully");
|
||||
require(gpu_renderer.reload_shaders(error),
|
||||
"Compatible fragment edit reloads GPU scene pipeline");
|
||||
gpu_renderer.render(opaque_scene);
|
||||
const auto gpu_changed = gpu_renderer.pixels();
|
||||
require(gpu_changed != gpu_expected,
|
||||
"Compatible fragment reload must change GPU opaque pixels");
|
||||
renderer.render(scene);
|
||||
const auto changed = renderer.pixels();
|
||||
require(changed[0] + 50 < expected[0], "Compatible reload changes actual rendered pixels");
|
||||
|
||||
@@ -0,0 +1,135 @@
|
||||
#include <faset/render/renderer.hpp>
|
||||
#include <faset/render/visibility.hpp>
|
||||
#include <array>
|
||||
#include <cmath>
|
||||
#include <iostream>
|
||||
#include <limits>
|
||||
#include <stdexcept>
|
||||
|
||||
using namespace faset::render;
|
||||
namespace {
|
||||
void require(bool condition, const char* message) {
|
||||
if (!condition)
|
||||
throw std::runtime_error(message);
|
||||
}
|
||||
bool near(float actual, float expected) {
|
||||
return std::abs(actual - expected) < 0.0001f;
|
||||
}
|
||||
template <class F> void rejects(F&& action, const char* message) {
|
||||
bool rejected = false;
|
||||
try {
|
||||
action();
|
||||
} catch (const std::invalid_argument&) {
|
||||
rejected = true;
|
||||
}
|
||||
require(rejected, message);
|
||||
}
|
||||
void bounds_cover_rotated_and_reflected_mesh() {
|
||||
Mesh mesh;
|
||||
mesh.vertices = {{{0, 0, 0}}, {{2, 0, 0}}, {{0, 1, 0}}, {{0, 0, 1}}, {{2, 1, 1}}};
|
||||
const auto model = transform({5, 7, 11}, {0, 0, 1.57079632679f}, {-2, 3, 4});
|
||||
const auto box = transformed_bounds(mesh, model);
|
||||
require(near(box.min[0], 2) && near(box.max[0], 5) && near(box.min[1], 3) &&
|
||||
near(box.max[1], 7) && near(box.min[2], 11) && near(box.max[2], 15),
|
||||
"Rotated and reflected mesh must have an enclosing world AABB");
|
||||
mesh.vertices[0].position[0] = std::numeric_limits<float>::infinity();
|
||||
rejects([&] { transformed_bounds(mesh, model); },
|
||||
"Nonfinite geometry cannot produce a conservative culling bound");
|
||||
}
|
||||
void ids_track_rendered_frames_and_generation() {
|
||||
auto meshA = std::make_shared<Mesh>();
|
||||
auto meshB = std::make_shared<Mesh>();
|
||||
const Bounds box{{-1, -1, -1}, {1, 1, 1}};
|
||||
const auto moved = transform({3, 0, 0});
|
||||
InstanceTracker tracker;
|
||||
const auto a0 = tracker.update("a", meshA.get(), identity, box, "game");
|
||||
const auto b0 = tracker.update("b", meshA.get(), identity, box, "game");
|
||||
require(a0.slot != b0.slot && !a0.previous_valid && !b0.previous_valid,
|
||||
"New instances have unique slots and no temporal state");
|
||||
const auto duplicate = tracker.update("a", meshA.get(), moved, box, "game");
|
||||
require(!duplicate.previous_valid,
|
||||
"An update before frame completion cannot become previous rendered state");
|
||||
tracker.finish_frame();
|
||||
|
||||
const auto b1 = tracker.update("b", meshA.get(), moved, box, "game");
|
||||
const auto a1 = tracker.update("a", meshA.get(), moved, box, "game");
|
||||
require(a1.slot == a0.slot && b1.slot == b0.slot && a1.previous_valid &&
|
||||
b1.previous_valid && a1.previous_model == moved && b1.previous_model == identity,
|
||||
"Reordering does not change slots or the last rendered transforms");
|
||||
tracker.finish_frame();
|
||||
|
||||
const auto changed = tracker.update("b", meshB.get(), moved, box, "game");
|
||||
require(changed.slot == b0.slot && changed.generation != b0.generation &&
|
||||
!changed.previous_valid,
|
||||
"Replacing mesh identity invalidates temporal state and bumps generation");
|
||||
tracker.finish_frame(); // a was absent and is now retired.
|
||||
const auto c0 = tracker.update("c", meshA.get(), identity, box, "game");
|
||||
require(c0.slot == a0.slot && c0.generation != a0.generation && !c0.previous_valid,
|
||||
"Reused slots cannot inherit a removed object's history");
|
||||
tracker.finish_frame();
|
||||
const auto c1 = tracker.update("c", meshA.get(), identity, box, "game");
|
||||
require(c1.previous_valid, "Same instance in a completed second frame may use history");
|
||||
tracker.finish_frame();
|
||||
tracker.invalidate_view("game");
|
||||
const auto cut = tracker.update("c", meshA.get(), identity, box, "game");
|
||||
require(!cut.previous_valid, "Camera cut invalidates view history");
|
||||
tracker.finish_frame();
|
||||
const auto switched = tracker.update("c", meshA.get(), identity, box, "editor");
|
||||
require(!switched.previous_valid, "Different viewport cannot reuse another view's history");
|
||||
}
|
||||
void owned_mesh_identity_outlives_reimport_gap() {
|
||||
InstanceTracker tracker;
|
||||
auto old_mesh = std::make_shared<Mesh>();
|
||||
std::weak_ptr<Mesh> old_reference = old_mesh;
|
||||
const Bounds box{{-1, -1, -1}, {1, 1, 1}};
|
||||
const auto first = tracker.update("imported", old_mesh, identity, box, "game");
|
||||
tracker.finish_frame();
|
||||
old_mesh.reset();
|
||||
require(!old_reference.expired(),
|
||||
"Tracker must retain mesh identity until the instance is retired or replaced");
|
||||
auto replacement_mesh = std::make_shared<Mesh>();
|
||||
const auto replaced = tracker.update("imported", replacement_mesh, identity, box, "game");
|
||||
require(replaced.generation != first.generation && !replaced.previous_valid,
|
||||
"Reimported mesh cannot reuse the previous mesh's occlusion history");
|
||||
}
|
||||
void lod_thresholds_have_hysteresis_and_fallback() {
|
||||
const std::array thresholds{100.f, 25.f};
|
||||
require(select_lod(95, 0, thresholds, .1f) == 0 &&
|
||||
select_lod(89, 0, thresholds, .1f) == 1,
|
||||
"LOD downgrade waits for the lower hysteresis edge");
|
||||
require(select_lod(105, 1, thresholds, .1f) == 1 &&
|
||||
select_lod(111, 1, thresholds, .1f) == 0,
|
||||
"LOD upgrade waits for the upper hysteresis edge");
|
||||
require(select_lod(24, 1, thresholds, .1f) == 1 &&
|
||||
select_lod(22, 1, thresholds, .1f) == 2 &&
|
||||
select_lod(27, 2, thresholds, .1f) == 2 &&
|
||||
select_lod(28, 2, thresholds, .1f) == 1,
|
||||
"Second threshold has the same hysteresis contract");
|
||||
require(select_lod(50, std::numeric_limits<std::size_t>::max(), thresholds, .1f) == 1,
|
||||
"An instance without a previous level chooses its size without hysteresis");
|
||||
const std::array<std::uint8_t, 3> sparse{1, 0, 1};
|
||||
require(select_lod(50, 0, thresholds, 0, sparse) == 0,
|
||||
"Missing requested LOD prefers the nearest available finer level");
|
||||
const std::array<std::uint8_t, 3> coarse_only{0, 0, 1};
|
||||
require(select_lod(500, 0, thresholds, 0, coarse_only) == 2,
|
||||
"Missing fine LODs fall back to available coarse geometry");
|
||||
const std::array<std::uint8_t, 3> none{0, 0, 0};
|
||||
rejects([&] { select_lod(50, 0, thresholds, .1f, none); },
|
||||
"No available mesh is a content error");
|
||||
rejects([&] { select_lod(std::numeric_limits<float>::quiet_NaN(), 0, thresholds, .1f); },
|
||||
"Nonfinite projected size cannot silently select a level");
|
||||
}
|
||||
} // namespace
|
||||
int main() {
|
||||
try {
|
||||
bounds_cover_rotated_and_reflected_mesh();
|
||||
ids_track_rendered_frames_and_generation();
|
||||
owned_mesh_identity_outlives_reimport_gap();
|
||||
lod_thresholds_have_hysteresis_and_fallback();
|
||||
std::cout << "Visibility bounds, instance identity and LOD policy passed\n";
|
||||
return 0;
|
||||
} catch (const std::exception& error) {
|
||||
std::cerr << error.what() << '\n';
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@@ -162,6 +162,22 @@ void run() {
|
||||
physicsDebug(view);
|
||||
auto snapshot = view.build(scene, 16.f / 9.f);
|
||||
check(snapshot.draws.size() == 1, "SceneView builtin mesh");
|
||||
check(!snapshot.draws[0].instance_key.empty(),
|
||||
"Persistent scene entity gives its builtin mesh a stable render key");
|
||||
const auto builtin_key = snapshot.draws[0].instance_key;
|
||||
auto second_mesh = scene;
|
||||
second_mesh["entities"].push_back(
|
||||
entity("other-mesh", nullptr,
|
||||
Json::array({component("faset.mesh", {{"asset", "builtin:cube"}})})));
|
||||
const auto two_meshes = view.build(second_mesh, 1);
|
||||
check(two_meshes.draws.size() == 2 && two_meshes.draws[0].instance_key == builtin_key &&
|
||||
two_meshes.draws[1].instance_key != builtin_key,
|
||||
"A second instance of the same mesh has a distinct key without renumbering the first");
|
||||
std::swap(second_mesh["entities"][1], second_mesh["entities"][2]);
|
||||
const auto reordered_meshes = view.build(second_mesh, 1);
|
||||
check(reordered_meshes.draws[0].instance_key == two_meshes.draws[1].instance_key &&
|
||||
reordered_meshes.draws[1].instance_key == builtin_key,
|
||||
"Render instance identity follows entity identity, not draw order");
|
||||
check(snapshot.draws[0].model[12] == 3 && snapshot.draws[0].model[13] == 2 &&
|
||||
snapshot.draws[0].model[14] == 3,
|
||||
"hierarchy local transforms composed");
|
||||
@@ -269,6 +285,10 @@ void run() {
|
||||
check(view.diagnostics().empty(), "valid cooked texture/material produces no error");
|
||||
check(snapshot.draws.size() == 1 && snapshot.draws[0].mesh->vertices.size() == 3,
|
||||
"cooked mesh reaches render snapshot");
|
||||
check(!snapshot.draws[0].instance_key.empty() &&
|
||||
snapshot.draws[0].instance_key != builtin_key &&
|
||||
view.build(importedScene, 1).draws[0].instance_key == snapshot.draws[0].instance_key,
|
||||
"Imported primitive identity is stable across scene extraction");
|
||||
check(snapshot.draws[0].model[12] == 5, "asset node transform composed with scene hierarchy");
|
||||
check(snapshot.draws[0].texture && snapshot.draws[0].texture->srgb &&
|
||||
snapshot.draws[0].texture->rgba == std::vector<std::uint8_t>({240, 80, 20, 255}),
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
"""The cooked shader interface must preserve GPU resource kinds and element strides."""
|
||||
|
||||
import importlib.util
|
||||
import json
|
||||
import os
|
||||
from pathlib import Path
|
||||
import struct
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
import unittest
|
||||
|
||||
|
||||
SCRIPT = Path(__file__).resolve().parents[1] / "tools" / "compile_shader.py"
|
||||
SPEC = importlib.util.spec_from_file_location("faset_compile_shader", SCRIPT)
|
||||
assert SPEC and SPEC.loader
|
||||
shader = importlib.util.module_from_spec(SPEC)
|
||||
SPEC.loader.exec_module(shader)
|
||||
|
||||
|
||||
def parameter(name: str, index: int, shape: str, access: str, stride: int | None = None):
|
||||
result = {"kind": "scalar", "scalarType": "uint32", "sizes": []}
|
||||
if stride is not None:
|
||||
result["sizes"] = [{"kind": "uniform", "value": stride, "alignment": 16}]
|
||||
return {
|
||||
"name": name,
|
||||
"binding": {"kind": "descriptorTableSlot", "index": index, "space": 0},
|
||||
"type": {
|
||||
"kind": "resource",
|
||||
"baseShape": shape,
|
||||
"access": access,
|
||||
"resultType": result,
|
||||
"sizes": [{"kind": "descriptorTableSlot", "value": 1}],
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
class ReflectionTests(unittest.TestCase):
|
||||
def test_gpu_storage_resources_keep_kind_and_stride(self):
|
||||
parameters = [
|
||||
parameter("instances", 0, "structuredBuffer", "read", 224),
|
||||
parameter("visibleIds", 1, "structuredBuffer", "readWrite", 4),
|
||||
parameter("depthOutput", 2, "texture2D", "readWrite"),
|
||||
parameter("depthInput", 3, "texture2D", "read"),
|
||||
]
|
||||
raw = {
|
||||
"parameters": parameters,
|
||||
"entryPoints": [{
|
||||
"name": "gpuCullMain", "stage": "compute",
|
||||
"bindings": [{"name": p["name"], "binding": {"used": 1}} for p in parameters],
|
||||
}],
|
||||
}
|
||||
spirv = struct.pack("<5I", 0x07230203, 0x00010600, 0, 1, 0)
|
||||
layout = shader.normalize(raw, spirv, "gpuCullMain")["layout"]
|
||||
descriptors = layout["descriptors"]
|
||||
self.assertEqual(
|
||||
[(d["type"], d.get("element_stride")) for d in descriptors],
|
||||
[("storage_buffer", 224), ("storage_buffer", 4),
|
||||
("storage_image_2d", None), ("sampled_image_2d", None)],
|
||||
)
|
||||
|
||||
def test_real_slang_compute_interface(self):
|
||||
compiler = os.environ["FASET_TEST_SLANGC"]
|
||||
with tempfile.TemporaryDirectory(prefix="faset-shader-reflection-") as directory:
|
||||
process = subprocess.run(
|
||||
[sys.executable, str(SCRIPT), "--compiler", compiler, "--source",
|
||||
str(SCRIPT.parents[1] / "shaders" / "gpu_scene.slang"), "--entry",
|
||||
"gpuCullMain", "--define", "FASET_GPU_CULL=1", "--output", directory],
|
||||
capture_output=True, text=True,
|
||||
)
|
||||
self.assertEqual(process.returncode, 0, process.stderr)
|
||||
metadata = json.loads((Path(directory) / "gpuCullMain.reflection.json").read_text())
|
||||
bindings = {item["binding"]: item for item in metadata["layout"]["descriptors"]}
|
||||
self.assertEqual([bindings[n]["element_stride"] for n in (0, 1, 2, 3, 4, 5, 6, 9)],
|
||||
[224, 16, 16, 4, 16, 4, 4, 208])
|
||||
self.assertEqual([bindings[n]["type"] for n in (7, 8)],
|
||||
["sampled_image_2d", "sampled_image_2d"])
|
||||
|
||||
def test_hzb_storage_image_has_explicit_r32f_format(self):
|
||||
compiler = os.environ["FASET_TEST_SLANGC"]
|
||||
with tempfile.TemporaryDirectory(prefix="faset-hzb-format-") as directory:
|
||||
process = subprocess.run(
|
||||
[sys.executable, str(SCRIPT), "--compiler", compiler, "--source",
|
||||
str(SCRIPT.parents[1] / "shaders" / "gpu_scene.slang"), "--entry",
|
||||
"gpuHzbMain", "--define", "FASET_GPU_HZB=1", "--output", directory],
|
||||
capture_output=True, text=True,
|
||||
)
|
||||
self.assertEqual(process.returncode, 0, process.stderr)
|
||||
bytecode = (Path(directory) / "gpuHzbMain.spv").read_bytes()
|
||||
words = struct.unpack(f"<{len(bytecode) // 4}I", bytecode)
|
||||
capabilities = set()
|
||||
image_formats = []
|
||||
offset = 5
|
||||
while offset < len(words):
|
||||
count, opcode = words[offset] >> 16, words[offset] & 0xffff
|
||||
self.assertGreater(count, 0)
|
||||
if opcode == 17: # OpCapability
|
||||
capabilities.add(words[offset + 1])
|
||||
elif opcode == 25: # OpTypeImage; last operand is ImageFormat
|
||||
image_formats.append((words[offset + 7], words[offset + 8]))
|
||||
offset += count
|
||||
self.assertNotIn(55, capabilities) # StorageImageReadWithoutFormat
|
||||
self.assertNotIn(56, capabilities) # StorageImageWriteWithoutFormat
|
||||
self.assertIn((2, 3), image_formats) # storage image, R32f
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
@@ -109,13 +109,22 @@ def normalize(raw: dict, bytecode: bytes, entry_name: str) -> dict:
|
||||
if ty["kind"] == "array":
|
||||
count = ty["elementCount"]
|
||||
ty = ty["elementType"]
|
||||
element_stride = None
|
||||
if ty["kind"] == "samplerState":
|
||||
descriptor_type = "sampler"
|
||||
elif ty["kind"] == "resource" and ty.get("baseShape") == "texture2D":
|
||||
descriptor_type = "sampled_image_2d"
|
||||
descriptor_type = "storage_image_2d" if ty.get("access") == "readWrite" else "sampled_image_2d"
|
||||
elif ty["kind"] == "resource" and ty.get("baseShape") == "structuredBuffer":
|
||||
descriptor_type = "storage_buffer"
|
||||
element_stride = next((item["value"] for item in ty["resultType"].get("sizes", []) if item["kind"] == "uniform"), None)
|
||||
if not isinstance(element_stride, int) or element_stride <= 0:
|
||||
raise ValueError(f"Structured buffer lacks a valid element stride: {parameter['name']}")
|
||||
else:
|
||||
raise ValueError(f"Unsupported descriptor kind: {ty}")
|
||||
descriptors.append({"name": parameter["name"], "set": binding.get("space", 0), "binding": binding["index"], "type": descriptor_type, "count": count, "used": used.get(parameter["name"], True)})
|
||||
descriptor = {"name": parameter["name"], "set": binding.get("space", 0), "binding": binding["index"], "type": descriptor_type, "count": count, "used": used.get(parameter["name"], True)}
|
||||
if element_stride is not None:
|
||||
descriptor["element_stride"] = element_stride
|
||||
descriptors.append(descriptor)
|
||||
else:
|
||||
raise ValueError(f"Unsupported global shader binding: {binding['kind']}")
|
||||
inputs, input_builtins = interface(entry.get("parameters", []), "varyingInput")
|
||||
@@ -130,13 +139,19 @@ def main() -> int:
|
||||
parser.add_argument("--source", required=True, type=Path)
|
||||
parser.add_argument("--entry", required=True)
|
||||
parser.add_argument("--output", required=True, type=Path)
|
||||
parser.add_argument("--define", action="append", default=[],
|
||||
help="Slang preprocessor definition, NAME or NAME=VALUE")
|
||||
args = parser.parse_args()
|
||||
args.output.mkdir(parents=True, exist_ok=True)
|
||||
with tempfile.TemporaryDirectory(prefix=".shader-", dir=args.output) as temporary:
|
||||
directory = Path(temporary)
|
||||
spirv = directory / f"{args.entry}.spv"
|
||||
raw = directory / f"{args.entry}.slang-reflection.json"
|
||||
process = subprocess.run([args.compiler, str(args.source), "-entry", args.entry, "-target", "spirv", "-profile", "spirv_1_6", "-matrix-layout-column-major", "-o", str(spirv), "-reflection-json", str(raw)])
|
||||
command = [args.compiler, str(args.source), "-entry", args.entry, "-target", "spirv",
|
||||
"-profile", "spirv_1_6", "-matrix-layout-column-major"]
|
||||
command += [f"-D{definition}" for definition in args.define]
|
||||
command += ["-o", str(spirv), "-reflection-json", str(raw)]
|
||||
process = subprocess.run(command)
|
||||
if process.returncode:
|
||||
return process.returncode
|
||||
normalized = normalize(json.loads(raw.read_text(encoding="utf-8")), spirv.read_bytes(), args.entry)
|
||||
|
||||