mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-26 06:01:14 +00:00
- GZDoom project files and GZDoom related changes to main ZDoom code
This commit is contained in:
parent
a73d1b792c
commit
b2bb24ea0a
7 changed files with 7355 additions and 12 deletions
7159
gzdoom.vcproj
Normal file
7159
gzdoom.vcproj
Normal file
File diff suppressed because it is too large
Load diff
|
@ -8,6 +8,7 @@ include( CheckCXXSourceCompiles )
|
|||
include( CheckFunctionExists )
|
||||
include( CheckCXXCompilerFlag )
|
||||
include( FindPkgConfig )
|
||||
include( FindOpenGL )
|
||||
|
||||
option( NO_ASM "Disable assembly code" )
|
||||
if( CMAKE_COMPILER_IS_GNUCXX )
|
||||
|
@ -201,6 +202,22 @@ else( WIN32 )
|
|||
endif( FPU_CONTROL_DIR )
|
||||
endif( WIN32 )
|
||||
|
||||
if( X64 )
|
||||
set( NO_ASM ON )
|
||||
endif( X64 )
|
||||
|
||||
# Check if we have OpenGL
|
||||
|
||||
if( NOT OPENGL_FOUND )
|
||||
message( FATAL_ERROR "OpenGL is required for building." )
|
||||
endif( NOT OPENGL_FOUND )
|
||||
if( NOT OPENGL_GLU_FOUND )
|
||||
message( FATAL_ERROR "OpenGL GLU is required for building." )
|
||||
endif( NOT OPENGL_GLU_FOUND )
|
||||
|
||||
set( ZDOOM_LIBS ${ZDOOM_LIBS} ${OPENGL_LIBRARIES} )
|
||||
include_directories( ${OPENGL_INCLUDE_DIR} )
|
||||
|
||||
# Decide on the name of the FMOD library we want to use.
|
||||
|
||||
if( NOT FMOD_LIB_NAME AND MSVC )
|
||||
|
@ -528,6 +545,7 @@ if( WIN32 )
|
|||
win32/i_movie.cpp
|
||||
win32/i_system.cpp
|
||||
win32/st_start.cpp
|
||||
win32/win32gliface.cpp
|
||||
win32/win32video.cpp )
|
||||
if( CMAKE_COMPILER_IS_GNUCXX )
|
||||
# CMake is not set up to compile and link rc files with GCC. :(
|
||||
|
@ -549,6 +567,7 @@ else( WIN32 )
|
|||
sdl/i_main.cpp
|
||||
sdl/i_movie.cpp
|
||||
sdl/i_system.cpp
|
||||
sdl/sdlglvideo.cpp
|
||||
sdl/sdlvideo.cpp
|
||||
sdl/st_start.cpp )
|
||||
if( APPLE )
|
||||
|
@ -841,6 +860,57 @@ add_executable( zdoom WIN32
|
|||
menu/playermenu.cpp
|
||||
menu/readthis.cpp
|
||||
menu/videomenu.cpp
|
||||
gl/data/gl_sections.cpp
|
||||
gl/data/gl_data.cpp
|
||||
gl/data/gl_portaldata.cpp
|
||||
gl/data/gl_setup.cpp
|
||||
gl/data/gl_vertexbuffer.cpp
|
||||
gl/dynlights/a_dynlight.cpp
|
||||
gl/utility/gl_clock.cpp
|
||||
gl/utility/gl_cycler.cpp
|
||||
gl/utility/gl_geometric.cpp
|
||||
gl/renderer/gl_renderer.cpp
|
||||
gl/renderer/gl_renderstate.cpp
|
||||
gl/renderer/gl_lightdata.cpp
|
||||
gl/textures/gl_hwtexture.cpp
|
||||
gl/textures/gl_texture.cpp
|
||||
gl/textures/gl_material.cpp
|
||||
gl/textures/gl_hirestex.cpp
|
||||
gl/textures/gl_bitmap.cpp
|
||||
gl/textures/gl_translate.cpp
|
||||
gl/textures/gl_hqresize.cpp
|
||||
gl/textures/gl_skyboxtexture.cpp
|
||||
gl/scene/gl_bsp.cpp
|
||||
gl/scene/gl_fakeflat.cpp
|
||||
gl/scene/gl_clipper.cpp
|
||||
gl/scene/gl_decal.cpp
|
||||
gl/scene/gl_drawinfo.cpp
|
||||
gl/scene/gl_flats.cpp
|
||||
gl/scene/gl_walls.cpp
|
||||
gl/scene/gl_sprite.cpp
|
||||
gl/scene/gl_skydome.cpp
|
||||
gl/scene/gl_renderhacks.cpp
|
||||
gl/scene/gl_weapon.cpp
|
||||
gl/scene/gl_scene.cpp
|
||||
gl/scene/gl_sky.cpp
|
||||
gl/scene/gl_portal.cpp
|
||||
gl/scene/gl_walls_draw.cpp
|
||||
gl/scene/gl_vertex.cpp
|
||||
gl/scene/gl_spritelight.cpp
|
||||
gl/dynlights/gl_dynlight.cpp
|
||||
gl/dynlights/gl_glow.cpp
|
||||
gl/dynlights/gl_dynlight1.cpp
|
||||
gl/dynlights/gl_lightbuffer.cpp
|
||||
gl/shaders/gl_shader.cpp
|
||||
gl/shaders/gl_texshader.cpp
|
||||
gl/system/gl_interface.cpp
|
||||
gl/system/gl_framebuffer.cpp
|
||||
gl/system/gl_menu.cpp
|
||||
gl/system/gl_wipe.cpp
|
||||
gl/models/gl_models_md3.cpp
|
||||
gl/models/gl_models_md2.cpp
|
||||
gl/models/gl_models.cpp
|
||||
gl/models/gl_voxels.cpp
|
||||
oplsynth/fmopl.cpp
|
||||
oplsynth/mlopl.cpp
|
||||
oplsynth/mlopl_io.cpp
|
||||
|
|
|
@ -1013,6 +1013,14 @@ public:
|
|||
}
|
||||
|
||||
bool HasSpecialDeathStates () const;
|
||||
|
||||
// begin of GZDoom specific additions
|
||||
TArray<TObjPtr<AActor> > dynamiclights;
|
||||
void * lightassociations;
|
||||
bool hasmodel;
|
||||
// end of GZDoom specific additions
|
||||
|
||||
size_t PropagateMark();
|
||||
};
|
||||
|
||||
class FActorIterator
|
||||
|
|
|
@ -44,6 +44,7 @@
|
|||
#include "r_data/colormaps.h"
|
||||
|
||||
#ifdef _3DFLOORS
|
||||
EXTERN_CVAR(Int, vid_renderer)
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
|
@ -200,7 +201,7 @@ static void P_Add3DFloor(sector_t* sec, sector_t* sec2, line_t* master, int flag
|
|||
|
||||
// kg3D - software renderer only hack
|
||||
// this is really required because of ceilingclip and floorclip
|
||||
if(flags & FF_BOTHPLANES)
|
||||
if((vid_renderer == 0) && (flags & FF_BOTHPLANES))
|
||||
{
|
||||
P_Add3DFloor(sec, sec2, master, FF_EXISTS | FF_THISINSIDE | FF_RENDERPLANES | FF_NOSHADE | FF_SEETHROUGH | FF_SHOOTTHROUGH |
|
||||
(flags & (FF_INVERTSECTOR | FF_TRANSLUCENT | FF_ADDITIVETRANS)), alpha);
|
||||
|
|
|
@ -389,6 +389,9 @@ void P_SerializeWorld (FArchive &arc)
|
|||
<< desaturate;
|
||||
sec->ColorMap = GetSpecialLights (color, fade, desaturate);
|
||||
}
|
||||
// begin of GZDoom additions
|
||||
arc << sec->reflect[sector_t::ceiling] << sec->reflect[sector_t::floor];
|
||||
// end of GZDoom additions
|
||||
}
|
||||
|
||||
// do lines
|
||||
|
|
100
src/r_defs.h
100
src/r_defs.h
|
@ -35,6 +35,9 @@
|
|||
// to handle sound origins in sectors.
|
||||
// SECTORS do store MObjs anyway.
|
||||
#include "actor.h"
|
||||
struct FLightNode;
|
||||
struct FGLSection;
|
||||
struct seg_t;
|
||||
|
||||
#include "dthinker.h"
|
||||
|
||||
|
@ -81,15 +84,43 @@ struct vertex_t
|
|||
{
|
||||
fixed_t x, y;
|
||||
|
||||
float fx, fy; // Floating point coordinates of this vertex (excluding polyoblect translation!)
|
||||
angle_t viewangle; // precalculated angle for clipping
|
||||
int angletime; // recalculation time for view angle
|
||||
bool dirty; // something has changed and needs to be recalculated
|
||||
int numheights;
|
||||
int numsectors;
|
||||
sector_t ** sectors;
|
||||
float * heightlist;
|
||||
|
||||
vertex_t()
|
||||
{
|
||||
x = y = 0;
|
||||
fx = fy = 0;
|
||||
angletime = 0;
|
||||
viewangle = 0;
|
||||
dirty = true;
|
||||
numheights = numsectors = 0;
|
||||
sectors = NULL;
|
||||
heightlist = NULL;
|
||||
}
|
||||
|
||||
bool operator== (const vertex_t &other)
|
||||
{
|
||||
return x == other.x && y == other.y;
|
||||
}
|
||||
|
||||
bool operator!= (const vertex_t &other)
|
||||
{
|
||||
return x != other.x || y != other.y;
|
||||
}
|
||||
|
||||
void clear()
|
||||
{
|
||||
x = y = 0;
|
||||
}
|
||||
|
||||
angle_t GetClipAngle();
|
||||
};
|
||||
|
||||
// Forward of LineDefs, for Sectors.
|
||||
|
@ -319,6 +350,12 @@ FArchive &operator<< (FArchive &arc, secplane_t &plane);
|
|||
|
||||
|
||||
#include "p_3dfloors.h"
|
||||
struct subsector_t;
|
||||
struct sector_t;
|
||||
struct side_t;
|
||||
extern bool gl_plane_reflection_i;
|
||||
struct FPortal;
|
||||
|
||||
// Ceiling/floor flags
|
||||
enum
|
||||
{
|
||||
|
@ -723,6 +760,41 @@ struct sector_t
|
|||
int sectornum; // for comparing sector copies
|
||||
|
||||
extsector_t * e; // This stores data that requires construction/destruction. Such data must not be copied by R_FakeFlat.
|
||||
|
||||
// GL only stuff starts here
|
||||
float reflect[2];
|
||||
|
||||
int dirtyframe[3]; // last frame this sector was marked dirty
|
||||
bool dirty; // marked for recalculation
|
||||
bool transdoor; // For transparent door hacks
|
||||
fixed_t transdoorheight; // for transparent door hacks
|
||||
int subsectorcount; // list of subsectors
|
||||
subsector_t ** subsectors;
|
||||
FPortal * portals[2]; // floor and ceiling portals
|
||||
|
||||
enum
|
||||
{
|
||||
vbo_fakefloor = floor+2,
|
||||
vbo_fakeceiling = ceiling+2,
|
||||
};
|
||||
|
||||
int vboindex[4]; // VBO indices of the 4 planes this sector uses during rendering
|
||||
fixed_t vboheight[2]; // Last calculated height for the 2 planes of this actual sector
|
||||
int vbocount[2]; // Total count of vertices belonging to this sector's planes
|
||||
#ifdef IBO_TEST
|
||||
int iboindex[4]; // VBO indices of the 4 planes this sector uses during rendering
|
||||
int ibocount;
|
||||
#endif
|
||||
|
||||
float GetReflect(int pos) { return gl_plane_reflection_i? reflect[pos] : 0; }
|
||||
bool VBOHeightcheck(int pos) const { return vboheight[pos] == GetPlaneTexZ(pos); }
|
||||
|
||||
enum
|
||||
{
|
||||
INVALIDATE_PLANES = 1,
|
||||
INVALIDATE_OTHER = 2
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
FArchive &operator<< (FArchive &arc, sector_t::splane &p);
|
||||
|
@ -877,6 +949,13 @@ struct side_t
|
|||
|
||||
vertex_t *V1() const;
|
||||
vertex_t *V2() const;
|
||||
|
||||
//For GL
|
||||
FLightNode * lighthead[2]; // all blended lights that may affect this wall
|
||||
|
||||
seg_t **segs; // all segs belonging to this sidedef in ascending order. Used for precise rendering
|
||||
int numsegs;
|
||||
|
||||
};
|
||||
|
||||
FArchive &operator<< (FArchive &arc, side_t::part &p);
|
||||
|
@ -957,6 +1036,11 @@ struct seg_t
|
|||
// Sector references. Could be retrieved from linedef, too.
|
||||
sector_t* frontsector;
|
||||
sector_t* backsector; // NULL for one-sided lines
|
||||
|
||||
seg_t* PartnerSeg;
|
||||
subsector_t* Subsector;
|
||||
|
||||
float sidefrac; // relative position of seg's ending vertex on owning sidedef
|
||||
};
|
||||
|
||||
struct glsegextra_t
|
||||
|
@ -965,6 +1049,9 @@ struct glsegextra_t
|
|||
subsector_t *Subsector;
|
||||
};
|
||||
|
||||
extern seg_t *segs;
|
||||
|
||||
|
||||
//
|
||||
// A SubSector.
|
||||
// References a Sector.
|
||||
|
@ -979,6 +1066,12 @@ enum
|
|||
SSECF_POLYORG = 4,
|
||||
};
|
||||
|
||||
struct FPortalCoverage
|
||||
{
|
||||
DWORD * subsectors;
|
||||
int sscount;
|
||||
};
|
||||
|
||||
struct subsector_t
|
||||
{
|
||||
sector_t *sector;
|
||||
|
@ -990,6 +1083,13 @@ struct subsector_t
|
|||
int flags;
|
||||
|
||||
void BuildPolyBSP();
|
||||
// subsector related GL data
|
||||
FLightNode * lighthead[2]; // Light nodes (blended and additive)
|
||||
int validcount;
|
||||
short mapsection;
|
||||
char hacked; // 1: is part of a render hack
|
||||
// 2: has one-sided walls
|
||||
FPortalCoverage portalcoverage[2];
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -41,12 +41,12 @@ const char *GetVersionString();
|
|||
|
||||
/** Lots of different version numbers **/
|
||||
|
||||
#define VERSIONSTR "2.8pre"
|
||||
#define VERSIONSTR "1.9pre"
|
||||
|
||||
// The version as seen in the Windows resource
|
||||
#define RC_FILEVERSION 2,7,9999,0
|
||||
#define RC_PRODUCTVERSION 2,7,9999,0
|
||||
#define RC_PRODUCTVERSION2 "2.8pre"
|
||||
#define RC_FILEVERSION 1,8,9999,0
|
||||
#define RC_PRODUCTVERSION 1,8,9999,0
|
||||
#define RC_PRODUCTVERSION2 "1.9pre"
|
||||
|
||||
// Version identifier for network games.
|
||||
// Bump it every time you do a release unless you're certain you
|
||||
|
@ -82,21 +82,23 @@ const char *GetVersionString();
|
|||
#define SAVEVERSTRINGIFY(x) #x
|
||||
#define SAVESIG "ZDOOMSAVE" SAVEVERSTRINGIFY(SAVEVER)
|
||||
|
||||
#define DYNLIGHT
|
||||
|
||||
// This is so that derivates can use the same savegame versions without worrying about engine compatibility
|
||||
#define GAMESIG "ZDOOM"
|
||||
#define BASEWAD "zdoom.pk3"
|
||||
#define GAMESIG "GZDOOM"
|
||||
#define BASEWAD "gzdoom.pk3"
|
||||
|
||||
// More stuff that needs to be different for derivatives.
|
||||
#define GAMENAME "ZDoom"
|
||||
#define FORUM_URL "http://forum.zdoom.org"
|
||||
#define BUGS_FORUM_URL "http://forum.zdoom.org/index.php?c=3"
|
||||
#define GAMENAME "GZDoom"
|
||||
#define FORUM_URL "http://forum.drdteam.org"
|
||||
#define BUGS_FORUM_URL "http://forum.drdteam.org/viewforum.php?f=24"
|
||||
|
||||
#ifdef unix
|
||||
#define GAME_DIR ".config/zdoom"
|
||||
#define GAME_DIR ".config/gzdoom"
|
||||
#elif defined(__APPLE__)
|
||||
#define GAME_DIR GAMENAME
|
||||
#else
|
||||
#define CDROM_DIR "C:\\ZDOOMDAT"
|
||||
#define CDROM_DIR "C:\\GZDOOMDAT"
|
||||
#endif
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue