Commit graph

560 commits

Author SHA1 Message Date
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
Christoph Oelckers
e6ce429ca5 - fixed alpha for hardware rendered weapon sprites in the software renderer. 2018-04-08 20:40:29 +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
Magnus Norddahl
1a5f679d43 - Fix depth values when screenblocks less than 11 2018-04-08 13:45:23 +02:00
Magnus Norddahl
b1355d472c - Fix model projection matrix 2018-04-08 03:57:05 +02:00
Magnus Norddahl
7f25913b2d - Fix depth values written by sloped planes 2018-04-08 02:22:01 +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
Christoph Oelckers
adbeb3f251 Merge remote-tracking branch 'remotes/origin/master' into 2D_Refactor 2018-04-07 18:50:24 +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
Magnus Norddahl
b1d33d1bba - Fix mid texture rendering for self-referencing sector lines 2018-04-05 01:40:58 +02:00
Christoph Oelckers
d474b849a5 - removed the remaining calls from the FRenderer interface from the main game code.
This does not work with a setup where the same backend is driving both renderers.
Most of this is now routed through 'screen', and the decision between renderers has to be made inside the actual render functions.
The software renderer is still driven by a thin opaque interface to keep it mostly an isolated module.
2018-04-04 00:21:25 +02:00
Christoph Oelckers
fcc33f0a09 - moved around more stuff from the FRenderer interface. 2018-04-03 22:50:47 +02:00
Christoph Oelckers
91813ec43d - moved part of the fade init for LEVEL_HASFADETABLE to the common colormap initialization to have all of it in one place.
Otherwise this is easily overlooked when changing things later and potentially causing problems.
2018-04-03 20:55:36 +02:00
Christoph Oelckers
9ba32cb994 - with the new order of things we need the software renderer to be always available. 2018-04-03 20:14:26 +02:00
Christoph Oelckers
51bf2eb9fa - took GetMaxViewPitch out of renderer interfaces.
With live switching and both renderers on the same backend the old approach will no longer work.
2018-04-03 19:18:16 +02:00
Christoph Oelckers
942460ba55 - changed voxel remapping to make a copy instead of destroying the original.
With live renderer switching both sets of data are needed.
2018-04-03 00:30:02 +02:00
Christoph Oelckers
d84554f093 - deleting some unused stuff 2018-04-02 00:28:25 +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
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
1e5fbc1423 Merge remote-tracking branch 'remotes/origin/master' into 2D_Refactor
# Conflicts:
#	src/posix/cocoa/i_video.mm
2018-03-30 22:06:17 +02:00
alexey.lysiuk
709bbe3db0 Fixed crash on accessing player sprite's state in software renderer
https://forum.zdoom.org/viewtopic.php?t=60034
2018-03-30 16:40:31 +03: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
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
ba799aebbd - moved locking logic from DCanvas to DFrameBuffer.
The software canvases used for rendering camera textures and save pictures in the software renderer do not need this.
2018-03-27 11:12:13 +02:00
Christoph Oelckers
ded21cba8e - moved more code from DCanvas to DFrameBuffer. 2018-03-27 10:34:21 +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
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
5fa63c396d - sound code and most of texture code converted to FileRdr.
This allowed to remove a lot of bad pointer voodoo in the music loader, because the new class does not allow duplication of the reader object
2018-03-10 18:45:11 +01:00
Magnus Norddahl
2589447d0e - fixed midtex nowrap clipping bug when 3d floors are in view
- made sure no code uses sclipTop or sclipBottom as a working variable
2018-03-09 01:30:47 +01: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
a55be25a9d - add const qualifier on top/bottom clip arrays usage 2018-03-08 00:55:37 +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
Rachael Alexanderson
a441cea350 - interpolate particles 2017-12-28 11:36:36 -05:00
alexey.lysiuk
5162e7162e Fixed overbright screenshots with hardware gamma off
When render buffers are used to apply gamma/brightness/contrast screenshots should not use PNG gamma correction
2017-12-06 11:24:10 +02: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
b621dccb9c - Improve weapon hud model in the software renderer 2017-11-29 00:33:37 +01:00
Magnus Norddahl
d43ac8b9ae - Add model rendering to the software renderer 2017-11-27 23:47:26 +01:00
Rachael Alexanderson
fd5b8cdbf7 Merge remote-tracking branch 'origin/master' into newtimercode4
# Conflicts:
#	src/gl/models/gl_models.cpp
2017-11-23 21:08:09 -05:00
Magnus Norddahl
4e4f94db2f - Implement newer scaled fuzz in softpoly's truecolor non-sse drawer 2017-11-22 06:32:55 +01:00
Rachael Alexanderson
495fc79fe9 - added dpJudas's drawer fix for the upscaled fuzz drawing 2017-11-21 05:26:46 -05:00
Christoph Oelckers
2c65f08011 - more timer cleanup
* store the frame time in the current screen buffer from where all render code can access it.
* replace some uses of I_MSTime with I_FPSTime, because they should not use a per-frame timer. The only one left is the wipe code but even this doesn't look like it needs either a per-frame timer or a timer counting from the start of the playsim.
2017-11-13 00:28:43 +01:00
Christoph Oelckers
e94109f1c3 - Inside the renderer, use only the time value being passed to RenderView.
The voxel rotation code of the software renderer and R_SetupFrame still called I_FPSTime directly.
2017-11-12 23:53:46 +01:00
Christoph Oelckers
93e9c383fa - get the timer used for animation only once at the very beginning of the frame and pass it on to the renderer to avoid any dependencies on the timer's implementation. 2017-11-12 18:51:11 +01:00
Christoph Oelckers
6bd76d6b5a - fixed compilation in debug mode.
- moved timer definitions into their own header/source files. d_main is not the right place for this.
- removed some leftover cruft from the old timer code.
2017-11-12 09:06:40 +01:00
Magnus Norddahl
307d8931d8 - Switch to C++11 steady clock
- Move the C++11 implementation to d_main
- Remove the platform specific timer implementations
2017-11-12 03:12:22 +01:00
Rachael Alexanderson
e6b6cb354b - fixed: playersprite in the classic software renderer was acting oddly with a forced aspect ratio, similar to the bug fixed in ac566f4 2017-09-16 16:09:00 -04:00
Rachael Alexanderson
72054fb5e2 - implemented pixelratio for the classic software renderer 2017-09-16 05:26:18 -04:00
nashmuhandes
f96f71044f Change camera texture FOV to doubles. 2017-09-02 07:44:38 +02:00
Magnus Norddahl
77faab5a75 - Fixed overflow for precise blend mode 2017-08-29 19:25:05 +02:00
Rachael Alexanderson
1cddd1efaf - RFF_UNCLIPPEDTEX is no longer supported in SoftPoly. 2017-08-18 23:04:11 -04:00
Rachael Alexanderson
b8ab626609 - add sloped 3D floor support to the poly renderer's GetCaps() 2017-08-18 18:33:19 -04:00
Rachael Alexanderson
eb425f206a - In software rendering, lights now check if they are too far above or below a certain plane before rendering. An example of this is in unloved.pk3 where in map02, some lights are above the ceiling. 2017-08-18 18:14:43 -04:00
Magnus Norddahl
dd6e0b63f2 - Fix typo in pal drawers that caused rendering errors for non-64x64 flats 2017-08-18 21:12:44 +02: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
c07a4461a0 - fixed: GetCaps() did not account for r_drawvoxels cvar 2017-07-30 10:45:05 -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
Rachael Alexanderson
8bb5687159 - Implemented GetCaps() for the software renderer
- fixed: Forgot to describe Brightmap capability in the GL Renderer
2017-07-29 17:03:43 -04:00
Rachael Alexanderson
28af2fe66b - maxviewpitch now affects the 2.5D software renderer 2017-07-24 10:33:44 -04:00
Magnus Norddahl
1ce3b4c79c - Fix dynamic light clamping issue in truecolor drawers 2017-07-23 23:45:43 +02:00
Magnus Norddahl
bf4d7234e1 - Increase MAXWIDTH and MAXHEIGHT defines to support supersampled 5K monitors 2017-07-23 22:04:00 +02:00
Rachael Alexanderson
a958d2ad72 - fixed pixel centering for unaccelerated player sprites 2017-07-22 08:01:27 -04:00
Magnus Norddahl
8311a18282 - Fix plane pixel center sampling bug 2017-07-22 12:29:46 +02:00
Magnus Norddahl
3ff021608d - Fix pixel center sampling bug in SWCanvas::DrawTexture 2017-07-22 10:40:30 +02:00
Magnus Norddahl
ebd20daed8 - Fix wall texture sampling to be done at pixel centers 2017-07-22 01:45:06 +02:00
Magnus Norddahl
5be74890b7 - Fix missing pixels on walls in palette mode for npot2 textures 2017-07-21 22:48:44 +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
Rachael Alexanderson
25900031f5 Merge https://github.com/coelckers/gzdoom 2017-07-11 06:22:51 -04:00
Rachael Alexanderson
25ab31e92c - corrected transferred sky offsets using ZDoom 2.8.1 source - the sky needed to be offset by 28 units. 2017-07-11 05:53:21 -04:00
Rachael Alexanderson
e1b4bb11ba Merge https://github.com/coelckers/gzdoom 2017-07-09 20:09:12 -04:00
Magnus Norddahl
ddd1b629c3 - Calculate globvis/r_visibility in r_utility and use it in GL and poly renderers 2017-07-09 19:01:34 +02:00
Rachael Alexanderson
6a402c28d8 Merge https://github.com/coelckers/gzdoom 2017-07-02 16:36:46 -04:00
Rachael Alexanderson
aa2a39da19 Revert "- Remove r_sprite_distance_cull"
This reverts commit 44546ce16a.
2017-07-02 16:35:40 -04:00
Magnus Norddahl
205350e726 - Fix sprites behind midtextures unrender when near voxel 2017-07-02 20:09:46 +02:00
Magnus Norddahl
6d8281c812 - Fix voxel clipping for r_scene_multithreaded 2017-07-02 18:22:28 +02:00
Magnus Norddahl
4545539045 - Add polyobj support to r_scene_multithreaded 2017-07-02 17:22:59 +02:00
Magnus Norddahl
adcc7588ec - Make it more clear what bFakeBoundary did 2017-07-02 15:35:29 +02:00
Magnus Norddahl
efb1a8d113 - Don't add 3D floor dummy draw segments to the list 2017-07-02 14:46:19 +02:00
Magnus Norddahl
e19c8eba62 - Switch sprite drawing to use the interesting draw segments list
- Stop adding 3D floor "fake" draw segments to the interesting segments list
- Rename InterestingSegments list to TranslucentSegments
2017-07-01 23:55:41 +02:00