mirror of
https://github.com/Facepunch/sbox-public.git
synced 2026-08-01 08:18:20 -04:00
75 lines
2.7 KiB
Modula-2
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 );
|
|
}
|
|
} |