- removed all GL dependencies from gl_material.h.

This commit is contained in:
Christoph Oelckers 2018-04-24 22:37:52 +02:00
parent 5e8a4b96fe
commit f9a82e66e4
11 changed files with 29 additions and 25 deletions

View file

@ -49,6 +49,7 @@
#include "gl/shaders/gl_presentshader.h" #include "gl/shaders/gl_presentshader.h"
#include "gl/shaders/gl_postprocessshaderinstance.h" #include "gl/shaders/gl_postprocessshaderinstance.h"
#include "gl/stereo3d/gl_stereo3d.h" #include "gl/stereo3d/gl_stereo3d.h"
#include "gl/textures/gl_hwtexture.h"
#include "r_videoscale.h" #include "r_videoscale.h"
//========================================================================== //==========================================================================

View file

@ -33,6 +33,7 @@
#include "gl/system/gl_cvars.h" #include "gl/system/gl_cvars.h"
#include "gl/shaders/gl_shader.h" #include "gl/shaders/gl_shader.h"
#include "gl/renderer/gl_renderer.h" #include "gl/renderer/gl_renderer.h"
#include "gl/renderer/gl_colormap.h"
#include "gl/dynlights//gl_lightbuffer.h" #include "gl/dynlights//gl_lightbuffer.h"
#include "gl/renderer/gl_renderbuffers.h" #include "gl/renderer/gl_renderbuffers.h"

View file

@ -29,6 +29,7 @@
#include "gl/system/gl_debug.h" #include "gl/system/gl_debug.h"
#include "gl/data/gl_vertexbuffer.h" #include "gl/data/gl_vertexbuffer.h"
#include "gl/shaders/gl_shader.h" #include "gl/shaders/gl_shader.h"
#include "gl/textures/gl_hwtexture.h"
#include "gl_swscene.h" #include "gl_swscene.h"
#include "w_wad.h" #include "w_wad.h"
#include "d_player.h" #include "d_player.h"

View file

@ -116,8 +116,8 @@ public:
enum enum
{ {
//GLWF_CLAMPX=1, use GLT_* for these! GLWF_CLAMPX=1,
//GLWF_CLAMPY=2, GLWF_CLAMPY=2,
GLWF_SKYHACK=4, GLWF_SKYHACK=4,
GLWF_GLOW=8, // illuminated by glowing flats GLWF_GLOW=8, // illuminated by glowing flats
GLWF_NOSPLITUPPER=16, GLWF_NOSPLITUPPER=16,

View file

@ -33,6 +33,7 @@
#include "hwrenderer/dynlights/hw_dynlightdata.h" #include "hwrenderer/dynlights/hw_dynlightdata.h"
#include "gl/system/gl_cvars.h" #include "gl/system/gl_cvars.h"
#include "gl/system/gl_interface.h"
#include "gl/renderer/gl_lightdata.h" #include "gl/renderer/gl_lightdata.h"
#include "gl/scene/gl_drawinfo.h" #include "gl/scene/gl_drawinfo.h"
#include "gl/scene/gl_portal.h" #include "gl/scene/gl_portal.h"
@ -601,7 +602,7 @@ bool GLWall::SetWallCoordinates(seg_t * seg, FTexCoordInfo *tci, float textureto
{ {
bool normalize = false; bool normalize = false;
if (gltexture->tex->bHasCanvas) normalize = true; if (gltexture->tex->bHasCanvas) normalize = true;
else if (flags & GLT_CLAMPY) else if (flags & GLWF_CLAMPY)
{ {
// for negative scales we can get negative coordinates here. // for negative scales we can get negative coordinates here.
normalize = (tcs[UPLFT].v > tcs[LOLFT].v || tcs[UPRGT].v > tcs[LORGT].v); normalize = (tcs[UPLFT].v > tcs[LOLFT].v || tcs[UPRGT].v > tcs[LORGT].v);
@ -651,7 +652,7 @@ void GLWall::CheckTexturePosition(FTexCoordInfo *tci)
if ((tcs[UPLFT].v == 0.f && tcs[UPRGT].v == 0.f && tcs[LOLFT].v <= 1.f && tcs[LORGT].v <= 1.f) || if ((tcs[UPLFT].v == 0.f && tcs[UPRGT].v == 0.f && tcs[LOLFT].v <= 1.f && tcs[LORGT].v <= 1.f) ||
(tcs[UPLFT].v >= 0.f && tcs[UPRGT].v >= 0.f && tcs[LOLFT].v == 1.f && tcs[LORGT].v == 1.f)) (tcs[UPLFT].v >= 0.f && tcs[UPRGT].v >= 0.f && tcs[LOLFT].v == 1.f && tcs[LORGT].v == 1.f))
{ {
flags |= GLT_CLAMPY; flags |= GLWF_CLAMPY;
} }
} }
else else
@ -672,7 +673,7 @@ void GLWall::CheckTexturePosition(FTexCoordInfo *tci)
if ((tcs[LOLFT].v == 0.f && tcs[LORGT].v == 0.f && tcs[UPLFT].v <= 1.f && tcs[UPRGT].v <= 1.f) || if ((tcs[LOLFT].v == 0.f && tcs[LORGT].v == 0.f && tcs[UPLFT].v <= 1.f && tcs[UPRGT].v <= 1.f) ||
(tcs[LOLFT].v >= 0.f && tcs[LORGT].v >= 0.f && tcs[UPLFT].v == 1.f && tcs[UPRGT].v == 1.f)) (tcs[LOLFT].v >= 0.f && tcs[LORGT].v >= 0.f && tcs[UPLFT].v == 1.f && tcs[UPRGT].v == 1.f))
{ {
flags |= GLT_CLAMPY; flags |= GLWF_CLAMPY;
} }
} }
@ -688,7 +689,7 @@ void GLWall::CheckTexturePosition(FTexCoordInfo *tci)
if ((tcs[UPLFT].u == 0.f && tcs[LOLFT].u == 0.f && tcs[UPRGT].u <= 1.f && tcs[LORGT].u <= 1.f) || if ((tcs[UPLFT].u == 0.f && tcs[LOLFT].u == 0.f && tcs[UPRGT].u <= 1.f && tcs[LORGT].u <= 1.f) ||
(tcs[UPLFT].u >= 0.f && tcs[LOLFT].u >= 0.f && tcs[UPRGT].u == 1.f && tcs[LORGT].u == 1.f)) (tcs[UPLFT].u >= 0.f && tcs[LOLFT].u >= 0.f && tcs[UPRGT].u == 1.f && tcs[LORGT].u == 1.f))
{ {
flags |= GLT_CLAMPX; flags |= GLWF_CLAMPX;
} }
} }
} }
@ -941,15 +942,15 @@ void GLWall::DoMidTexture(seg_t * seg, bool drawfogboundary,
if ((textureoffset == 0 && righttex <= tci.mRenderWidth) || if ((textureoffset == 0 && righttex <= tci.mRenderWidth) ||
(textureoffset >= 0 && righttex == tci.mRenderWidth)) (textureoffset >= 0 && righttex == tci.mRenderWidth))
{ {
flags |= GLT_CLAMPX; flags |= GLWF_CLAMPX;
} }
else else
{ {
flags &= ~GLT_CLAMPX; flags &= ~GLWF_CLAMPX;
} }
if (!wrap) if (!wrap)
{ {
flags |= GLT_CLAMPY; flags |= GLWF_CLAMPY;
} }
} }
if (mirrory) if (mirrory)
@ -1081,7 +1082,7 @@ void GLWall::DoMidTexture(seg_t * seg, bool drawfogboundary,
} }
// restore some values that have been altered in this function // restore some values that have been altered in this function
glseg=glsave; glseg=glsave;
flags&=~(GLT_CLAMPX|GLT_CLAMPY|GLWF_NOSPLITUPPER|GLWF_NOSPLITLOWER); flags&=~(GLWF_CLAMPX|GLWF_CLAMPY|GLWF_NOSPLITUPPER|GLWF_NOSPLITLOWER);
RenderStyle = STYLE_Normal; RenderStyle = STYLE_Normal;
} }
@ -1192,7 +1193,7 @@ void GLWall::BuildFFBlock(seg_t * seg, F3DFloor * rover,
alpha = 1.0f; alpha = 1.0f;
lightlevel = savelight; lightlevel = savelight;
Colormap = savecolor; Colormap = savecolor;
flags &= ~GLT_CLAMPY; flags &= ~GLWF_CLAMPY;
} }

View file

@ -327,7 +327,7 @@ void GLWall::RenderTextured(int rflags)
if (type == RENDERWALL_M2SNF) if (type == RENDERWALL_M2SNF)
{ {
if (flags & GLT_CLAMPY) if (flags & GLWF_CLAMPY)
{ {
if (tmode == TM_MODULATE) gl_RenderState.SetTextureMode(TM_CLAMPY); if (tmode == TM_MODULATE) gl_RenderState.SetTextureMode(TM_CLAMPY);
} }

View file

@ -34,6 +34,7 @@
#include "gl/system/gl_cvars.h" #include "gl/system/gl_cvars.h"
#include "gl/system/gl_debug.h" #include "gl/system/gl_debug.h"
#include "gl/renderer/gl_renderer.h" #include "gl/renderer/gl_renderer.h"
#include "gl/renderer/gl_colormap.h"
#include "gl/textures/gl_material.h" #include "gl/textures/gl_material.h"
#include "gl/textures/gl_samplers.h" #include "gl/textures/gl_samplers.h"

View file

@ -16,18 +16,13 @@ class FCanvasTexture;
class AActor; class AActor;
typedef TMap<int, bool> SpriteHits; typedef TMap<int, bool> SpriteHits;
// For error catching while changing parameters. // For error catching while changing parameters.
enum EInvalid enum EInvalid
{ {
Invalid = 0 Invalid = 0
}; };
enum
{
GLT_CLAMPX=1,
GLT_CLAMPY=2
};
class FHardwareTexture class FHardwareTexture
{ {
public: public:

View file

@ -30,6 +30,7 @@
#include "gl/system/gl_interface.h" #include "gl/system/gl_interface.h"
#include "gl/system/gl_framebuffer.h" #include "gl/system/gl_framebuffer.h"
#include "gl/renderer/gl_renderer.h" #include "gl/renderer/gl_renderer.h"
#include "gl/textures/gl_hwtexture.h"
#include "gl/textures/gl_material.h" #include "gl/textures/gl_material.h"
#include "gl/shaders/gl_shader.h" #include "gl/shaders/gl_shader.h"
@ -634,7 +635,7 @@ void FMaterial::FlushAll()
{ {
for(int i=mMaterials.Size()-1;i>=0;i--) for(int i=mMaterials.Size()-1;i>=0;i--)
{ {
mMaterials[i]->Clean(true); mMaterials[i]->mBaseLayer->Clean(true);
} }
// This is for shader layers. All shader layers must be managed by the texture manager // This is for shader layers. All shader layers must be managed by the texture manager
// so this will catch everything. // so this will catch everything.
@ -652,3 +653,9 @@ void FMaterial::ClearLastTexture()
{ {
last = NULL; last = NULL;
} }
void FMaterial::Clean(bool f)
{
// This somehow needs to deal with the other layers as well, but they probably need some form of reference counting to work properly...
mBaseLayer->Clean(f);
}

View file

@ -4,8 +4,6 @@
#include "m_fixed.h" #include "m_fixed.h"
#include "textures/textures.h" #include "textures/textures.h"
#include "gl/textures/gl_hwtexture.h"
#include "gl/renderer/gl_colormap.h"
#include "i_system.h" #include "i_system.h"
#include "r_defs.h" #include "r_defs.h"
@ -112,10 +110,7 @@ public:
void Bind(int clamp, int translation); void Bind(int clamp, int translation);
void Clean(bool f) void Clean(bool f);
{
mBaseLayer->Clean(f);
}
void BindToFrameBuffer(); void BindToFrameBuffer();
// Patch drawing utilities // Patch drawing utilities

View file

@ -44,6 +44,8 @@
#include "r_data/r_translate.h" #include "r_data/r_translate.h"
#include <vector> #include <vector>
typedef TMap<int, bool> SpriteHits;
enum MaterialShaderIndex enum MaterialShaderIndex
{ {
SHADER_Default, SHADER_Default,