Christoph Oelckers
ee3e3e35e6
- partial floatification of wall texturing code.
2016-04-07 17:00:13 +02:00
Christoph Oelckers
485a1bd0a5
- fixed: The 3D-floor plane renderer mixed float and fixed point.
2016-04-07 16:25:30 +02:00
Christoph Oelckers
4af859094c
- fixed: sprite clipping did not work anymore because the 'invalid' value was inconsistent.
...
- cleaned up the 'if' condition in PerformSpriteClipAdjustment,
- enabled weapon bobbing interpolation.
2016-04-07 14:09:07 +02:00
Christoph Oelckers
37ddd20b56
- removed leftover debug code from yesterday's particle fix.
2016-04-07 10:28:43 +02:00
Christoph Oelckers
dbad946fe3
- revert default planes to static in gl_sprite.cpp
2016-04-06 22:09:21 +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
603af1bb92
- compile bug in gl_sprite and some optimization in gl_walls.cpp
2016-04-03 22:13:38 +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
5a2eac8f15
- floatified vertices and removed the now redundant fx and fy members. This needs an added check for polyobject origins, though, so that such subsectors don't get rendered.
2016-04-03 11:40:14 +02:00
Christoph Oelckers
8a20f901a3
- removed the non.slope special handling in the wall processing code.
...
This may have made some sense when I added this 11 years ago but on a current computer it actually hurts performance a bit due to the branching that is involved - the code runs a bit faster with those special cases removed.
2016-04-03 02:07:37 +02:00
Christoph Oelckers
af78937a15
- updated GL renderer.
2016-04-02 23:17:16 +02:00
Christoph Oelckers
348c384bb6
- fixed scaling of skies with unusual dimensions.
2016-04-02 22:18:42 +02:00
Christoph Oelckers
a27181cb0b
- partial adjustments.
...
No point changing all the viewx/y/z stuff when that is about to get floatified next.
2016-03-31 21:42:27 +02:00
Christoph Oelckers
c6ada2397c
- adjustments.
2016-03-31 09:50:59 +02:00
Christoph Oelckers
cf44d2e37a
- adjustments.
2016-03-30 20:01:44 +02:00
Christoph Oelckers
cadd8f2d4a
- made adjustments for changes to linedef delta.
2016-03-29 16:31:58 +02:00
Christoph Oelckers
59bb003285
- GL adjustments for plane changes.
2016-03-29 13:45:50 +02:00
Christoph Oelckers
a87c292f10
- adjustments to GL code for texture scale and vertex coordinate access.
2016-03-29 11:26:33 +02:00
Christoph Oelckers
379d5bc0c5
- fixed some issues with dynamic lights caused by the floatification changes
2016-03-24 13:38:37 +01:00
Christoph Oelckers
f62c988a0e
- adjustments for next update.
2016-03-24 12:47:08 +01: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
bd7df76059
- fixed compilation of AActor::alpha
2016-03-22 12:56:20 +01:00
Christoph Oelckers
b54b34a512
- adjustments for floating point changes.
2016-03-21 02:57:02 +01:00
Christoph Oelckers
ae1571158c
- fixed: The portal link table was not created when there were no sector portals.
...
- fixed: P_TryMove could loop endlessly over a list of static portals when there was an error during portal creation.
2016-03-12 17:43:36 +01:00
Christoph Oelckers
365c192a1d
- added portal support for dynamic lights.
...
This requires fixed offsets so it only works with linked portals.
2016-03-08 21:22:12 +01:00
Christoph Oelckers
87d6e03cc2
- should have saved before committing...
2016-03-05 13:09:49 +01:00
Christoph Oelckers
26a05857d0
- fixed: Camera textures should not intercept and clear the NoInterpolateView flag.
...
Thanks to some really bad use of a global variable this was causing problems with the inverted order in which GZDoom needs to draw this stuff.
2016-03-05 12:46:47 +01:00
Christoph Oelckers
ef9f3da31d
- do not use the precalculated coordinates for non-linked portals because they are not static.
2016-03-04 14:41:24 +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
af1b70376b
- added 21:9 handling to GL code.
2016-03-04 11:47:15 +01:00
Christoph Oelckers
7ceb6d86dd
- fixed compilation.
2016-03-04 10:39:10 +01:00
Christoph Oelckers
ee18fdeb83
- fixed: Visplane merging should not be done for linedef based portals.
2016-02-28 10:10:01 +01:00
Christoph Oelckers
213d7a75c2
- fixed: r_showviewer must always be true when rendering a mirror portal.
2016-02-26 12:09:59 +01:00
Christoph Oelckers
387f3dd03a
- fixed compile errors due to changes in ZDoom.
2016-02-25 13:06:13 +01:00
Christoph Oelckers
e3ddc74eb1
- check r_showviewer when deciding whether to render the player sprite. This is necessary when camera and player end up on different sides of a portal.
2016-02-24 01:14:24 +01:00
Christoph Oelckers
a901875925
- fixed: The horizon portal drawer must set the camera position for the shader.
...
This gets lost when several portals are drawn sequentially and this is the only portal type which needs this information but doesn't go through the normal setup.
If this is not done, fog on the horizon plane can break.
2016-02-21 01:38:41 +01:00
Christoph Oelckers
9af5dd357f
- removed the camera adjustment in FGLRenderer::SetViewArea because this had already been done by R_SetupFrame.
2016-02-20 02:20:55 +01:00
Christoph Oelckers
0a539ed2d5
- fixed: fake contrast was not applied.
2016-02-19 17:40:08 +01:00
Christoph Oelckers
bd9907f20f
- missing #includes in GL code.
2016-02-16 22:06:26 +01:00
Christoph Oelckers
c69fd3ac80
- removed redundant SKYBOX enum.
2016-02-16 10:14:37 +01:00
Christoph Oelckers
9608252873
- copied over some stuff from the abandoned portals branch.
2016-02-15 13:11:31 +01:00
Christoph Oelckers
141065c3d5
- fixed: positioning of camera textures on 2-sided walls was not correct.
2016-02-14 14:33:52 +01:00
Christoph Oelckers
0931134a9c
- fixed: part of the special handling of projectiles being spawned near the camera also affected other actors, this caused the fly cheat to break.
2016-02-12 11:20:33 +01:00
Christoph Oelckers
6a408b1a99
- added missing include to gl_walls.cpp
2016-02-10 20:49:06 +01:00
Christoph Oelckers
eb7a908a92
- account for removed bam2rad function.
2016-02-08 22:06:26 +01:00
Christoph Oelckers
7105a87a1e
- fixed retrieval of mapsection for polyportals.
...
- render wall portals on one sided lines.
2016-02-06 19:19:18 +01:00
Christoph Oelckers
3683a8ac58
- implemented line-to-line portal rendering. So far working for two-sided portal lines - one-sided yet to come.
2016-02-06 12:32:47 +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
25f1dc86d5
- removed duplicate function definition.
2016-02-06 00:50:43 +01:00
Christoph Oelckers
e6337537ed
- this was missing the double slashes...
2016-02-05 14:04:28 +01:00
Christoph Oelckers
c4b1b96484
- handle one particular edge case when checking if a line is completely behind a mirror.
...
This is not really sufficient to detect all cases where something gets incorrectly flagged as ok, but it's the easiest one to detect.
2016-02-05 13:47:07 +01:00
Christoph Oelckers
dda73b531c
Merge branch 'master' of https://github.com/rheit/zdoom
...
# Conflicts:
# src/CMakeLists.txt
# src/p_setup.cpp
# src/r_defs.h
# src/version.h
This only updates to a compileable state. The new portals are not yet functional in the hardware renderer because they require some refactoring in the data management first.
2016-02-05 12:31:41 +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
0c8a817df4
- fixed wall clipping with 3D lights.
2016-02-04 01:12:18 +01:00
Christoph Oelckers
db766f9fe5
- fixed some warnings.
2016-02-03 13:03:38 +01:00
Christoph Oelckers
9453a8a7e6
- reuse the same vertex buffer data for all slices of a decal.
2016-02-01 21:50:55 +01:00
Christoph Oelckers
f11f86f05d
- added light plane clipping for decals as well.
2016-02-01 21:45:26 +01:00
Christoph Oelckers
faa08410de
- handle nocoloredspritelighting with 3D light splitter
2016-02-01 19:10:15 +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
1ad310e69b
- only draw visible 3D-lights.
2016-02-01 16:13:07 +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
53a389aafc
- fixed: for untextured walls, the texture must be disabled before rendering.
...
- fixed: untextured walls should never be passed to SplitWall.
- fixed: untextured walls should not be affected by dynamic lights (it's either fog boundaries or outsides of 3D fog volumes.)
2016-01-31 22:24:48 +01:00
Christoph Oelckers
9ce6a7932c
- implemented rendering of 3D lights with clip planes.
2016-01-31 22:04:20 +01:00
Christoph Oelckers
5448b335c6
- rewrote render loop for walls. Not working yet.
2016-01-31 21:10:59 +01:00
Christoph Oelckers
f86535407d
- forgot this.
2016-01-31 00:52:50 +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
4a9b2bf76d
- fixed: The stencil cap drawer did not properly advance the vertex pointer.
2016-01-30 01:08: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
238990c871
don't leave any gaps in the used clip planes.
2016-01-27 12:32:39 +01:00
Christoph Oelckers
47db3252f4
- it's really not necessary to waste two clip planes for reflective surfaces because only one can be active at any time.
2016-01-27 12:30:55 +01:00
Christoph Oelckers
3c16a23865
- when rendering mirrors, discard subsectors lying behind them.
2016-01-27 12:02:43 +01:00
Christoph Oelckers
5816049510
- made necessary adjustments for the coordinate refactoring in ZDoom.
2016-01-21 12:36:37 +01:00
Christoph Oelckers
2657c08831
- fixed: stacked sector portals were not added to the render list
2016-01-13 21:33:27 +01:00
Christoph Oelckers
65022b780a
- implemented 'copy portal to wall' linedef type.
2016-01-11 22:44:53 +01:00
Christoph Oelckers
196c9bc34d
- cleaned up the skybox type detection logic.
2016-01-11 20:29:24 +01:00
Christoph Oelckers
ef7bcb3a66
- implement Eternity-Style flat and horizon portals. Not tested yet due to lack of material to work with.
2016-01-11 15:07:58 +01:00
Christoph Oelckers
7d2bbbd351
- fixed rendering of two-sided polyobjects that have their upper or lower textures exposed.
2016-01-05 18:59:32 +01:00
Christoph Oelckers
cc10fe9bc3
- fixed: The stereo3D code accessed the global 'viewsector' variable at a place where it no longer contained a correct value.
...
- fixed: The same code did not exclude camera texture views from drawing the 2D overlay.
2016-01-04 00:45:44 +01:00
Christopher Bruns
95f4134630
Refactor stereo3d classes to use TArray instead of std::vector.
2015-12-31 09:36:37 -05:00
Christopher Bruns
8e237e6146
Merge branch 'master' of https://github.com/coelckers/gzdoom into stereo3d
2015-12-30 17:41:49 -05:00
Christoph Oelckers
c8810db5fe
- fixed: clipping swimmable against non-swimmable translucent 3D-floors was broken due to an incorrect flag check.
2015-12-24 16:34:00 +01:00
Christoph Oelckers
37ea94abf3
- fixed: translucent walls did not set up their dynamic lights in the GL4 render path.
2015-12-11 22:26:10 +01:00
Christopher Bruns
10088544c3
Merge branch 'master' of https://github.com/coelckers/gzdoom into stereo3d
...
Conflicts:
src/win32/i_system.cpp
2015-12-09 18:34:20 -05:00
Christoph Oelckers
f9cbaef1df
- fixed: Boom's Transfer_Heights did not work for upper parts in sectors with a sky ceiling.
...
This incorrect check has been in the code for 12 years, unfortunately I have no idea anymore why it was added.
2015-11-30 00:11:30 +01:00
Christoph Oelckers
b00b49c111
- fixed skybox picking in GL renderer.
2015-11-25 11:57:53 +01:00
Christopher Bruns
151b47c3ae
Merge branch 'master' of https://github.com/coelckers/gzdoom into merge_down
...
Conflicts:
src/win32/i_system.cpp
2015-11-03 20:21:27 -05:00
Christoph Oelckers
16cb4407a4
- disabled 'isVisibleToPlayerClass' check for dynamic lights affecting sprites.
...
Calling this function in the inner loop of a time critical rendering function apparently wreaks havoc with the CPU instruction cache - even though the function doesn't do anything substantial.
This needs some more in-depth investigation why just having that call can increase sprite rendering time by a factor of 10 and more if there's many lights in view.
2015-11-03 23:55:16 +01:00
Christopher Bruns
789dca2ab3
Refactor stereo 3d projection matrix calculations to use VSMatrix.
2015-10-31 07:46:36 -04:00
Christopher Bruns
89328e685c
Use eye->TearDown method to restore glColorMask.
...
Restore assert in i_system.cpp that was interfering with my debugging.
Restore scoped colorMask-ing in gl_portal.cpp and gl_drawinfo.cpp.
2015-10-30 21:48:42 -04:00
Christopher Bruns
b82d611936
Call EndDrawScene for each eye.
...
Actually use stereoscopic projection matrix.
2015-10-30 21:29:36 -04:00
Christopher Bruns
0874455faf
Initial implementation of five 3D modes -- some bugs remain.
2015-10-30 20:51:35 -04: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
feeebf5265
- rework MD2 code for reloading/precaching of geometry data.
2015-04-12 18:26:52 +02:00
Christoph Oelckers
cf7cb4f00f
- use hardware clip planes to split translucent walls and sprites by 3D floor planes.
...
This method has the advantage that it also works for models, xy-billboarded sprites and walls that require complex splitting of the polygon. The old method using actual polygon splitting only works for strictly vertical data that could be trivially split in two.
2015-04-05 19:00:35 +02:00
Christoph Oelckers
bead3e046b
- fixed weapon positioning again, after finding out that the first fix just worked around the actual problem: The entire coordinate calculation must be done in floating point with no integer math at all. Due to roundoff errors the stored int values needed for wall and flat placement significantly lack precision and with the high scaling factor that needs to be used for weapon HUD sprites these can easily become several pixels. After fixing this the border around sprite textures could be reverted to one pixel again.
...
- fixed: The 'may not be expanded' state should be stored in the texture and reused later. This also needs to revalidate the material if it decides that expansion should be disallowed.
2015-04-04 17:50:22 +02:00
Christoph Oelckers
67334bfa2b
- calculate weapon positions fully in floating point to avoid roundoff errors.
...
- In order to get reliable results the empty border around scaled sprites must be the same scale as the sprite (i.e. 2 pixels for 2x scale and 4 pixels for 4x scale.)
2015-04-04 12:35:10 +02:00