Backends asides from SoftGPU can declare their lack of fog support

This commit is contained in:
UnknownShadow200 2025-07-02 20:12:00 +10:00
parent 6dd9d26846
commit b1905750be
7 changed files with 23 additions and 19 deletions

View File

@ -481,7 +481,7 @@ static void Game_Load(void) {
if (Gfx.Limitations & GFX_LIMIT_VERTEX_ONLY_FOG)
EnvRenderer_SetMode(EnvRenderer_Minimal | ENV_LEGACY);
if (Gfx.BackendType == CC_GFX_BACKEND_SOFTGPU)
if (Gfx.Limitations & GFX_LIMIT_NO_FOG)
EnvRenderer_SetMode(ENV_MINIMAL);
Server.BeginConnect();

View File

@ -93,6 +93,8 @@ CC_VAR extern struct _GfxData {
#define GFX_LIMIT_VERTEX_ONLY_FOG 0x02
/* Whether the graphics backend only supports a small maximum quad size */
#define GFX_LIMIT_MAX_VERTEX_SIZE 0x04
/* Whether the graphics backend doesn't support fog at all */
#define GFX_LIMIT_NO_FOG 0x08
extern const cc_string Gfx_LowPerfMessage;

View File

@ -32,10 +32,8 @@ static GL_SetupVBRangeFunc gfx_setupVBRangeFunc;
void Gfx_Create(void) {
GLContext_Create();
customMipmapsLevels = true;
Gfx.BackendType = CC_GFX_BACKEND_GL1;
GL_InitCommon();
MakeIndices(gl_indices, GFX_MAX_INDICES, NULL);
Gfx_RestoreState();
GLContext_SetVSync(gfx_vsync);
@ -137,27 +135,29 @@ void Gfx_SetDynamicVbData(GfxResourceID vb, void* vertices, int vCount) {
#define VB_PTR ((cc_uint8*)dynamicListData)
static void GL_SetupVbColoured(void) {
_glVertexPointer(3, GL_FLOAT, SIZEOF_VERTEX_COLOURED, (GLpointer)(VB_PTR + 0));
_glColorPointer(4, GL_UNSIGNED_BYTE, SIZEOF_VERTEX_COLOURED, (GLpointer)(VB_PTR + 12));
GLpointer ptr = (GLpointer)VB_PTR;
_glVertexPointer(3, GL_FLOAT, SIZEOF_VERTEX_COLOURED, ptr + 0);
_glColorPointer(4, GL_UNSIGNED_BYTE, SIZEOF_VERTEX_COLOURED, ptr + 12);
}
static void GL_SetupVbTextured(void) {
_glVertexPointer(3, GL_FLOAT, SIZEOF_VERTEX_TEXTURED, (GLpointer)(VB_PTR + 0));
_glColorPointer(4, GL_UNSIGNED_BYTE, SIZEOF_VERTEX_TEXTURED, (GLpointer)(VB_PTR + 12));
_glTexCoordPointer(2, GL_FLOAT, SIZEOF_VERTEX_TEXTURED, (GLpointer)(VB_PTR + 16));
GLpointer ptr = (GLpointer)VB_PTR;
_glVertexPointer(3, GL_FLOAT, SIZEOF_VERTEX_TEXTURED, ptr + 0);
_glColorPointer(4, GL_UNSIGNED_BYTE, SIZEOF_VERTEX_TEXTURED, ptr + 12);
_glTexCoordPointer(2, GL_FLOAT, SIZEOF_VERTEX_TEXTURED, ptr + 16);
}
static void GL_SetupVbColoured_Range(int startVertex) {
cc_uint32 offset = startVertex * SIZEOF_VERTEX_COLOURED;
_glVertexPointer(3, GL_FLOAT, SIZEOF_VERTEX_COLOURED, (GLpointer)(VB_PTR + offset + 0));
_glColorPointer(4, GL_UNSIGNED_BYTE, SIZEOF_VERTEX_COLOURED, (GLpointer)(VB_PTR + offset + 12));
GLpointer ptr = (GLpointer)VB_PTR + startVertex * SIZEOF_VERTEX_COLOURED;
_glVertexPointer(3, GL_FLOAT, SIZEOF_VERTEX_COLOURED, ptr + 0);
_glColorPointer(4, GL_UNSIGNED_BYTE, SIZEOF_VERTEX_COLOURED, ptr + 12);
}
static void GL_SetupVbTextured_Range(int startVertex) {
cc_uint32 offset = startVertex * SIZEOF_VERTEX_TEXTURED;
_glVertexPointer(3, GL_FLOAT, SIZEOF_VERTEX_TEXTURED, (GLpointer)(VB_PTR + offset + 0));
_glColorPointer(4, GL_UNSIGNED_BYTE, SIZEOF_VERTEX_TEXTURED, (GLpointer)(VB_PTR + offset + 12));
_glTexCoordPointer(2, GL_FLOAT, SIZEOF_VERTEX_TEXTURED, (GLpointer)(VB_PTR + offset + 16));
GLpointer ptr = (GLpointer)VB_PTR + startVertex * SIZEOF_VERTEX_TEXTURED;
_glVertexPointer(3, GL_FLOAT, SIZEOF_VERTEX_TEXTURED, ptr + 0);
_glColorPointer(4, GL_UNSIGNED_BYTE, SIZEOF_VERTEX_TEXTURED, ptr + 12);
_glTexCoordPointer(2, GL_FLOAT, SIZEOF_VERTEX_TEXTURED, ptr + 16);
}
void Gfx_SetVertexFormat(VertexFormat fmt) {

View File

@ -130,7 +130,8 @@ void Gfx_Create(void) {
Gfx.MaxTexHeight = 256;
//Gfx.MaxTexSize = 256 * 256;
Gfx.Created = true;
Gfx.Limitations = GFX_LIMIT_VERTEX_ONLY_FOG;
//Gfx.Limitations = GFX_LIMIT_VERTEX_ONLY_FOG;
Gfx.Limitations = GFX_LIMIT_NO_FOG;
ResetGPU();
Gfx_ClearColor(PackedCol_Make(0, 120, 80, 255));

View File

@ -117,7 +117,7 @@ void Gfx_Create(void) {
Gfx.MaxTexWidth = 128;
Gfx.MaxTexHeight = 16; // 128
Gfx.Created = true;
Gfx.Limitations = GFX_LIMIT_NO_UV_SUPPORT | GFX_LIMIT_MAX_VERTEX_SIZE;
Gfx.Limitations = GFX_LIMIT_NO_UV_SUPPORT | GFX_LIMIT_MAX_VERTEX_SIZE | GFX_LIMIT_NO_FOG;
SetupHeaderCommands();
}

View File

@ -49,6 +49,7 @@ void Gfx_Create(void) {
Gfx.Created = true;
Gfx.BackendType = CC_GFX_BACKEND_SOFTGPU;
Gfx.Limitations = GFX_LIMIT_NO_FOG;
Gfx_RestoreState();
}

View File

@ -173,7 +173,7 @@ void Gfx_Create(void) {
Gfx.MaxTexWidth = 256;
Gfx.MaxTexHeight = 256;
Gfx.Created = true;
Gfx.Limitations = GFX_LIMIT_MAX_VERTEX_SIZE;
Gfx.Limitations = GFX_LIMIT_MAX_VERTEX_SIZE | GFX_LIMIT_NO_FOG;
Gfx_RestoreState();
SetupContexts(Window_Main.Width, Window_Main.Height);