Commit graph

60 commits

Author SHA1 Message Date
Magnus Norddahl
a7d06ddd77 Add texturing to triangle drawer 2016-10-30 08:18:55 +01:00
Magnus Norddahl
4ccb69fa61 Palette version of sky drawers 2016-10-19 23:21:09 +02:00
Magnus Norddahl
d5865a46a0 Move triangle drawer into a command and change the sky code to use it if r_cubesky is enabled 2016-10-19 17:44:50 +02:00
Magnus Norddahl
af937366d1 Added DetectRangeError function 2016-10-17 12:36:01 +02:00
Magnus Norddahl
491a4e28c0 Move true color sky drawing to its own drawers and chamge r_stretchsky to false as the new drawers can fade to a solid color 2016-10-15 15:04:14 +02:00
Magnus Norddahl
366d494b18 Merged R_DrawMaskedColumnHoriz into R_DrawMaskedColumn 2016-10-14 08:33:59 +02:00
raa-eruanna
004c7de89b Part 1 of code merge 2016-09-14 04:03:39 -04:00
Magnus Norddahl
7705463966 Improved linear filtering of walls
Fixed some crash bugs
Added mipmap and filtering options to the display menu
2016-06-25 10:33:35 +02:00
Magnus Norddahl
8ec420a597 Added support for more texture filtering control 2016-06-24 19:05:04 +02:00
Magnus Norddahl
698b5f3db1 Simplify drawer code by creating loop iterators
Fixed blending bug
2016-06-24 11:37:51 +02:00
Magnus Norddahl
7a0c801a18 Added mipmapping to wallscan 2016-06-22 08:23:16 +02:00
Magnus Norddahl
e294906d69 Voxel support in true color mode 2016-06-22 00:22:06 +02:00
Magnus Norddahl
d15af1524c Added mipmap support for floor and ceiling 2016-06-21 09:38:47 +02:00
Magnus Norddahl
c70aa1fe99 Added bilinear filtering 2016-06-20 08:24:02 +02:00
Magnus Norddahl
f53e468f3f Fixed fill column rgba drawers 2016-06-17 12:38:00 +02:00
Magnus Norddahl
77c4786b9d Minor code cleanup 2016-06-14 23:05:20 +02:00
Magnus Norddahl
69b2fa72e8 Moved RGBA draw stuff to its own header file 2016-06-13 23:10:54 +02:00
Magnus Norddahl
0f0859b0b2 Special colormap support for when no hw accel is available 2016-06-12 22:54:23 +02:00
Magnus Norddahl
42efc7334e Fix missing particles in true color mode 2016-06-12 00:50:43 +02:00
Magnus Norddahl
07571da98c Improved how threaded rendering is handled 2016-06-10 18:43:49 +02:00
Magnus Norddahl
27156eb60a Linux compile fixes and missing variable declarations 2016-06-10 16:32:47 +02:00
Magnus Norddahl
103a6baac5 Support for drawing in multiple passes 2016-06-10 15:57:31 +02:00
Magnus Norddahl
05b6fe6174 Added true color texture support for walls and floors 2016-06-10 13:50:34 +02:00
Magnus Norddahl
c452d02573 Added multicore rendering to true color drawers 2016-06-07 15:25:11 +02:00
Magnus Norddahl
c5fcfb664f Changed rgba renderer to use a command queue system for its drawers 2016-06-07 00:55:52 +02:00
Magnus Norddahl
0c8c9e0aea Added FDynamicColormap support to true color mode 2016-06-05 14:08:03 +02:00
Magnus Norddahl
373b59b94f Fix dovline4 being a define on X64_ASM 2016-06-03 14:06:44 +02:00
Magnus Norddahl
6160675e08 Added a few more SSE drawers 2016-06-03 12:42:08 +02:00
Magnus Norddahl
7142faf41d Minor compile error fixes when X86_ASM is defined 2016-06-02 21:39:44 +02:00
Magnus Norddahl
47f32d03cd Fixed some light and blending functions for the true color mode 2016-06-02 14:49:03 +02:00
Magnus Norddahl
e929eec80f Make x86 asm aware of swtruecolor 2016-06-01 05:28:14 +02:00
Magnus Norddahl
045bad1b52 Removed the need for the pixel_canvas_t typedef 2016-05-31 05:31:32 +02:00
Magnus Norddahl
20b7743ec3 Added R_SetColorMapLight and R_SetDSColorMapLight 2016-05-31 01:49:39 +02:00
Magnus Norddahl
8aabc26cd9 Created standalone rgba drawing functions 2016-05-30 05:52:15 +02:00
Magnus Norddahl
6e53c1bd12 Change render target output from PAL8 to BGRA8 2016-05-28 20:40:33 +02:00
Randy Heit
f1b3f59bcc Renderer floatification: Use floating point for wall scale and yrepeat 2016-04-22 23:12:53 -05:00
Randy Heit
3ef5a678d5 Renderer floatification: Use floating point for texturemids and Y scales 2016-04-22 23:12:53 -05:00
Christoph Oelckers
db86385cf6 - removed STACK_ARGS.
The only reason this even existed was that ZDoom's original VC projects used __fastcall. The CMake generated project do not, they stick to __cdecl.
Since no performance gain can be seen by using __fastcall the best course of action is to just remove all traces of it from the source and forget that it ever existed.
2016-04-11 10:46:30 +02:00
Christoph Oelckers
1eb106e2c5 - floatification of some alpha parameters. 2016-03-22 13:35:16 +01:00
Randy Heit
55142078d8 Normalize line endings 2016-03-01 09:47:10 -06:00
Randy Heit
e2a018227f - Added additive blending for floors and ceilings.
SVN r3813 (trunk)
2012-08-09 04:31:31 +00:00
Christoph Oelckers
03177090c0 - removed some unnecessary r_ header #includes.
SVN r3257 (trunk)
2011-07-06 10:55:04 +00:00
Christoph Oelckers
5bf6398d85 - moved render style and border drawing code out of r_draw.cpp.
SVN r3251 (trunk)
2011-07-05 20:41:53 +00:00
Christoph Oelckers
17ed7aaabd - moved the code from r_data.cpp to some better fitting places and deleted this file and r_data.h because the remaining parts of it were just a random collection of unrelated functions.
SVN r3248 (trunk)
2011-07-05 10:02:38 +00:00
Randy Heit
d642c5b1b0 - Fixed: Building with NOASM defined no longer worked, because the DrawSlab routines in a.asm conflicted with the ones in r_draw.cpp.
SVN r3194 (trunk)
2011-05-08 04:28:45 +00:00
Randy Heit
2add3fb381 - Merge voxels back into trunk. Even if it needs further tweaking, it should at least be stable now.
SVN r3086 (trunk)
2011-01-02 18:02:27 +00:00
Christoph Oelckers
9a4abe0915 - merged automap branch into trunk.
SVN r2609 (trunk)
2010-08-27 15:20:05 +00:00
Randy Heit
c66f237873 - Added per-tier texture scaling with these new UDMF sidedef properties:
* scalex_top
  * scaley_top
  * scalex_mid
  * scaley_mid
  * scalex_bottom
  * scalex_bottom
