You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
188 lines
4.5 KiB
188 lines
4.5 KiB
//========= Copyright © Valve Corporation, All rights reserved. ============//
|
|
#ifndef BUILDRENDERABLES_PS3_HDR
|
|
#define BUILDRENDERABLES_PS3_HDR
|
|
|
|
#if defined( _PS3 )
|
|
|
|
#if defined(__SPU__)
|
|
|
|
#include "ps3/spu_job_shared.h"
|
|
|
|
#else
|
|
|
|
#include "utlvector.h"
|
|
#include "vjobs/root.h"
|
|
#include <vjobs_interface.h>
|
|
#include <ps3/vjobutils.h>
|
|
#include <ps3/vjobutils_shared.h>
|
|
#include "vjobs/jobparams_shared.h"
|
|
|
|
#include "ClientLeafSystem.h"
|
|
|
|
#endif // __SPU__
|
|
|
|
|
|
// copied from bspfile.h, do we need the rest of that file?
|
|
#define MAX_MAP_AREAS 256
|
|
|
|
// round up to next 16B boundary, then add 16B
|
|
#define ROUNDUPTONEXT16B( a ) (0x10 + ((a) + (0x10 - ((a)%0x10))))
|
|
|
|
|
|
struct ALIGN128 buildRenderablesJob_SPU
|
|
{
|
|
int debugJob; // for dynamic switching of DebuggerBreak
|
|
uint32 pEA_debugRenderable;
|
|
|
|
SetupRenderInfo_t info;
|
|
void* pEA_worldbrush_leafs; // mleaf_t *
|
|
|
|
void* pEA_detailObjects; // CDetailModel *, g_detailObjectSystem->m_DetailObjects.Base()
|
|
void* pEA_detailObjects_origin; // CDetailModel *, g_detailObjectSystem->m_DetailObjects.Base()
|
|
// this is ptr to detailmodel.m_origin, so we don't have to fetch the whole thing, stride can this still be sizeof(CDetailModel) to access elements
|
|
int detailObjects_count; // g_detailObjectSystem->m_DetailObjects.count()
|
|
Vector viewOrigin; // g_vecCurrentRenderOrigin, CurrentViewOrigin()
|
|
int strideCDetailModel;
|
|
|
|
void* pEA_clientRenderablesList_RenderGroups; // ptr to CEntry m_REnderGroups[RENDER_GROUP_COUNT][MAX_GROUP_ENTITIRES]
|
|
void* pEA_clientRenderablesList_RenderGroupCounts; // ptr to int m_REnderGroupCounts[RENDER_GROUP_COUNT]
|
|
|
|
|
|
DistanceFadeInfo_t info_mpRenderList_mDetailFade;
|
|
|
|
int maxCount;
|
|
int buildFastReflectionRenderables; // r_fastreflectionfastpath
|
|
|
|
//
|
|
void* pEA_frustums[MAX_MAP_AREAS]; // Frustum_t *
|
|
int numAreaFrustums;
|
|
|
|
// detailobjectsystem info
|
|
float flFactor;
|
|
float flDetailFadeStart;
|
|
float flDetailFadeEnd;
|
|
|
|
// translucency
|
|
float flMinLevelFadeArea;
|
|
float flMaxLevelFadeArea;
|
|
float flMinGlobalFadeArea;
|
|
float flMaxGlobalFadeArea;
|
|
float flGlobalDistFadeScale;
|
|
int bComputeScreenFade;
|
|
ScreenSizeComputeInfo_t screensizecomputeinfo;
|
|
|
|
int shouldDrawDetailObjects;
|
|
|
|
|
|
// utl
|
|
void* pEA_clientleafsystem_mleaf;
|
|
void* pEA_renderablesLIST; // renderable_LIST_t *
|
|
void* pEA_renderablesInLeafLIST; // renderableInLeaf_LIST_t *
|
|
int renderablesHeadIdx;
|
|
|
|
// extract
|
|
int clientleafsystem_alternateSortCount; //
|
|
int clientleafsystem_drawStaticProps; //
|
|
int clientleafsystem_disableShadowDepthCount;
|
|
|
|
// convar copies
|
|
int r_drawallrenderables;
|
|
int r_portaltestents_AND_NOTr_portalsopenall;
|
|
int r_occlusion;
|
|
|
|
// gpGlobals
|
|
int frameCount;
|
|
float curTime;
|
|
|
|
// CSM View
|
|
bool bCSMView;
|
|
bool bDisableCSMCulling;
|
|
bool bShadowEntities;
|
|
bool bShadowStaticProps;
|
|
bool bShadowSprites;
|
|
bool bIgnoreDisableShadowDepthRendering;
|
|
int cascadeID;
|
|
int debugViewID;
|
|
int debugViewID_DEBUG;
|
|
|
|
// OUT
|
|
void* ppEA_Renderables; // RenderableInfo **
|
|
void* pEA_RenderablesCount; // int *
|
|
void* pEA_RLInfo; // BuildRenderListInfo_t *
|
|
|
|
void* pEA_DetailRenderables; // DetailRenderableInfo_t *
|
|
void* pEA_DetailRenderablesCount; // int *
|
|
|
|
enum
|
|
{
|
|
MAX_GROUP_ENTITIES = 4096,
|
|
MAX_BONE_SETUP_DEPENDENCY = 64,
|
|
};
|
|
|
|
|
|
|
|
} ALIGN128_POST;
|
|
|
|
|
|
#if !defined( __SPU__ )
|
|
struct ALIGN128 PS3BuildRenderablesJobData
|
|
{
|
|
public:
|
|
|
|
job_buildrenderables::JobDescriptor_t jobDescriptor ALIGN128;
|
|
|
|
// src, SPU in only, going to SPU at start of job
|
|
buildRenderablesJob_SPU buildRenderablesJobSPU;
|
|
|
|
} ALIGN128_POST;
|
|
|
|
|
|
class CPS3BuildRenderablesJob : public VJobInstance
|
|
{
|
|
public:
|
|
CPS3BuildRenderablesJob()
|
|
{
|
|
}
|
|
|
|
~CPS3BuildRenderablesJob()
|
|
{
|
|
Shutdown();
|
|
}
|
|
|
|
|
|
void OnVjobsInit( void ); // gets called after m_pRoot was created and assigned
|
|
void OnVjobsShutdown( void ); // gets called before m_pRoot is about to be destructed and NULL'ed
|
|
|
|
void Init( void );
|
|
void Shutdown( void );
|
|
|
|
void ResetBoneJobs( void );
|
|
|
|
PS3BuildRenderablesJobData *GetJobData( int job );
|
|
|
|
CUtlVector<PS3BuildRenderablesJobData> m_buildRenderablesJobData;
|
|
|
|
private:
|
|
|
|
int m_buildRenderablesJobCount;
|
|
int m_buildRenderablesJobNextSPURSPort;
|
|
|
|
bool m_bEnabled;
|
|
};
|
|
|
|
|
|
|
|
extern IVJobs * g_pVJobs;
|
|
extern CPS3BuildRenderablesJob* g_pBuildRenderablesJob;
|
|
extern job_buildrenderables::JobDescriptor_t g_buildRenderablesJobDescriptor ALIGN128;
|
|
|
|
|
|
|
|
|
|
#endif // #if !defined(__SPU__)
|
|
|
|
|
|
#endif // if !defined(_PS3)
|
|
|
|
|
|
#endif
|