diff --git a/src/Layers/xrRender/D3DXRenderBase.h b/src/Layers/xrRender/D3DXRenderBase.h index ef86fc93354..5a2ce533624 100644 --- a/src/Layers/xrRender/D3DXRenderBase.h +++ b/src/Layers/xrRender/D3DXRenderBase.h @@ -48,25 +48,25 @@ class D3DXRenderBase : public IRender, public pureFrame #endif // Runtime structures - xr_vector nrmVS; + xr_vector nrmVS; #if defined(USE_DX10) || defined(USE_DX11) - xr_vector nrmGS; + xr_vector nrmGS; #endif // USE_DX10 - xr_vector nrmPS; - xr_vector nrmCS; - xr_vector nrmStates; - xr_vector nrmTextures; - xr_vector nrmTexturesTemp; + xr_vector nrmPS; + xr_vector nrmCS; + xr_vector nrmStates; + xr_vector nrmTextures; + xr_vector nrmTexturesTemp; - xr_vector matVS; + xr_vector matVS; #if defined(USE_DX10) || defined(USE_DX11) - xr_vector matGS; + xr_vector matGS; #endif // USE_DX10 - xr_vector matPS; - xr_vector matCS; - xr_vector matStates; - xr_vector matTextures; - xr_vector matTexturesTemp; + xr_vector matPS; + xr_vector matCS; + xr_vector matStates; + xr_vector matTextures; + xr_vector matTexturesTemp; xr_vector lstLODs; xr_vector lstLODgroups; xr_vector lstRenderables; @@ -135,10 +135,10 @@ class D3DXRenderBase : public IRender, public pureFrame for (int i = 0; i < SHADER_PASSES_MAX; ++i) { - mapNormalPasses[0][i].destroy(); - mapNormalPasses[1][i].destroy(); - mapMatrixPasses[0][i].destroy(); - mapMatrixPasses[1][i].destroy(); + mapNormalPasses[0][i].clear(); + mapNormalPasses[1][i].clear(); + mapMatrixPasses[0][i].clear(); + mapMatrixPasses[1][i].clear(); } mapSorted.destroy(); mapHUD.destroy(); diff --git a/src/Layers/xrRender/r__dsgraph_build.cpp b/src/Layers/xrRender/r__dsgraph_build.cpp index c7321cacdae..1b918604cee 100644 --- a/src/Layers/xrRender/r__dsgraph_build.cpp +++ b/src/Layers/xrRender/r__dsgraph_build.cpp @@ -163,91 +163,65 @@ void D3DXRenderBase::r_dsgraph_insert_dynamic(dxRender_Visual* pVisual, Fvector& for (u32 iPass = 0; iPass < sh->passes.size(); ++iPass) { - // the most common node - // SPass& pass = *sh->passes.front (); - // mapMatrix_T& map = mapMatrix [sh->flags.iPriority/2]; - SPass& pass = *sh->passes[iPass]; - mapMatrix_T& map = mapMatrixPasses[sh->flags.iPriority / 2][iPass]; + auto &pass = *sh->passes[iPass]; + auto &map = mapMatrixPasses[sh->flags.iPriority / 2][iPass]; -#ifdef USE_RESOURCE_DEBUGGER #if defined(USE_DX10) || defined(USE_DX11) - mapMatrixVS::TNode* Nvs = map.insert(pass.vs); - mapMatrixGS::TNode* Ngs = Nvs->val.insert(pass.gs); - mapMatrixPS::TNode* Nps = Ngs->val.insert(pass.ps); -#else // USE_DX10 - mapMatrixVS::TNode* Nvs = map.insert(pass.vs); - mapMatrixPS::TNode* Nps = Nvs->val.insert(pass.ps); -#endif // USE_DX10 + auto &Nvs = map[&*pass.vs]; + auto &Ngs = Nvs[pass.gs->gs]; + auto &Nps = Ngs[pass.ps->ps]; #else -#if defined(USE_DX10) || defined(USE_DX11) - mapMatrixVS::TNode* Nvs = map.insert(&*pass.vs); - mapMatrixGS::TNode* Ngs = Nvs->val.insert(pass.gs->gs); - mapMatrixPS::TNode* Nps = Ngs->val.insert(pass.ps->ps); -#else // USE_DX10 - mapMatrixVS::TNode* Nvs = map.insert(pass.vs->vs); - mapMatrixPS::TNode* Nps = Nvs->val.insert(pass.ps->ps); -#endif // USE_DX10 + auto &Nvs = map[pass.vs->vs]; + auto &Nps = Nvs[pass.ps->ps]; #endif #ifdef USE_DX11 -#ifdef USE_RESOURCE_DEBUGGER - Nps->val.hs = pass.hs; - Nps->val.ds = pass.ds; - mapMatrixCS::TNode* Ncs = Nps->val.mapCS.insert(pass.constants._get()); -#else - Nps->val.hs = pass.hs->sh; - Nps->val.ds = pass.ds->sh; - mapMatrixCS::TNode* Ncs = Nps->val.mapCS.insert(pass.constants._get()); -#endif + Nps.hs = pass.hs->sh; + Nps.ds = pass.ds->sh; + + auto &Ncs = Nps.mapCS[pass.constants._get()]; #else - mapMatrixCS::TNode* Ncs = Nps->val.insert(pass.constants._get()); + auto &Ncs = Nps[pass.constants._get()]; #endif - mapMatrixStates::TNode* Nstate = Ncs->val.insert(pass.state->state); - mapMatrixTextures::TNode* Ntex = Nstate->val.insert(pass.T._get()); - mapMatrixItems& items = Ntex->val; - items.push_back(item); + auto &Nstate = Ncs[pass.state->state]; + auto &Ntex = Nstate[pass.T._get()]; + Ntex.push_back(item); // Need to sort for HZB efficient use - if (SSA > Ntex->val.ssa) + if (SSA > Ntex.ssa) { - Ntex->val.ssa = SSA; - if (SSA > Nstate->val.ssa) + Ntex.ssa = SSA; + if (SSA > Nstate.ssa) { - Nstate->val.ssa = SSA; - if (SSA > Ncs->val.ssa) + Nstate.ssa = SSA; + if (SSA > Ncs.ssa) { - Ncs->val.ssa = SSA; + Ncs.ssa = SSA; #ifdef USE_DX11 - if (SSA > Nps->val.mapCS.ssa) + if (SSA > Nps.mapCS.ssa) { - Nps->val.mapCS.ssa = SSA; + Nps.mapCS.ssa = SSA; #else - if (SSA > Nps->val.ssa) + if (SSA > Nps.ssa) { - Nps->val.ssa = SSA; + Nps.ssa = SSA; #endif #if defined(USE_DX10) || defined(USE_DX11) - if (SSA > Ngs->val.ssa) + if (SSA > Ngs.ssa) { - Ngs->val.ssa = SSA; -#endif // USE_DX10 - if (SSA > Nvs->val.ssa) + Ngs.ssa = SSA; +#endif + if (SSA > Nvs.ssa) { - Nvs->val.ssa = SSA; -#if defined(USE_DX10) || defined(USE_DX11) + Nvs.ssa = SSA; } +#if defined(USE_DX10) || defined(USE_DX11) } +#endif } } } } -#else // USE_DX10 - } - } - } - } - } -#endif // USE_DX10 } #if RENDER != R_R1 @@ -345,107 +319,69 @@ void D3DXRenderBase::r_dsgraph_insert_static(dxRender_Visual* pVisual) counter_S++; + _NormalItem item = {SSA, pVisual}; + for (u32 iPass = 0; iPass < sh->passes.size(); ++iPass) { - // SPass& pass = *sh->passes.front (); - // mapNormal_T& map = mapNormal [sh->flags.iPriority/2]; - SPass& pass = *sh->passes[iPass]; - mapNormal_T& map = mapNormalPasses[sh->flags.iPriority / 2][iPass]; - -//#ifdef USE_RESOURCE_DEBUGGER -// mapNormalVS::TNode* Nvs = map.insert (pass.vs); -// mapNormalPS::TNode* Nps = Nvs->val.insert (pass.ps); -//#else -//#if defined(USE_DX10) || defined(USE_DX11) -// mapNormalVS::TNode* Nvs = map.insert (&*pass.vs); -//#else // USE_DX10 -// mapNormalVS::TNode* Nvs = map.insert (pass.vs->vs); -//#endif // USE_DX10 -// mapNormalPS::TNode* Nps = Nvs->val.insert (pass.ps->ps); -//#endif - -#ifdef USE_RESOURCE_DEBUGGER -#if defined(USE_DX10) || defined(USE_DX11) - mapNormalVS::TNode* Nvs = map.insert(pass.vs); - mapNormalGS::TNode* Ngs = Nvs->val.insert(pass.gs); - mapNormalPS::TNode* Nps = Ngs->val.insert(pass.ps); -#else // USE_DX10 - mapNormalVS::TNode* Nvs = map.insert(pass.vs); - mapNormalPS::TNode* Nps = Nvs->val.insert(pass.ps); -#endif // USE_DX10 -#else // USE_RESOURCE_DEBUGGER -#if defined(USE_DX10) || defined(USE_DX11) - mapNormalVS::TNode* Nvs = map.insert(&*pass.vs); - mapNormalGS::TNode* Ngs = Nvs->val.insert(pass.gs->gs); - mapNormalPS::TNode* Nps = Ngs->val.insert(pass.ps->ps); -#else // USE_DX10 - mapNormalVS::TNode* Nvs = map.insert(pass.vs->vs); - mapNormalPS::TNode* Nps = Nvs->val.insert(pass.ps->ps); -#endif // USE_DX10 -#endif // USE_RESOURCE_DEBUGGER + auto &pass = *sh->passes[iPass]; + auto &map = mapNormalPasses[sh->flags.iPriority / 2][iPass]; -#ifdef USE_DX11 -#ifdef USE_RESOURCE_DEBUGGER - Nps->val.hs = pass.hs; - Nps->val.ds = pass.ds; - mapNormalCS::TNode* Ncs = Nps->val.mapCS.insert(pass.constants._get()); +#if defined(USE_DX10) || defined(USE_DX11) + auto &Nvs = map[&*pass.vs]; + auto &Ngs = Nvs[pass.gs->gs]; + auto &Nps = Ngs[pass.ps->ps]; #else - Nps->val.hs = pass.hs->sh; - Nps->val.ds = pass.ds->sh; - mapNormalCS::TNode* Ncs = Nps->val.mapCS.insert(pass.constants._get()); + auto &Nvs = map[pass.vs->vs]; + auto &Nps = Nvs[pass.ps->ps]; #endif + +#ifdef USE_DX11 + Nps.hs = pass.hs->sh; + Nps.ds = pass.ds->sh; + + auto &Ncs = Nps.mapCS[pass.constants._get()]; #else - mapNormalCS::TNode* Ncs = Nps->val.insert(pass.constants._get()); + auto &Ncs = Nps[pass.constants._get()]; #endif - mapNormalStates::TNode* Nstate = Ncs->val.insert(pass.state->state); - mapNormalTextures::TNode* Ntex = Nstate->val.insert(pass.T._get()); - mapNormalItems& items = Ntex->val; - _NormalItem item = {SSA, pVisual}; - items.push_back(item); + auto &Nstate = Ncs[pass.state->state]; + auto &Ntex = Nstate[pass.T._get()]; + Ntex.push_back(item); // Need to sort for HZB efficient use - if (SSA > Ntex->val.ssa) + if (SSA > Ntex.ssa) { - Ntex->val.ssa = SSA; - if (SSA > Nstate->val.ssa) + Ntex.ssa = SSA; + if (SSA > Nstate.ssa) { - Nstate->val.ssa = SSA; - if (SSA > Ncs->val.ssa) + Nstate.ssa = SSA; + if (SSA > Ncs.ssa) { - Ncs->val.ssa = SSA; + Ncs.ssa = SSA; #ifdef USE_DX11 - if (SSA > Nps->val.mapCS.ssa) + if (SSA > Nps.mapCS.ssa) { - Nps->val.mapCS.ssa = SSA; + Nps.mapCS.ssa = SSA; #else - if (SSA > Nps->val.ssa) + if (SSA > Nps.ssa) { - Nps->val.ssa = SSA; + Nps.ssa = SSA; #endif -// if (SSA>Nvs->val.ssa) { Nvs->val.ssa = SSA; -// } } } } } #if defined(USE_DX10) || defined(USE_DX11) - if (SSA > Ngs->val.ssa) + if (SSA > Ngs.ssa) { - Ngs->val.ssa = SSA; -#endif // USE_DX10 - if (SSA > Nvs->val.ssa) + Ngs.ssa = SSA; +#endif + if (SSA > Nvs.ssa) { - Nvs->val.ssa = SSA; -#if defined(USE_DX10) || defined(USE_DX11) + Nvs.ssa = SSA; } +#if defined(USE_DX10) || defined(USE_DX11) } +#endif } } } } -#else // USE_DX10 - } - } - } - } - } -#endif // USE_DX10 } #if RENDER != R_R1 diff --git a/src/Layers/xrRender/r__dsgraph_render.cpp b/src/Layers/xrRender/r__dsgraph_render.cpp index 1c7efbcedbc..281c2c59c12 100644 --- a/src/Layers/xrRender/r__dsgraph_render.cpp +++ b/src/Layers/xrRender/r__dsgraph_render.cpp @@ -28,22 +28,22 @@ void __fastcall sorted_L1(mapSorted_Node* N) V->Render(calcLOD(N->key, V->vis.sphere.R)); } -template IC bool cmp_val_ssa(const T &lhs, const T &rhs) { return (lhs->val.ssa > rhs->val.ssa); } -template IC bool cmp_ssa (const T &lhs, const T &rhs) { return (lhs.ssa > rhs.ssa ); } +template IC bool cmp_second_ssa(const T &lhs, const T &rhs) { return (lhs->second.ssa > rhs->second.ssa); } +template IC bool cmp_ssa (const T &lhs, const T &rhs) { return (lhs.ssa > rhs.ssa ); } -template IC bool cmp_ps_val_ssa(const T &lhs, const T &rhs) +template IC bool cmp_ps_second_ssa(const T &lhs, const T &rhs) { #ifdef USE_DX11 - return (lhs->val.mapCS.ssa > rhs->val.mapCS.ssa); + return (lhs->second.mapCS.ssa > rhs->second.mapCS.ssa); #else - return (lhs->val.ssa > rhs->val.ssa); + return (lhs->second.ssa > rhs->second.ssa); #endif } template IC bool cmp_textures_lex2(const T &lhs, const T &rhs) { - auto t1 = lhs->key; - auto t2 = rhs->key; + auto t1 = lhs->first; + auto t2 = rhs->first; if ((*t1)[0] < (*t2)[0]) return true; if ((*t1)[0] > (*t2)[0]) return false; @@ -52,8 +52,8 @@ template IC bool cmp_textures_lex2(const T &lhs, const T &rhs) } template IC bool cmp_textures_lex3(const T &lhs, const T &rhs) { - auto t1 = lhs->key; - auto t2 = rhs->key; + auto t1 = lhs->first; + auto t2 = rhs->first; if ((*t1)[0] < (*t2)[0]) return true; if ((*t1)[0] > (*t2)[0]) return false; @@ -64,41 +64,42 @@ template IC bool cmp_textures_lex3(const T &lhs, const T &rhs) } template IC bool cmp_textures_lexN(const T &lhs, const T &rhs) { - auto t1 = lhs->key; - auto t2 = rhs->key; + auto t1 = lhs->first; + auto t2 = rhs->first; return std::lexicographical_compare(t1->begin(), t1->end(), t2->begin(), t2->end()); } -template void sort_tlist(xr_vector& lst, xr_vector& temp, T& textures) +template void sort_tlist(xr_vector& lst, xr_vector& temp, T& textures) { - int amount = textures.begin()->key->size(); + int amount = textures.begin()->first->size(); if (amount <= 1) { // Just sort by SSA - textures.getANY_P(lst); - std::sort(lst.begin(), lst.end(), cmp_val_ssa); + lst.reserve(textures.size()); + for (auto &i : textures) lst.push_back(&i); + std::sort(lst.begin(), lst.end(), cmp_second_ssa); } else { // Split into 2 parts for (auto &it : textures) { - if (it.val.ssa > r_ssaHZBvsTEX) + if (it.second.ssa > r_ssaHZBvsTEX) lst.push_back(&it); else temp.push_back(&it); } // 1st - part - SSA, 2nd - lexicographically - std::sort(lst.begin(), lst.end(), cmp_val_ssa); + std::sort(lst.begin(), lst.end(), cmp_second_ssa); if (2 == amount) - std::sort(temp.begin(), temp.end(), cmp_textures_lex2); + std::sort(temp.begin(), temp.end(), cmp_textures_lex2); else if (3 == amount) - std::sort(temp.begin(), temp.end(), cmp_textures_lex3); + std::sort(temp.begin(), temp.end(), cmp_textures_lex3); else - std::sort(temp.begin(), temp.end(), cmp_textures_lexN); + std::sort(temp.begin(), temp.end(), cmp_textures_lexN); // merge lists lst.insert(lst.end(), temp.begin(), temp.end()); @@ -121,69 +122,74 @@ void D3DXRenderBase::r_dsgraph_render_graph(u32 _priority) { mapNormalVS& vs = mapNormalPasses[_priority][iPass]; - vs.getANY_P(nrmVS); - std::sort(nrmVS.begin(), nrmVS.end(), cmp_val_ssa); + nrmVS.reserve(vs.size()); + for (auto &i : vs) nrmVS.push_back(&i); + std::sort(nrmVS.begin(), nrmVS.end(), cmp_second_ssa); for (auto & vs_it : nrmVS) { - RCache.set_VS(vs_it->key); + RCache.set_VS(vs_it->first); #if defined(USE_DX10) || defined(USE_DX11) // GS setup - mapNormalGS& gs = vs_it->val; + mapNormalGS& gs = vs_it->second; gs.ssa = 0; - gs.getANY_P(nrmGS); - std::sort(nrmGS.begin(), nrmGS.end(), cmp_val_ssa); + nrmGS.reserve(gs.size()); + for (auto &i : gs) nrmGS.push_back(&i); + std::sort(nrmGS.begin(), nrmGS.end(), cmp_second_ssa); for (auto & gs_it : nrmGS) { - RCache.set_GS(gs_it->key); + RCache.set_GS(gs_it->first); - mapNormalPS& ps = gs_it->val; -#else // USE_DX10 - mapNormalPS& ps = vs_it->val; -#endif // USE_DX10 + mapNormalPS& ps = gs_it->second; +#else + mapNormalPS& ps = vs_it->second; +#endif ps.ssa = 0; - ps.getANY_P(nrmPS); - std::sort(nrmPS.begin(), nrmPS.end(), cmp_ps_val_ssa); + nrmPS.reserve(ps.size()); + for (auto &i : ps) nrmPS.push_back(&i); + std::sort(nrmPS.begin(), nrmPS.end(), cmp_ps_second_ssa); for (auto &ps_it : nrmPS) { - RCache.set_PS(ps_it->key); + RCache.set_PS(ps_it->first); #ifdef USE_DX11 - RCache.set_HS(ps_it->val.hs); - RCache.set_DS(ps_it->val.ds); + RCache.set_HS(ps_it->second.hs); + RCache.set_DS(ps_it->second.ds); - mapNormalCS& cs = ps_it->val.mapCS; + mapNormalCS& cs = ps_it->second.mapCS; #else - mapNormalCS& cs = ps_it->val; + mapNormalCS& cs = ps_it->second; #endif cs.ssa = 0; - cs.getANY_P(nrmCS); - std::sort(nrmCS.begin(), nrmCS.end(), cmp_val_ssa); + nrmCS.reserve(cs.size()); + for (auto &i : cs) nrmCS.push_back(&i); + std::sort(nrmCS.begin(), nrmCS.end(), cmp_second_ssa); for (auto &cs_it : nrmCS) { - RCache.set_Constants(cs_it->key); + RCache.set_Constants(cs_it->first); - mapNormalStates& states = cs_it->val; + mapNormalStates& states = cs_it->second; states.ssa = 0; - states.getANY_P(nrmStates); - std::sort(nrmStates.begin(), nrmStates.end(), cmp_val_ssa); + nrmStates.reserve(states.size()); + for (auto &i : states) nrmStates.push_back(&i); + std::sort(nrmStates.begin(), nrmStates.end(), cmp_second_ssa); for (auto &state_it : nrmStates) { - RCache.set_States(state_it->key); + RCache.set_States(state_it->first); - mapNormalTextures& tex = state_it->val; + mapNormalTextures& tex = state_it->second; tex.ssa = 0; sort_tlist(nrmTextures, nrmTexturesTemp, tex); for (auto &tex_it : nrmTextures) { - RCache.set_Textures(tex_it->key); + RCache.set_Textures(tex_it->first); RImplementation.apply_lmaterial(); - mapNormalItems& items = tex_it->val; + mapNormalItems& items = tex_it->second; items.ssa = 0; std::sort(items.begin(), items.end(), cmp_ssa<_NormalItem>); @@ -213,7 +219,7 @@ void D3DXRenderBase::r_dsgraph_render_graph(u32 _priority) } nrmGS.clear(); gs.clear(); -#endif // USE_DX10 +#endif } nrmVS.clear(); vs.clear(); @@ -228,68 +234,73 @@ void D3DXRenderBase::r_dsgraph_render_graph(u32 _priority) { mapMatrixVS& vs = mapMatrixPasses[_priority][iPass]; - vs.getANY_P(matVS); - std::sort(matVS.begin(), matVS.end(), cmp_val_ssa); + matVS.reserve(vs.size()); + for (auto &i : vs) matVS.push_back(&i); + std::sort(matVS.begin(), matVS.end(), cmp_second_ssa); for (auto &vs_id : matVS) { - RCache.set_VS(vs_id->key); + RCache.set_VS(vs_id->first); #if defined(USE_DX10) || defined(USE_DX11) - mapMatrixGS& gs = vs_id->val; + mapMatrixGS& gs = vs_id->second; gs.ssa = 0; - gs.getANY_P(matGS); - std::sort(matGS.begin(), matGS.end(), cmp_val_ssa); + matGS.reserve(gs.size()); + for (auto &i : gs) matGS.push_back(&i); + std::sort(matGS.begin(), matGS.end(), cmp_second_ssa); for (auto &gs_it : matGS) { - RCache.set_GS(gs_it->key); + RCache.set_GS(gs_it->first); - mapMatrixPS& ps = gs_it->val; -#else // USE_DX10 - mapMatrixPS& ps = vs_id->val; -#endif // USE_DX10 + mapMatrixPS& ps = gs_it->second; +#else + mapMatrixPS& ps = vs_id->second; +#endif ps.ssa = 0; - ps.getANY_P(matPS); - std::sort(matPS.begin(), matPS.end(), cmp_ps_val_ssa); + matPS.reserve(ps.size()); + for (auto &i : ps) matPS.push_back(&i); + std::sort(matPS.begin(), matPS.end(), cmp_ps_second_ssa); for (auto &ps_it : matPS) { - RCache.set_PS(ps_it->key); + RCache.set_PS(ps_it->first); #ifdef USE_DX11 - RCache.set_HS(ps_it->val.hs); - RCache.set_DS(ps_it->val.ds); + RCache.set_HS(ps_it->second.hs); + RCache.set_DS(ps_it->second.ds); - mapMatrixCS& cs = ps_it->val.mapCS; + mapMatrixCS& cs = ps_it->second.mapCS; #else - mapMatrixCS& cs = ps_it->val; + mapMatrixCS& cs = ps_it->second; #endif cs.ssa = 0; - cs.getANY_P(matCS); - std::sort(matCS.begin(), matCS.end(), cmp_val_ssa); + matCS.reserve(cs.size()); + for (auto &i : cs) matCS.push_back(&i); + std::sort(matCS.begin(), matCS.end(), cmp_second_ssa); for (auto &cs_it : matCS) { - RCache.set_Constants(cs_it->key); + RCache.set_Constants(cs_it->first); - mapMatrixStates& states = cs_it->val; + mapMatrixStates& states = cs_it->second; states.ssa = 0; - states.getANY_P(matStates); - std::sort(matStates.begin(), matStates.end(), cmp_val_ssa); + matStates.reserve(states.size()); + for (auto &i : states) matStates.push_back(&i); + std::sort(matStates.begin(), matStates.end(), cmp_second_ssa); for (auto &state_it : matStates) { - RCache.set_States(state_it->key); + RCache.set_States(state_it->first); - mapMatrixTextures& tex = state_it->val; + mapMatrixTextures& tex = state_it->second; tex.ssa = 0; sort_tlist(matTextures, matTexturesTemp, tex); for (auto &tex_it : matTextures) { - RCache.set_Textures(tex_it->key); + RCache.set_Textures(tex_it->first); RImplementation.apply_lmaterial(); - mapMatrixItems& items = tex_it->val; + mapMatrixItems& items = tex_it->second; items.ssa = 0; std::sort(items.begin(), items.end(), cmp_ssa<_MatrixItem>); @@ -323,7 +334,7 @@ void D3DXRenderBase::r_dsgraph_render_graph(u32 _priority) } matGS.clear(); gs.clear(); -#endif // USE_DX10 +#endif } matVS.clear(); vs.clear(); diff --git a/src/Layers/xrRender/r__dsgraph_types.h b/src/Layers/xrRender/r__dsgraph_types.h index 81981c7fe60..cb05da4800b 100644 --- a/src/Layers/xrRender/r__dsgraph_types.h +++ b/src/Layers/xrRender/r__dsgraph_types.h @@ -4,8 +4,6 @@ class dxRender_Visual; -//#define USE_RESOURCE_DEBUGGER - namespace R_dsgraph { // Elementary types @@ -34,29 +32,16 @@ struct _LodItem dxRender_Visual* pVisual; }; -#ifdef USE_RESOURCE_DEBUGGER -using vs_type = ref_vs; -using ps_type = ref_ps; -#if defined(USE_DX10) || defined(USE_DX11) -using gs_type = ref_gs; -#ifdef USE_DX11 -using hs_type = ref_hs; -using ds_type = ref_ds; -#endif -#endif // USE_DX10 -#else - -#if defined(USE_DX10) || defined(USE_DX11) // DX10 needs shader signature to properly bind geometry to shader +using ps_type = ID3DPixelShader *; +#if defined(USE_DX10) || defined(USE_DX11) // DX10 and DX11 needs shader signature to properly bind geometry to shader using vs_type = SVS*; -using gs_type = ID3DGeometryShader*; -#ifdef USE_DX11 -using hs_type = ID3D11HullShader*; -using ds_type = ID3D11DomainShader*; +using gs_type = ID3DGeometryShader *; +#else +using vs_type = ID3DVertexShader *; #endif -#else // USE_DX10 -using vs_type = ID3DVertexShader* ; -#endif // USE_DX10 -using ps_type = ID3DPixelShader* ; +#ifdef USE_DX11 +using hs_type = ID3D11HullShader *; +using ds_type = ID3D11DomainShader *; #endif // NORMAL @@ -67,17 +52,17 @@ struct mapNormalItems : public mapNormalDirect float ssa; }; -struct mapNormalTextures : public FixedMAP +struct mapNormalTextures : public xr_unordered_map { float ssa; }; -struct mapNormalStates : public FixedMAP +struct mapNormalStates : public xr_unordered_map { float ssa; }; -struct mapNormalCS : public FixedMAP +struct mapNormalCS : public xr_unordered_map { float ssa; }; @@ -90,27 +75,27 @@ struct mapNormalAdvStages mapNormalCS mapCS; }; -struct mapNormalPS : public FixedMAP +struct mapNormalPS : public xr_unordered_map { float ssa; }; #else -struct mapNormalPS : public FixedMAP +struct mapNormalPS : public xr_unordered_map { float ssa; }; -#endif // USE_DX11 +#endif #if defined(USE_DX10) || defined(USE_DX11) -struct mapNormalGS : public FixedMAP +struct mapNormalGS : public xr_unordered_map { float ssa; }; -struct mapNormalVS : public FixedMAP {}; -#else // USE_DX10 -struct mapNormalVS : public FixedMAP {}; -#endif // USE_DX10 +struct mapNormalVS : public xr_unordered_map {}; +#else +struct mapNormalVS : public xr_unordered_map {}; +#endif using mapNormal_T = mapNormalVS; using mapNormalPasses_T = mapNormal_T[SHADER_PASSES_MAX]; @@ -123,17 +108,17 @@ struct mapMatrixItems : public mapMatrixDirect float ssa; }; -struct mapMatrixTextures : public FixedMAP +struct mapMatrixTextures : public xr_unordered_map { float ssa; }; -struct mapMatrixStates : public FixedMAP +struct mapMatrixStates : public xr_unordered_map { float ssa; }; -struct mapMatrixCS : public FixedMAP +struct mapMatrixCS : public xr_unordered_map { float ssa; }; @@ -146,27 +131,27 @@ struct mapMatrixAdvStages mapMatrixCS mapCS; }; -struct mapMatrixPS : public FixedMAP +struct mapMatrixPS : public xr_unordered_map { float ssa; }; #else -struct mapMatrixPS : public FixedMAP +struct mapMatrixPS : public xr_unordered_map { float ssa; }; -#endif // USE_DX11 +#endif #if defined(USE_DX10) || defined(USE_DX11) -struct mapMatrixGS : public FixedMAP +struct mapMatrixGS : public xr_unordered_map { float ssa; }; -struct mapMatrixVS : public FixedMAP {}; -#else // USE_DX10 -struct mapMatrixVS : public FixedMAP {}; -#endif // USE_DX10 +struct mapMatrixVS : public xr_unordered_map {}; +#else +struct mapMatrixVS : public xr_unordered_map {}; +#endif using mapMatrix_T = mapMatrixVS; using mapMatrixPasses_T = mapMatrix_T[SHADER_PASSES_MAX]; diff --git a/src/Layers/xrRenderPC_R3/xrRender_R3.vcxproj b/src/Layers/xrRenderPC_R3/xrRender_R3.vcxproj index 19070b7dd86..55f89f1a4d8 100644 --- a/src/Layers/xrRenderPC_R3/xrRender_R3.vcxproj +++ b/src/Layers/xrRenderPC_R3/xrRender_R3.vcxproj @@ -98,7 +98,7 @@ $(xrExternals)OpenAutomate\inc;$(xrExternals)nvapi;$(xrExternals)AGS_SDK;%(AdditionalIncludeDirectories) - _USRDLL;XRRENDER_R3_EXPORTS;USE_DX10;MSAA_DX10_1;MSAA_SAMPLES=4;USE_MSAA;GBUFFER_OPTIMIZATION;USE_RESOURCE_DEBUGGER;%(PreprocessorDefinitions) + _USRDLL;XRRENDER_R3_EXPORTS;USE_DX10;MSAA_DX10_1;MSAA_SAMPLES=4;USE_MSAA;GBUFFER_OPTIMIZATION;%(PreprocessorDefinitions) d3d9.lib;nvapi.lib;amd_ags_$(PlatformShortName).lib;dxgi.lib;dxguid.lib;d3dcompiler.lib;d3d10.lib;d3dx10.lib;%(AdditionalDependencies) @@ -108,7 +108,7 @@ $(xrExternals)OpenAutomate\inc;$(xrExternals)nvapi;$(xrExternals)AGS_SDK;%(AdditionalIncludeDirectories) - _USRDLL;XRRENDER_R3_EXPORTS;USE_DX10;MSAA_DX10_1;MSAA_SAMPLES=4;USE_MSAA;GBUFFER_OPTIMIZATION;USE_RESOURCE_DEBUGGER;%(PreprocessorDefinitions) + _USRDLL;XRRENDER_R3_EXPORTS;USE_DX10;MSAA_DX10_1;MSAA_SAMPLES=4;USE_MSAA;GBUFFER_OPTIMIZATION;%(PreprocessorDefinitions) d3d9.lib;nvapi64.lib;amd_ags_$(PlatformShortName).lib;dxgi.lib;dxguid.lib;d3dcompiler.lib;d3d10.lib;d3dx10.lib;%(AdditionalDependencies) diff --git a/src/Layers/xrRenderPC_R4/xrRender_R4.vcxproj b/src/Layers/xrRenderPC_R4/xrRender_R4.vcxproj index 6ab4d7ba670..726bfb4e84a 100644 --- a/src/Layers/xrRenderPC_R4/xrRender_R4.vcxproj +++ b/src/Layers/xrRenderPC_R4/xrRender_R4.vcxproj @@ -98,7 +98,7 @@ $(xrExternals)OpenAutomate\inc;$(xrExternals)nvapi;$(xrExternals)AGS_SDK;%(AdditionalIncludeDirectories) - _USRDLL;XRRENDER_R4_EXPORTS;USE_DX11;MSAA_DX10_1;MSAA_SAMPLES=4;USE_MSAA;GBUFFER_OPTIMIZATION;USE_RESOURCE_DEBUGGER;%(PreprocessorDefinitions) + _USRDLL;XRRENDER_R4_EXPORTS;USE_DX11;MSAA_DX10_1;MSAA_SAMPLES=4;USE_MSAA;GBUFFER_OPTIMIZATION;%(PreprocessorDefinitions) d3d9.lib;nvapi.lib;amd_ags_$(PlatformShortName).lib;dxgi.lib;dxguid.lib;d3dcompiler.lib;d3d11.lib;d3dx11.lib;%(AdditionalDependencies) @@ -108,7 +108,7 @@ $(xrExternals)OpenAutomate\inc;$(xrExternals)nvapi;$(xrExternals)AGS_SDK;%(AdditionalIncludeDirectories) - _USRDLL;XRRENDER_R4_EXPORTS;USE_DX11;MSAA_DX10_1;MSAA_SAMPLES=4;USE_MSAA;GBUFFER_OPTIMIZATION;USE_RESOURCE_DEBUGGER;%(PreprocessorDefinitions) + _USRDLL;XRRENDER_R4_EXPORTS;USE_DX11;MSAA_DX10_1;MSAA_SAMPLES=4;USE_MSAA;GBUFFER_OPTIMIZATION;%(PreprocessorDefinitions) d3d9.lib;nvapi64.lib;amd_ags_$(PlatformShortName).lib;dxgi.lib;dxguid.lib;d3dcompiler.lib;d3d11.lib;d3dx11.lib;%(AdditionalDependencies)