Gleb Mazovetskiy
3d716f74d3
Add dun_render_benchmark
...
Results from a single run (a bit noisy) on my machine:
```
tools/build_and_run_benchmark.py dun_render_benchmark
```
```
------------------------------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations UserCounters...
------------------------------------------------------------------------------------------------------------------------
DunRenderBenchmark/LeftTriangle_Solid_FullyLit 98297 ns 98282 ns 8840 items_per_second=15.1096M/s
DunRenderBenchmark/LeftTriangle_Solid_FullyDark 124727 ns 124701 ns 6973 items_per_second=11.9085M/s
DunRenderBenchmark/LeftTriangle_Solid_PartiallyLit 514869 ns 514747 ns 1700 items_per_second=2.88491M/s
DunRenderBenchmark/LeftTriangle_Transparent_FullyLit 520312 ns 520216 ns 1682 items_per_second=2.85458M/s
DunRenderBenchmark/LeftTriangle_Transparent_FullyDark 524440 ns 524331 ns 1664 items_per_second=2.83218M/s
DunRenderBenchmark/LeftTriangle_Transparent_PartiallyLit 532300 ns 532162 ns 1647 items_per_second=2.7905M/s
DunRenderBenchmark/RightTriangle_Solid_FullyLit 92387 ns 92363 ns 8840 items_per_second=16.7275M/s
DunRenderBenchmark/RightTriangle_Solid_FullyDark 85680 ns 85662 ns 9884 items_per_second=18.0361M/s
DunRenderBenchmark/RightTriangle_Solid_PartiallyLit 538347 ns 538250 ns 1626 items_per_second=2.87041M/s
DunRenderBenchmark/RightTriangle_Transparent_FullyLit 548800 ns 548760 ns 1598 items_per_second=2.81544M/s
DunRenderBenchmark/RightTriangle_Transparent_FullyDark 540450 ns 540369 ns 1620 items_per_second=2.85916M/s
DunRenderBenchmark/RightTriangle_Transparent_PartiallyLit 555061 ns 555003 ns 1575 items_per_second=2.78377M/s
DunRenderBenchmark/TransparentSquare_Solid_FullyLit 700849 ns 700751 ns 1320 items_per_second=3.68176M/s
DunRenderBenchmark/TransparentSquare_Solid_FullyDark 664927 ns 664872 ns 1389 items_per_second=3.88045M/s
DunRenderBenchmark/TransparentSquare_Solid_PartiallyLit 1131702 ns 1131559 ns 822 items_per_second=2.28004M/s
DunRenderBenchmark/TransparentSquare_Transparent_FullyLit 1022384 ns 1022267 ns 916 items_per_second=2.5238M/s
DunRenderBenchmark/TransparentSquare_Transparent_FullyDark 1023193 ns 1023057 ns 900 items_per_second=2.52185M/s
DunRenderBenchmark/TransparentSquare_Transparent_PartiallyLit 1033573 ns 1033496 ns 895 items_per_second=2.49638M/s
DunRenderBenchmark/Square_Solid_FullyLit 53532 ns 53524 ns 10000 items_per_second=30.8272M/s
DunRenderBenchmark/Square_Solid_FullyDark 41993 ns 41987 ns 19794 items_per_second=47.1573M/s
DunRenderBenchmark/Square_Solid_PartiallyLit 842772 ns 842615 ns 1108 items_per_second=1.56655M/s
DunRenderBenchmark/Square_Transparent_FullyLit 834105 ns 834026 ns 1119 items_per_second=1.58269M/s
DunRenderBenchmark/Square_Transparent_FullyDark 831912 ns 831823 ns 1122 items_per_second=1.58688M/s
DunRenderBenchmark/Square_Transparent_PartiallyLit 924638 ns 924536 ns 1010 items_per_second=1.42774M/s
DunRenderBenchmark/LeftTrapezoid_Solid_FullyLit 33728 ns 33725 ns 24962 items_per_second=18.8583M/s
DunRenderBenchmark/LeftTrapezoid_Solid_FullyDark 31088 ns 31085 ns 27444 items_per_second=20.4601M/s
DunRenderBenchmark/LeftTrapezoid_Solid_PartiallyLit 268792 ns 268768 ns 3254 items_per_second=1.97196M/s
DunRenderBenchmark/LeftTrapezoid_Transparent_FullyLit 277990 ns 277965 ns 3140 items_per_second=1.90672M/s
DunRenderBenchmark/LeftTrapezoid_Transparent_FullyDark 268952 ns 268912 ns 3250 items_per_second=1.9709M/s
DunRenderBenchmark/LeftTrapezoid_Transparent_PartiallyLit 288869 ns 288826 ns 3056 items_per_second=1.83501M/s
DunRenderBenchmark/RightTrapezoid_Solid_FullyLit 29581 ns 29576 ns 28347 items_per_second=21.0984M/s
DunRenderBenchmark/RightTrapezoid_Solid_FullyDark 25315 ns 25312 ns 32250 items_per_second=24.6523M/s
DunRenderBenchmark/RightTrapezoid_Solid_PartiallyLit 259977 ns 259960 ns 3312 items_per_second=2.0003M/s
DunRenderBenchmark/RightTrapezoid_Transparent_FullyLit 263079 ns 263056 ns 3322 items_per_second=1.97677M/s
DunRenderBenchmark/RightTrapezoid_Transparent_FullyDark 259849 ns 259824 ns 3364 items_per_second=2.00136M/s
DunRenderBenchmark/RightTrapezoid_Transparent_PartiallyLit 279623 ns 279594 ns 3127 items_per_second=1.85984M/s
```
2 years ago
Gleb Mazovetskiy
114b38da90
Fix `ReencodeDungeonCelsLeft/RightTriangle`
...
The final line wasn't encoded correctly.
Also removes unnecessary `src` increments at the end of the encoding
functions.
```
Re-encoding dungeon CELs: 1,119 frames, 738,836 bytes
Re-encoded dungeon CELs: 1,119 frames, 721,604 bytes
```
2 years ago
Gleb Mazovetskiy
451f1fd70a
Re-encode dungeon tiles to remove bloat
...
Triangles in the dungeon CEL data have two redundant 0x00 pixels every other row.
Re-encodes the dungeon CEL data to remove these pixels in order to save RAM and simplify the rendering code.
Example RAM savings:
```
VERBOSE: Re-encoding dungeon CELs: 1,119 frames, 738,836 bytes
VERBOSE: Re-encoded dungeon CELs: 1,119 frames, 722,552 bytes
```
Performance remains the same. The rendering code is now a bit simpler.
2 years ago
qndel
24f108f193
fix many typos ( #7322 )
2 years ago
Gleb Mazovetskiy
90732aa7be
Migrate objdat.cpp data to TSV
2 years ago
Eric Robinson
0ac30d101d
Refactor TileHasAny() ( #7085 )
2 years ago
Tully-B
59ae17dff5
Patch up wrong tree tile near Hive entrance ( #7061 )
2 years ago
Anders Jenbo
7d6c2ff6f2
Limit theme scan to the number of generated rooms
...
This greatly speeds up level generation as there is no need to search for the fitness of 127 (or 256 as in the original) rooms if only 23 where created.
2 years ago
staphen
3c5b298391
Capture the level seed and use it to skip failed dungeon layouts
2 years ago
obligaron
22ec684671
Fix some MSVC warnings
2 years ago
obligaron
7cd7a3445f
Remove global SetPiece Handling
2 years ago
obligaron
42e1b82a91
Use GetDunSize in loops
2 years ago
obligaron
dc85e7db43
Introduce GetDunSize
2 years ago
Gleb Mazovetskiy
0d19c1b773
Slightly optimize loading same-sprite monsters
...
For monsters with the same sprite, load the sprite from the file system only once.
Example:
```
VERBOSE: Loaded monster graphics: falspear\phall 452 KiB x1
VERBOSE: Loaded monster graphics: skelbow\sklbw 618 KiB x1
VERBOSE: Loaded monster graphics: skelsd\sklsr 610 KiB x1
VERBOSE: Loaded monster graphics: goatbow\goatb 832 KiB x1
VERBOSE: Loaded monster graphics: bat\bat 282 KiB x2 <-- here we only load the sprite once
VERBOSE: Loaded monster graphics: rhino\rhino 1306 KiB x1
VERBOSE: Loaded monster graphics: golem\golem 298 KiB x1
VERBOSE: Total monster graphics: 4401 KiB 4684 KiB
```
Here, the bat sprite will be loaded from the MPQ only once.
For the second sprite, we simply clone the first sprite before applying TRNs.
This also reduces the size of `MonsterData` from 88 bytes to 80.
When we migrate monster data to a TSV, the sprite IDs can be generated automatically at load time.
2 years ago
obligaron
631111f405
Fix MSVC warnings in themes.cpp
2 years ago
obligaron
9bf1fd48b0
Fix a few MSVC warnings ( #6782 )
2 years ago
Gleb Mazovetskiy
d1d27c8368
Rename error -> diablo_msg
2 years ago
Gleb Mazovetskiy
fa155d4ffd
Dungeon tiles: Port over some cleanups from #6636
3 years ago
ephphatha
c1f3dcb705
Use safer versions of random number functions instead of GenerateRnd
3 years ago
Gleb Mazovetskiy
e5c426c315
Make `IsWall` easier for the compiler to inline
...
This appears to be a very hot function.
Makes it fully inlineable (even in Debug mode).
3 years ago
Gleb Mazovetskiy
cf925d1edc
Replace tuples with structs
...
Structs are more readable because the fields have names.
3 years ago
Gleb Mazovetskiy
0f77cc3797
Force-inline methods to improve debug build perf
...
This has little or no effect on the optimized build
but significantly improves performance of the headless debug build
`timedemo_test` on my machine goes from 3s to 2s.
3 years ago
ephphatha
da76e131e4
Add getter/setter for character levels to ensure _pNextExper stays synced
3 years ago
Gleb Mazovetskiy
c19bfe87fa
Remove utils/stdcompat/algorithm.hpp
3 years ago
Gleb Mazovetskiy
14540164a7
Remove utils/stdcompat/optional.hpp
3 years ago
Gleb Mazovetskiy
62d067b653
Remove utils/stdcompat/abs.hpp
3 years ago
Gleb Mazovetskiy
74755c8be7
Remove utils/stdcompat/cstddef.hpp
3 years ago
qndel
728b632960
fix typos
3 years ago
Gleb Mazovetskiy
8101e2c0ba
Add `c_any_of` and friends
...
Adds handy helpers for performing algorithms on the entire container.
They're prefixed with `c_` for container.
This naming convention is identical to some popular C++ libraries, such
as Abseil.
3 years ago
ikonomov
ee91d9ecf5
update arenas
...
Removed the murky pools, simplified the areas and made them accessible without teleport.
3 years ago
obligaron
8832c26955
Fix PoolFix() to always replace dirt ceiling tiles if they are adjacent to a ground lava tile ( #6266 )
3 years ago
Anders Jenbo
8f74f86a6e
🐛 Use the alternate stairs up banner is active
3 years ago
obligaron
c0b2d5569f
When checking chamber of bone entry also check the current dungeon level
3 years ago
Gleb Mazovetskiy
5bf0b8bc96
Add more missing <cstdint> includes
...
https://github.com/diasurgical/devilutionX/pull/6095 only added includes
for `uint32_t`, this PR also adds the includes for the remaining
integral types.
3 years ago
Gleb Mazovetskiy
4fa3732526
Add missing <cstdint> includes
...
Done with the following script:
```ruby
Dir["Source/**/*.{h,c,cc,cpp,hpp}"].each do |path|
v = File.read(path)
next if !v.include?("uint32_t") || v.include?("cstdint")
lines = v.lines
line_num = if lines[2].start_with?(" *")
lines.index { |l| l.start_with?(" */") } + 3
else
3
end
lines.insert(line_num, "#include <cstdint>\n")
File.write(path, lines.join(""))
end
```
then fixed-up manually
3 years ago
ephphatha
3bbb80d849
Introduce temporary function to advance the global rng state and discard results
3 years ago
Anders Jenbo
261776b255
Correct OOB check in PrepareInnerBorders()
3 years ago
DakkJaniels
000516ebf9
Update gendung.h ( #6038 )
3 years ago
Anders Jenbo
2f908277a8
Apply pre calculated lighting for quest levels
3 years ago
Anders Jenbo
4db65d94de
Add glow to Crypt lava tiles
3 years ago
Anders Jenbo
828a52dc6d
Clean up ProcessLightsList()
3 years ago
Anders Jenbo
e969a8ad01
Invert player to vision relation
3 years ago
Anders Jenbo
382212b98c
Remove DisableLighting from release builds
3 years ago
Anders Jenbo
779f16280c
Consistently use uint8_t for lighting values
3 years ago
obligaron
1a150ed193
Multiplayer: Ensure monster hitpoints are calculated reproducable in quest/set-maps ( #5958 )
...
* Always use the same seed for generating set/quest maps
* Use setlvltype for loading quest/set-map (instead of leveltype)
* Ensure dungeon flags are reset when loading a quest/set-map
3 years ago
obligaron
4cdd7ff2d9
Replace ReturnLevel/LevelTyp/LvlPosition
3 years ago
obligaron
f4b2fee532
Transform Lazarus portal position to world space earlier
3 years ago
obligaron
44de539afb
Introduce CronerStoneStruct::isAvailable()
3 years ago
obligaron
3a31539c7e
Multiplayer: Enable Warlord of Blood Quest
...
Update Source/quests.h
Co-authored-by: qndel <stefan551@o2.pl>
3 years ago
Gleb Mazovetskiy
09d7f99c32
Optimize IsTileSafe
...
Add dungeon flags for Fire/Lightning Wall and use them to check if the
monster considers the tile safe.
3 years ago