Files
sbox-public/engine/Definitions/common/Render/renderdevice.def
s&box team 71f266059a Open source release
This commit imports the C# engine code and game files, excluding C++ source code.

[Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
2025-11-24 09:05:18 +00:00

185 lines
6.4 KiB
Modula-2

#include "rendersystem/sheet.h"
native struct TextureCreationConfig_t is NativeEngine.TextureCreationConfig_t;
native struct CTextureDesc is NativeEngine.CTextureDesc;
native enum RenderDeviceAPI_t is NativeEngine.RenderDeviceAPI_t;
native pointer SwapChainHandle_t;
native pointer RenderBufferHandle_t is NativeEngine.RenderBufferHandle_t;
native pointer RenderInputLayout_t is NativeEngine.RenderInputLayout_t;
native struct BufferDesc_t is NativeEngine.BufferDesc;
native enum RenderBufferType_t is NativeEngine.RenderBufferType;
native enum RenderBufferFlags_t is NativeEngine.RenderBufferFlags;
native enum DeviceSpecificInfo_t is NativeEngine.DeviceSpecificInfo_t;
native struct VulkanDeviceSpecificTexture_t is NativeEngine.VulkanDeviceSpecificTexture_t;
native struct RenderDeviceInfo_t;
native pointer SamplerStateHandle_t;
native struct CSamplerStateDesc is NativeEngine.CSamplerStateDesc;
native accessor g_pRenderDevice
{
SamplerStateHandle_t FindOrCreateSamplerState(CSamplerStateDesc samplerDesc );
int GetSamplerIndex( SamplerStateHandle_t samplerState );
RenderDeviceInfo_t GetSwapChainInfo( SwapChainHandle_t swapChain );
ITexture FindOrCreateFileTexture( string pFileName, RenderSystemAssetFileLoadMode nLoadMode );
ITexture FindOrCreateTexture2( string pResourceName, bool bIsAnonymous, TextureCreationConfig_t pDescriptor, void* data, int dataSize );
void ClearTexture( ITexture hTexture, Color color );
void AsyncSetTextureData2( ITexture hTexture, void* pData, int nDataSize, Rect3D rect );
ITexture GetSwapChainTexture( SwapChainHandle_t swapChain, SwapChainBuffer bufferType );
bool GetGPUFrameTimeMS( SwapChainHandle_t swapChain, out float pGPUFrameTimeMSOut, out uint pFrameNumberOut );
asref cast CTextureDesc GetTextureDesc( ITexture hTexture );
asref cast CTextureDesc GetOnDiskTextureDesc( ITexture hTexture );
RenderMultisampleType GetTextureMultisampleType( ITexture hTexture );
IRenderContext CreateRenderContext( uint flags );
void ReleaseRenderContext( IRenderContext context );
bool ReadTexturePixels( ITexture hTexture, ref Rect_t pSrcRect, int nSrcSlice, int nSrcMip, ref Rect_t pDstRect, void* pData, ImageFormat dstFormat, int nDstStride );
void DestroySwapChain( SwapChainHandle_t hSwapChain );
bool Present( SwapChainHandle_t chain );
void Flush();
bool CanRenderToSwapChain( SwapChainHandle_t chain );
bool IsUsing32BitDepthBuffer();
inline Vector2 GetBackbufferDimensions( SwapChainHandle_t chain )
{
int nBBWidth, nBBHeight;
g_pRenderDevice->GetBackBufferDimensions( chain, &nBBWidth, &nBBHeight );
return Vector2D( (float)nBBWidth, (float)nBBHeight );
}
RenderShaderHandle_t CompileAndCreateShader( RenderShaderType nType, string pProgram, uint nBufLen, string pShaderVersion, string pDebugName );
int GetTextureLastUsed( ITexture hTexture );
void UnThrottleTextureStreamingForNFrames( uint nNumberOfFramesForUnthrottledTextureLoading );
int GetNumTextureLoadsInFlight();
void SetForcePreloadStreamingData( bool bForcePreloadStreamingData );
RenderDeviceAPI_t GetRenderDeviceAPI();
void MarkTextureUsed( ITexture texture, int nRequiredMipSize );
bool IsTextureRenderTarget( ITexture texture );
inline RenderBufferHandle_t CreateGPUBuffer( RenderBufferType_t nType, BufferDesc_t desc, RenderBufferFlags_t usage, string pDebugName )
{
desc.m_pDebugName = pDebugName;
return g_pRenderDevice->CreateGPUBuffer( nType, desc, usage );
}
void DestroyGPUBuffer( RenderBufferHandle_t hGPUBuffer );
bool ReadBuffer( RenderBufferHandle_t hBuffer, uint nOffsetInBytes, void* pBuf, uint nBytesToRead );
IntPtr GetDeviceSpecificInfo( DeviceSpecificInfo_t info );
IntPtr GetGraphicsAPISpecificTextureHandle( ITexture hTexture );
IntPtr GetDeviceSpecificTexture( ITexture hTexture );
int GetTextureViewIndex( ITexture hTexture, CastTo[RenderColorSpace_t] byte colorSpace, RenderTextureDimension_t dim );
inline void GetTextureResidencyInfo( CUtlVectorTexture pTextures, CUtlVectorString pNames )
{
TextureResidencyStats_t textureResidencyStats;
CUtlVector<TextureResidencyInfo_t> rawTextures;
g_pRenderDevice->GetTextureResidencyInfo( rawTextures, textureResidencyStats );
pTextures->EnsureCapacity( rawTextures.Count() );
pNames->EnsureCapacity( rawTextures.Count() );
for ( const TextureResidencyInfo_t &info : rawTextures )
{
if ( info.m_hTexture.IsLoaded() == false ) continue;
CPathBufferString texName;
info.m_hTexture.GetResourceName( &texName );
pTextures->AddToTail( info.m_hTexture );
pNames->AddToTail( texName );
}
}
inline Vector4 GetSheetInfo( ITexture texture )
{
Vector4D vec(0, 0, 0, 0 );
Vector2D vSheetSequenceDataUVCoords;
HRenderTexture hSequenceDataTexture;
int nSequenceCount;
if ( g_pRenderDevice->GetSheetSequenceTextureData( texture, &hSequenceDataTexture, &vSheetSequenceDataUVCoords, &nSequenceCount ) )
{
vec[0] = vSheetSequenceDataUVCoords.y;
const CTextureDesc *pTexHeader = g_pRenderDevice->GetTextureDesc( hSequenceDataTexture );
if ( pTexHeader )
{
vec[1] = pTexHeader->m_nWidth;
vec[2] = 1.0f / pTexHeader->m_nHeight;
vec[3] = (float)nSequenceCount;
}
}
return vec;
}
inline int GetSequenceCount( ITexture texture )
{
const Sheet_t *pSheet = g_pRenderDevice->GetTextureSheet( texture );
if ( pSheet == nullptr ) return 0;
return pSheet->m_Sequences.Count();
}
inline SheetSequence_t GetSequence( ITexture texture, int index )
{
const Sheet_t *pSheet = g_pRenderDevice->GetTextureSheet( texture );
if ( pSheet == nullptr ) return 0;
return &pSheet->m_Sequences[index];
}
}
native static class ImageLoader as NativeEngine.ImageLoader
{
int GetMemRequired( int width, int height, int depth, ImageFormat imageFormat, bool mipmap );
int GetMemRequired( int width, int height, int depth, int mipmaps, ImageFormat imageFormat );
bool ConvertImageFormat( CastTo[uint8*] void* src, ImageFormat srcImageFormat, CastTo[uint8*] void* dst, ImageFormat dstImageFormat, int width, int height, int srcStride, int dstStride );
}
native class SheetSequence_t
{
uint m_nId;
bool m_bClamp;
bool m_bAlphaCrop;
bool m_bNoColor;
bool m_bNoAlpha;
float m_flTotalTime;
inline int FrameCount()
{
return self->m_Frames.Count();
}
}
native class SheetSequenceFrame_t
{
float m_flDisplayTime;
inline int ImageCount()
{
return self->m_Images.Count();
}
inline SheetFrameImage_t GetImage( int i )
{
return self->m_Images[i];
}
}
native struct SheetFrameImage_t;