mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-12-26 20:31:30 +00:00
fix conflict
This commit is contained in:
parent
eb8cb12b8f
commit
f22e767380
8 changed files with 92 additions and 21 deletions
|
@ -581,7 +581,7 @@ static void HWR_RenderPlane(sector_t *sector, extrasubsector_t *xsub, boolean is
|
||||||
if (nrPlaneVerts < 3) //not even a triangle ?
|
if (nrPlaneVerts < 3) //not even a triangle ?
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ((UINT32)nrPlaneVerts > UINT16_MAX) // FIXME: exceeds plVerts size
|
if (nrPlaneVerts > INT16_MAX) // FIXME: exceeds plVerts size
|
||||||
{
|
{
|
||||||
CONS_Debug(DBG_RENDER, "polygon size of %d exceeds max value of %d vertices\n", nrPlaneVerts, UINT16_MAX);
|
CONS_Debug(DBG_RENDER, "polygon size of %d exceeds max value of %d vertices\n", nrPlaneVerts, UINT16_MAX);
|
||||||
return;
|
return;
|
||||||
|
@ -3228,7 +3228,7 @@ static void HWR_RenderPolyObjectPlane(polyobj_t *polysector, boolean isceiling,
|
||||||
if (nrPlaneVerts < 3) //not even a triangle ?
|
if (nrPlaneVerts < 3) //not even a triangle ?
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (nrPlaneVerts > UINT16_MAX) // FIXME: exceeds plVerts size
|
if (nrPlaneVerts > INT16_MAX) // FIXME: exceeds plVerts size
|
||||||
{
|
{
|
||||||
CONS_Debug(DBG_RENDER, "polygon size of %s exceeds max value of %d vertices\n", sizeu1(nrPlaneVerts), UINT16_MAX);
|
CONS_Debug(DBG_RENDER, "polygon size of %s exceeds max value of %d vertices\n", sizeu1(nrPlaneVerts), UINT16_MAX);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -19,6 +19,10 @@
|
||||||
#include "v_video.h"
|
#include "v_video.h"
|
||||||
#include "i_video.h"
|
#include "i_video.h"
|
||||||
|
|
||||||
|
#ifdef HWRENDER
|
||||||
|
#include "hardware/hw_main.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
// GIFs are always little-endian
|
// GIFs are always little-endian
|
||||||
#include "byteptr.h"
|
#include "byteptr.h"
|
||||||
|
|
||||||
|
@ -452,6 +456,32 @@ const UINT8 gifframe_gchead[4] = {0x21,0xF9,0x04,0x04}; // GCE, bytes, packed by
|
||||||
static UINT8 *gifframe_data = NULL;
|
static UINT8 *gifframe_data = NULL;
|
||||||
static size_t gifframe_size = 8192;
|
static size_t gifframe_size = 8192;
|
||||||
|
|
||||||
|
#ifdef HWRENDER
|
||||||
|
static void hwrconvert(void)
|
||||||
|
{
|
||||||
|
UINT8 *linear = HWR_GetScreenshot();
|
||||||
|
UINT8 *dest = screens[2];
|
||||||
|
UINT8 r, g, b;
|
||||||
|
INT32 x, y;
|
||||||
|
size_t i = 0;
|
||||||
|
|
||||||
|
InitColorLUT();
|
||||||
|
|
||||||
|
for (y = 0; y < vid.height; y++)
|
||||||
|
{
|
||||||
|
for (x = 0; x < vid.width; x++, i += 3)
|
||||||
|
{
|
||||||
|
r = (UINT8)linear[i];
|
||||||
|
g = (UINT8)linear[i + 1];
|
||||||
|
b = (UINT8)linear[i + 2];
|
||||||
|
dest[(y * vid.width) + x] = colorlookup[r >> SHIFTCOLORBITS][g >> SHIFTCOLORBITS][b >> SHIFTCOLORBITS];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
free(linear);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// GIF_framewrite
|
// GIF_framewrite
|
||||||
// writes a frame into the file.
|
// writes a frame into the file.
|
||||||
|
@ -477,7 +507,12 @@ static void GIF_framewrite(void)
|
||||||
GIF_optimizeregion(cur_screen, movie_screen, &blitx, &blity, &blitw, &blith);
|
GIF_optimizeregion(cur_screen, movie_screen, &blitx, &blity, &blitw, &blith);
|
||||||
|
|
||||||
// blit to temp screen
|
// blit to temp screen
|
||||||
|
if (rendermode == render_soft)
|
||||||
I_ReadScreen(movie_screen);
|
I_ReadScreen(movie_screen);
|
||||||
|
#ifdef HWRENDER
|
||||||
|
else if (rendermode == render_opengl)
|
||||||
|
hwrconvert();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -486,7 +521,18 @@ static void GIF_framewrite(void)
|
||||||
blith = vid.height;
|
blith = vid.height;
|
||||||
|
|
||||||
if (gif_frames == 0)
|
if (gif_frames == 0)
|
||||||
|
{
|
||||||
|
if (rendermode == render_soft)
|
||||||
I_ReadScreen(movie_screen);
|
I_ReadScreen(movie_screen);
|
||||||
|
#ifdef HWRENDER
|
||||||
|
else if (rendermode == render_opengl)
|
||||||
|
{
|
||||||
|
hwrconvert();
|
||||||
|
VID_BlitLinearScreen(screens[2], screens[0], vid.width*vid.bpp, vid.height, vid.width*vid.bpp, vid.rowbytes);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
movie_screen = screens[0];
|
movie_screen = screens[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -575,7 +621,7 @@ static void GIF_framewrite(void)
|
||||||
//
|
//
|
||||||
INT32 GIF_open(const char *filename)
|
INT32 GIF_open(const char *filename)
|
||||||
{
|
{
|
||||||
#ifdef HWRENDER
|
#if 0
|
||||||
if (rendermode != render_soft)
|
if (rendermode != render_soft)
|
||||||
{
|
{
|
||||||
CONS_Alert(CONS_WARNING, M_GetText("GIFs cannot be taken in non-software modes!\n"));
|
CONS_Alert(CONS_WARNING, M_GetText("GIFs cannot be taken in non-software modes!\n"));
|
||||||
|
|
|
@ -1100,12 +1100,8 @@ void M_StartMovie(void)
|
||||||
switch (cv_moviemode.value)
|
switch (cv_moviemode.value)
|
||||||
{
|
{
|
||||||
case MM_GIF:
|
case MM_GIF:
|
||||||
if (rendermode == render_soft)
|
|
||||||
{
|
|
||||||
moviemode = M_StartMovieGIF(pathname);
|
moviemode = M_StartMovieGIF(pathname);
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
/* FALLTHRU */
|
|
||||||
case MM_APNG:
|
case MM_APNG:
|
||||||
moviemode = M_StartMovieAPNG(pathname);
|
moviemode = M_StartMovieAPNG(pathname);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -1177,7 +1177,6 @@ void R_ClearColormaps(void)
|
||||||
//
|
//
|
||||||
static double deltas[256][3], map[256][3];
|
static double deltas[256][3], map[256][3];
|
||||||
|
|
||||||
static UINT8 NearestColor(UINT8 r, UINT8 g, UINT8 b);
|
|
||||||
static int RoundUp(double number);
|
static int RoundUp(double number);
|
||||||
|
|
||||||
#ifdef HASINVERT
|
#ifdef HASINVERT
|
||||||
|
@ -1403,7 +1402,7 @@ INT32 R_CreateColormap(char *p1, char *p2, char *p3)
|
||||||
|
|
||||||
// Thanks to quake2 source!
|
// Thanks to quake2 source!
|
||||||
// utils3/qdata/images.c
|
// utils3/qdata/images.c
|
||||||
static UINT8 NearestColor(UINT8 r, UINT8 g, UINT8 b)
|
UINT8 NearestColor(UINT8 r, UINT8 g, UINT8 b)
|
||||||
{
|
{
|
||||||
int dr, dg, db;
|
int dr, dg, db;
|
||||||
int distortion, bestdistortion = 256 * 256 * 4, bestcolor = 0, i;
|
int distortion, bestdistortion = 256 * 256 * 4, bestcolor = 0, i;
|
||||||
|
|
|
@ -98,6 +98,8 @@ void R_MakeInvertmap(void);
|
||||||
#endif
|
#endif
|
||||||
const char *R_ColormapNameForNum(INT32 num);
|
const char *R_ColormapNameForNum(INT32 num);
|
||||||
|
|
||||||
|
UINT8 NearestColor(UINT8 r, UINT8 g, UINT8 b);
|
||||||
|
|
||||||
extern INT32 numtextures;
|
extern INT32 numtextures;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1641,6 +1641,7 @@ INT32 VID_SetMode(INT32 modeNum)
|
||||||
//Impl_SetWindowName("SRB2Kart "VERSIONSTRING);
|
//Impl_SetWindowName("SRB2Kart "VERSIONSTRING);
|
||||||
|
|
||||||
SDLSetMode(vid.width, vid.height, USE_FULLSCREEN);
|
SDLSetMode(vid.width, vid.height, USE_FULLSCREEN);
|
||||||
|
Impl_VideoSetupBuffer();
|
||||||
|
|
||||||
if (rendermode == render_soft)
|
if (rendermode == render_soft)
|
||||||
{
|
{
|
||||||
|
@ -1649,8 +1650,6 @@ INT32 VID_SetMode(INT32 modeNum)
|
||||||
SDL_FreeSurface(bufSurface);
|
SDL_FreeSurface(bufSurface);
|
||||||
bufSurface = NULL;
|
bufSurface = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
Impl_VideoSetupBuffer();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return SDL_TRUE;
|
return SDL_TRUE;
|
||||||
|
@ -1773,7 +1772,7 @@ static void Impl_VideoSetupSDLBuffer(void)
|
||||||
static void Impl_VideoSetupBuffer(void)
|
static void Impl_VideoSetupBuffer(void)
|
||||||
{
|
{
|
||||||
// Set up game's software render buffer
|
// Set up game's software render buffer
|
||||||
if (rendermode == render_soft)
|
//if (rendermode == render_soft)
|
||||||
{
|
{
|
||||||
vid.rowbytes = vid.width * vid.bpp;
|
vid.rowbytes = vid.width * vid.bpp;
|
||||||
vid.direct = NULL;
|
vid.direct = NULL;
|
||||||
|
|
|
@ -2593,6 +2593,27 @@ Unoptimized version
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Taken from my videos-in-SRB2 project
|
||||||
|
// Generates a color look-up table
|
||||||
|
// which has up to 64 colors at each channel
|
||||||
|
// (see the defines in v_video.h)
|
||||||
|
|
||||||
|
UINT8 colorlookup[CLUTSIZE][CLUTSIZE][CLUTSIZE];
|
||||||
|
|
||||||
|
void InitColorLUT(void)
|
||||||
|
{
|
||||||
|
UINT8 r, g, b;
|
||||||
|
static boolean clutinit = false;
|
||||||
|
if (!clutinit)
|
||||||
|
{
|
||||||
|
for (r = 0; r < CLUTSIZE; r++)
|
||||||
|
for (g = 0; g < CLUTSIZE; g++)
|
||||||
|
for (b = 0; b < CLUTSIZE; b++)
|
||||||
|
colorlookup[r][g][b] = NearestColor(r << SHIFTCOLORBITS, g << SHIFTCOLORBITS, b << SHIFTCOLORBITS);
|
||||||
|
clutinit = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// V_Init
|
// V_Init
|
||||||
// old software stuff, buffers are allocated at video mode setup
|
// old software stuff, buffers are allocated at video mode setup
|
||||||
// here we set the screens[x] pointers accordingly
|
// here we set the screens[x] pointers accordingly
|
||||||
|
@ -2604,13 +2625,9 @@ void V_Init(void)
|
||||||
const INT32 screensize = vid.rowbytes * vid.height;
|
const INT32 screensize = vid.rowbytes * vid.height;
|
||||||
|
|
||||||
LoadMapPalette();
|
LoadMapPalette();
|
||||||
// hardware modes do not use screens[] pointers
|
|
||||||
for (i = 0; i < NUMSCREENS; i++)
|
for (i = 0; i < NUMSCREENS; i++)
|
||||||
screens[i] = NULL;
|
screens[i] = NULL;
|
||||||
if (rendermode != render_soft)
|
|
||||||
{
|
|
||||||
return; // be sure to cause a NULL read/write error so we detect it, in case of..
|
|
||||||
}
|
|
||||||
|
|
||||||
// start address of NUMSCREENS * width*height vidbuffers
|
// start address of NUMSCREENS * width*height vidbuffers
|
||||||
if (base)
|
if (base)
|
||||||
|
|
|
@ -33,6 +33,18 @@ extern consvar_t cv_ticrate, cv_usegamma, cv_allcaps, cv_constextsize;
|
||||||
// Allocates buffer screens, call before R_Init.
|
// Allocates buffer screens, call before R_Init.
|
||||||
void V_Init(void);
|
void V_Init(void);
|
||||||
|
|
||||||
|
// Taken from my videos-in-SRB2 project
|
||||||
|
// Generates a color look-up table
|
||||||
|
// which has up to 64 colors at each channel
|
||||||
|
|
||||||
|
#define COLORBITS 6
|
||||||
|
#define SHIFTCOLORBITS (8-COLORBITS)
|
||||||
|
#define CLUTSIZE (1<<COLORBITS)
|
||||||
|
|
||||||
|
extern UINT8 colorlookup[CLUTSIZE][CLUTSIZE][CLUTSIZE];
|
||||||
|
|
||||||
|
void InitColorLUT(void);
|
||||||
|
|
||||||
// Set the current RGB palette lookup to use for palettized graphics
|
// Set the current RGB palette lookup to use for palettized graphics
|
||||||
void V_SetPalette(INT32 palettenum);
|
void V_SetPalette(INT32 palettenum);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue