Commit graph

1606 commits

Author SHA1 Message Date
Christoph Oelckers
711a88bab3 - consolidated cycle_t and glcycle_t because aside from glcycle_t's ability to be deactivated when no profiling takes place they did exactly the same thing. 2018-04-01 13:24:03 +02:00
Christoph Oelckers
d6fedd36b1 - moved the Plane class to vectors.h and deleted gl_geometric.h 2018-04-01 12:43:23 +02:00
Christoph Oelckers
cd64655f97 - removed empty header gl_convert.h 2018-04-01 12:00:51 +02:00
Christoph Oelckers
1461059dae - moved contents of gl_templates.h to files outside of gl/ 2018-04-01 11:59:12 +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
5bdea6278c - removed RequireGLNodes from FRenderer interface.
It returned true for both renderers anyway.
2018-03-31 00:33:09 +02:00
Christoph Oelckers
6cd26dec01 - remove some dead code. 2018-03-31 00:25:15 +02:00
Christoph Oelckers
a001a5304d - removed the old software renderer framebuffers for Windows
This cannot be refactored with the old code still present and done properly both renderers should share what they can.
2018-03-30 23:18:25 +02:00
Christoph Oelckers
ff19627251 - fixed legacy version of color overlay to use the correct blend settings. 2018-03-30 21:34:04 +02:00
Christoph Oelckers
00c66f42d3 - made DTA_SpecialColormap work, both for GL3+ and GL2 render paths.
This will only be used for HUD sprites. At the moment it will ignore sprite translations, though, when running in OpenGL 2 legacy mode.
2018-03-30 21:14:49 +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
811d96e07e D3D 2D code refactored but not tested yet. 2018-03-29 23:21:25 +02:00
Christoph Oelckers
a40e085a46 - 2D drawer implementation complete for hardware renderer.
This also replaces DTA_ColormapStyle with proper implementations of its components. As implemented it was a very awkward mixture of various effects that already existed in a separate form. As a result of its implementation it required additional but completely redundant shader support which could be removed now. As a side effect of this change a new DTA_Desaturate option was added.
2018-03-29 16:21:21 +02:00
Christoph Oelckers
077df87704 - 2D code works in GL legacy mode.
Not tested yet with shaders.
2018-03-29 11:58:28 +02:00
Christoph Oelckers
fa6ba84094 - fixed untextured vertex order and removed some test code. 2018-03-29 00:38:31 +02:00
Christoph Oelckers
a253b15334 - more fixes. 2018-03-28 23:57:50 +02:00
Christoph Oelckers
3ca3193379 - fixed a few things, but still not working. 2018-03-28 23:42:06 +02:00
Christoph Oelckers
b194f2c466 - game starts, but no 2D visible yet. 2018-03-28 22:04:28 +02:00
Christoph Oelckers
70b6754299 - implemented the 2D drawer for the hardware renderer. Not tested yet. 2018-03-28 21:38:00 +02:00
Christoph Oelckers
16480a3f4b - it compiles again.
This won't work, though, because no backend for the new 2D code exists yet.
2018-03-28 16:40:09 +02:00
Christoph Oelckers
33289ade49 - renamed the 2D drawer in the GL renderer so that the same name can be used for the device-independent replacement. 2018-03-27 21:44:58 +02:00
Christoph Oelckers
29ad081368 - removed remaining DirectDraw code and a few other things that are no longer being used. 2018-03-27 21:04:01 +02:00
Christoph Oelckers
2ed744963c - Changed frame buffer locking mechanism so that the only place where a lock is needed is when the software renderer wants to access the render buffer, which is precisely for the duration of the RenderView function.
No more locking insanity! :)
There are no locking counters or other saveguards here that would complicate the implementation because there's precisely two places where this buffer must be locked - the RenderView functions of the regular and poly SW renderer which cannot be called recursively.
2018-03-27 20:02:44 +02:00
Christoph Oelckers
0c3635e22c - removed vid_hw2d CVar. 2018-03-27 17:58:25 +02:00
Christoph Oelckers
62f073ef60 - removed Accel2D variable and a little bit of locking cruft. 2018-03-27 17:13:10 +02:00
Christoph Oelckers
cff5f0e3c7 - removed DFrameBuffer's locking mechanism.
In its current form this is quite useless. What's really needed is to require a lock on the RenderBuffer for the 3D scene, but since this is not needed for the 2D stuff anymore it can be done far simpler.
2018-03-27 16:48:33 +02:00
Christoph Oelckers
c06ad5c59c - separated DFrameBuffer from DCanvas.
This was a bad idea from the start and really only made sense with DirectDraw.
These days a FrameBuffer represents an abstract hardware canvas that shares nothing with a software canvas so having these classes linked together makes things needlessly complicated.
The software render buffer is now a canvas object owned by the FrameBuffer.

Note that this commit deactivates a few things in the software renderer, but from the looks of it none of those will be needed anymore if we set OpenGL 2 as minimum target.
2018-03-27 14:14:46 +02:00
Christoph Oelckers
bb9283a9af - work on separating DFrameBuffer from DCanvas.
2D works in D3D backend, but 3D crashes because not all pointers have been rerouted yet.
2018-03-27 13:50:31 +02:00
Christoph Oelckers
1a28644d83 - cleaned out unused stuff from DCanvas.
- removed CocoaFrameBuffer because it is a software fallback which is no longer supported.
2018-03-27 11:25:06 +02:00
Christoph Oelckers
dd491d6558 - removed support for paletted Windows display modes.
This was only relevant for DirectDraw which has been removed.
2018-03-27 10:41:38 +02:00
Christoph Oelckers
a350c43c87 . removed the texture atlases from the OpenGLSWFrameBuffer.
# Conflicts:
#	src/gl/system/gl_swframebuffer.cpp
2018-03-26 22:05:45 +02:00
Christoph Oelckers
41a0e6af4a - removed the D3D texture atlas implementation.
This is a necessary first step for simplifying the texture handling in order to refactor it.

# Conflicts:
#	src/gl/system/gl_swframebuffer.cpp
#	src/textures/textures.h
#	src/win32/fb_d3d9.cpp
2018-03-26 22:05:35 +02:00
Christoph Oelckers
d9f6546c16 - removed Shader Model 1.4 support.
The only hardware ever to support this is ATI's R200 which has been deprecated by ATI before Vista got released, and is no longer a relevant target.
2018-03-26 22:03:33 +02:00
Christoph Oelckers
40bbe5cd8a - removed DirectDraw backend. 2018-03-26 22:03:32 +02:00
Christoph Oelckers
d166ab95a9 Revert "- fixed: 3D floor that extend into the real sector's floor were not clipped properly."
This reverts commit a33ad3c99e.

Turns out that this breaks legitimate maps. So I'd rather let that one broken map glitch than the good ones.
2018-03-26 19:44:41 +02:00
Christoph Oelckers
755cbd341b - fixed: A sprite having a picnum was not animating its image in the hardware renderer. 2018-03-25 22:01:18 +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
a33ad3c99e - fixed: 3D floor that extend into the real sector's floor were not clipped properly.
The only check being done on this was done after processing for the renderer which simply is too late.
2018-03-24 22:42:10 +01:00
Christoph Oelckers
7301001a3f - made the necessary adjustments to the HW2D interfaces to handle alpha textures properly.
These cannot be done with the regular textures so there needs to be an option to create more than one native texture per FTexture. For completeness' sake there is also the option now to create a paletted version of a texture if the regular one is true color. This fixes a long standing problem that translations were not applied to non-paletted textures.
2018-03-23 23:04:30 +01: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
d586d774cf - adjusted GL renderer to the new rules for alpha textures. This means that the translation fallback is only needed for the legacy renderer now. Modern GL can use the regular texture and will apply a grayscale mapping instead of merely using the red channel. 2018-03-22 20:42:17 +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
Christoph Oelckers
7e169eb76f - split out the span generation from most texture classes
Until now each subclass of FTexture had to implement the entire span generation itself, presumably so that a few classes can use simpler structures.
This does not work if a texture can have more than one pixel buffer as is needed for alpha textures.
Even though it means that some classes will allocate more data now, it's the only way to do it properly.
In addition this removes a significant amount of mostly redundant code from the texture classes.

- added alpha texture processing to all converted classes

