jak-project/game
water111 71cb1aef6f
[merc2] support vertex updates, use this for blerc in jak 1 and jak 2 (#2179)
This PR adds a feature to merc2 to update vertices. This will be needed
to efficient do effects like blerc/ripple/texture scroll. It's enabled
for blerc in jak 1 and jak 2, but with a few disclaimers:
- currently we still use the mips2c blerc implementation, which is slow
and has some "jittering" because of integer precision. When porting to
PC, there was an additional synchronization problem because blerc
overwrites the merc data as its being read by the renderers. I _think_
this wasn't an issue on PS2 because the blerc dma is higher priority
than the VIF1 DMA, but I'm not certain. Either way, I had to add a mutex
for this on PC to avoid very slight flickering/gaps. This isn't ideal
for performance, but still beats generic by a significant amount in
every place I tested. If you see merc taking 2ms to draw, it is likely
because it is stuck waiting on blerc to finish. This will go away once
blerc itself is ported to C++.
- in jak 1, we end up using generic in some cases where we could use
merc. In particular maia in village3 hut. This will be fixed later once
we can use merc in more places. I don't want to mess with the
merc/generic selection logic when we're hopefully going to get rid of it
soon.
- There is no support for ripple or texture scroll. These use generic on
jak 1, and remain broken on jak 2.
- Like with `emerc`, jak 1 has a toggle to go back to the old behavior
`*blerc-hack*`.
- In most cases, toggling this causes no visual differences. One
exception is Gol's teeth. I believe this is caused by texture coordinate
rounding issues, where generic has an additional float -> int -> float
compared to PC merc. It is very hard to notice so I'm not going to worry
about it.
2023-01-31 18:23:39 -05:00
..
assets Jak 1 Checkpoint Select / IL Speedrun support (#2162) 2023-01-30 19:11:57 -05:00
common [jak2] workaround for cutscene playing (#2131) 2023-01-16 13:37:29 -05:00
graphics [merc2] support vertex updates, use this for blerc in jak 1 and jak 2 (#2179) 2023-01-31 18:23:39 -05:00
kernel Hook Jak 1 into ImGUI actor filter (#2157) 2023-01-28 14:17:43 -05:00
mips2c [merc2] support vertex updates, use this for blerc in jak 1 and jak 2 (#2179) 2023-01-31 18:23:39 -05:00
overlord g/jak2: Add missing DGO files to game.gp lost in the shuffle (#2178) 2023-01-30 20:45:45 -05:00
sce logs: replace every fmt::print with a lg call instead (#1368) 2022-10-01 11:58:36 -04:00
sound Fix sound bank allocation (#2107) 2023-01-08 11:23:59 -05:00
system CI: Add a macOS Github runner (#2064) 2022-12-22 18:12:59 -05:00
tools goalc/repl: cleanup of goalc/REPL code and some QoL improvements (#2104) 2023-01-07 11:24:02 -05:00
CMakeLists.txt decomp: squid-* files (#2170) 2023-01-28 18:44:10 -05:00
discord.cpp g/jak2: initial Discord RPC implementation (#2100) 2023-01-07 10:34:01 -05:00
discord.h g/jak2: initial Discord RPC implementation (#2100) 2023-01-07 10:34:01 -05:00
main.cpp g/jak2: initial Discord RPC implementation (#2100) 2023-01-07 10:34:01 -05:00
runtime.cpp Minor bug fixes (#2128) 2023-01-14 16:26:17 -05:00
runtime.h [ckernel] split by game version (#1559) 2022-06-26 18:17:11 -04:00