Revision r2415
Polymost: with r_parallaxskypanning=1, clamp the sky at a constant horizon. See E4L1 for what this means.
Browse logs with clarity: filter by type/year, search text, and inspect parsed commit details.
Polymost: with r_parallaxskypanning=1, clamp the sky at a constant horizon. See E4L1 for what this means.
Fix apparent horizon not being independent of viewingrange (classic/Polymost). The apparent horizon (in units proportional to pixels by a constant factor) was being calculated without normalizing to viewingrange, resulting a discrepancy between the drawn and actual up/down angle with non-default viewingranges (e.g. with r_usenewaspect=1, or when setting it from setaspect). This also means that the center-of-aim will now be the same regardless of the aspect. This fixes many derived bugs: * inconsistency w/ crosshair when shooting a gun and aiming up/down (obviously) * bugs resulting from being able to look up/down too far (garbage non-slope texture-mapping and viewing BIGORBIT skies above the borders in classic). Note: mods that had workaround logic for this bug will have to remove it...
Tweak 'dncoords' display. added: sector extra; viewingrange and yxaspect before the main drawrooms call removed: randomseed
ATTRIBUTE((pure)) for Ptile2tile(), add a forgotten comment.
sector.c: fix a possible oob access of a local array.
Clamp ud.camerahoriz after EVENT_DISPLAYROOMS (instead of before).
Make 'double ghoriz' static in polymost.c.
Apply transformations to nonpow2_mhline and nonpow2_thline. This has no measureable difference. Oh well, maybe it benefits weaker machines, since the generated loop code should definitely be prettier.
Optimize fade_screen_black(). 49 --> 54 fps for test scene.
Apply the transformations of the previous commit to tslopevlin(). This doesn't give much, maybe 0.5 fps more, probably because the loop body is pretty long.
Optimization of C replacements of basic texture mapping functions, part 1
Affected functions: hlineasm4, vlineasm1, mvlineasm1, tvlineasm1.
Optimizations:
- declare all used variables as possibly const-qualified locals in each
function. This removes unnecessary loads from memory in the loops.
- rewrite "for (; cnt>=0; cnt--) {...}" to "cnt++; do {...} while (--cnt);"
in the three last ones (yes, these function iterate cnt+1 times). This
makes them functionally equivalent to the asm versions (madness ensues for
cnt < 0) and allows the compiler to remove one 'test' instruction at the
end of each loop.
- in the translucence function, replace addition by ORing
Observations (system: Core2 Duo Linux x86_64):
With a 1680x1050 window fully covered by the respective type of wall (simple,
masked, trans. masked), fps increases by 3-4 from the baseline of approx. 60.
More utils tweaks. - remove the objects too on 'clean' - fix warning with 'transpal' on x64 (generates translucency and shade tables)
Makefile tweaks for the utilities. - print compilation status for building the final executable - add 'cleanutils' target in build/Makefile - don't link against pthread, seems unnecessary - don't build nedmalloc.o when not requested in Makefile.common ------------------------------------------------------------------------
------------------------------------------------------------------------
r2416 | helixhorned | 2012-03-04 12:15:22 -0800 (Sun, 04 Mar 2012) | 3 lines
Formatting; remove 'loop has empty body' warnings with clang.
I have to admit, I like its grumbling.
------------------------------------------------------------------------
r2415 | helixhorned | 2012-03-04 12:15:04 -0800 (Sun, 04 Mar 2012) | 3 lines
Polymost: with r_parallaxskypanning=1, clamp the sky at a constant horizon.
See E4L1 for what this means.
------------------------------------------------------------------------
r2414 | helixhorned | 2012-03-04 12:14:48 -0800 (Sun, 04 Mar 2012) | 15 lines
Fix apparent horizon not being independent of viewingrange (classic/Polymost).
The apparent horizon (in units proportional to pixels by a constant factor)
was being calculated without normalizing to viewingrange, resulting a
discrepancy between the drawn and actual up/down angle with non-default
viewingranges (e.g. with r_usenewaspect=1, or when setting it from setaspect).
This also means that the center-of-aim will now be the same regardless of
the aspect.
This fixes many derived bugs:
* inconsistency w/ crosshair when shooting a gun and aiming up/down (obviously)
* bugs resulting from being able to look up/down too far (garbage non-slope
texture-mapping and viewing BIGORBIT skies above the borders in classic).
Note: mods that had workaround logic for this bug will have to remove it...
------------------------------------------------------------------------
r2413 | helixhorned | 2012-03-04 12:14:32 -0800 (Sun, 04 Mar 2012) | 4 lines
Tweak 'dncoords' display.
added: sector extra; viewingrange and yxaspect before the main drawrooms call
removed: randomseed
------------------------------------------------------------------------
r2412 | helixhorned | 2012-03-04 12:14:18 -0800 (Sun, 04 Mar 2012) | 1 line
ATTRIBUTE((pure)) for Ptile2tile(), add a forgotten comment.
------------------------------------------------------------------------
r2411 | helixhorned | 2012-03-04 12:14:01 -0800 (Sun, 04 Mar 2012) | 1 line
sector.c: fix a possible oob access of a local array.
------------------------------------------------------------------------
r2410 | helixhorned | 2012-03-04 12:13:47 -0800 (Sun, 04 Mar 2012) | 1 line
Clamp ud.camerahoriz after EVENT_DISPLAYROOMS (instead of before).
------------------------------------------------------------------------
r2409 | helixhorned | 2012-03-04 12:13:34 -0800 (Sun, 04 Mar 2012) | 1 line
Make 'double ghoriz' static in polymost.c.
------------------------------------------------------------------------
r2408 | helixhorned | 2012-03-04 12:13:16 -0800 (Sun, 04 Mar 2012) | 4 lines
Apply transformations to nonpow2_mhline and nonpow2_thline.
This has no measureable difference. Oh well, maybe it benefits weaker
machines, since the generated loop code should definitely be prettier.
------------------------------------------------------------------------
r2407 | helixhorned | 2012-03-04 12:13:01 -0800 (Sun, 04 Mar 2012) | 1 line
Optimize fade_screen_black(). 49 --> 54 fps for test scene.
------------------------------------------------------------------------
r2406 | helixhorned | 2012-03-04 12:12:46 -0800 (Sun, 04 Mar 2012) | 4 lines
Apply the transformations of the previous commit to tslopevlin().
This doesn't give much, maybe 0.5 fps more, probably because the
loop body is pretty long.
------------------------------------------------------------------------
r2405 | helixhorned | 2012-03-04 12:12:30 -0800 (Sun, 04 Mar 2012) | 17 lines
Optimization of C replacements of basic texture mapping functions, part 1
Affected functions: hlineasm4, vlineasm1, mvlineasm1, tvlineasm1.
Optimizations:
- declare all used variables as possibly const-qualified locals in each
function. This removes unnecessary loads from memory in the loops.
- rewrite "for (; cnt>=0; cnt--) {...}" to "cnt++; do {...} while (--cnt);"
in the three last ones (yes, these function iterate cnt+1 times). This
makes them functionally equivalent to the asm versions (madness ensues for
cnt < 0) and allows the compiler to remove one 'test' instruction at the
end of each loop.
- in the translucence function, replace addition by ORing
Observations (system: Core2 Duo Linux x86_64):
With a 1680x1050 window fully covered by the respective type of wall (simple,
masked, trans. masked), fps increases by 3-4 from the baseline of approx. 60.
------------------------------------------------------------------------
r2404 | helixhorned | 2012-03-04 12:12:15 -0800 (Sun, 04 Mar 2012) | 5 lines
More utils tweaks.
- remove the objects too on 'clean'
- fix warning with 'transpal' on x64
(generates translucency and shade tables)
------------------------------------------------------------------------
r2403 | helixhorned | 2012-03-04 12:11:49 -0800 (Sun, 04 Mar 2012) | 6 lines
Makefile tweaks for the utilities.
- print compilation status for building the final executable
- add 'cleanutils' target in build/Makefile
- don't link against pthread, seems unnecessary
- don't build nedmalloc.o when not requested in Makefile.common
------------------------------------------------------------------------