As of now this is not active and not tested.
Note that as part of the conversion even those textures that were working as alphatextures will not look correct until the higher level code gets adjusted.
2018-03-18 12:36:14 +01:00
Christoph Oelckers
d2fa4d0ff9 - most stat stuff done. 2018-03-12 19:33:48 +01:00
Christoph Oelckers
b327aa737a Merge remote-tracking branch 'remotes/origin/materials' 2018-03-03 08:54:04 +01:00
Christoph Oelckers
bc25ad4136 - fixed a small logic error introduced by fixing the translucent particle sorting.
Due to an unintended swap of two values a few equal comparisons led to incorrect sorting.
2018-03-01 17:10:21 +01:00
Christoph Oelckers
685e5c1e95 - fixed: Camera textures must always be drawn with texture mode opaque, because the contents of their alpha channels are undefined. 2018-03-01 13:52:23 +01:00
Christoph Oelckers
b39cb4f095 - fixed translucemt sorting for particles.
At least on any semi-modern hardware. On old legacy hardware which lacks some important features this will still glitch.
2018-03-01 13:01:26 +01:00
Magnus Norddahl
48e534bf19 - Add per-pixel model light to the OpenGL 3.3 render path 2018-03-01 01:27:12 +01:00
Magnus Norddahl
6652df40c1 Merge remote-tracking branch 'gzdoom/master' into materials 2018-02-28 22:12:12 +01:00
Christoph Oelckers
e70250425a - fixed: For two-sided midtextures the light lists were always taken from the sector referenced by the rendered sidedef, not the sector in which the line gets renderered.
For polyobjects these two are not identical.
2018-02-28 13:15:04 +01:00
Rachael Alexanderson
07f168a58b - additional check for tween-tic particle rendering, prevents jitter with timefreeze powerup 2018-02-24 16:04:20 -05:00
Magnus Norddahl
57e66555da - Change the search paths for auto folders 2018-02-21 23:20:31 +01:00
Magnus Norddahl
05827ffcda - Implement auto textures for materials 2018-02-21 23:12:46 +01:00
Magnus Norddahl
4e7ca68bd6 Merge remote-tracking branch 'gzdoom/master' into materials 2018-02-20 00:22:06 +01:00
Magnus Norddahl
07fa310f23 - move material light modes to their own subshader lumps 2018-02-20 00:13:05 +01:00
Christoph Oelckers
6a02eaa595 - second part of texture fix. 2018-02-15 18:40:23 +01:00
Christoph Oelckers
ef55386d9f - let the texture manager handle the special OpenGL textures so that they get deleted and recreated when needed. 2018-02-15 17:56:04 +01:00
alexey.lysiuk
61979f63c1 Removed last remnants of PowerPC Mac support 2018-02-11 16:35:34 +02:00
Magnus Norddahl
e2cab652d0 - Improve the "#line 1" directive insertion so that errors in all the shaders use line numbers relative to the lump they are referring to 2018-02-10 14:46:43 +01:00
Magnus Norddahl
5528d4157b - Make uniform removal a little bit more robust by only searching for known legacy uniforms 2018-02-10 14:06:17 +01:00
Magnus Norddahl
f01ef3d7a7 - Remove uniforms from user shader code 2018-02-10 12:52:59 +01:00
Magnus Norddahl
94fbcacf22 Merge branch 'gzdoom' into materials 2018-02-10 00:08:17 +01:00
Magnus Norddahl
7cbe8669b6 - fix decals not getting lit by lights not having a target while still having the LF_DONTLIGHTSELF flag
- fix decal light not being calculated from the center of the decal
2018-02-10 00:06:47 +01:00
Magnus Norddahl
3207d8aef7 - generate uniform declarations from c++ 2018-02-09 23:29:31 +01:00
alexey.lysiuk
ed23008069 Fixed crash in stereoscopic modes caused by camera without player
https://forum.zdoom.org/viewtopic.php?t=55039&start=381#p1039251
2018-02-07 11:37:02 +02:00
Christoph Oelckers
64921ea968 - use a more consistent setting for rendering fuzzy sprites with enhanced nightvision on. 2018-01-28 20:46:16 +01:00
alexey.lysiuk
6003625721 Silenced quad stereo message during startup 2018-01-28 11:41:00 +02:00
alexey.lysiuk
577c6b033e Changed quad stereo mode restart notification
Restart requirement for quad stereo mode should be output to console because CVAR can be toggled directly from it
Long option names break menu layout on some aspect ratios like 16:10
2018-01-26 10:10:51 +02:00
Magnus Norddahl
30af6d38b3 - fix automap render bug 2018-01-25 20:22:51 +01:00
Magnus Norddahl
2c9a2e7170 - fix specular defaults to be a little more sane 2018-01-25 19:59:57 +01:00
Magnus Norddahl
7a59bcde4c - move glossiness and specular level to GLDEFS 2018-01-25 19:53:55 +01:00
Magnus Norddahl
0855418475 Merge branch 'gzdoom' into materials
# Conflicts:
#	src/gl/shaders/gl_shader.cpp
#	src/gl/shaders/gl_shader.h
2018-01-25 19:21:19 +01:00
Magnus Norddahl
a46bbc81a0 Merge branch 'bloom_psprite_fix' into gzdoom 2018-01-25 19:01:46 +01:00
Magnus Norddahl
4c0dce875f Merge branch 'fuzz_software' into gzdoom 2018-01-25 19:00:14 +01:00
Magnus Norddahl
81c6808d2a - Add specular and normal map handling to main.fp 2018-01-23 23:10:28 +01:00
Magnus Norddahl
c7ec489846 Merge remote-tracking branch 'origin/master' into materials 2018-01-23 20:16:32 +01:00
Christoph Oelckers
76d594f952 - reverted the hard offset for transferred skies.
This is not the correct way to apply it.
2018-01-21 19:25:21 +01:00
Christoph Oelckers
6438416adb - fixed: The culling mode for translucent models must be inverted when rendering a mirror. 2018-01-21 16:29:40 +01:00
Christoph Oelckers
e1d6f6f3b3 - fixed: precise rendering did not work anymore due to a missing reference operator in the setup function for the needed data. 2018-01-21 16:17:49 +01:00
Magnus Norddahl
0f69778e23 - Add new material shader entries for specular and PBR light modes 2018-01-21 01:53:44 +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
Magnus Norddahl
f3c55c01c8 Add material definition to GLDEFS 2018-01-20 16:28:24 +01:00
Magnus Norddahl
a23e5f49f6 - Add "fuzz software" to GL that renders fuzz like the scaled fuzz mode in the software renderer 2018-01-07 02:29:55 +01:00
Magnus Norddahl
56db2b02cc - Fix psprite not appearing when invulnerability effect is active with bloom turned on 2018-01-06 17:21:02 +01:00
Magnus Norddahl
f88d9a02df Remove bloom effect on psprites 2018-01-06 05:11:12 +01:00
Magnus Norddahl
79440d7014 - Fix sprite spot light calculation 2018-01-04 19:42:52 +01:00
Magnus Norddahl
bae3620540 - Added spot light support to gl_SetDynSpriteLight 2018-01-04 19:27:03 +01:00
Magnus Norddahl
f398286162 - Fix wrong spot direction 2018-01-04 19:09:12 +01:00
Magnus Norddahl
5f36b86013 - Add dynamic spot lights 2018-01-04 17:58:11 +01:00
Rachael Alexanderson
6aa724a9b4 - add 'gl_riskymodernpath' for computers that worked before the GL >= 3.3 modern path enforcement, since some did, but they seemed to be the exception rather than the rule. 2018-01-03 21:46:04 -05:00
alexey.lysiuk
2c4eae7487 Applied vertical offset to transferred sky in OpenGL renderer
https://forum.zdoom.org/viewtopic.php?t=58934
2017-12-31 21:29:27 +02:00
alexey.lysiuk
33213f5d5d Fixed rendering of wrapped midtex with sky ceiling
https://forum.zdoom.org/viewtopic.php?t=58311
2017-12-29 14:37:09 +02:00
Rachael Alexanderson
a441cea350 - interpolate particles 2017-12-28 11:36:36 -05:00
alexey.lysiuk
8ca3427850 Fixed applying of Doom 64 lighting to horizon portals
https://forum.zdoom.org/viewtopic.php?t=58878
2017-12-28 18:32:26 +02:00
Christopher Bruns
a3399c1af2 Fix: Bind the default framebuffer before testing whether hardware stereo 3D is supported. This allows Nvidia 3D vision glasses to function correctly when gl_light_shadowmap is ON.
Doc: Add "requires restart" to "enable quad stereo" option menu label, to help folks trying to setup 3D.
2017-12-27 17:50:53 -05:00