Culling a výkon
Omezte diagnostickou geometrii těles bez změny fyzikální simulace.
Renderer může vynechat diagnostickou geometrii managed rigidních těles mimo kameru nebo příliš daleko. Jde o optimalizaci kreslení, ne kolizní filtr nebo uspávání simulace.
| API | Chování |
|---|---|
| jolt_debug_set_frustum_culling(enabled) | Nastaví vyřazování mimo frustum kamery; výchozí je zapnuto. Vrací true. |
| jolt_debug_get_frustum_culling() | Čte aktuální bool nastavení. |
| jolt_debug_set_max_distance(distance) | Nastaví kladnou vzdálenost ve světových jednotkách. Nekladná znamená neomezenou (-1). Pro nečíselnou hodnotu nebo NaN vrací false. |
| jolt_debug_get_max_distance() | Čte limit; výchozí je -1 (neomezený). |
| jolt_debug_clear_shape_queries() / jolt_debug_clear_raycasts() | Vyčistí oddělené uchované historie dotazů. |
Příklad#
// Create event.
jolt_debug_enable(true);
jolt_debug_set(JOLT_DEBUG_SHAPES | JOLT_DEBUG_CENTER_OF_MASS, true);
jolt_debug_set_frustum_culling(true);
if (!jolt_debug_set_max_distance(100)) show_debug_message("Invalid distance");
// Draw End event: activate your 3D camera before this call.
jolt_debug_draw();Culling používá aktivní view/projection matice a konzervativní bounds těles. Týká se managed rigidní geometrie těles/senzorů a diagnostiky těžiště; nepředpokládejte, že ořízne všechny kontakty, vozidla, constrainty nebo historii dotazů. Vizuálně vynechané objekty se dále simulují.
Co renderer již optimalizuje#
Diagnostické čáry a primitiva se dávkují. Průchod těles načte jeden zabalený snapshot, pokud je požadováno SHAPES, SENSORS nebo CENTER_OF_MASS. Statické Mesh/HeightField wireframy používají cache zmrazené geometrie; zničení tělesa jeho cache zneplatní. Buffery vznikají až při potřebě a uvolní se při jolt_stop().
// Diagnose an unexpected missing body outline:
jolt_debug_set_frustum_culling(false);
jolt_debug_set_max_distance(-1);
// Compare, then restore your desired limits.Ověřené kontrakty operací#
Následující kontrakty rozlišují jednotky, návratové hodnoty, chyby a životnost podle aktuální implementace. Nevynechávej kontrolu výsledku: false, 0 a undefined mohou mít u různých metod odlišný význam.
| Symbol / vlastník | Signatura | Kontrakt operace |
|---|---|---|
| jolt_debug_get_frustum_culling | jolt_debug_get_frustum_culling() | Boolean culling dle aktivní kamery; setter true, getter současný Boolean. |
| jolt_debug_get_max_distance | jolt_debug_get_max_distance() | Vzdálenost kreslení m, <=0 ukládá -1 neomezeno. Setter Boolean, odmítá nečíselné/NaN; getter uložené číslo. |
| jolt_debug_set_frustum_culling | jolt_debug_set_frustum_culling(enabled) | Boolean culling dle aktivní kamery; setter true, getter současný Boolean. |
| jolt_debug_set_max_distance | jolt_debug_set_max_distance(distance) | Vzdálenost kreslení m, <=0 ukládá -1 neomezeno. Setter Boolean, odmítá nečíselné/NaN; getter uložené číslo. |