Commit Graph

102 Commits

Author SHA1 Message Date
Jonas Herzig
5218feb6b6 Update to 1.20.6 2024-06-23 20:24:57 +02:00
Jonas Herzig
43576efeb3 Convert JPG images to PNG
Minecraft 1.20.3 no longer supports loading JPG images.
2023-12-03 16:28:28 +01:00
Jonas Herzig
497b8440ca Call Window.onFramebufferSizeChanged to resize (fixes #705)
Instead of setting the the values via accessor and calling the handler directly.
This allows mods like ResolutionControl+ to properly resize its internal
framebuffers as well.
2022-04-17 12:01:40 +02:00
Jonas Herzig
5be57681af Completely bypass Minecraft when window is resized during rendering
Should fix issues where resizing affects the render result.
2022-04-17 12:01:40 +02:00
Jonas Herzig
4558793030 Remove unless window size tracking
The only thing we care about is the framebuffer size, cause that will differ
between game and progress gui rendering. The window size will be the same (real)
size for both.
2022-04-17 12:01:40 +02:00
Jonas Herzig
fb36fc2ba8 Fix render progress framebuffer never being deleted 2022-04-10 18:20:26 +02:00
Jonas Herzig
01d37ab2cb Split gui window/framebuffer management code from VideoRenderer 2022-04-10 18:20:16 +02:00
Jonas Herzig
2e34a2abd9 Fix render timer breaking when system time changes (fixes #633)
Unlike `currentTimeMillis`, `nanoTime` is guaranteed to be relative to a
fixed point in time, regardless of system or wall-clock time.
2022-03-06 13:39:49 +01:00
Jonas Herzig
a8d05a2bca Skip mod compat warning screen when in render queue (fixes #653) 2022-03-06 13:39:49 +01:00
Jonas Herzig
7615499cef Add option to preserve alpha channel in export (closes #661)
Default off cause it being on by default had confused quite a few people.
2022-03-06 13:39:49 +01:00
Jonas Herzig
fe67d7fa14 Link to our docs in the "Missing ffmpeg" screen (closes #663) 2022-03-06 13:39:49 +01:00
Jonas Herzig
31817bcf11 Split replay folder and file management into their own classes 2021-11-29 17:42:44 +01:00
Jonas Herzig
463c51be85 Convert getDefaultRenderSettings into default constructor
Allows us to completely get rid of the custom Gson instance and is more
idiomatic anyway.
2021-08-15 11:45:23 +02:00
Jonas Herzig
9626a4c442 Fix parsing of render queue with chroma key (fixes #564)
By simply replacing the private field with a concrete type, so we do not need to
manually register one when constructing the gson instance (which is evidently
too easy to forget about).
2021-08-15 11:39:10 +02:00
Jonas Herzig
3cba99068e Increase default bitrate to from 10 to 20mbps 2021-07-31 14:37:10 +02:00
Jonas Herzig
2891c4e8fa Remove MP4 Default Quality preset (closes #475)
Similar to High Quality, it is too unpredictable, sometimes giving bad quality
and sometimes being unbearably slow. We should just encourage everyone to set
their bitrate manually.
2021-07-24 12:59:06 +02:00
Jonas Herzig
83cb459957 Fix keyframes being required to open render queue window
Half the reason we swapped the render queue / settings parent relationship was
so we don't need to go through the settings screen to access the queue. But for
some reason I stopped half way through and didn't also move the "You need at
last two keyframes." popup. This commit rectifies that.
2021-07-24 12:46:13 +02:00
Jonas Herzig
7ab2edd738 Implement ODS rendering via Iris Shader for MC 1.17 2021-07-01 14:05:52 +02:00
Jonas Herzig
8d3d705fed Switch to commons-lang Pair instead of the ViaVersion one
Cause that one will be removed in a future version, and the lang one is just
fine.
2021-06-28 14:35:57 +02:00
Jonas Herzig
dda6bd41b6 Implement ffmpeg-independent PNGWriter (closes #476)
Creates a dedicated folder for each video and does not depend on ffmpeg, just
like the EXRWriter (but supporting all MC versions).

Also does 32 bit depth export by chunking the 32-bit float into the 8-bit BGRA
component channels.
2021-03-14 12:12:53 +01:00
Jonas Herzig
cfb9e15b8a Make use of new @Pattern feature to centralize version-aware code
That is, most of the business code should not be aware that it is being compiled
to multiple versions even when it heavily interacts with MC, preprocessor
statements should be an escape hatch, not the norm.
Similarly, code should not be forced to do `MCVer.getWindow(mc)` instead of the
much more intuitive `mc.getWindow()`, and a new preprocessor (technically remap)
feature makes this possible by defining "search and replace"-like patterns (but
smarter in that they are type-aware) in one or more central places (the
"Patterns.java" files) which then are applied all over the code base.

In a way, this is another step in the automatic back-porting process where
preprocessor statements are used when we cannot yet do something automatically.
Previously we "merely" automatically converted between different mapping, this
new feature now also allows us to automatically perform simple refactoring
tasks like changing field access to a getter+setter (e.g. `mc.getWindow()`), or
changing how a method is called (e.g. `BufferBuilder.begin`), or changing a
method call chain (e.g. `dispatcher.camera.getYaw()`), or most other
search-and-replace-like changes and any combination of those.
The only major limitation is that the replacement itself is not smart, so
arguments must be kept in same order (or be temporarily assigned to local
variables which then can be used in any order).
2021-03-14 12:12:51 +01:00
Jonas Herzig
8c2d7d096c Merge branch 'stable' into develop 2021-02-19 11:58:28 +01:00
Jonas Herzig
5f0218929b Process sub-selection of render jobs in displayed order (fixes #488) 2021-02-17 03:33:14 +01:00
Jonas Herzig
6d0d50f5b3 Fix "Render All" button in render queue (fixes #447) 2021-02-17 03:06:52 +01:00
Jonas Herzig
a5f874e571 Fix crash with certain render output file values (fixes #396) 2021-02-17 01:19:29 +01:00
Jonas Herzig
57c7362e34 Merge branch 'stable' into develop 2020-11-22 17:10:27 +01:00
Jonas Herzig
4739d2278b Fix render settings not saving when rendering (fixes #425)
Clicking Cancel or Add to Queue does save them but clicking Render does not.

This is caused by the fact that the GuiRenderSettings are now a popup and no
longer their own screen, so to close them, we need to call its close method, not
close the entire screen.
2020-11-22 14:53:40 +01:00
Jonas Herzig
ec862f0596 Update jGui 2020-11-07 13:18:10 +01:00
Jonas Herzig
dd5935649d Do not rely on error handling popup for sodium info (fixes #392)
Instead we now disable all the Render buttons and give them a tooltip. Much more
user-friendly.
2020-11-06 18:54:54 +01:00
Jonas Herzig
76bec31cd8 Move cache folders into central (hidden) location (closes #343) 2020-11-06 18:54:54 +01:00
Jonas Herzig
d3230e1e38 Add camera path export (closes #391) 2020-11-06 18:54:52 +01:00
Jonas Herzig
d8135d9038 Add depth map export (closes #371) 2020-11-06 11:41:38 +01:00
Jonas Herzig
2b6d1b2359 Add OpenEXR export option
In preparation for depth map export.
2020-11-06 11:41:38 +01:00
Jonas Herzig
17e554b67c Rename VideoWriter -> FFmpegWriter 2020-10-03 14:52:58 +02:00
Jonas Herzig
aee486c4f3 Stop assuming that our render pipeline will only process RGB frames
For one, we have already switched to RGBA some time ago, so the name was
technically incorrect already.
But the main reason is that we'll want to use them for depth maps as well (and
potentially maybe even for HDR images if that's possible with canvas?).
2020-10-03 14:50:44 +02:00
Jonas Herzig
b488e0b059 Fix render queue not being persisting after edit (fixes #362) 2020-10-03 10:38:08 +02:00
Jonas Herzig
f623bb3ee7 Add reset button to export command settings (closes #356) 2020-09-06 11:45:37 +02:00
Jonas Herzig
e5c0ca501b Add option to process multiple render queues in on go (closes #349) 2020-09-06 11:45:37 +02:00
Jonas Herzig
9211fb524c Persist render queue in replay file (closes #317) 2020-08-29 21:21:34 +02:00
Jonas Herzig
4a6c0acc8b Add "Add to Queue" button to keyframe repository (closes #168) 2020-08-29 19:13:59 +02:00
Jonas Herzig
a92aa9cbbd Add Edit button to render queue 2020-08-29 19:13:04 +02:00
Jonas Herzig
f13e8834d6 Have render job name be determined directly by output file name 2020-08-29 19:13:04 +02:00
Jonas Herzig
1188ce4360 Swap parent relation between render settings and queue
Previously you'd access the render queue from the render settings screen which
was arguably the wrong way around (e.g. you weren't able to access the queue
when your current keyframes were incorrect even if you only wanted to render
those in the queue).

Now the render button opens the queue which can open a new settings popup. To
save people who don't need the queue from always having to go through it, the
queue will immediately open a new settings popup if does not yet have any jobs.
2020-08-29 19:13:04 +02:00
Jonas Herzig
ae63b32268 Allow rendering of selected entries in render queue gui 2020-08-29 19:13:04 +02:00
Jonas Herzig
fbed279e34 Add multi-select to render queue gui 2020-08-29 14:46:04 +02:00
Jonas Herzig
d95af541c7 Default render queue job name to output file name (closes #267) 2020-08-29 14:27:07 +02:00
Jonas Herzig
c2f51d41fa ./gradlew :1.16.2:setCoreVersion 2020-08-28 14:55:40 +02:00
Jonas Herzig
16c759f1dd Drop lombok, it has been causing too much confusion
Basically the result of the Delombok function, except we use IntelliJ's equals,
hashCode and toString and don't re-organize imports (cause that breaks the
preprocessor) and a bunch of manual cleanup was necessary (and half the classes
weren't even converted).
2020-08-28 14:06:31 +02:00
LindaJuffermans
9c3c76e70d Added NULL check for missing encodingPreset (fixes #288) 2020-08-03 10:23:50 +02:00
Jonas Herzig
fc1ae0e109 Hide unsupported render methods in settings gui (fixes #284) 2020-07-25 17:02:24 +02:00