Commit graph

1539 commits

Author SHA1 Message Date
Magnus Norddahl
01332a1bde - add dynamic lights to softpoly and software renderer models
(cherry picked from commit 5464d2a577)

# Conflicts:
#	src/gl/scene/gl_spritelight.cpp
2018-06-06 08:49:08 +02:00
Marisa Kirisame
1afcd9b7c7 Mirroring should be flipped on HUD models since the view to world space transform already inverts one axis
(cherry picked from commit f74e74ac4b)
2018-06-03 19:51:45 +02:00
Marisa Kirisame
5a76623993 Swap front face culling for GL model drawer (CCW should be the default).
Added mirroring handling to software models.

(cherry picked from commit dea1d0259d)
2018-06-03 19:49:48 +02:00
Christoph Oelckers
ea752bde90 - fixed: The translucent border draw list must be rendered with depth writing active.
This gets exclusively used by portal borders which means that for walls the setting is irrelevant but for flats it is needed to cover the portal surface so that translucent parts of the outer scene do not bleed through.

(cherry picked from commit d0aacd3ba8)

# Conflicts:
#	src/gl/scene/gl_scene.cpp
2018-06-03 01:22:56 +02:00
Christoph Oelckers
ff5c488a0f - pass mirroring info to model drawers.
Actual evaluation only implemented in OpenGL. Not tested yet because the bug report had no testable example.

(cherry picked from commit 94d1a73ae8)
2018-06-02 21:31:23 +02:00
Magnus Norddahl
8de520e9e1 - avoid reusing the same mVBuf pointer for the different renderers as that causes too many problems when switching between them
- remove gl_ prefix for model functions that are no longer GL specific

(cherry picked from commit 31abe3df7e)

# Conflicts:
#	src/gl/models/gl_models.h
#	src/gl/scene/gl_scene.cpp
#	src/hwrenderer/scene/hw_sprites.cpp
#	src/hwrenderer/scene/hw_weapon.cpp
#	src/hwrenderer/textures/hw_precache.cpp
2018-05-24 10:25:05 +02:00
Christoph Oelckers
b0531c7293 - disable shader storage blocks if none get reported for vertex shaders.
(cherry picked from commit 3069b53804)
2018-05-20 11:20:11 +02:00
drfrag666
cc397295b6 - Fixed bad merge of "- some Transfer_Heights related optimizations". 2018-05-14 23:44:33 +02:00
Magnus Norddahl
07b067c218 - GetTimeFloat is not renderer specific
(cherry picked from commit 49c9de350f)
2018-05-10 21:53:31 +02:00
alexey.lysiuk
21ce592771 - skip rendering when application is not active
Use vid_activeinbackground CVAR to override this behavior

(cherry picked from commit 2be84dc636)

# Conflicts:
#	src/gl/system/gl_framebuffer.cpp
#	src/posix/cocoa/i_video.mm
#	src/posix/sdl/gl_sysfb.h
#	src/posix/sdl/sdlglvideo.cpp
#	src/win32/gl_sysfb.h
#	src/win32/win32gliface.cpp
2018-05-10 21:16:38 +02:00
Christoph Oelckers
7b822807de - renamed the flag bits for sector_t::MoreFlags, so that they are easier to distinguish from sector_t::Flags.
- precalculate if a sector's floor and ceiling plane overlap. This avoids rechecking this for each single call of hw_FakeFlat.
- vertices must be marked dirty every time they change after map setup. That means that ChangePlaneTexZ must do this as well, because it cannot rely on interpolation taking care of it.
- Having a 'dirty' argument for SetPlaneTexZ's ZScript version makes no sense. If the value changes from the script side the vertices must always be marked to be recalculated.

(cherry picked from commit 9bdb0f2e49)
2018-05-10 19:49:02 +02:00
Christoph Oelckers
8a3a293bf8 - use sector_t::GetHeightSec consistently and optimize it.
This was all over the place, with half of it using the function and half doing incomplete checks on the underlying variables.
Also did some optimization on the IGNOREHEIGHTSEC flag: Putting it on the destination sector instead of the model sector makes the check even simpler and allows to precalculate the effect of 3D floors on the heightsec, which previously had to be run on every call and made the function too complex for inlining.

(cherry picked from commit f49c6cbde2)

# Conflicts:
#	src/gl/renderer/gl_renderer.cpp
#	src/hwrenderer/scene/hw_sprites.cpp
2018-05-10 19:20:11 +02:00
Christoph Oelckers
e5aca6dfa4 - some Transfer_Heights related optimizations.
* only call hw_CheckViewArea if the result is not known yet.
* check the map up front if it even contains heightsecs. This allows to shortcut the above check entirely for maps without sector transfers and will allow further optimizations.

(cherry picked from commit 3c49804c6c)

# Conflicts:
#	src/gl/scene/gl_bsp.cpp
#	src/gl/scene/gl_fakeflat.cpp
#	src/hwrenderer/scene/hw_fakeflat.h
2018-05-10 18:37:20 +02:00
drfrag666
f0542852e6 - Removed some not needed version.h includes. 2018-05-10 13:38:21 +02:00
drfrag666
8d45611cab - changed handling of attenuated lights in the legacy renderer to be adjusted when being rendered instead of when being spawned. For the software renderer the light needs to retain its original values.
(patch by Graf)
2018-05-09 14:57:13 +02:00
Christoph Oelckers
40ac98fa21 - fixed: Rendering a translucent mid texture did not unset the render style for the following bottom texture.
With additive translucency and non-black fog this caused visual errors.

(cherry picked from commit 515323dcbd)
2018-05-09 11:37:35 +02:00
drfrag666
0c38c72ad7 - Some cleanup. 2018-04-27 22:00:31 +02:00
drfrag666
2a41088fb6 - Partially reverted Blzut3's patch to gl_framebuffer.h. It was no longer applicable. 2018-04-22 14:22:17 +02:00
drfrag666
799e623377 - Fixed compilation with gcc 5.1. (patch by Graf) 2018-04-22 11:55:36 +02:00
drfrag666
354388f224 - Missing formatting macro definitions for MinGW. 2018-04-22 11:49:10 +02:00
drfrag
9727484190 - Applied Blzut3's patches to compile with MinGW. 2018-04-22 10:08:00 +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