| 19 | #include "../xrRenderDX10/3DFluid/dx103DFluidVolume.h" |
| 20 | |
| 21 | void CRender::level_Load(IReader* fs) |
| 22 | { |
| 23 | R_ASSERT(0 != g_pGameLevel); |
| 24 | R_ASSERT(!b_loaded); |
| 25 | |
| 26 | u32 m_base, c_base, m_lmaps, c_lmaps; |
| 27 | Device.m_pRender->ResourcesGetMemoryUsage(m_base, c_base, m_lmaps, c_lmaps); |
| 28 | |
| 29 | Msg("~ LevelResources load..."); |
| 30 | Msg("~ LevelResources - base: %d, %d K", c_base, m_base / 1024); |
| 31 | Msg("~ LevelResources - lmap: %d, %d K", c_lmaps, m_lmaps / 1024); |
| 32 | |
| 33 | // Begin |
| 34 | pApp->LoadBegin(); |
| 35 | Device.m_pRender->DeferredLoad(TRUE); |
| 36 | |
| 37 | IReader* chunk; |
| 38 | |
| 39 | // Shaders |
| 40 | g_pGamePersistent->LoadTitle("st_loading_shaders"); |
| 41 | { |
| 42 | chunk = fs->open_chunk(fsL_SHADERS); |
| 43 | R_ASSERT(chunk, "Level doesn't builded correctly."); |
| 44 | const u32 count = chunk->r_u32(); |
| 45 | Shaders.resize(count); |
| 46 | for (u32 i = 0; i < count; i++) // skip first shader as "reserved" one |
| 47 | { |
| 48 | string512 n_sh, n_tlist; |
| 49 | LPCSTR n = LPCSTR(chunk->pointer()); |
| 50 | chunk->skip_stringZ(); |
| 51 | if (0 == n[0]) |
| 52 | continue; |
| 53 | xr_strcpy(n_sh, n); |
| 54 | const LPSTR delim = strchr(n_sh, '/'); |
| 55 | *delim = 0; |
| 56 | xr_strcpy(n_tlist, delim + 1); |
| 57 | Shaders[i] = dxRenderDeviceRender::Instance().Resources->Create(n_sh, n_tlist); |
| 58 | } |
| 59 | chunk->close(); |
| 60 | } |
| 61 | |
| 62 | // Components |
| 63 | Wallmarks = xr_new<CWallmarksEngine>(); |
| 64 | Details = xr_new<CDetailManager>(); |
| 65 | |
| 66 | { |
| 67 | // VB,IB,SWI |
| 68 | g_pGamePersistent->LoadTitle("st_loading_geometry"); |
| 69 | { |
| 70 | CStreamReader* geom = FS.rs_open(fsgame::level, fsgame::level_files::level_geom); |
| 71 | R_ASSERT(geom, "level.geom"); |
| 72 | LoadBuffers(geom, FALSE); |
| 73 | LoadSWIs(geom); |
| 74 | FS.r_close(geom); |
| 75 | } |
| 76 | |
| 77 | //...and alternate/fast geometry |
| 78 | { |
no test coverage detected