Commit graph

87 commits

Author SHA1 Message Date
Christoph Oelckers
1a024a9f54 - moved gl_material into hwrenderer/. 2018-04-24 23:39:58 +02:00
Christoph Oelckers
0675315b41 - made FHardwareTexture inherit from an abstract interface to remove all GL dependencies from gl_material.cpp. 2018-04-24 23:06:34 +02:00
Christoph Oelckers
f9a82e66e4 - removed all GL dependencies from gl_material.h. 2018-04-24 22:37:52 +02:00
Christoph Oelckers
5e8a4b96fe - make sure that warping textures never create a warped true color image.
This replaces the old redirection hackery that had to work differently for the legacy render path.
Overriding CopyTrueColorTranslated is far more robust and ensures that no edge cases can reach the GetPixels function, which wasn't the case before.
2018-04-24 21:58:26 +02:00
Christoph Oelckers
c37ff22a05 - removed the intermediate FGLTexture class.
This wasn't serving any real purpose anymore, and all its remaining functionality could be moved to FHardwareTexture
2018-04-24 20:41:52 +02:00
alexey.lysiuk
2ae8d39441 Removed all superfluous #include's
Automatically optimized by CLion IDE with manual corrections
2018-04-24 14:30:35 +03:00
Christoph Oelckers
59a08ce0df - fixed a few warnings and changed the return type of FGLTexture::Bind, because no caller needs the hardware texture. 2018-04-14 12:24:04 +02:00
Christoph Oelckers
ad021cc374 - fixed: Hardware camera textures were given a dimension of (0, 0). 2018-04-14 10:26:56 +02:00
Christoph Oelckers
221beec979 - added palette shader and fixed a few things. 2018-04-07 12:17:23 +02:00
Christoph Oelckers
b34d7f9e08 - added a software scene drawer to the GL renderer.
It still looks like shit and only works on the modern render path but at least the basics are working.
2018-04-07 10:20:59 +02:00
Christoph Oelckers
60aebff4a1 - starting separation of hardware dependent and hardware independent code, starting with aabbtree, because it was easy. 2018-04-02 15:58:28 +02:00
Christoph Oelckers
d01bc452ba - moved all variables not related to the hardware renderer's texture state out of gl_info. 2018-04-02 13:00:33 +02:00
Christoph Oelckers
0127a71974 - fixed last commit. 2018-04-01 17:16:53 +02:00
Christoph Oelckers
0ae371f3ce - moved gl_use_hires check back into material class and cleaned up the interface a bit.
The function is supposed to be a worker, nothing more and its result should only depend on its arguments.
2018-04-01 16:32:37 +02:00
Christoph Oelckers
8b79eedfea - moved CreateTexBuffer out of the GL code.
This is merely a buffer creation function with no dependencies on the renderer.
2018-04-01 14:38:48 +02:00
Christoph Oelckers
e49cd2cb83 - moved the hires replacement and upscaling code out of the GL classes into FTexture.
This theoretically means that the software renderer could access this data as well - if it just had been written with a more flexible texture interface.
However, as things stand, this may require quite a bit of work to achieve.
2018-04-01 10:41:04 +02:00
Christoph Oelckers
a9d5533603 - integrated GL parts of translation handling into the main module.
Now that this doesn't have to share assets with HW2D it could be simplified a lot.
2018-04-01 00:59:49 +02:00
Christoph Oelckers
bc485a7f2c - moved a large portion of gl_textures.cpp into the main files for the implementing classes.
The old organization made sense when ZDoom still was a thing but now it'd be better if all pure data with no dependence on renderer implementation details was moved out.
A separation between GL2 and GL3+4 renderers looks to be inevitable and the more data is out of the renderer when that happens, the better.
2018-03-31 19:20:59 +02:00
Christoph Oelckers
410d6817b2 - minor cleanup on the texture layer data in FTexture. 2018-03-31 12:27:41 +02:00
Christoph Oelckers
6d6196388e - made SPROFS a more usable feature.
This was originally invented to fix the sprite offsets for the hardware renderer.
Changed it so that it doesn't override the original offsets but acts as a second set.
A new CVAR has been added to allow controlling the behavior per renderer.
2018-03-31 10:37:46 +02:00
Christoph Oelckers
832df6d43a - implemented desaturation for the legacy GL renderer's 2D.
A lot of work that's only needed to be able to use the hardware renderer's 2D code with the software renderer.
2018-03-30 18:14:42 +02:00
Christoph Oelckers
e89a598b31 - renamed FTexture's UseType flags and gave them a dedicated type.
This was done mainly to reduce the amount of occurences of the word FTexture but it immediately helped detect two small and mostly harmless bugs that were found due to the stricter type checks.
2018-03-25 20:26:16 +02:00
Christoph Oelckers
0a07f4c144 - fixed alpha texture generation for OpenGL rendering.
The old logic used a translation table that does not work with color images, it was designed to handle 8 bit grayscale images.
So now, it creates a true color buffer and then turns it into a texture with R,G,B = 255 and the alpha channel set to the grayscale value.

