Commit Graph

978 Commits

Author SHA1 Message Date
Jonas Herzig
d4192b354c [1.15] Fix dead-lock due to data race during rendering (fixes #156) 2020-05-08 09:45:06 +02:00
Jonas Herzig
d24800160b Improve MarkerProcessor output generation (fixes multiple issues)
In particular:
- No longer generate any replays when auto-recording is off and recording is
never enabled from the ingame menu (fixes #138)
- Do not generate an additional empty replay file when recording was stopped in
ingame menu (fixes #147)
- only do squash if there are further output replays (fixes #142)
- Use the input file name as output file name even if there was a split (as long
as it's the only output file, e.g. because recording was never un-paused after
the split)
2020-05-08 09:45:06 +02:00
Jonas Herzig
9fb4dce367 Reset export arguments when upgrading from old version (fixes #148) 2020-05-08 09:45:06 +02:00
Jonas Herzig
811f52dc17 Throw helpful error message when rendering with sodium (see #150) 2020-05-08 09:45:06 +02:00
Jonas Herzig
72ce522813 Ensure task queue is not locked during rendering (fixes #157)
Similar to 3fedc22 in effect and cause. However tasks are executed, they just
cannot be submitted pre-1.14 because MC would continuously hold the lock on the
scheduledTasks queue for the entire renderVideo call.
2020-05-07 14:11:02 +02:00
Jonas Herzig
316f4e2c3c Prevent keyframe time from being set out of bounds (fixes #152) 2020-05-07 11:45:01 +02:00
Jonas Herzig
05f617a885 Use ReplayOutputStream for packet writing
We didn't used to do that because it would have required us to serialize and
then de-serialize as MCProtocolLib only to re-serialize each packet.
With ReplayStudio v2, we only have to convert to from MC's ByteBuf types to
ReplayStudio's ByteBuf (fairly trivial).

This also allows us to automatically make use of ReplayStudio's backwards
compatibility features: We didn't used to record the login phase pre-1.14 and we
still don't, so we now would have to inject a fake login packet (because we're
no longer generating legacy-version replay files) but ReplayOutputStream can
do that for us.
Without this commit, any pre-1.14 replays generated are unplayable due to the
missing LoginSuccess packet.
2020-04-21 22:58:55 +02:00
Jonas Herzig
c8b7e5b213 [Forge] Fix saving of CustomPayload packets 2020-04-21 22:04:01 +02:00
Jonas Herzig
1249ca4167 Add ModCore integration 2020-04-21 21:30:24 +02:00
Jonas Herzig
b852a1787d Downgrade pre-1.12 back to Mixin 0.7.10 2020-04-21 21:11:31 +02:00
Jonas Herzig
a733d301fd Update preview gui framebuffer size regardless of performance mode
This used to be more of an issue in the past but `displaySizeChanged` has gotten
pretty cheap by now and not updating it will basically make the rendering GUI
useless once you resize even once.
2020-04-17 13:56:19 +02:00
Jonas Herzig
7c35e1c7d1 Set CameraEntity.noClip depending on spectator state (fixes #136)
This field is used to decide whether or not to render the inside-block overlay,
as such we want it to be set while we're in spectator mode).

This wasn't a problem before 1.15 because we also cancel the renderHand call
while we're in spectator mode and the same method which renders your hand also
renders the overlay, so we were inadvertently canceling that at the same time.
With 1.15, that's still the case except when using OF, which splits the method
apart by adding three boolean arguments indicating which part to execute.
2020-04-16 23:59:00 +02:00
Jonas Herzig
5953435dc5 [1.14+] Fix reading of lang files with CRLFs (mitigates #132) 2020-04-16 14:55:46 +02:00
Jonas Herzig
0d3a689f17 [1.14+] Fix "Player Overview" title
We used to remap the old language key layout for inputs to the one used by
fabric but didn't consider that we might still be directly referencing the old
key somewhere else (e.g. for the Player Overview title).

With this commit, we retain the original and add the new mapping.
2020-04-16 14:48:23 +02:00
Jonas Herzig
f8b22d449c [1.14] Work around bug in mixin causing Accessors to not resolve
This intentionally breaks the mixin in a development environment but makes the
compiled jar work in a live environment (which is probably more useful given the
primary version is 1.15 now).
2020-04-15 19:47:12 +02:00
Jonas Herzig
3fedc22899 Execute task queue even when rendering a paused replay (fixes #129)
The task queue is executed by MC each frame, not just each tick, so we should do
so as well. Most async actions also rely on it to re-synchronize with the
rendering thread, e.g. skins won't load if we never poll the task queue.
2020-04-15 18:42:39 +02:00
Jonas Herzig
4586cb5382 Only update timeline when default iterp type changed (fixes #127) 2020-04-15 17:40:26 +02:00
Jonas Herzig
82f86122c8 Handle third-party buttons without text in ingame menu (see #120) 2020-04-15 16:56:16 +02:00
Jonas Herzig
dafbeb34d4 Workaround a bug in OF which incorrectly queues chunks (fixes #123) 2020-04-08 22:43:02 +02:00
Jonas Herzig
c5476025ec Fix terrain not rendering with OF shaders enabled (fixes #122)
This was caused by us setting `needsTerrainUpdate` to false during the shadow
pass in order to break out of the ForceChunkLoading loop (cause OF doesn't
update chunks during the shadow pass). However, this inadvertently caused the
chunk updates to be skipped during the normal pass as well if there didn't
happen to be another reasons for updating.

To fix this, we simply move the shadow pass check into the ForceChunkLoading
mixin and skip the entire loop during the shadow pass.
2020-04-08 17:45:06 +02:00
Jonas Herzig
8f7d263ad9 Fix livelock caused by OF not properly resetting ChunkVisibility
This can lead to a livelock when rendering with shaders after exiting a
singleplayer world (3/4 chance of breakage on each exit).
2020-04-08 14:18:25 +02:00
Jonas Herzig
97f901408e Reduce mixin plugin log message verbosity to debug level 2020-04-08 12:59:59 +02:00
Jonas Herzig
5d0ea19c72 Fix rendering not being cancelled until unpaused (fixes #125) 2020-04-07 15:30:40 +02:00
Jonas Herzig
7613fdd4c3 Abort rendering when window receives close request even when paused
Previously we'd get stuck in the paused render loop even when window close was
requested.
2020-04-07 15:26:07 +02:00
Jonas Herzig
31caa68b34 Fix hover pos not respecting gui scale in render gui (fixes #124) 2020-04-07 15:25:19 +02:00
Jonas Herzig
b6ff3855a1 Fix rendering gui framebuffer size when not paused (fixes #126) 2020-04-07 15:10:29 +02:00
Jonas Herzig
3be3072082 Run video rendering from runLater
Prevents any issues arising from the fact that we would otherwise be somewhere
deep in the GUI lib button handling call stack.
2020-04-07 14:51:16 +02:00
Jonas Herzig
3f4156b91b Stop using interrupts to abort the rendering process (fixes #119)
They ended up lingering around and breaking any further blocking operations,
resulting in random errors afterwards. And using them was really unnecessary
anyway.
2020-04-06 20:56:22 +02:00
Jonas Herzig
e3f621b86a Work around the fact that our mixins may be loaded before Optifabric 2020-04-06 20:39:15 +02:00
Jonas Herzig
27bdc78688 Give up on end portal animation mixin when OF is installed 2020-04-06 20:38:53 +02:00
Jonas Herzig
ed6ba740bb Workaround OF breaking spectator hand mixin 2020-04-06 20:37:45 +02:00
Jonas Herzig
b4a2c1b266 Fix race condition between inbound and injected packets (fixes #118)
In the case of #118, this was resulting in the EntityTrackerUpdate packet (which
contains info on which skin layers should be visible) sometimes ending up before
the SpawnPlayer packet, hence the players outer skin layers being invisible at
the start of the recording.
2020-04-06 15:14:47 +02:00
Jonas Herzig
ee68a63233 Fix Redirect target in MixinRenderLivingBase for 1.15 (see #120)
For some reason this applied fine in a development environment (even though the
method signature changed significantly), hence why I didn't notice it being
broken. It did not work (just like one would expect) in a live environment.
2020-04-06 13:19:11 +02:00
Jonas Herzig
b119d2d127 ./gradlew :1.15.2:setCoreVersion
Also `./gradlew :jGui:1.15.2:setCoreVersion`.
2020-04-06 13:18:37 +02:00
Jonas Herzig
de40b5aa47 Fix spectating via point&click on fabric 2020-04-02 15:31:59 +02:00
Jonas Herzig
c119392c92 Implement chunk forcing during rendering for 1.15 2020-04-02 14:15:05 +02:00
Jonas Herzig
4ea13051fd Disable Blend render mode on 1.15 for now 2020-04-02 10:54:19 +02:00
Jonas Herzig
6113336c37 Disable ContainerLocalRenderInformationAccessor in 1.15 for now
It appears to suffer from https://github.com/SpongePowered/Mixin/issues/390 and
since we don't yet support the ChunkExporter, it's not yet needed anyway.
2020-04-02 10:51:14 +02:00
Jonas Herzig
0b31e8c9df Implement MCVer.getProtocolVersion() for MC<11400 2020-04-02 02:00:18 +02:00
Jonas Herzig
c0e27634f4 Fix particle orientation during omnidirectional rendering in 1.15 2020-04-02 00:11:06 +02:00
Jonas Herzig
bf6f71ef89 Fix packet reference counting in MarkerProcessor 2020-04-02 00:11:06 +02:00
Jonas Herzig
2dbd5cde02 Update ReplayStudio 2020-04-02 00:11:06 +02:00
Jonas Herzig
c9285ab4a1 Fix end portal texture animation while replay is paused
Figured out where they moved it.
2020-04-02 00:11:06 +02:00
Jonas Herzig
d5fcdfb8c2 Fix ODS rendering in 1.15 2020-04-02 00:11:06 +02:00
Jonas Herzig
ad523009b4 Fix entity rendering with larger/smaller than actual resolution 2020-04-02 00:11:06 +02:00
Jonas Herzig
4116a3a7c9 Fix path preview rendering in 1.15 2020-04-02 00:11:06 +02:00
Jonas Herzig
b11b9db548 Fix frustum culling during non-ODS omnidirectional rendering
Not sure when this changed (probably with 1.14 update) but it definitely was
before the 1.15 update.
2020-04-02 00:11:06 +02:00
Jonas Herzig
2c3697c2ec Fix cubic rendering orientation 2020-04-02 00:11:06 +02:00
Jonas Herzig
d6559a21fc Get all 1.15 mixins applying 2020-04-02 00:11:06 +02:00
Jonas Herzig
a3e1792fe7 More 1.15 mapping fixes 2020-04-02 00:11:06 +02:00