| 364 | } |
| 365 | |
| 366 | void CDetailManager::Render(CBackend& cmd_list, const bool shadows, light* L) |
| 367 | { |
| 368 | if (!RImplementation.Details) |
| 369 | return; // possibly deleted |
| 370 | if (!dtFS) |
| 371 | return; |
| 372 | if (!psDeviceFlags.is(rsDetails)) |
| 373 | return; |
| 374 | if (CRender::ShouldSkipRender()) |
| 375 | return; |
| 376 | |
| 377 | ZoneScoped; |
| 378 | |
| 379 | { |
| 380 | check_lock.lock(); |
| 381 | |
| 382 | if (awaiter.valid()) |
| 383 | awaiter.wait(); |
| 384 | |
| 385 | async_started = false; |
| 386 | |
| 387 | check_lock.unlock(); |
| 388 | } |
| 389 | |
| 390 | if (!shadows) |
| 391 | Device.Statistic->RenderDUMP_DT_Render.Begin(); |
| 392 | |
| 393 | cmd_list.set_CullMode(CULL_NONE); |
| 394 | |
| 395 | cmd_list.set_xform_world(Fidentity); |
| 396 | cmd_list.set_xform_world_old(Fidentity); |
| 397 | |
| 398 | hw_Render(cmd_list, shadows, L); |
| 399 | |
| 400 | cmd_list.set_CullMode(CULL_CCW); |
| 401 | |
| 402 | if (!shadows) |
| 403 | Device.Statistic->RenderDUMP_DT_Render.End(); |
| 404 | } |
| 405 | |
| 406 | u32 reset_frame = 0; |
| 407 | |