This was also the reason why crosshairs made from 32 bit PNGs did not show correctly.
2018-03-22 23:57:14 +01:00
Christoph Oelckers
f4d9ad1123 - extended FTexture::GetPixels and FTexture::GetColumn by a RenderStyle parameter.
Now it is no longer necessary to provide specially set up textures for rendering shaded decals, they can use any PNG texture now that contains a proper red channel.
Handling of the alPh chunk has been removed as a result as it in no longer needed.
2018-03-18 21:33:44 +01:00
Magnus Norddahl
81c6808d2a - Add specular and normal map handling to main.fp 2018-01-23 23:10:28 +01:00
Magnus Norddahl
4dd2d789f4 - Rename mTextureEffects to mMaterialShaders to help distinguish between those and effect shaders (mEffectShaders)
- Add MaterialShaderIndex enum
2018-01-21 01:19:16 +01:00
Christoph Oelckers
0323f54384 - rename I_FPSTime function.
- now that the frame buffer stores its render time, the 'ms' return from I_GetTimeFrac is not needed anymore, we may just as well use the globally stored value instead.

The only feature this value was ever used for was texture warping.
2017-11-13 00:54:32 +01:00
Christoph Oelckers
cf1d94c9bb - fixed blood translation's alpha so that CreateTexBuffer can assume that all palette entries in translations are correct. 2017-06-18 09:23:56 +02:00
Christoph Oelckers
a1694a79c6 - removed the FGLBitmap class and replaced all uses with the regular FBitmap.
The only reason this ever existed is that the GL renderer used RGBA instead of BGRA but there's no reason why this is even necessary.
2017-06-18 09:14:33 +02:00
Christoph Oelckers
6760e01a0d - implemented the status bar's DrawString function and ported the fullscreen HUD part of the Strife status bar to use the new functionality. 2017-03-24 20:09:50 +01:00
Magnus Norddahl
0c9014b984 - move r_utility globals into r_viewpoint and r_viewwindow
- change r_utility functions to only work on FRenderViewpoint and FViewWindow
2017-03-11 23:28:07 +01:00
Christoph Oelckers
9b87a167d7 - replaced a large batch of DWORDs.
Most of those which still rely on ZDoom's own definition should be gone, unfortunately the code in files that include Windows headers is a gigantic mess with DWORDs being longs there intead of ints, so this needs to be done with care. DWORD should only remain where the Windows type is actually wanted.
2017-03-09 20:19:55 +01:00
Christoph Oelckers
32da1de385 - fixed: negative texture scales should not affect the direction a wall scrolls in. 2017-02-13 22:37:16 +01:00
Christoph Oelckers
82eae78f7e - fixed a small memory leak in the texture manager. 2017-02-03 13:11:55 +01:00
alexey.lysiuk
9ed2da176e Fixed signed/unsigned mismatch in comparisons
No more 'comparison of integers of different signs' warnings reported by GCC/Clang
2017-01-06 10:40:51 +01:00
ZZYZX
c845fc126a Enabled user shader for a cameratexture 2016-12-31 12:17:24 +01:00
Christoph Oelckers
a3070e8846 - fixed: FGLTexture::CreateTexBuffer needs to be more careful with setting the texture's translucency information.
First, if it has already been determined the value should be left alone and second, for translated textures the generated buffer is inconclusive so in that case it cannot be used at all.
2016-12-29 14:33:53 +01:00
Christoph Oelckers
8b6e09ca09 - changed the license of the OpenGL renderer to LGPL v3.
This was done to clean up the license and to ensure that any commercial fork of the engine has to obey the far stricter requirements concerning source distribution. The old license was compatible with GPLv2 whereas combining GPLv2 and LGPLv3 force a license upgrade to GPLv3. The license of code that originates from ZDoomGL has not been changed.
2016-09-14 20:01:13 +02:00
Christoph Oelckers
3389a5a74e - removed most of the specific options for legacy hardware and consolidated them in one variable (does not work yet.) 2016-09-01 11:52:52 +02:00
Magnus Norddahl
960038bb81 Clear global state tracking variables when the OpenGL context is (re)created 2016-08-26 01:36:21 +02:00
Magnus Norddahl
d380d765c9 OpenGL object labels and debug groups 2016-08-17 23:18:47 +02:00
Christoph Oelckers
0e14f00b51 - fixed caching of texture sampler state for old hardware.
- fixed handling of CLAMP_XY_NOMIP sampler mode. This cannot be lumped together with CLAMP_XY because it has different mipmap requirements.
2016-05-03 13:39:41 +02:00
Christoph Oelckers
942138b307 - undid some leftover texture state checks from the first attempt to handle this without sampler objects.
This code was written under the assumption that the glGenerateMipmap function does not exist. But all supported hardware has this function through the GL_EXT_framebuffer_object extension.
2016-05-03 11:27:52 +02:00
Christoph Oelckers
6f2b0a6293 - rewrote texture caching so that not the base texture but the actually used translations for sprites get precached. 2016-05-03 01:00:52 +02:00
alexey.lysiuk
4c4b97316e Fixed inconsistent texture wrapping
Sampler state needs to be reseted when hardware texture resources are released
2016-05-02 13:02:55 +03:00
Christoph Oelckers
24526f7da5 - made adjustments to floating point bounding boxes for nodes and changes to the WarpBuffer function. 2016-05-01 11:56:45 +02:00
Christoph Oelckers
e3fad118d2 - use the templated warp functions instead of the limited GZDoom 1.x version. gl_WarpBuffer has been removed. 2016-04-28 19:04:01 +02:00
Christoph Oelckers
9d71c91f01 - reenabled software warping for shader-less rendering. 2016-04-26 20:20:00 +02:00
Christoph Oelckers
913e3df7e3 - fixed display of alpha textures without shaders.
As it turned out, the translation's alpha channel was clobbered by the whole setup.
2016-04-26 19:11:32 +02:00
Christoph Oelckers
c786b65727 - allow the engine to run without sampler objects. This will create some overhead in the texture code, but that's still better than having to error out on those few systems where it may be an issue. 2016-04-22 19:54:51 +02:00