Files
sbox-public/engine/Definitions/common/SceneSystem/ISceneLayer.def

75 lines
2.7 KiB
Modula-2

#include "scenesystem/iscenelayer.h"
native enum ELayerFlags as Sandbox.Rendering.LayerFlags
native enum ELayerEnum as Sandbox.SceneLayerType
native pointer HSceneViewRenderTarget as Sandbox.Rendering.SceneViewRenderTargetHandle
native enum SceneLayerMSAAMode_t is NativeEngine.SceneLayerMSAAMode_t
native class ISceneLayer as NativeEngine.ISceneLayer
{
void SetObjectMatchID( StringToken nTok );
void AddObjectFlagsRequiredMask( ESceneObjectFlags nRequiredFlags );
void AddObjectFlagsExcludedMask( ESceneObjectFlags nExcludedFlags );
void RemoveObjectFlagsRequiredMask( ESceneObjectFlags nRequiredFlags );
void RemoveObjectFlagsExcludedMask( ESceneObjectFlags nExcludedFlags );
ESceneObjectFlags GetObjectFlagsRequiredMask() const;
ESceneObjectFlags GetObjectFlagsExcludedMask() const;
string GetDebugName();
ELayerFlags m_nLayerFlags;
SceneLayerType LayerEnum;
RenderViewport m_viewport;
int m_nClearFlags;
inline CRenderAttributes GetRenderAttributesPtr()
{
return &self->m_Attrs;
}
void SetAttr( StringToken nTokenID, HSceneViewRenderTarget hRenderTarget, SceneLayerMSAAMode_t msaa, uint flags );
void SetLayerNoCull( bool enabled );
void SetBoundingVolumeSizeCullThresholdInPercent( float flSizeCullThreshold );
void SetClearColor( Vector4 vecColor, int nRenderTargetIndex );
ITexture GetTextureValue( StringToken nTokenID, ITexture nDefaultValue );
ITexture GetTextureValue( StringToken nTokenID );
inline ITexture GetColorTarget()
{
return this->GetRenderTargetDesc().m_pColorTargets[0];
}
inline ITexture GetDepthTarget()
{
return this->GetRenderTargetDesc().m_hDepthTarget;
}
inline void SetOutput( HSceneViewRenderTarget hColor, HSceneViewRenderTarget hDepth )
{
this->m_RenderTargetOutputs.Init( hColor, hDepth );
}
// Game overlay (viewmodel) stencil helper, see iscenelayer.h
inline void SetOverlayStencil( bool bOverlay )
{
constexpr uint8 GAME_OVERLAY_STENCIL_MASK = 0x80;
RsStencilStateOverride_t stencilOverride;
stencilOverride.m_nStencilRefValue = bOverlay ? GAME_OVERLAY_STENCIL_MASK : 0;
stencilOverride.m_stencilState = RsStencilStateDesc_t(
true, bOverlay ? 0 : GAME_OVERLAY_STENCIL_MASK, bOverlay ? GAME_OVERLAY_STENCIL_MASK : 0,
RS_STENCIL_OP_KEEP, RS_STENCIL_OP_KEEP, bOverlay ? RS_STENCIL_OP_REPLACE : RS_STENCIL_OP_KEEP, RS_CMP_ALWAYS,
RS_STENCIL_OP_KEEP, RS_STENCIL_OP_KEEP, bOverlay ? RS_STENCIL_OP_REPLACE : RS_STENCIL_OP_KEEP, RS_CMP_ALWAYS );
if ( !bOverlay )
{
stencilOverride.m_stencilState.SetFrontStencilFunc( RS_CMP_EQUAL );
stencilOverride.m_stencilState.SetBackStencilFunc( RS_CMP_EQUAL );
}
this->SetStencilStateOverride( stencilOverride );
}
}