Merge branch 'master' of https://github.com/coelckers/gzdoom
# Conflicts: # src/CMakeLists.txt # src/gl/renderer/gl_renderer.h # src/gl/scene/gl_portal.cpp # src/gl/scene/gl_scene.cpp
This commit is contained in:
commit
0dcc6ec6d3
383 changed files with 373 additions and 2101 deletions
|
|
@ -28,7 +28,6 @@
|
|||
#include "doomtype.h"
|
||||
#include "p_local.h"
|
||||
#include "r_state.h"
|
||||
#include "m_argv.h"
|
||||
#include "c_cvars.h"
|
||||
#include "g_levellocals.h"
|
||||
#include "flatvertices.h"
|
||||
|
|
|
|||
121
src/hwrenderer/scene/hw_drawinfo.h
Normal file
121
src/hwrenderer/scene/hw_drawinfo.h
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
#pragma once
|
||||
|
||||
#include "r_defs.h"
|
||||
|
||||
struct FSectorPortalGroup;
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
// these are used to link faked planes due to missing textures to a sector
|
||||
//
|
||||
//==========================================================================
|
||||
struct gl_subsectorrendernode
|
||||
{
|
||||
gl_subsectorrendernode * next;
|
||||
subsector_t * sub;
|
||||
};
|
||||
|
||||
enum area_t : int
|
||||
{
|
||||
area_normal,
|
||||
area_below,
|
||||
area_above,
|
||||
area_default
|
||||
};
|
||||
|
||||
enum SectorRenderFlags
|
||||
{
|
||||
// This is used to merge several subsectors into a single draw item
|
||||
SSRF_RENDERFLOOR = 1,
|
||||
SSRF_RENDERCEILING = 2,
|
||||
SSRF_RENDER3DPLANES = 4,
|
||||
SSRF_RENDERALL = 7,
|
||||
SSRF_PROCESSED = 8,
|
||||
SSRF_SEEN = 16,
|
||||
};
|
||||
|
||||
|
||||
struct HWDrawInfo
|
||||
{
|
||||
virtual ~HWDrawInfo() {}
|
||||
|
||||
struct wallseg
|
||||
{
|
||||
float x1, y1, z1, x2, y2, z2;
|
||||
};
|
||||
|
||||
struct MissingTextureInfo
|
||||
{
|
||||
seg_t * seg;
|
||||
subsector_t * sub;
|
||||
float Planez;
|
||||
float Planezfront;
|
||||
};
|
||||
|
||||
struct MissingSegInfo
|
||||
{
|
||||
seg_t * seg;
|
||||
int MTI_Index; // tells us which MissingTextureInfo represents this seg.
|
||||
};
|
||||
|
||||
struct SubsectorHackInfo
|
||||
{
|
||||
subsector_t * sub;
|
||||
uint8_t flags;
|
||||
};
|
||||
|
||||
TArray<MissingTextureInfo> MissingUpperTextures;
|
||||
TArray<MissingTextureInfo> MissingLowerTextures;
|
||||
|
||||
TArray<MissingSegInfo> MissingUpperSegs;
|
||||
TArray<MissingSegInfo> MissingLowerSegs;
|
||||
|
||||
TArray<SubsectorHackInfo> SubsectorHacks;
|
||||
|
||||
TArray<gl_subsectorrendernode*> otherfloorplanes;
|
||||
TArray<gl_subsectorrendernode*> otherceilingplanes;
|
||||
|
||||
TArray<sector_t *> CeilingStacks;
|
||||
TArray<sector_t *> FloorStacks;
|
||||
|
||||
TArray<subsector_t *> HandledSubsectors;
|
||||
|
||||
TArray<uint8_t> sectorrenderflags;
|
||||
TArray<uint8_t> ss_renderflags;
|
||||
TArray<uint8_t> no_renderflags;
|
||||
|
||||
|
||||
void ClearBuffers();
|
||||
|
||||
bool DoOneSectorUpper(subsector_t * subsec, float planez, area_t in_area);
|
||||
bool DoOneSectorLower(subsector_t * subsec, float planez, area_t in_area);
|
||||
bool DoFakeBridge(subsector_t * subsec, float planez, area_t in_area);
|
||||
bool DoFakeCeilingBridge(subsector_t * subsec, float planez, area_t in_area);
|
||||
|
||||
bool CheckAnchorFloor(subsector_t * sub);
|
||||
bool CollectSubsectorsFloor(subsector_t * sub, sector_t * anchor);
|
||||
bool CheckAnchorCeiling(subsector_t * sub);
|
||||
bool CollectSubsectorsCeiling(subsector_t * sub, sector_t * anchor);
|
||||
void CollectSectorStacksCeiling(subsector_t * sub, sector_t * anchor, area_t in_area);
|
||||
void CollectSectorStacksFloor(subsector_t * sub, sector_t * anchor, area_t in_area);
|
||||
|
||||
void AddUpperMissingTexture(side_t * side, subsector_t *sub, float backheight);
|
||||
void AddLowerMissingTexture(side_t * side, subsector_t *sub, float backheight);
|
||||
void HandleMissingTextures(area_t in_area);
|
||||
void DrawUnhandledMissingTextures();
|
||||
void AddHackedSubsector(subsector_t * sub);
|
||||
void HandleHackedSubsectors();
|
||||
void AddFloorStack(sector_t * sec);
|
||||
void AddCeilingStack(sector_t * sec);
|
||||
void ProcessSectorStacks(area_t in_area);
|
||||
|
||||
void AddOtherFloorPlane(int sector, gl_subsectorrendernode * node);
|
||||
void AddOtherCeilingPlane(int sector, gl_subsectorrendernode * node);
|
||||
|
||||
virtual void FloodUpperGap(seg_t * seg) = 0;
|
||||
virtual void FloodLowerGap(seg_t * seg) = 0;
|
||||
virtual void ProcessLowerMinisegs(TArray<seg_t *> &lowersegs) = 0;
|
||||
virtual void AddSubsectorToPortal(FSectorPortalGroup *portal, subsector_t *sub) = 0;
|
||||
|
||||
};
|
||||
|
||||
1208
src/hwrenderer/scene/hw_renderhacks.cpp
Normal file
1208
src/hwrenderer/scene/hw_renderhacks.cpp
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue