Commit graph

246 commits

Author SHA1 Message Date
Christoph Oelckers
1967165633 - move view and projection matrices to DrawInfo. 2018-06-21 21:02:14 +02:00
Christoph Oelckers
753cd0aede - made R_SetViewAngle a member of r_viewpoint 2018-06-19 17:44:11 +02:00
Magnus Norddahl
bce49ad7c8 - fix Software models don't display over nonexistent sprites 2018-06-17 14:56:34 +02:00
Magnus Norddahl
de67393b4e - use the worker threads to clear the stencil buffer 2018-06-10 12:42:19 +02:00
Magnus Norddahl
85f5f897d7 - enable model rendering in the software renderer 2018-06-09 12:29:33 +02:00
Magnus Norddahl
b74a9965b8 - draw models in mirrors and portals at the right location in the software renderer 2018-06-05 19:36:57 +02:00
Magnus Norddahl
a186677092 - removed the 8x8 block drawing code from softpoly 2018-06-03 01:44:56 +02:00
Magnus Norddahl
31abe3df7e - 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
2018-05-21 17:52:03 +02:00
Magnus Norddahl
643828f5fa - move 3d floor code into functions 2018-05-11 17:00:12 +02:00
Magnus Norddahl
e4d740e586 - more pointless complexity removal 2018-05-11 14:27:09 +02:00
Magnus Norddahl
acf9f55849 - remove pointless code 2018-05-11 13:29:24 +02:00
Magnus Norddahl
459f748c4e - added r_debug_draw that shows how the software renderer composes its scene 2018-05-08 22:22:15 +02:00
Magnus Norddahl
1d929dd79b - fix translucent walls when r_models is enabled 2018-05-06 02:54:03 +02:00
Christoph Oelckers
9bdb0f2e49 - 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.
2018-05-01 11:29:29 +02:00
Christoph Oelckers
f49c6cbde2 - 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.
2018-05-01 09:47:09 +02:00
Magnus Norddahl
d10aa10889 - fix missing psprite when camera textures are in view 2018-04-15 17:16:13 +02:00
Magnus Norddahl
ee443b6fb6 - disable software models 2018-04-14 22:22:40 +02:00
Magnus Norddahl
c3bd93a85c Merge remote-tracking branch 'gzdoom/master' into swmodels 2018-04-14 21:20:05 +02:00
Christoph Oelckers
870890d8cf - r_clearcolor did not consider that the base palette's alpha is not set. 2018-04-14 09:33:45 +02:00
Christoph Oelckers
cef6ddca6e - fixed: Rendering to a camera textures clobbered the main render target for the software renderer. 2018-04-14 08:09:40 +02:00
Magnus Norddahl
915f8862a7 - Remove code that seemingly doesn't do anything and really shouldn't be needed 2018-04-13 21:56:34 +02:00
Magnus Norddahl
7e544c66fe Merge remote-tracking branch 'gzdoom/master' into swmodels 2018-04-13 21:35:21 +02:00
Magnus Norddahl
c4768441b4 - Fix playersprite offset being wrong in softpoly
- Remove DFrameBuffer::GetCanvas as it always returned null
2018-04-08 15:49:06 +02:00
Christoph Oelckers
df4f435952 - merged vid_renderer, swtruecolor and r_polyrender into one CVAR to reduce menu clutter.
- with renderers freely switchable, some shortcuts in the 3D floor code had to be removed, because now the hardware renderer can get FF_THISINSIDE-flagged 3D floors.
- 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.
2018-04-07 23:30:28 +02:00
Magnus Norddahl
2d51fa5b43 - Clean up PolyTriangleDrawer API so that it can better support both softpoly and the swrenderer
- Slightly improve how softpoly processes portals
- Pass the vertex transform matrix via a command rather than being part of the drawer args
- Improve zbuffer drawers in the software renderer
- Misc model rendering fixes
2018-04-07 15:48:48 +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
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
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
d650e37497 - stripped out the entire software 2D renderer and moved all 2D drawing functions to DFrameBuffer so that they cannot be used with software DSimpleCanvas anymore. 2018-03-26 23:16:27 +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
Magnus Norddahl
6ab58e56ad - fix simplify code slightly 2018-03-08 04:25:27 +01:00
Magnus Norddahl
71623198d2 - remove fake3D with structs and localize their usage instead of sharing global state 2018-03-08 04:05:35 +01:00
Magnus Norddahl
7cb4deabdd - get rid of FAKE3D_REFRESHCLIP and fix holes in 3d floors with wrapped midtextures 2018-03-08 01:28:23 +01:00
Magnus Norddahl
a8b79a28c8 - Disable model rendering in the software renderer 2017-11-29 22:18:21 +01:00
Magnus Norddahl
8cad912db1 - Add r_model_distance_cull to control when models turn into sprites 2017-11-29 01:09:26 +01:00
Magnus Norddahl
d43ac8b9ae - Add model rendering to the software renderer 2017-11-27 23:47:26 +01:00
alexey.lysiuk
eb52088487 Fixed compilation warnings reported by Clang
src/gl/scene/gl_sprite.cpp:685:34: warning: '&&' within '||' [-Wlogical-op-parentheses]
src/polyrenderer/scene/poly_sprite.cpp:297:34: warning: '&&' within '||' [-Wlogical-op-parentheses]
src/swrenderer/scene/r_opaque_pass.cpp:975:35: warning: '&&' within '||' [-Wlogical-op-parentheses]
src/sound/mididevices/music_timiditypp_mididevice.cpp:548:30: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
2017-08-13 16:42:08 +03:00
Rachael Alexanderson
8dff91915a - remove vestigial version.h include from r_portal.cpp. This should stop r_all.o from compiling every single commit. 2017-07-31 11:12:08 -04:00
Rachael Alexanderson
b6c15b997a - added 'r_debug_disable_vis_filter' cvar for debug purposes, to show all objects regardless of their actor filter fields. 2017-07-29 17:03:43 -04:00
Rachael Alexanderson
91ff447a90 - fixed compile from last commit
- refactored the zscript hookup a bit, made it actually work
2017-07-29 17:03:43 -04:00
Rachael Alexanderson
712d21e26a - implement per-renderer sprite hiding based on the actor's render feature flags
- hook the thing up to zscript (does not currently compile)
2017-07-29 17:03:43 -04:00
Magnus Norddahl
bf4d7234e1 - Increase MAXWIDTH and MAXHEIGHT defines to support supersampled 5K monitors 2017-07-23 22:04:00 +02:00
Christoph Oelckers
ffc529d100 - let r_*_cull variables default to 0. 2017-07-20 14:23:45 +02:00
Magnus Norddahl
c38d0c1637 Merge branch 'line_distance_cull' into qzdoom
# Conflicts:
#	src/swrenderer/scene/r_opaque_pass.cpp
2017-07-12 07:11:43 +02:00
Magnus Norddahl
7d1de667be - Added r_line_distance_cull cvar that culls lines beyond the specified distance 2017-07-12 06:56:34 +02:00