Christoph Oelckers
51baa7d137
- added code to calculate light texture coordinates on walls.
2016-05-05 11:32:21 +02:00
Christoph Oelckers
0b2821d696
- added dynamic light rendering with textures on flats
2016-05-05 10:28:21 +02:00
Christoph Oelckers
4412f99b38
- added the flat dispatcher for textured lighting.
2016-05-04 23:07:16 +02:00
Christoph Oelckers
0a94371974
- reinstated old code for rendering fog boundaries and mirrot surfaces without shaders.
...
- added code for filling the render list for textured dynamic lights. This is not yet active because no code is present to handle this data.
2016-05-03 23:28:42 +02:00
Christoph Oelckers
51991ef22d
* - render partial sprites on the front side of a portal for actors behind it.
2016-04-30 23:18:37 +02:00
Christoph Oelckers
d84e079282
- render partial sprites oon the back side of a portal for actors in front of it. This is needed because the stencil will clip away those parts.
2016-04-30 16:57:53 +02:00
Christoph Oelckers
b06c86db38
- added old wall splitting code as a fallback for old hardware.
2016-04-26 21:42:15 +02:00
Christoph Oelckers
6e1b21d513
- added back sprite splitting for low end, plus some dynamic light code.
2016-04-26 21:31:24 +02:00
Christoph Oelckers
f77c4642cb
- made the adjustments.
2016-04-24 13:35:43 +02:00
Christoph Oelckers
9d9219795a
- adjusted function names.
2016-04-23 13:48:25 +02:00
Christoph Oelckers
1c7b512cc0
- GL handling of new portal data organization.
...
This also fixes some oversights with plane and horizon portals which were included in several checks.
2016-04-20 20:08:53 +02:00
Christoph Oelckers
741f054601
- clip sprites to linked sector portal planes.
...
This is the first part of properly handling those transitions.
2016-04-18 16:27:04 +02:00
Christoph Oelckers
a0a530945d
- added new sector type 90 which designates a sector that is being used as a cubemapped skybox, in case someone wants to make one of those without using an actual sky for this.
2016-04-14 13:22:15 +02:00
Christoph Oelckers
eaf055dff4
- floatified the remaining parts of gl_walls.cpp.
2016-04-08 00:19:51 +02:00
Christoph Oelckers
4ac3734375
- floatified more of gl_wall.cpp.
2016-04-07 23:19:37 +02:00
Christoph Oelckers
ee3e3e35e6
- partial floatification of wall texturing code.
2016-04-07 17:00:13 +02:00
Christoph Oelckers
a0d0d9339e
- fixed some uninitialized stuff in particle rendering.
...
- added gl_ClampLight to all places where the light level is set.
2016-04-06 14:03:21 +02:00
Christoph Oelckers
252a6e9038
- removed back and forth fixed<->float conversions in sprite code.
2016-04-03 13:00:09 +02:00
Christoph Oelckers
58eb64a7e0
- fixed a few fixed/float parameter mixups.
2016-04-03 12:54:47 +02:00
Christoph Oelckers
af78937a15
- updated GL renderer.
2016-04-02 23:17:16 +02:00
Christoph Oelckers
c6ada2397c
- adjustments.
2016-03-31 09:50:59 +02:00
Christoph Oelckers
59bb003285
- GL adjustments for plane changes.
2016-03-29 13:45:50 +02:00
Christoph Oelckers
eadecaf407
- adjustments to GL renderer for decal and alpha changes.
...
- handle portals in sprite lighting, but do not use the playsim's utility functions for efficiency.
2016-03-22 23:19:21 +01:00
Christoph Oelckers
dbd89c2702
- refactoring of portal grouping for the renderer, to allow more efficient clipping.
2016-03-04 14:10:13 +01:00
Christoph Oelckers
297cf52ac9
- copied line portal code from portal branch and made some adjustments to make it compile. Portal rendering is not yet working.
2016-02-06 05:17:47 +01:00
Christoph Oelckers
b2158c5b96
- removed unneeded parameter.
2016-02-05 01:48:53 +01:00
Christoph Oelckers
c129cb3ca4
- reinstated software clipping by light volumes for walls.
...
It turned out that using hardware clipping planes exclusively to handle this cost more than it gained.
Now only the expensive or formerly impossible cases of intersecting light volumes or light volumes intersecting with the top and bottom of the wall polygon will use hardware clipping. The trivial cases will go back to software splitting.
2016-02-04 15:34:12 +01:00
Christoph Oelckers
2c55dcca27
- use hardware clipping to apply 3D lights to sprites. This solves all the problems with properly lighting models and billboarded sprites.
...
- add some restrictions for the checks that exclude sprites which are too close to the camera. Most importantly, for clipping the first frame of a projectile, do not solely clip against the projectile's speed but use the player's radius as a limiting factor to avoid too large distances.
2016-02-01 18:14:00 +01:00
Christoph Oelckers
67fc35e738
- some cleanup of wall processing code.
...
* removed SplitWall function
* split PutWall into PutWall and PutPortal because none of the portal cases needs the overhead for normal walls.
2016-02-01 01:49:49 +01:00
Christoph Oelckers
9305cd86a0
- remove the GLWallLightEntry type. Everything it contains can be retrieved from the existing lightlist just as easily, and this approach avoids a lot of memory allocations.
...
- removed the SplitWall profiling timer because all it measures now is an almost empty function.
2016-02-01 01:03:34 +01:00
Christoph Oelckers
5448b335c6
- rewrote render loop for walls. Not working yet.
2016-01-31 21:10:59 +01:00
Christoph Oelckers
1d9ab5c632
- clean out GLWall::SplitWall and instead of actually splitting the wall just attach a list of lights to it.
...
Actual handling will be in the rendering function because this doesn't need multiple vertex transfers to the GPU. All slices can be drawn from the same buffer with different uniform info being set.
2016-01-31 00:45:29 +01:00
Christoph Oelckers
fc57180d7e
- added necessary state to implement 3D light splitting using hardware clipping planes.
2016-01-30 23:01:11 +01:00
Christoph Oelckers
d037493ffe
- fixed handling of FF_FADEWALLS on 3D floors. The problems with the old method became quite obvious in the demo map after the light list bug got fixed.
2016-01-29 17:13:14 +01:00
Christoph Oelckers
65022b780a
- implemented 'copy portal to wall' linedef type.
2016-01-11 22:44:53 +01:00
Christoph Oelckers
065b7f9ad2
- fixed: The CollectSectorStack functions had a local sector_t variable used by gl_FakeFlat which caused a stack overflow. Using the global one defined at the top of the file is ok here.
2015-05-29 12:03:50 +02:00
Christoph Oelckers
00d7707aef
- allow reallocation of light buffer if more lights are needed.
...
- added a light preprocessing pass to the renderer so that a non-persistent buffer can be used with minimal mapping/unmapping. This only gets used if necessary because it adds some overhead to the renderer.
2014-08-19 14:18:21 +02:00
Christoph Oelckers
b9ffb51d0c
- small but important optimization: Two-sided lines with both sides in the same sector don't really require vertex splitting for precise rendering.
2014-08-04 23:00:40 +02:00
Christoph Oelckers
19cfffebb3
- fixed: the WallTypes enum contained a value that no longer was valid. This was fixed orignally last week but it seems to have gotten lost.
2014-08-03 12:21:05 +02:00
Christoph Oelckers
c98e3ca99d
Merge branch 'master' into v2.x
2014-08-03 10:58:41 +02:00
Christoph Oelckers
398d902e7e
- split off sprite clipping adjustment code into its own function.
2014-08-03 10:22:12 +02:00
Christoph Oelckers
7967082e60
- use the light buffer to handle dynamic lighting.
2014-08-01 20:59:39 +02:00
Christoph Oelckers
1ec58011d2
- start of light buffer implementation so that we don't have to use uniform arrays which appear to be broken on AMD.
2014-07-31 00:44:22 +02:00
Christoph Oelckers
6b9d6787d9
- move models into their own draw list to avoid frequent buffer changes.
...
- same for SKYHACK walls. Although rare, they would get in the way of optimizing the draw calls if not being separated out.
2014-07-15 21:16:59 +02:00
Christoph Oelckers
b8bcbe819b
- removed texture based dynamic lighting. For GL 3.x the shader approach is always better.
...
- fixed: sky fog was not unset.
2014-07-15 20:49:21 +02:00
Christoph Oelckers
1b91a8f88c
- removed old immediate mode path for generating stencils.
2014-06-15 10:15:44 +02:00
Christoph Oelckers
3644073bbd
- use a software buffer for immediate mode rendering. This allows using the regular buffer code to collect data for both render modes and allows removal of a lot of duplicated code.
2014-06-15 01:14:41 +02:00
Christoph Oelckers
c39318f406
- use vertex buffer and reuse of data for stencil drawing. A stencil needs to be drawn multiple times with the same polygons so this is a good place to optimize.
2014-05-31 09:32:17 +02:00
Christoph Oelckers
978ace241c
- removed all code that mixes together the different lighting methods. Now everything goes through the 3 different light parameters in the render state.
...
- removed cm parameter from many functions.
2014-05-11 21:47:54 +02:00
Christoph Oelckers
7793bbbcc9
Further cleanup of lighting code.
...
- remove thing color from lighting calculations.
- implement alpha textures and inverse sprites for infrared as texture modes. This still requires some handling for the alpha texture mode for non-shader rendering because there is no way in the fixed pipeline to do it. The inverted texture effect can be done with a texture combiner.
- fixed: ThingColor for sprites was set in the wrong place. It must be in the Process function, not in the lighting calculation.
- added functions for isolated calculation of sprites' dynlight color.
2014-05-11 17:56:38 +02:00