/*============================================================================= PS2_RendPipeline.cpp : PS2 specific rendering using shaders pipeline. Copyright (c) 2001 Crytek Studios. All Rights Reserved. Revision history: * Created by Honich Andrey =============================================================================*/ #include "RenderPCH.h" #include "NULL_Renderer.h" #include "I3dengine.h" #include "Platform.h" //============================================================================================ // Shaders rendering //============================================================================================ //============================================================================================ // Init Shaders rendering void CNULLRenderer::EF_InitRandTables() { } void CNULLRenderer::EF_InitWaveTables() { } void CNULLRenderer::EF_InitEvalFuncs(int num) { } int CNULLRenderer::EF_RegisterFogVolume(float fMaxFogDist, float fFogLayerZ, CFColor color, int nIndex, bool bCaustics) { if (nIndex < 0) { SMFog Fog; memset(&Fog,0,sizeof(Fog)); Fog.m_fMaxDist = fMaxFogDist; Fog.m_FogInfo.m_FogColor = color; Fog.m_Dist = fFogLayerZ; Fog.m_Color = color; Fog.m_Color.a = 1.0f; Fog.bCaustics = bCaustics; //Fog.m_FogInfo.m_FogColor = m_FogColor; Fog.m_Normal = Vec3d(0,0,1); m_RP.m_FogVolumes.AddElem(Fog); return m_RP.m_FogVolumes.Num()-1; } else { assert (nIndex < m_RP.m_FogVolumes.Num()); SMFog *pFog = &m_RP.m_FogVolumes[nIndex]; pFog->m_fMaxDist = fMaxFogDist; pFog->m_FogInfo.m_FogColor = color; pFog->m_Dist = fFogLayerZ; pFog->m_Color = color; pFog->m_Color.a = 1.0f; pFog->bCaustics = bCaustics; return nIndex; } } void CNULLRenderer::EF_PipelineInit() { bool nv = 0; m_RP.m_MaxVerts = 600; m_RP.m_MaxTris = 300; EF_InitWaveTables(); EF_InitRandTables(); EF_InitEvalFuncs(0); EF_InitFogVolumes(); //================================================== SAFE_DELETE_ARRAY(m_RP.m_VisObjects); CCObject::m_Waves.Create(32); m_RP.m_VisObjects = new CCObject *[MAX_REND_OBJECTS]; if (!m_RP.m_TempObjects.Num()) m_RP.m_TempObjects.Reserve(MAX_REND_OBJECTS); if (!m_RP.m_Objects.Num()) { m_RP.m_Objects.Reserve(MAX_REND_OBJECTS); m_RP.m_Objects.SetUse(1); SAFE_DELETE_ARRAY(m_RP.m_ObjectsPool); m_RP.m_nNumObjectsInPool = 384; m_RP.m_ObjectsPool = new CCObject[m_RP.m_nNumObjectsInPool]; for (int i=0; iInit(); m_RP.m_TempObjects[i]->m_Color = Col_White; m_RP.m_TempObjects[i]->m_ObjFlags = 0; m_RP.m_TempObjects[i]->m_Matrix.SetIdentity(); m_RP.m_TempObjects[i]->m_RenderState = 0; } m_RP.m_VisObjects[0] = &m_RP.m_ObjectsPool[0]; } //m_RP.m_DLights.Create(64); //m_RP.m_DLights.SetUse(0); m_RP.m_pREGlare = (CREGlare *)EF_CreateRE(eDATA_Glare); for (int i=0; i* Defs) { } void CNULLRenderer::EF_Eval_TexGen(SShaderPass *sfm) { } void CNULLRenderer::EF_Eval_RGBAGen(SShaderPass *sfm) { } void CNULLRenderer::EF_EvalNormalsRB(SShader *ef) { } //================================================================================= void CNULLRenderer::PS2SetCull(ECull eCull) { m_RP.m_eCull = eCull; } void CRenderer::EF_SetState(int st) { m_CurState = st; } void CNULLRenderer::EF_SetColorOp(byte co) { } //================================================================================= DEFINE_ALIGNED_DATA_STATIC( Matrix44, sIdentityMatrix( 1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1 ), 16 ); // Get inverted matrix of the object matrix // All matrices are 16 bytes alligned to speedup matrix calculations using SSE instructions Matrix44 &CCObject::GetInvMatrix() { return sIdentityMatrix; } bool CNULLRenderer::EF_ObjectChange(SShader *Shader, int nObject, CRendElement *pRE) { return true; } // Initialize of the new shader pipeline (only 2d) void CNULLRenderer::EF_Start(SShader *ef, SShader *efState, SRenderShaderResources *Res, CRendElement *re) { m_RP.m_Frame++; } // Initialize of the new shader pipeline void CNULLRenderer::EF_Start(SShader *ef, SShader *efState, SRenderShaderResources *Res, int numFog, CRendElement *re) { m_RP.m_Frame++; } void CNULLRenderer::EF_CheckOverflow(int nVerts, int nInds, CRendElement *re) { } //======================================================================================== void CNULLRenderer::EF_LightMaterial(SLightMaterial *lm, int Flags) { } //=================================================================================================== // Used for HW effectors for rendering of tri mesh (vertex array) void CNULLRenderer::EF_DrawIndexedMesh (int nPrimType) { } void CNULLRenderer::EF_FlushShader() { } void CNULLRenderer::EF_Flush() { } void CNULLRenderer::EF_EndEf3D(int nFlags) { m_RP.m_RealTime = iTimer->GetCurrTime(); EF_RemovePolysFromScene(); SRendItem::m_RecurseLevel--; } void CNULLRenderer::EF_RenderPipeLine(void (*RenderFunc)()) { } void CNULLRenderer::EF_PipeLine(int nums, int nume, int nList, int nSortType, void (*RenderFunc)()) { } void CNULLRenderer::EF_DrawWire() { } void CNULLRenderer::EF_DrawNormals() { } void CNULLRenderer::EF_DrawTangents() { } void CNULLRenderer::EF_DrawDebugLights() { } void CNULLRenderer::EF_DrawDebugTools() { } void CNULLRenderer::EF_PrintProfileInfo() { } int CNULLRenderer::EF_Preprocess(SRendItemPre *ri, int nums, int nume) { return 0; } //double timeFtoI, timeFtoL, timeQRound; //int sSome; void CNULLRenderer::EF_EndEf2D(bool bSort) { }