mirror of
https://github.com/ZDoom/gzdoom-last-svn.git
synced 2025-05-30 00:41:19 +00:00
- renamed low level texture class.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@473 b0f79afe-0144-0410-b225-9a4edf0717df
This commit is contained in:
parent
1732827ed1
commit
a00125631d
8 changed files with 99 additions and 36 deletions
|
@ -1,4 +1,69 @@
|
|||
September 22, 2009 (Changes by Graf Zahl)
|
||||
- Added a check to Dehacked code which tries to set the blend color.
|
||||
It must set it to 0 if the alpha is 0 to avoid problems with special
|
||||
colormap detection.
|
||||
- Changed SPECIALCOLORMAP_MASK again so that it does not interfere with
|
||||
any valid setting. It must use a value with a 0-alpha because these
|
||||
are guaranteed not to be produced by the DECORATE code elsewhere.
|
||||
- Fixed precision issues with AddFixedColormap's search for identical colormaps.
|
||||
- Added custom colormap support to texture composition code.
|
||||
- Fixed initialization of FSpecialColormap::GrayscaleToColor. This is not
|
||||
a mapping from the palette but from a [0,255] grayscale ramp and used to
|
||||
apply colormaps to true color images for texture composition.
|
||||
|
||||
September 21, 2009
|
||||
- For hardware 2D, apply fixed colormaps when copying to video memory instead
|
||||
of doing it directly during the rendering, in order to improve visual
|
||||
fidelity for colormaps that aren't grayscale.
|
||||
- Added support for defining the full color range of a special colormap.
|
||||
- Moved the code for specialcolormap and colormapstyle in D3DFB::SetStyle()
|
||||
at the end of the normally-colored block so that they get all the proper
|
||||
texture format setup.
|
||||
- Fixed: In letterbox modes, the clipping window needs to be adjusted down.
|
||||
|
||||
September 21, 2009 (Changes by Graf Zahl)
|
||||
- Fixed: When drawing with a special colormap the quad's flags weren't cleared
|
||||
which could cause crashes.
|
||||
- Added custom special colormaps to DECORATE.
|
||||
- Cleaned up special colormap code and removed lots of dependencies on the
|
||||
knowledge of the tables' contents.
|
||||
|
||||
September 20, 2009 (Changes by Graf Zahl)
|
||||
- Changed call to R_DrawRemainingPlayerSprites into a virtual function
|
||||
of DFrameBuffer because its implementation is specific to the software
|
||||
renderer and needs to be overridable.
|
||||
|
||||
September 19, 2009
|
||||
- Fixed: Wall drawing handled fixed light levels improperly (but did not
|
||||
completely ignore them, either).
|
||||
- Separated light level fixing out of player_t's fixedcolormap parameter.
|
||||
Using a fixed light level (e.g. PowerTorch) will no longer wipe out
|
||||
colored lighting.
|
||||
- Moved the blending rectangle drawing into a separate discrete stage, since
|
||||
doing it while copying the 3D view window to the display now blends
|
||||
underneath the weapon instead of on top of it.
|
||||
- Consolidated the special colormaps into a single 2D table.
|
||||
- Tweaked the special colormaps slightly to make the true color results more
|
||||
closely match the paletted approximations.
|
||||
- fb_d3d9_shaders.h was getting unwieldy, so I moved the shaders out of the
|
||||
executable and into zdoom.pk3. Shaders are still precompiled so I don't need
|
||||
to pull in a dependancy on D3DX.
|
||||
- Added a few more shaders to accomodate drawing weapons with all the in-game
|
||||
lighting models. These are accessed with the new DrawTexture tags
|
||||
DTA_SpecialColormap and DTA_ColormapStyle.
|
||||
- Player weapon sprites are now drawn using Direct3D and receive all the
|
||||
benefits thereof.
|
||||
|
||||
September 17, 2009 (Changes by Graf Zahl)
|
||||
- Fixed: Unmorphing while invulnerable was blocked.
|
||||
- Various cleanup changes.
|
||||
- fixed Dog's class name in DEHSUPP.
|
||||
- Renamed plane flags from SECF_* to PLANEF_*.
|
||||
- Changed Heretic's plat raise type to use a flag to block further sector movement
|
||||
instead of keeping the dead thinker around to block the sector.
|
||||
|
||||
September 16, 2009 (Changes by Graf Zahl)
|
||||
- Fixed: A_LookEx did not work for monsters having the MF_NOSECTOR flag.
|
||||
- Fixed: The deprecated flag handler for the old bounce flags needs to clear
|
||||
BOUNCE_MBF and BOUNCE_UseSeeSound, too, when clearing one of these flags.
|
||||
- Fixed: When adding the AVOIDMELEE code the code was accidentally changed so that
|
||||
|
@ -16896,7 +16961,7 @@ November 14, 2000
|
|||
into c_cvars.cpp. Virtual inline functions are not inlined and cause the
|
||||
function to be generated for every source file the class is used in.
|
||||
- Fixed bug with Transfer_CeilingLight special. I was or'ing CeilingLight
|
||||
with SECF_ABSLIGHTING instead of CeilingFlags.
|
||||
with PLANEF_ABSLIGHTING instead of CeilingFlags.
|
||||
|
||||
November 11, 2000
|
||||
- Slopes don't work in mirrors. :-(
|
||||
|
|
|
@ -95,7 +95,7 @@ public:
|
|||
private:
|
||||
static const int WIDTH = 64, HEIGHT = 64;
|
||||
BYTE BurnArray[WIDTH * (HEIGHT + 5)];
|
||||
GLRendererOld::GLTexture *BurnTexture;
|
||||
GLRendererOld::FHardwareTexture *BurnTexture;
|
||||
int Density;
|
||||
int BurnTime;
|
||||
};
|
||||
|
@ -134,7 +134,7 @@ bool OpenGLFrameBuffer::WipeStartScreen(int type)
|
|||
return false;
|
||||
}
|
||||
|
||||
wipestartscreen = new GLRendererOld::GLTexture(Width, Height, false, false);
|
||||
wipestartscreen = new GLRendererOld::FHardwareTexture(Width, Height, false, false);
|
||||
wipestartscreen->CreateTexture(NULL, Width, Height, false, 0, CM_DEFAULT);
|
||||
gl.Finish();
|
||||
wipestartscreen->Bind(0, CM_DEFAULT);
|
||||
|
@ -157,7 +157,7 @@ bool OpenGLFrameBuffer::WipeStartScreen(int type)
|
|||
|
||||
void OpenGLFrameBuffer::WipeEndScreen()
|
||||
{
|
||||
wipeendscreen = new GLRendererOld::GLTexture(Width, Height, false, false);
|
||||
wipeendscreen = new GLRendererOld::FHardwareTexture(Width, Height, false, false);
|
||||
wipeendscreen->CreateTexture(NULL, Width, Height, false, 0, CM_DEFAULT);
|
||||
gl.Flush();
|
||||
wipeendscreen->Bind(0, CM_DEFAULT);
|
||||
|
@ -442,7 +442,7 @@ bool OpenGLFrameBuffer::Wiper_Burn::Run(int ticks, OpenGLFrameBuffer *fb)
|
|||
}
|
||||
|
||||
if (BurnTexture != NULL) delete BurnTexture;
|
||||
BurnTexture = new GLRendererOld::GLTexture(WIDTH, HEIGHT, false, false);
|
||||
BurnTexture = new GLRendererOld::FHardwareTexture(WIDTH, HEIGHT, false, false);
|
||||
|
||||
// Update the burn texture with the new burn data
|
||||
BYTE rgb_buffer[WIDTH*HEIGHT*4];
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
#endif
|
||||
namespace GLRendererOld
|
||||
{
|
||||
class GLTexture;
|
||||
class FHardwareTexture;
|
||||
}
|
||||
|
||||
extern long gl_frameMS;
|
||||
|
@ -104,8 +104,8 @@ private:
|
|||
class Wiper_Crossfade; friend class Wiper_Crossfade;
|
||||
|
||||
Wiper *ScreenWipe;
|
||||
GLRendererOld::GLTexture *wipestartscreen;
|
||||
GLRendererOld::GLTexture *wipeendscreen;
|
||||
GLRendererOld::FHardwareTexture *wipestartscreen;
|
||||
GLRendererOld::FHardwareTexture *wipeendscreen;
|
||||
|
||||
public:
|
||||
AActor * LastCamera;
|
||||
|
|
|
@ -64,14 +64,14 @@ namespace GLRendererOld
|
|||
// Static texture data
|
||||
//
|
||||
//===========================================================================
|
||||
unsigned int GLTexture::lastbound[GLTexture::MAX_TEXTURES];
|
||||
unsigned int FHardwareTexture::lastbound[FHardwareTexture::MAX_TEXTURES];
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
// STATIC - Gets the maximum size of hardware textures
|
||||
//
|
||||
//===========================================================================
|
||||
int GLTexture::GetTexDimension(int value)
|
||||
int FHardwareTexture::GetTexDimension(int value)
|
||||
{
|
||||
if (value > gl.max_texturesize) return gl.max_texturesize;
|
||||
if (gl.flags&RFL_NPOT_TEXTURE) return value;
|
||||
|
@ -90,7 +90,7 @@ int GLTexture::GetTexDimension(int value)
|
|||
// strange crashes deep inside the GL driver when I didn't do it!
|
||||
//
|
||||
//===========================================================================
|
||||
void GLTexture::LoadImage(unsigned char * buffer,int w, int h, unsigned int & glTexID,int wrapparam, bool alphatexture, int texunit)
|
||||
void FHardwareTexture::LoadImage(unsigned char * buffer,int w, int h, unsigned int & glTexID,int wrapparam, bool alphatexture, int texunit)
|
||||
{
|
||||
int rh,rw;
|
||||
int texformat=TexFormat[gl_texture_format];
|
||||
|
@ -197,7 +197,7 @@ void GLTexture::LoadImage(unsigned char * buffer,int w, int h, unsigned int & gl
|
|||
// Creates a texture
|
||||
//
|
||||
//===========================================================================
|
||||
GLTexture::GLTexture(int _width, int _height, bool _mipmap, bool wrap)
|
||||
FHardwareTexture::FHardwareTexture(int _width, int _height, bool _mipmap, bool wrap)
|
||||
{
|
||||
mipmap=_mipmap;
|
||||
texwidth=_width;
|
||||
|
@ -209,8 +209,8 @@ GLTexture::GLTexture(int _width, int _height, bool _mipmap, bool wrap)
|
|||
}
|
||||
else
|
||||
{
|
||||
scalexfac=MIN<float>(1.f,(float)texwidth/GLTexture::GetTexDimension(texwidth));
|
||||
scaleyfac=MIN<float>(1.f,(float)texheight/GLTexture::GetTexDimension(texheight));
|
||||
scalexfac=MIN<float>(1.f,(float)texwidth/FHardwareTexture::GetTexDimension(texwidth));
|
||||
scaleyfac=MIN<float>(1.f,(float)texheight/FHardwareTexture::GetTexDimension(texheight));
|
||||
}
|
||||
|
||||
int cm_arraysize = CM_FIRSTSPECIALCOLORMAP + SpecialColormaps.Size();
|
||||
|
@ -225,7 +225,7 @@ GLTexture::GLTexture(int _width, int _height, bool _mipmap, bool wrap)
|
|||
// Frees all associated resources
|
||||
//
|
||||
//===========================================================================
|
||||
void GLTexture::Clean(bool all)
|
||||
void FHardwareTexture::Clean(bool all)
|
||||
{
|
||||
int cm_arraysize = CM_FIRSTSPECIALCOLORMAP + SpecialColormaps.Size();
|
||||
|
||||
|
@ -260,7 +260,7 @@ void GLTexture::Clean(bool all)
|
|||
// Destroys the texture
|
||||
//
|
||||
//===========================================================================
|
||||
GLTexture::~GLTexture()
|
||||
FHardwareTexture::~FHardwareTexture()
|
||||
{
|
||||
Clean(true);
|
||||
delete [] glTexID;
|
||||
|
@ -273,7 +273,7 @@ GLTexture::~GLTexture()
|
|||
//
|
||||
//===========================================================================
|
||||
|
||||
unsigned * GLTexture::GetTexID(int cm, int translation)
|
||||
unsigned * FHardwareTexture::GetTexID(int cm, int translation)
|
||||
{
|
||||
if (cm < 0 || cm >= CM_FIRSTSPECIALCOLORMAP + SpecialColormaps.Size()) cm=CM_DEFAULT;
|
||||
|
||||
|
@ -305,7 +305,7 @@ unsigned * GLTexture::GetTexID(int cm, int translation)
|
|||
// Binds this patch
|
||||
//
|
||||
//===========================================================================
|
||||
unsigned int GLTexture::Bind(int texunit, int cm,int translation, int clampmode)
|
||||
unsigned int FHardwareTexture::Bind(int texunit, int cm,int translation, int clampmode)
|
||||
{
|
||||
unsigned int * pTexID=GetTexID(cm, translation);
|
||||
|
||||
|
@ -322,7 +322,7 @@ unsigned int GLTexture::Bind(int texunit, int cm,int translation, int clampmode)
|
|||
}
|
||||
|
||||
|
||||
void GLTexture::Unbind(int texunit)
|
||||
void FHardwareTexture::Unbind(int texunit)
|
||||
{
|
||||
if (lastbound[texunit] != 0)
|
||||
{
|
||||
|
@ -339,7 +339,7 @@ void GLTexture::Unbind(int texunit)
|
|||
// (re-)creates the texture
|
||||
//
|
||||
//===========================================================================
|
||||
unsigned int GLTexture::CreateTexture(unsigned char * buffer, int w, int h, bool wrap, int texunit,
|
||||
unsigned int FHardwareTexture::CreateTexture(unsigned char * buffer, int w, int h, bool wrap, int texunit,
|
||||
int cm, int translation)
|
||||
{
|
||||
if (cm < 0 || cm >= CM_FIRSTSPECIALCOLORMAP + SpecialColormaps.Size()) cm=CM_DEFAULT;
|
||||
|
@ -362,7 +362,7 @@ unsigned int GLTexture::CreateTexture(unsigned char * buffer, int w, int h, bool
|
|||
// clamping mode and only set when it really changes
|
||||
//
|
||||
//===========================================================================
|
||||
void GLTexture::SetTextureClamp(int newclampmode)
|
||||
void FHardwareTexture::SetTextureClamp(int newclampmode)
|
||||
{
|
||||
if (!gl_clamp_per_texture || (clampmode&GLT_CLAMPX) != (newclampmode&GLT_CLAMPX))
|
||||
{
|
||||
|
|
|
@ -22,7 +22,7 @@ enum
|
|||
GLT_CLAMPY=2
|
||||
};
|
||||
|
||||
class GLTexture
|
||||
class FHardwareTexture
|
||||
{
|
||||
friend void gl_RenderTextureView(FCanvasTexture *Texture, AActor * Viewpoint, int FOV);
|
||||
|
||||
|
@ -61,8 +61,8 @@ private:
|
|||
unsigned * GetTexID(int cm, int translation);
|
||||
|
||||
public:
|
||||
GLTexture(int w, int h, bool mip, bool wrap);
|
||||
~GLTexture();
|
||||
FHardwareTexture(int w, int h, bool mip, bool wrap);
|
||||
~FHardwareTexture();
|
||||
|
||||
static void Unbind(int texunit);
|
||||
|
||||
|
|
|
@ -723,8 +723,8 @@ void GL1Renderer::RenderTextureView(FCanvasTexture *Texture, AActor * Viewpoint,
|
|||
|
||||
gl_fixedcolormap=CM_DEFAULT;
|
||||
bounds.left=bounds.top=0;
|
||||
bounds.width=GLTexture::GetTexDimension(gltex->GetWidth(FGLTexture::GLUSE_TEXTURE));
|
||||
bounds.height=GLTexture::GetTexDimension(gltex->GetHeight(FGLTexture::GLUSE_TEXTURE));
|
||||
bounds.width=FHardwareTexture::GetTexDimension(gltex->GetWidth(FGLTexture::GLUSE_TEXTURE));
|
||||
bounds.height=FHardwareTexture::GetTexDimension(gltex->GetHeight(FGLTexture::GLUSE_TEXTURE));
|
||||
|
||||
gl.Flush();
|
||||
RenderViewpoint(Viewpoint, &bounds, FOV, (float)width/height, (float)width/height, false);
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
** gltexture.cpp
|
||||
** The texture classes for hardware rendering
|
||||
** (Even though they are named 'gl' there is nothing hardware dependent
|
||||
** in this file. That is all encapsulated in the GLTexture class.)
|
||||
** in this file. That is all encapsulated in the FHardwareTexture class.)
|
||||
**
|
||||
**---------------------------------------------------------------------------
|
||||
** Copyright 2004-2005 Christoph Oelckers
|
||||
|
@ -804,7 +804,7 @@ const WorldTextureInfo * FGLTexture::GetWorldTextureInfo()
|
|||
{
|
||||
|
||||
if (tex->UseType==FTexture::TEX_Null) return NULL; // Cannot register a NULL texture!
|
||||
if (!gltexture) gltexture=new GLTexture(Width[GLUSE_TEXTURE], Height[GLUSE_TEXTURE], true, true);
|
||||
if (!gltexture) gltexture=new FHardwareTexture(Width[GLUSE_TEXTURE], Height[GLUSE_TEXTURE], true, true);
|
||||
if (gltexture) return (WorldTextureInfo*)this;
|
||||
return NULL;
|
||||
}
|
||||
|
@ -821,7 +821,7 @@ const PatchTextureInfo * FGLTexture::GetPatchTextureInfo()
|
|||
if (tex->UseType==FTexture::TEX_Null) return NULL; // Cannot register a NULL texture!
|
||||
if (!glpatch)
|
||||
{
|
||||
glpatch=new GLTexture(Width[GLUSE_PATCH], Height[GLUSE_PATCH], false, false);
|
||||
glpatch=new FHardwareTexture(Width[GLUSE_PATCH], Height[GLUSE_PATCH], false, false);
|
||||
}
|
||||
if (glpatch) return (PatchTextureInfo*)this;
|
||||
return NULL;
|
||||
|
@ -855,7 +855,7 @@ void FGLTexture::SetupShader(int clampmode, int warped, int &cm, int translation
|
|||
}
|
||||
else
|
||||
{
|
||||
GLTexture::Unbind(1);
|
||||
FHardwareTexture::Unbind(1);
|
||||
usebright = false;
|
||||
}
|
||||
|
||||
|
@ -908,10 +908,6 @@ const WorldTextureInfo * FGLTexture::Bind(int texunit, int cm, int clampmode, in
|
|||
}
|
||||
}
|
||||
|
||||
if (cm > 0)
|
||||
__asm nop
|
||||
|
||||
|
||||
// Bind it to the system.
|
||||
// clamping in x-direction may cause problems when rendering segs
|
||||
if (!gltexture->Bind(texunit, cm, translation, gl_render_precise? clampmode&GLT_CLAMPY : clampmode))
|
||||
|
|
|
@ -55,7 +55,7 @@ public:
|
|||
class WorldTextureInfo
|
||||
{
|
||||
protected:
|
||||
GLTexture * gltexture;
|
||||
FHardwareTexture * gltexture;
|
||||
float scalex;
|
||||
float scaley;
|
||||
|
||||
|
@ -85,7 +85,7 @@ public:
|
|||
class PatchTextureInfo
|
||||
{
|
||||
protected:
|
||||
GLTexture * glpatch;
|
||||
FHardwareTexture * glpatch;
|
||||
|
||||
void Clean(bool all)
|
||||
{
|
||||
|
@ -110,6 +110,7 @@ public:
|
|||
};
|
||||
|
||||
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
// this is the texture maintenance class for OpenGL.
|
||||
|
@ -240,6 +241,7 @@ public:
|
|||
|
||||
};
|
||||
|
||||
|
||||
void gl_EnableTexture(bool on);
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue