Counter Strike : Global Offensive Source Code
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.
 
 
 
 
 
 

89 lines
2.3 KiB

//============ Copyright (c) Valve Corporation, All rights reserved. ============
#ifndef SCENEVIEW_H
#define SCENEVIEW_H
#ifdef _WIN32
#pragma once
#endif
#include "mathlib/camera.h"
#include "tier1/utlvector.h"
#include "tier1/utlintrusivelist.h"
#include "rendersystem/irendercontext.h"
// to use the scenesystem, you feed it a bunch of CSceneViews to render. More CSceneViews may be
// generated during rendering as a result of things such as lights, etc.
enum ELayerType
{
LAYERTYPE_DRAW_WORLDOBJECTS, // this layer causes a world-graph traversal producing an object list
LAYERTYPE_PROCEDURAL,
};
enum ELayerFlags
{
LAYERFLAG_NEEDS_FULLSORT = 1,
LAYERFLAGS_CLEAR_RENDERTARGET = 2,
};
class CSceneDrawList;
struct CStandardTextureBindingRecord_t
{
StandardTextureID_t m_nID;
HRenderTexture m_hTexture;
};
class CSceneLayer
{
public:
RenderViewport_t m_viewport;
ELayerType m_eLayerType;
MaterialDrawMode_t m_eShaderMode;
int m_nShadingMode; // mode to use for binding materials when rendering into this layer
uint m_nObjectFlagsRequiredMask;
uint m_nObjectFlagsExcludedMask;
uint m_nLayerFlags; // LAYERFLAG_xxx
Vector4D m_vecClearColor;
int m_nClearFlags;
int m_nLayerIndex;
RenderTargetBinding_t m_hRenderTargetBinding;
LAYERDRAWFN m_pRenderProcedure;
CUtlIntrusiveList<CSceneDrawList> m_pendingDrawList;
CUtlIntrusiveList<CDisplayList> m_renderLists;
CUtlVectorFixed<CStandardTextureBindingRecord_t, STDTEXTURE_NUMBER_OF_IDS> m_standardBindings;
FORCEINLINE void AddStandardTextureBinding( StandardTextureID_t nID, HRenderTexture hTexture );
};
FORCEINLINE void CSceneLayer::AddStandardTextureBinding( StandardTextureID_t nID, HRenderTexture hTexture )
{
int nSlot = m_standardBindings.AddToTail();
m_standardBindings[nSlot].m_nID = nID;
m_standardBindings[nSlot].m_hTexture = hTexture;
}
// constant buffer layout for camera constants. needs to be moved somewhere where shaders can see it.
struct ViewRelatedConstants_t
{
VMatrix m_mViewProjection;
Vector4D m_vEyePt;
Vector4D m_vEyeDir;
Vector4D m_flFarPlane;
};
// reserved constant slots. needs to go somewhere in the new mat/shader system
#define VERTEX_CONSTANT_SLOT_VIEWRELATED_BASE 0
#endif //sceneview_h