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
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
|