- Added sidedef versions of the linedef flags wrapmidtex and clipmidtex (via
  UDMF; names are the same). If the flag is set on the line, it applies to
  both sides. Otherwise, each side can control them individually.


SVN r1645 (trunk)
2009-06-07 01:14:14 +00:00
Christoph Oelckers
760f70d3f1 - Changed compilation for g_doom, g_heretic, g_hexen and g_strife folders
so that all files are included by a central one instead of compiling 
  each one separately. This speeds up the compilation process by 25%
  when doing a complete rebuild in Visual C.
- Cleaned up more header dependencies.

SVN r1226 (trunk)
2008-09-15 14:11:05 +00:00
Randy Heit
dda5ddd3c2 - Ported vlinetallasm4 to AMD64 assembly. Even with the increased number of
registers AMD64 provides, this routine still needs to be written as self-
  modifying code for maximum performance. The additional registers do allow
  for further optimization over the x86 version by allowing all four pixels
  to be in flight at the same time. The end result is that AMD64 ASM is about
  2.18 times faster than AMD64 C and about 1.06 times faster than x86 ASM.
  (For further comparison, AMD64 C and x86 C are practically the same for
  this function.) Should I port any more assembly to AMD64, mvlineasm4 is the
  most likely candidate, but it's not used enough at this point to bother.
  Also, this may or may not work with Linux at the moment, since it doesn't
  have the eh_handler metadata. Win64 is easier, since I just need to
  structure the function prologue and epilogue properly and use some
  assembler directives/macros to automatically generate the metadata. And
  that brings up another point: You need YASM to assemble the AMD64 code,
  because NASM doesn't support the Win64 metadata directives.
- Added an SSE version of DoBlending. This is strictly C intrinsics.
  VC++ still throws around unneccessary register moves. GCC seems to be
  pretty close to optimal, requiring only about 2 cycles/color. They're
  both faster than my hand-written MMX routine, so I don't need to feel
  bad about not hand-optimizing this for x64 builds.
- Removed an extra instruction from DoBlending_MMX, transposed two
  instructions, and unrolled it once, shaving off about 80 cycles from the
  time required to blend 256 palette entries. Why? Because I tried writing
  a C version of the routine using compiler intrinsics and was appalled by
  all the extra movq's VC++ added to the code. GCC was better, but still
  generated extra instructions. I only wanted a C version because I can't
  use inline assembly with VC++'s x64 compiler, and x64 assembly is a bit
  of a pain. (It's a pain because Linux and Windows have different calling
  conventions, and you need to maintain extra metadata for functions.) So,
  the assembly version stays and the C version stays out.
- Removed all the pixel doubling r_detail modes, since the one platform they
  were intended to assist (486) actually sees very little benefit from them.
- Rewrote CheckMMX in C and renamed it to CheckCPU.
- Fixed: CPUID function 0x80000005 is specified to return detailed L1 cache
  only for AMD processors, so we must not use it on other architectures, or
  we end up overwriting the L1 cache line size with 0 or some other number
  we don't actually understand.


SVN r1134 (trunk)
2008-08-09 03:13:43 +00:00