Skip to content

Commit

Permalink
- reverting pull request #2361 - apparently pull request #2364 change…
Browse files Browse the repository at this point in the history
…d some behaviour and these two do not play nice together. One or the other unfortunately has to be rolled back to allow GZDoom to build properly again.

Revert "Restored r_orthographic behavior."

This reverts commit 26908f5.

Revert "Changed all of the isometric functionality to mapinfo and playerinfo variables. Retained function of most of the CVars."

This reverts commit dc897ea.

Revert "Adding isometric camera mode with orthographic projection to current state of master branch of GZDoom."

This reverts commit d2c2c93.
  • Loading branch information
madame-rachelle committed Jan 21, 2024
1 parent 26908f5 commit af08413
Show file tree
Hide file tree
Showing 17 changed files with 5 additions and 186 deletions.
1 change: 0 additions & 1 deletion src/common/filesystem/source/file_zip.cpp
Expand Up @@ -35,7 +35,6 @@

#include <time.h>
#include <stdexcept>
#include <cstdint>
#include "w_zip.h"
#include "ancientzip.h"
#include "resourcefile.h"
Expand Down
8 changes: 0 additions & 8 deletions src/common/rendering/hwrenderer/data/hw_cvars.h
Expand Up @@ -54,11 +54,3 @@ EXTERN_CVAR(Int, gl_shadowmap_filter)
EXTERN_CVAR(Bool, gl_brightfog)
EXTERN_CVAR(Bool, gl_lightadditivesurfaces)
EXTERN_CVAR(Bool, gl_notexturefill)

EXTERN_CVAR(Bool, r_isocam)
EXTERN_CVAR(Int, r_isoviewpoint)
EXTERN_CVAR(Float, r_iso_camdist)
EXTERN_CVAR(Float, r_iso_dist)
EXTERN_CVAR(Float, r_iso_pitch)
EXTERN_CVAR(Bool, r_drawplayersprites)
EXTERN_CVAR(Bool, r_orthographic)
20 changes: 2 additions & 18 deletions src/common/rendering/hwrenderer/data/hw_vrmodes.cpp
Expand Up @@ -146,27 +146,11 @@ float VREyeInfo::getShift() const
return vr_swap_eyes ? -res : res;
}

