Skip to content

Commit

Permalink
Actor shadow added
Browse files Browse the repository at this point in the history
Implementation by K.D.
  • Loading branch information
CasualDev242 committed Sep 26, 2014
1 parent 42fbd81 commit 049dfca
Show file tree
Hide file tree
Showing 12 changed files with 41 additions and 9 deletions.
3 changes: 3 additions & 0 deletions src/Layers/xrRender/r__dsgraph_render.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -715,6 +715,9 @@ void R_dsgraph_structure::r_dsgraph_render_subspace (IRender_Sector* _sector, CF
renderable->renderable_Render ();
}
}
#if RENDER!=R_R1
if (g_pGameLevel && (phase==RImplementation.PHASE_SMAP) && ps_common_flags.test(RFLAG_ACTOR_SHADOW)) g_pGameLevel->pHUD->Render_Actor_Shadow(); // Actor Shadow
#endif
}

// Restore
Expand Down
4 changes: 3 additions & 1 deletion src/Layers/xrRender/xrRender_console.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -701,7 +701,9 @@ void xrRender_initconsole ()
#endif // DEBUG

CMD2(CCC_tf_Aniso, "r__tf_aniso", &ps_r__tf_Anisotropic ); // {1..16}


CMD3(CCC_Mask, "r__actor_shadow", &ps_common_flags, RFLAG_ACTOR_SHADOW ); //Swartz27

// R1
CMD4(CCC_Float, "r1_ssa_lod_a", &ps_r1_ssaLOD_A, 16, 96 );
CMD4(CCC_Float, "r1_ssa_lod_b", &ps_r1_ssaLOD_B, 16, 64 );
Expand Down
5 changes: 5 additions & 0 deletions src/Layers/xrRender/xrRender_console.h
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,11 @@ enum
R2FLAGEXT_SUN_OLD = (1<<9),
};

enum
{
RFLAG_ACTOR_SHADOW = (1<<0),
};

extern void xrRender_initconsole ();
extern BOOL xrRender_test_hw ();
extern void xrRender_apply_tf ();
Expand Down
3 changes: 2 additions & 1 deletion src/Layers/xrRenderPC_R1/FStaticRender.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -439,7 +439,8 @@ void CRender::Calculate ()

// Determine visibility for dynamic part of scene
set_Object (0);
g_hud->Render_First ( ); // R1 shadows
//g_hud->Render_First ( ); // R1 shadows
if (ps_common_flags.test(RFLAG_ACTOR_SHADOW)) g_hud->Render_First ( ); // R1 shadows
g_hud->Render_Last ( );
u32 uID_LTRACK = 0xffffffff;
if (phase==PHASE_NORMAL) {
Expand Down
1 change: 1 addition & 0 deletions src/Layers/xrRenderPC_R1/FStaticRender.h
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,7 @@ class CRender : public R_dsgraph_structure
virtual void rmNear ();
virtual void rmFar ();
virtual void rmNormal ();
virtual u32 active_phase () {return phase;};

// Constructor/destructor/loader
CRender ();
Expand Down
1 change: 1 addition & 0 deletions src/Layers/xrRenderPC_R2/r2.h
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,7 @@ class CRender : public R_dsgraph_structure
virtual void rmNear ();
virtual void rmFar ();
virtual void rmNormal ();
virtual u32 active_phase () {return phase;};

// Constructor/destructor/loader
CRender ();
Expand Down
1 change: 1 addition & 0 deletions src/Layers/xrRenderPC_R3/r3.h
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,7 @@ class CRender : public R_dsgraph_structure
virtual void rmNear ();
virtual void rmFar ();
virtual void rmNormal ();
virtual u32 active_phase () {return phase;};

// Constructor/destructor/loader
CRender ();
Expand Down
3 changes: 2 additions & 1 deletion src/Layers/xrRenderPC_R4/r4.h
Original file line number Diff line number Diff line change
Expand Up @@ -341,7 +341,8 @@ class CRender : public R_dsgraph_structure
virtual void rmNear ();
virtual void rmFar ();
virtual void rmNormal ();

virtual u32 active_phase () {return phase;};

// Constructor/destructor/loader
CRender ();
virtual ~CRender ();
Expand Down
11 changes: 7 additions & 4 deletions src/xrGame/Actor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1375,11 +1375,14 @@ void CActor::renderable_Render ()
{
VERIFY(_valid(XFORM()));
inherited::renderable_Render ();
if(1/*!HUDview()*/)
{
if ((cam_active==eacFirstEye && // first eye cam
::Render->get_generation() == ::Render->GENERATION_R2 && // R2
::Render->active_phase() == 1) // shadow map rendering on R2
||
!(IsFocused() && (cam_active==eacFirstEye) &&
((!m_holder) || (m_holder && m_holder->allowWeapon() && m_holder->HUDView())))
)
CInventoryOwner::renderable_Render ();
}
VERIFY(_valid(XFORM()));
}

BOOL CActor::renderable_ShadowGenerate ()
Expand Down
2 changes: 1 addition & 1 deletion src/xrGame/Actor.h
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ struct SDefNewsMsg{
CActorCameraManager& Cameras () {VERIFY(m_pActorEffector); return *m_pActorEffector;}
IC CCameraBase* cam_Active () {return cameras[cam_active];}
IC CCameraBase* cam_FirstEye () {return cameras[eacFirstEye];}

IC EActorCameras active_cam () {return cam_active;} // KD: need to know which cam active outside actor methods
protected:
virtual void cam_Set (EActorCameras style);
void cam_Update (float dt, float fFOV);
Expand Down
13 changes: 13 additions & 0 deletions src/xrGame/HUDManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,19 @@ void CHUDManager::Render_Last()
::Render->set_HUD (FALSE);
}

void CHUDManager::Render_Actor_Shadow() // added by KD
{
if (0==pUIGame) return;
CObject* O = g_pGameLevel->CurrentViewEntity();
if (0==O) return;
CActor* A = smart_cast<CActor*> (O);
if (!A) return;
if (A->active_cam() != eacFirstEye) return; // KD: we need to render actor shadow only in first eye cam mode because
// in other modes actor model already in scene graph and renders well
::Render->set_Object (O->H_Root());
O->renderable_Render ();
}

#include "player_hud.h"
bool CHUDManager::RenderActiveItemUIQuery()
{
Expand Down
3 changes: 2 additions & 1 deletion src/xrGame/HUDManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ class CHUDManager :
virtual void OnEvent (EVENT E, u64 P1, u64 P2);

virtual void Render_First ();
virtual void Render_Last ();
virtual void Render_Last ();
virtual void Render_Actor_Shadow (); // added by KD
virtual void OnFrame ();

virtual void RenderUI ();
Expand Down

0 comments on commit 049dfca

Please sign in to comment.