Alibek Omarov
1 year ago
3 changed files with 645 additions and 0 deletions
@ -0,0 +1,623 @@
@@ -0,0 +1,623 @@
|
||||
/*
|
||||
r_context.c -- null renderer context |
||||
Copyright (C) 2023-2024 a1batross |
||||
|
||||
This program is free software: you can redistribute it and/or modify |
||||
it under the terms of the GNU General Public License as published by |
||||
the Free Software Foundation, either version 3 of the License, or |
||||
(at your option) any later version. |
||||
|
||||
This program is distributed in the hope that it will be useful, |
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
GNU General Public License for more details. |
||||
*/ |
||||
|
||||
#include <string.h> |
||||
#include "xash3d_types.h" |
||||
#include "const.h" |
||||
#include "cvardef.h" |
||||
#include "xash3d_mathlib.h" |
||||
#include "ref_api.h" |
||||
|
||||
/*
|
||||
* this initially was made to be able to run full client |
||||
* in hazardous^Wheadless environments |
||||
* but might be a starting point for new renderers as well |
||||
*/ |
||||
|
||||
static ref_api_t gEngfuncs; |
||||
static ref_globals_t *gpGlobals; |
||||
|
||||
static void R_SimpleStub( void ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void R_SimpleStubInt( int ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void R_SimpleStubUInt( unsigned int ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void R_SimpleStubBool( qboolean ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static qboolean R_Init( void ) |
||||
{ |
||||
return true; |
||||
} |
||||
|
||||
static const char *R_GetConfigName( void ) |
||||
{ |
||||
return NULL; |
||||
} |
||||
|
||||
static qboolean R_SetDisplayTransform( ref_screen_rotation_t rotate, int x, int y, float scale_x, float scale_y ) |
||||
{ |
||||
return true; |
||||
} |
||||
|
||||
static void GL_SetupAttributes( int safegl ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static qboolean R_AddEntity( struct cl_entity_s *clent, int type ) |
||||
{ |
||||
return true; |
||||
} |
||||
|
||||
static void CL_AddCustomBeam( cl_entity_t *pEnvBeam ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void R_ProcessEntData( qboolean allocate, cl_entity_t *entities, unsigned int max_entities ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static const byte *R_GetTextureOriginalBuffer( unsigned int idx ) |
||||
{ |
||||
return NULL; |
||||
} |
||||
|
||||
static int GL_LoadTextureFromBuffer( const char *name, rgbdata_t *pic, texFlags_t flags, qboolean update ) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
static void GL_ProcessTexture( int texnum, float gamma, int topColor, int bottomColor ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void R_SetupSky( const char *skyname ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void R_DrawStretchRaw( float x, float y, float w, float h, int cols, int rows, const byte *data, qboolean dirty ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void R_DrawStretchPic( float x, float y, float w, float h, float s1, float t1, float s2, float t2, int texnum ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void R_DrawTileClear( int texnum, int x, int y, int w, int h ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void FillRGBA( float x, float y, float w, float h, int r, int g, int b, int a ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static int WorldToScreen( const vec3_t world, vec3_t screen ) |
||||
{ |
||||
VectorClear( screen ); |
||||
return 0; |
||||
} |
||||
|
||||
static qboolean VID_ScreenShot( const char *filename, int shot_type ) |
||||
{ |
||||
return false; |
||||
} |
||||
|
||||
static qboolean VID_CubemapShot( const char *base, uint size, const float *vieworg, qboolean skyshot ) |
||||
{ |
||||
return false; |
||||
} |
||||
|
||||
static colorVec R_LightPoint( const float *p ) |
||||
{ |
||||
colorVec c = { 0 }; |
||||
return c; |
||||
} |
||||
|
||||
static void R_DecalShoot( int textureIndex, int entityIndex, int modelIndex, vec3_t pos, int flags, float scale ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static int R_CreateDecalList( struct decallist_s *pList ) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
static float R_StudioEstimateFrame( cl_entity_t *e, mstudioseqdesc_t *pseqdesc, double time ) |
||||
{ |
||||
return 0.0f; |
||||
} |
||||
|
||||
static void R_StudioLerpMovement( cl_entity_t *e, double time, vec3_t origin, vec3_t angles ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void R_InitSkyClouds( struct mip_s *mt, struct texture_s *tx, qboolean custom_palette ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void GL_SubdivideSurface( model_t *mod, msurface_t *fa ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void R_GetSpriteParms( int *frameWidth, int *frameHeight, int *numFrames, int currentFrame, const model_t *pSprite ) |
||||
{ |
||||
*frameWidth = *frameHeight = *numFrames = 0; |
||||
} |
||||
|
||||
static int R_GetSpriteTexture( const model_t *m_pSpriteModel, int frame ) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
static void Mod_LoadMapSprite( struct model_s *mod, const void *buffer, size_t size, qboolean *loaded ) |
||||
{ |
||||
*loaded = false; |
||||
return; |
||||
} |
||||
|
||||
static qboolean Mod_ProcessRenderData( model_t *mod, qboolean create, const byte *buffer ) |
||||
{ |
||||
return false; |
||||
} |
||||
|
||||
static void Mod_StudioLoadTextures( model_t *mod, void *data ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void CL_DrawParticles( double frametime, particle_t *particles, float partsize ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void CL_DrawTracers( double frametime, particle_t *tracers ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void CL_DrawBeams( int fTrans, BEAM *beams ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static qboolean R_BeamCull( const vec3_t start, const vec3_t end, qboolean pvsOnly ) |
||||
{ |
||||
return false; |
||||
} |
||||
|
||||
static int RefGetParm( int parm, int arg ) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
static void GetDetailScaleForTexture( int texture, float *xScale, float *yScale ) |
||||
{ |
||||
*xScale = *yScale = 1.0f; |
||||
} |
||||
|
||||
static void GetExtraParmsForTexture( int texture, byte *red, byte *green, byte *blue, byte *alpha ) |
||||
{ |
||||
*red = *green = *blue = *alpha = 0; |
||||
} |
||||
|
||||
static float GetFrameTime( void ) |
||||
{ |
||||
return 0.0f; |
||||
} |
||||
|
||||
static void R_SetCurrentEntity( struct cl_entity_s *ent ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void R_SetCurrentModel( struct model_s *mod ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static int GL_FindTexture( const char *name ) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
static const char *GL_TextureName( unsigned int texnum ) |
||||
{ |
||||
return NULL; |
||||
} |
||||
|
||||
static const byte *GL_TextureData( unsigned int texnum ) |
||||
{ |
||||
return NULL; |
||||
} |
||||
|
||||
static int GL_LoadTexture( const char *name, const byte *buf, size_t size, int flags ) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
static int GL_CreateTexture( const char *name, int width, int height, const void *buffer, texFlags_t flags ) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
static int GL_LoadTextureArray( const char **names, int flags ) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
static int GL_CreateTextureArray( const char *name, int width, int height, int depth, const void *buffer, texFlags_t flags ) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
static void DrawSingleDecal( struct decal_s *pDecal, struct msurface_s *fa ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static float *R_DecalSetupVerts( struct decal_s *pDecal, struct msurface_s *surf, int texture, int *outCount ) |
||||
{ |
||||
return NULL; |
||||
} |
||||
|
||||
static void R_EntityRemoveDecals( struct model_s *mod ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void AVI_UploadRawFrame( int texture, int cols, int rows, int width, int height, const byte *data ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void GL_Bind( int tmu, unsigned int texnum ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void GL_LoadTextureMatrix( const float *glmatrix ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void GL_TexGen( unsigned int coord, unsigned int mode ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void GL_UpdateTexSize( int texnum, int width, int height, int depth ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void GL_DrawParticles( const struct ref_viewpass_s *rvp, qboolean trans_pass, float frametime ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static colorVec LightVec( const float *start, const float *end, float *lightspot, float *lightvec ) |
||||
{ |
||||
colorVec c = { 0 }; |
||||
return c; |
||||
} |
||||
|
||||
static struct mstudiotex_s *StudioGetTexture( struct cl_entity_s *e ) |
||||
{ |
||||
return NULL; |
||||
} |
||||
|
||||
static void GL_RenderFrame( const struct ref_viewpass_s *rvp ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void GL_OrthoBounds( const float *mins, const float *maxs ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static qboolean R_SpeedsMessage( char *out, size_t size ) |
||||
{ |
||||
return false; |
||||
} |
||||
|
||||
static byte *Mod_GetCurrentVis( void ) |
||||
{ |
||||
return NULL; |
||||
} |
||||
|
||||
static void *R_GetProcAddress( const char *name ) |
||||
{ |
||||
return NULL; |
||||
} |
||||
|
||||
static void Color4f( float r, float g, float b, float a ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void Color4ub( unsigned char r, unsigned char g, unsigned char b, unsigned char a ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void TexCoord2f( float u, float v ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void Vertex3fv( const float *worldPnt ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void Vertex3f( float x, float y, float z ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void Fog( float flFogColor[3], float flStart, float flEnd, int bOn ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void ScreenToWorld( const float *screen, float *world ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void GetMatrix( const int pname, float *matrix ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void FogParams( float flDensity, int iFogSkybox ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void CullFace( TRICULLSTYLE mode ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void VGUI_SetupDrawing( int *pColor ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void VGUI_EnableTexture( qboolean enable ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void VGUI_CreateTexture( int id, int width, int height ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void VGUI_UploadTexture( int id, const char *buffer, int width, int height ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void VGUI_UploadTextureBlock( int id, int drawX, int drawY, const byte *rgba, int blockWidth, int blockHeight ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void VGUI_DrawQuad( const vpoint_t *ul, const vpoint_t *lr ) |
||||
{ |
||||
; |
||||
} |
||||
|
||||
static void VGUI_GetTextureSizes( int *width, int *height ) |
||||
{ |
||||
*width = *height = 0; |
||||
} |
||||
|
||||
static int VGUI_GenerateTexture( void ) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
static ref_interface_t gReffuncs = |
||||
{ |
||||
.R_Init = R_Init, |
||||
.R_Shutdown = R_SimpleStub, |
||||
.R_GetConfigName = R_GetConfigName, |
||||
.R_SetDisplayTransform = R_SetDisplayTransform, |
||||
|
||||
.GL_SetupAttributes = GL_SetupAttributes, |
||||
.GL_InitExtensions = R_SimpleStub, |
||||
.GL_ClearExtensions = R_SimpleStub, |
||||
|
||||
.R_GammaChanged = R_SimpleStubBool, |
||||
.R_BeginFrame = R_SimpleStubBool, |
||||
.R_RenderScene = R_SimpleStub, |
||||
.R_EndFrame = R_SimpleStub, |
||||
.R_PushScene = R_SimpleStub, |
||||
.R_PopScene = R_SimpleStub, |
||||
.GL_BackendStartFrame = R_SimpleStub, |
||||
.GL_BackendEndFrame = R_SimpleStub, |
||||
|
||||
.R_ClearScreen = R_SimpleStub, |
||||
.R_AllowFog = R_SimpleStubBool, |
||||
.GL_SetRenderMode = R_SimpleStubInt, |
||||
|
||||
.R_AddEntity = R_AddEntity, |
||||
.CL_AddCustomBeam = CL_AddCustomBeam, |
||||
.R_ProcessEntData = R_ProcessEntData, |
||||
.R_Flush = R_SimpleStubUInt, |
||||
|
||||
.R_ShowTextures = R_SimpleStub, |
||||
|
||||
.R_GetTextureOriginalBuffer = R_GetTextureOriginalBuffer, |
||||
.GL_LoadTextureFromBuffer = GL_LoadTextureFromBuffer, |
||||
.GL_ProcessTexture = GL_ProcessTexture, |
||||
.R_SetupSky = R_SetupSky, |
||||
|
||||
.R_Set2DMode = R_SimpleStubBool, |
||||
.R_DrawStretchRaw = R_DrawStretchRaw, |
||||
.R_DrawStretchPic = R_DrawStretchPic, |
||||
.R_DrawTileClear = R_DrawTileClear, |
||||
.FillRGBA = FillRGBA, |
||||
.FillRGBABlend = FillRGBA, |
||||
.WorldToScreen = WorldToScreen, |
||||
|
||||
.VID_ScreenShot = VID_ScreenShot, |
||||
.VID_CubemapShot = VID_CubemapShot, |
||||
|
||||
.R_LightPoint = R_LightPoint, |
||||
|
||||
.R_DecalShoot = R_DecalShoot, |
||||
.R_DecalRemoveAll = R_SimpleStubInt, |
||||
.R_CreateDecalList = R_CreateDecalList, |
||||
.R_ClearAllDecals = R_SimpleStub, |
||||
|
||||
.R_StudioEstimateFrame = R_StudioEstimateFrame, |
||||
.R_StudioLerpMovement = R_StudioLerpMovement, |
||||
.CL_InitStudioAPI = R_SimpleStub, |
||||
|
||||
.R_InitSkyClouds = R_InitSkyClouds, |
||||
.GL_SubdivideSurface = GL_SubdivideSurface, |
||||
.CL_RunLightStyles = R_SimpleStub, |
||||
|
||||
.R_GetSpriteParms = R_GetSpriteParms, |
||||
.R_GetSpriteTexture = R_GetSpriteTexture, |
||||
|
||||
.Mod_LoadMapSprite = Mod_LoadMapSprite, |
||||
.Mod_ProcessRenderData = Mod_ProcessRenderData, |
||||
.Mod_StudioLoadTextures = Mod_StudioLoadTextures, |
||||
|
||||
.CL_DrawParticles = CL_DrawParticles, |
||||
.CL_DrawTracers = CL_DrawTracers, |
||||
.CL_DrawBeams = CL_DrawBeams, |
||||
.R_BeamCull = R_BeamCull, |
||||
|
||||
.RefGetParm = RefGetParm, |
||||
.GetDetailScaleForTexture = GetDetailScaleForTexture, |
||||
.GetExtraParmsForTexture = GetExtraParmsForTexture, |
||||
.GetFrameTime = GetFrameTime, |
||||
|
||||
.R_SetCurrentEntity = R_SetCurrentEntity, |
||||
.R_SetCurrentModel = R_SetCurrentModel, |
||||
|
||||
.GL_FindTexture = GL_FindTexture, |
||||
.GL_TextureName = GL_TextureName, |
||||
.GL_TextureData = GL_TextureData, |
||||
.GL_LoadTexture = GL_LoadTexture, |
||||
.GL_CreateTexture = GL_CreateTexture, |
||||
.GL_LoadTextureArray = GL_LoadTextureArray, |
||||
.GL_CreateTextureArray = GL_CreateTextureArray, |
||||
.GL_FreeTexture = R_SimpleStubUInt, |
||||
|
||||
.DrawSingleDecal = DrawSingleDecal, |
||||
.R_DecalSetupVerts = R_DecalSetupVerts, |
||||
.R_EntityRemoveDecals = R_EntityRemoveDecals, |
||||
|
||||
.AVI_UploadRawFrame = AVI_UploadRawFrame, |
||||
|
||||
.GL_Bind = GL_Bind, |
||||
.GL_SelectTexture = R_SimpleStubInt, |
||||
.GL_LoadTextureMatrix = GL_LoadTextureMatrix, |
||||
.GL_TexMatrixIdentity = R_SimpleStub, |
||||
.GL_CleanUpTextureUnits = R_SimpleStubInt, |
||||
.GL_TexGen = GL_TexGen, |
||||
.GL_TextureTarget = R_SimpleStubUInt, |
||||
.GL_TexCoordArrayMode = R_SimpleStubUInt, |
||||
.GL_UpdateTexSize = GL_UpdateTexSize, |
||||
.GL_Reserved0 = NULL, |
||||
.GL_Reserved1 = NULL, |
||||
|
||||
.GL_DrawParticles = GL_DrawParticles, |
||||
.LightVec = LightVec, |
||||
.StudioGetTexture = StudioGetTexture, |
||||
|
||||
.GL_RenderFrame = GL_RenderFrame, |
||||
.GL_OrthoBounds = GL_OrthoBounds, |
||||
.R_SpeedsMessage = R_SpeedsMessage, |
||||
.Mod_GetCurrentVis = Mod_GetCurrentVis, |
||||
.R_NewMap = R_SimpleStub, |
||||
.R_ClearScene = R_SimpleStub, |
||||
.R_GetProcAddress = R_GetProcAddress, |
||||
|
||||
.TriRenderMode = R_SimpleStubInt, |
||||
.Begin = R_SimpleStubInt, |
||||
.End = R_SimpleStub, |
||||
.Color4f = Color4f, |
||||
.Color4ub = Color4ub, |
||||
.TexCoord2f = TexCoord2f, |
||||
.Vertex3fv = Vertex3fv, |
||||
.Vertex3f = Vertex3f, |
||||
.Fog = Fog, |
||||
.ScreenToWorld = ScreenToWorld, |
||||
.GetMatrix = GetMatrix, |
||||
.FogParams = FogParams, |
||||
.CullFace = CullFace, |
||||
|
||||
.VGUI_DrawInit = R_SimpleStub, |
||||
.VGUI_DrawShutdown = R_SimpleStub, |
||||
.VGUI_SetupDrawingText = VGUI_SetupDrawing, |
||||
.VGUI_SetupDrawingRect = VGUI_SetupDrawing, |
||||
.VGUI_SetupDrawingImage = VGUI_SetupDrawing, |
||||
.VGUI_BindTexture = R_SimpleStubInt, |
||||
.VGUI_EnableTexture = VGUI_EnableTexture, |
||||
.VGUI_CreateTexture = VGUI_CreateTexture, |
||||
.VGUI_UploadTexture = VGUI_UploadTexture, |
||||
.VGUI_UploadTextureBlock = VGUI_UploadTextureBlock, |
||||
.VGUI_DrawQuad = VGUI_DrawQuad, |
||||
.VGUI_GetTextureSizes = VGUI_GetTextureSizes, |
||||
.VGUI_GenerateTexture = VGUI_GenerateTexture, |
||||
}; |
||||
|
||||
int EXPORT GetRefAPI( int version, ref_interface_t *funcs, ref_api_t *engfuncs, ref_globals_t *globals ); |
||||
int EXPORT GetRefAPI( int version, ref_interface_t *funcs, ref_api_t *engfuncs, ref_globals_t *globals ) |
||||
{ |
||||
if( version != REF_API_VERSION ) |
||||
return 0; |
||||
|
||||
// fill in our callbacks
|
||||
memcpy( funcs, &gReffuncs, sizeof( ref_interface_t )); |
||||
memcpy( &gEngfuncs, engfuncs, sizeof( ref_api_t )); |
||||
gpGlobals = globals; |
||||
|
||||
return REF_API_VERSION; |
||||
} |
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
#! /usr/bin/env python |
||||
# encoding: utf-8 |
||||
# mittorn, 2018 |
||||
|
||||
def options(opt): |
||||
pass |
||||
|
||||
def configure(conf): |
||||
pass |
||||
|
||||
def build(bld): |
||||
bld.shlib( |
||||
source = 'r_context.c', |
||||
target = 'ref_null', |
||||
features = 'c', |
||||
defines = 'REF_DLL', |
||||
use = 'engine_includes sdk_includes werror', |
||||
install_path = bld.env.LIBDIR, |
||||
subsystem = bld.env.MSVC_SUBSYSTEM |
||||
) |
Loading…
Reference in new issue