VSMatrix VREyeInfo::GetProjection(float fov, float aspectRatio, float fovRatio, bool iso_ortho) const
VSMatrix VREyeInfo::GetProjection(float fov, float aspectRatio, float fovRatio) const
{
VSMatrix result;

if (iso_ortho) // Orthographic projection for isometric viewpoint
{
double zNear = -1.0; // screen->GetZNear();
double zFar = screen->GetZFar();

double fH = tan(DEG2RAD(fov) / 2) / fovRatio;
double fW = fH * aspectRatio * mScaleFactor;
double left = -fW;
double right = fW;
double bottom = -fH;
double top = fH;

VSMatrix fmat(1);
fmat.ortho((float)left, (float)right, (float)bottom, (float)top, (float)zNear, (float)zFar);
return fmat;
}
else if (mShiftFactor == 0)
if (mShiftFactor == 0)
{
float fovy = (float)(2 * RAD2DEG(atan(tan(DEG2RAD(fov) / 2) / fovRatio)));
result.perspective(fovy, aspectRatio, screen->GetZNear(), screen->GetZFar());
Expand Down
2 changes: 1 addition & 1 deletion src/common/rendering/hwrenderer/data/hw_vrmodes.h
Expand Up @@ -27,7 +27,7 @@ struct VREyeInfo
float mShiftFactor;
float mScaleFactor;

VSMatrix GetProjection(float fov, float aspectRatio, float fovRatio, bool iso_ortho) const;
VSMatrix GetProjection(float fov, float aspectRatio, float fovRatio) const;
DVector3 GetViewShift(float yaw) const;
private:
float getShift() const;
Expand Down
8 changes: 0 additions & 8 deletions src/g_level.cpp
Expand Up @@ -1803,8 +1803,6 @@ void FLevelLocals::Init()
flags3 = 0;
ImpactDecalCount = 0;
frozenstate = 0;
isocam_pitch = 30.f;
iso_dist = 300.f;

info = FindLevelInfo (MapName.GetChars());

Expand Down Expand Up @@ -1835,12 +1833,6 @@ void FLevelLocals::Init()
if (info->gravity == DBL_MAX) gravity = 0;
else gravity = info->gravity * 35/TICRATE;
}
if (info->isocam_pitch < 0.f) isocam_pitch = 0.f;
else if (info->isocam_pitch > 89.f) isocam_pitch = 89.f;
else isocam_pitch = info->isocam_pitch;
if (info->iso_dist < 1.f) iso_dist = 1.f;
if (info->iso_dist > 1000.f) iso_dist = 1000.f;
else iso_dist = info->iso_dist;
if (info->aircontrol != 0.f)
{
aircontrol = info->aircontrol;
Expand Down
13 changes: 0 additions & 13 deletions src/g_levellocals.h
Expand Up @@ -664,8 +664,6 @@ struct FLevelLocals
double airfriction;
int airsupply;
int DefaultEnvironment; // Default sound environment.
float isocam_pitch;
float iso_dist;

DSeqNode *SequenceListHead;

Expand Down Expand Up @@ -755,17 +753,6 @@ struct FLevelLocals
return !(flags & LEVEL_FREELOOK_NO);
}

//==========================================================================
//
//
//==========================================================================

bool IsIsometricMode() const
{
return (flags3 & LEVEL3_ISOMETRICMODE);
// What to do about multiplayer flags? Add a dmflags3 bit?
}

node_t *HeadNode() const
{
return nodes.Size() == 0 ? nullptr : &nodes[nodes.Size() - 1];
Expand Down
19 changes: 0 additions & 19 deletions src/gamedata/g_mapinfo.cpp
Expand Up @@ -295,8 +295,6 @@ void level_info_t::Reset()
outsidefogdensity = 0;
skyfog = 0;
pixelstretch = 1.2f;
isocam_pitch = 30.f;
iso_dist = 300.f;

specialactions.Clear();
DefaultEnvironment = 0;
Expand Down Expand Up @@ -1218,20 +1216,6 @@ DEFINE_MAP_OPTION(gravity, true)
info->gravity = parse.sc.Float;
}

DEFINE_MAP_OPTION(isocam_pitch, true)
{
parse.ParseAssign();
parse.sc.MustGetFloat();
info->isocam_pitch = parse.sc.Float;
}

DEFINE_MAP_OPTION(iso_dist, true)
{
parse.ParseAssign();
parse.sc.MustGetFloat();
info->iso_dist = parse.sc.Float;
}

DEFINE_MAP_OPTION(nogravity, true)
{
info->gravity = DBL_MAX;
Expand Down Expand Up @@ -1835,9 +1819,6 @@ MapFlagHandlers[] =
{ "disableskyboxao", MITYPE_CLRFLAG3, LEVEL3_SKYBOXAO, 0 },
{ "avoidmelee", MITYPE_SETFLAG3, LEVEL3_AVOIDMELEE, 0 },
{ "attenuatelights", MITYPE_SETFLAG3, LEVEL3_ATTENUATE, 0 },
{ "isometricmode", MITYPE_SETFLAG3, LEVEL3_ISOMETRICMODE, 0 },
{ "orthographic", MITYPE_SETFLAG3, LEVEL3_ORTHOGRAPHIC, 0 },
{ "isometricsprites", MITYPE_SETFLAG3, LEVEL3_ISOMETRICSPRITES, 0 },
{ "nobotnodes", MITYPE_IGNORE, 0, 0 }, // Skulltag option: nobotnodes
{ "nopassover", MITYPE_COMPATFLAG, COMPATF_NO_PASSMOBJ, 0 },
{ "passover", MITYPE_CLRCOMPATFLAG, COMPATF_NO_PASSMOBJ, 0 },
Expand Down
7 changes: 0 additions & 7 deletions src/gamedata/g_mapinfo.h
Expand Up @@ -270,10 +270,6 @@ enum ELevelFlags : unsigned int
LEVEL3_AVOIDMELEE = 0x00020000, // global flag needed for proper MBF support.
LEVEL3_NOJUMPDOWN = 0x00040000, // only for MBF21. Inverse of MBF's dog_jumping flag.
LEVEL3_LIGHTCREATED = 0x00080000, // a light had been created in the last frame

LEVEL3_ISOMETRICMODE = 0x00100000, // render map in isometric camera mode
LEVEL3_ORTHOGRAPHIC = 0x00200000, // render with orthographic projection (only in isometric camera mode)
LEVEL3_ISOMETRICSPRITES = 0x00400000, // displace isometrically drawn sprites towards isometric camera
};


Expand Down Expand Up @@ -380,9 +376,6 @@ struct level_info_t
int skyfog;
float pixelstretch;

float isocam_pitch;
float iso_dist;

// Redirection: If any player is carrying the specified item, then
// you go to the RedirectMap instead of this one.
FName RedirectType;
Expand Down
2 changes: 0 additions & 2 deletions src/playsim/d_player.h
Expand Up @@ -324,8 +324,6 @@ class player_t
// This only represents the thrust that the player applies himself.
// This avoids anomalies with such things as Boom ice and conveyors.
DVector2 Vel = { 0,0 };
// Used by isometric camera (See RenderViewpoint() in src/rendering/hwrenderer/hw_entrypoint.cpp)
int isoyaw = 225; // degrees

bool centering = false;
uint8_t turnticks = 0;
Expand Down
3 changes: 0 additions & 3 deletions src/playsim/p_user.cpp
Expand Up @@ -270,7 +270,6 @@ void player_t::CopyFrom(player_t &p, bool copyPSP)
deltaviewheight = p.deltaviewheight;
bob = p.bob;
Vel = p.Vel;
isoyaw = p.isoyaw;
centering = p.centering;
turnticks = p.turnticks;
attackdown = p.attackdown;
Expand Down Expand Up @@ -1636,7 +1635,6 @@ void player_t::Serialize(FSerializer &arc)
("deltaviewheight", deltaviewheight)
("bob", bob)
("vel", Vel)
("isoyaw", isoyaw)
("centering", centering)
("health", health)
("inventorytics", inventorytics)
Expand Down Expand Up @@ -1744,7 +1742,6 @@ DEFINE_FIELD_X(PlayerInfo, player_t, viewheight)
DEFINE_FIELD_X(PlayerInfo, player_t, deltaviewheight)
DEFINE_FIELD_X(PlayerInfo, player_t, bob)
DEFINE_FIELD_X(PlayerInfo, player_t, Vel)
DEFINE_FIELD_X(PlayerInfo, player_t, isoyaw)
DEFINE_FIELD_X(PlayerInfo, player_t, centering)
DEFINE_FIELD_X(PlayerInfo, player_t, turnticks)
DEFINE_FIELD_X(PlayerInfo, player_t, attackdown)
Expand Down
36 changes: 2 additions & 34 deletions src/rendering/hwrenderer/hw_entrypoint.cpp
Expand Up @@ -162,40 +162,8 @@ sector_t* RenderViewpoint(FRenderViewpoint& mainvp, AActor* camera, IntRect* bou

di->Viewpoint.FieldOfView = DAngle::fromDeg(fov); // Set the real FOV for the current scene (it's not necessarily the same as the global setting in r_viewpoint)

// Switch viewpoint for isometric camera
if((r_isocam || (camera->Level->flags3 & LEVEL3_ISOMETRICMODE)) && camera->player != NULL)
{
float camdist = camera->Level->iso_dist;
float isocam_pitch = camera->Level->isocam_pitch;
if (r_isoviewpoint > 0)
{
isocam_pitch = r_iso_pitch;
camdist = r_iso_dist;
camera->player->isoyaw = 45.0 * (r_isoviewpoint - 1); // The eight cardinal directions
}
float inv_iso_dist = 1.0f/camdist; // camdist can change in next line
bool iso_ortho = ((r_isoviewpoint > 0) && r_orthographic) || ((r_isoviewpoint == 0) && camera->Level->flags3 & LEVEL3_ORTHOGRAPHIC);
if (iso_ortho) camdist = r_iso_camdist;
vp.Pos.X -= camdist * DAngle::fromDeg(camera->player->isoyaw).Cos();
vp.Pos.Y -= camdist * DAngle::fromDeg(camera->player->isoyaw).Sin();
vp.Pos.Z += camdist * FAngle::fromDeg(isocam_pitch).Tan() - 0.5 * camera->player->viewheight;
vp.HWAngles.Pitch = FAngle::fromDeg(isocam_pitch);
vp.Angles.Pitch = DAngle::fromDeg(isocam_pitch);
vp.Angles.Yaw = DAngle::fromDeg(camera->player->isoyaw);
vp.Angles.Roll = DAngle::fromDeg(0);
vp.showviewer = true; // Draw player sprite
r_drawplayersprites = false; // Don't draw first-person hands/weapons
// Stereo mode specific perspective projection
if (!iso_ortho) inv_iso_dist = 1.0f;
di->VPUniforms.mProjectionMatrix = eye.GetProjection(fov, ratio, fovratio * inv_iso_dist, iso_ortho);
}
else // Regular first-person viewpoint
{
vp.showviewer = false;
r_drawplayersprites = true; // Restore first-person hands/weapons
// Stereo mode specific perspective projection
di->VPUniforms.mProjectionMatrix = eye.GetProjection(fov, ratio, fovratio, false);
}
// Stereo mode specific perspective projection
di->VPUniforms.mProjectionMatrix = eye.GetProjection(fov, ratio, fovratio);
// Stereo mode specific viewpoint adjustment
vp.Pos += eye.GetViewShift(vp.HWAngles.Yaw.Degrees());
di->SetupView(RenderState, vp.Pos.X, vp.Pos.Y, vp.Pos.Z, false, false);
Expand Down
18 changes: 0 additions & 18 deletions src/rendering/hwrenderer/scene/hw_sprites.cpp
Expand Up @@ -477,9 +477,7 @@ bool HWSprite::CalculateVertices(HWDrawInfo* di, FVector3* v, DVector3* vp)
// Rotate the sprite about the vector starting at the center of the sprite
// triangle strip and with direction orthogonal to where the player is looking
// in the x/y plane.
if(r_isocam || (di->Level->flags3 & LEVEL3_ISOMETRICMODE)) mat.Translate(0.0, z2 - zcenter, 0.0);
mat.Rotate(-sin(angleRad), 0, cos(angleRad), -HWAngles.Pitch.Degrees());
if(r_isocam || (di->Level->flags3 & LEVEL3_ISOMETRICMODE)) mat.Translate(0.0, zcenter - z2, 0.0);
}

mat.Translate(-center.X, -center.Z, -center.Y); // retreat from sprite center
Expand Down Expand Up @@ -902,7 +900,6 @@ void HWSprite::Process(HWDrawInfo *di, AActor* thing, sector_t * sector, area_t
{
bool mirror = false;
DAngle ang = (thingpos - vp.Pos).Angle();
if(r_isocam || (di->Level->flags3 & LEVEL3_ISOMETRICMODE)) ang = vp.Angles.Yaw;
FTextureID patch;
// [ZZ] add direct picnum override
if (isPicnumOverride)
Expand Down Expand Up @@ -1022,20 +1019,6 @@ void HWSprite::Process(HWDrawInfo *di, AActor* thing, sector_t * sector, area_t
x2 = x - viewvecY*rightfac;
y1 = y + viewvecX*leftfac;
y2 = y + viewvecX*rightfac;
if(di->Level->flags3 & LEVEL3_ISOMETRICSPRITES && (r_isocam || (di->Level->flags3 & LEVEL3_ISOMETRICMODE))) // If sprites are drawn from an isometric perspective
{
float signX = 1.0;
float signY = 1.0;
if(viewvecX < 0) signX = -1.0;
if(viewvecY < 0) signY = -1.0;
if(viewvecX == 0) signX = 0.0;
if(viewvecY == 0) signY = 0.0;

x1 -= signX * thing->radius;
x2 -= signX * thing->radius;
y1 -= signY * thing->radius;
y2 -= signY * thing->radius;
}
break;
}
case RF_FLATSPRITE:
Expand Down Expand Up @@ -1076,7 +1059,6 @@ void HWSprite::Process(HWDrawInfo *di, AActor* thing, sector_t * sector, area_t
}

depth = (float)((x - vp.Pos.X) * vp.TanCos + (y - vp.Pos.Y) * vp.TanSin);
if(r_isocam || (di->Level->flags3 & LEVEL3_ISOMETRICMODE)) depth = depth * vp.PitchCos - vp.PitchSin * z2; // Helps with stacking actors with small xy offsets
if (isSpriteShadow) depth += 1.f/65536.f; // always sort shadows behind the sprite.

// light calculation
Expand Down
34 changes: 0 additions & 34 deletions src/rendering/r_utility.cpp
Expand Up @@ -101,35 +101,6 @@ CVAR (Bool, r_deathcamera, false, CVAR_ARCHIVE)
CVAR (Int, r_clearbuffer, 0, 0)
CVAR (Bool, r_drawvoxels, true, 0)
CVAR (Bool, r_drawplayersprites, true, 0) // [RH] Draw player sprites?
CVARD (Bool, r_isocam, false, CVAR_ARCHIVE | CVAR_SERVERINFO | CVAR_CHEAT, "render from isometric viewpoint.")
CVARD (Bool, r_orthographic, true, CVAR_ARCHIVE | CVAR_SERVERINFO | CVAR_CHEAT, "render orthographic projection. Only used with r_isocam")
CUSTOM_CVARD(Float, r_iso_pitch, 30.0f, CVAR_ARCHIVE | CVAR_SERVERINFO | CVAR_CHEAT, "pitch for isometric camera: 0 to 89 degrees. Used only if r_isoviewpoint > 0.")
{
if (self < 0.f)
self = 0.f;
else if (self > 89.f)
self = 89.f;
}
CUSTOM_CVAR(Float, r_iso_camdist, 1000.0f, CVAR_ARCHIVE | CVAR_SERVERINFO | CVAR_CHEAT)
{
// Keep this large to avoid texture clipping, not used if r_orthographic is false
if (self < 1000.f)
self = 1000.f;
}
CUSTOM_CVARD(Int, r_isoviewpoint, 0, CVAR_ARCHIVE, "Isometric viewpoint angle. 1 to 8 for cardinal directions using r_iso_pitch and r_iso_dist. 0 for ignore and use player->isoyaw, level->isocam_pitch and level->iso_dist (from mapinfo).")
{
if (self < 0)
self = 0;
else if (self > 8)
self = 8;
}
CUSTOM_CVARD(Float, r_iso_dist, 300.0, CVAR_ARCHIVE | CVAR_SERVERINFO | CVAR_CHEAT, "how far the isometric camera (r_isocam) is in the XY plane. Used only if r_isoviewpoint > 0.")
{
if (self < 0.f)
self = 0.f;
else if (self > 1000.f)
self = 1000.f;
}
CUSTOM_CVAR(Float, r_quakeintensity, 1.0f, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
{
if (self < 0.f) self = 0.f;
Expand Down Expand Up @@ -182,8 +153,6 @@ FRenderViewpoint::FRenderViewpoint()
Sin = 0.0;
TanCos = 0.0;
TanSin = 0.0;
PitchCos = 0.0;
PitchSin = 0.0;
camera = nullptr;
sector = nullptr;
FieldOfView = DAngle::fromDeg(90.); // Angles in the SCREENWIDTH wide window
Expand Down Expand Up @@ -661,9 +630,6 @@ void FRenderViewpoint::SetViewAngle (const FViewWindow &viewwindow)
TanSin = viewwindow.FocalTangent * Sin;
TanCos = viewwindow.FocalTangent * Cos;

PitchSin = Angles.Pitch.Sin();
PitchCos = Angles.Pitch.Cos();

DVector2 v = Angles.Yaw.ToVector();
ViewVector.X = v.X;
ViewVector.Y = v.Y;
Expand Down
2 changes: 0 additions & 2 deletions src/rendering/r_utility.h
Expand Up @@ -33,8 +33,6 @@ struct FRenderViewpoint
double Sin; // sin(Angles.Yaw)
double TanCos; // FocalTangent * cos(Angles.Yaw)
double TanSin; // FocalTangent * sin(Angles.Yaw)
double PitchCos; // cos(Angles.Pitch)
double PitchSin; // sin(Angles.Pitch)

AActor *camera; // camera actor
sector_t *sector; // [RH] keep track of sector viewing from
Expand Down
16 changes: 0 additions & 16 deletions src/scripting/vmthunks.cpp
Expand Up @@ -1694,22 +1694,6 @@ DEFINE_ACTION_FUNCTION_NATIVE(_Sector, SetXOffset, SetXOffset)
ACTION_RETURN_BOOL(self->IsFreelookAllowed());
}

//==========================================================================
//
//
//==========================================================================

static int IsIsometricMode(FLevelLocals *self)
{
return self->IsIsometricMode();
}

DEFINE_ACTION_FUNCTION_NATIVE(FLevelLocals, IsIsometricMode, IsIsometricMode)
{
PARAM_SELF_STRUCT_PROLOGUE(FLevelLocals);
ACTION_RETURN_BOOL(self->IsIsometricMode());
}

//==========================================================================
//
// ZScript counterpart to ACS ChangeSky, uses TextureIDs
Expand Down
1 change: 0 additions & 1 deletion wadsrc/static/zscript/actors/player/player.zs
Expand Up @@ -2744,7 +2744,6 @@ struct PlayerInfo native play // self is what internally is known as player_t
native double deltaviewheight;
native double bob;
native vector2 vel;
native int isoyaw;
native bool centering;
native uint8 turnticks;
native bool attackdown;
Expand Down
1 change: 0 additions & 1 deletion wadsrc/static/zscript/doombase.zs
Expand Up @@ -490,7 +490,6 @@ struct LevelLocals native
native bool IsJumpingAllowed() const;
native bool IsCrouchingAllowed() const;
native bool IsFreelookAllowed() const;
native bool IsIsometricMode() const;
native void StartIntermission(Name type, int state) const;
native play SpotState GetSpotState(bool create = true);
native int FindUniqueTid(int start = 0, int limit = 0);
Expand Down

0 comments on commit af08413

Please sign in to comment.