Commit graph

1542 commits

Author SHA1 Message Date
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