Commit graph

946 commits

Author SHA1 Message Date
Jozufozu
1c0e562b6a Trust fall
- Trigger a fallback if any exception is caught during rendering
2025-02-28 22:00:14 -08:00
Jozufozu
5c584d3a9e Better late
- Defer constructing the engine until we're on the main thread
- Clean up some Storage dataflow and pass VisualizationContext directly
  to plan factories
2025-02-28 21:58:30 -08:00
Jozufozu
b4fc76ce8b From You, 625 Commits Ago
- Drop -beta
- Fix common vanillin publishing version
2025-02-27 21:04:19 -08:00
PepperCode1
8c8f6bce56 Level drain
- Remove BakedModelBufferer.ThreadLocalObjects.level from Forge and Fabric versions
2025-02-27 19:57:17 -08:00
PepperCode1
50e0cb32a4 No longer multi
- Rename MultiBlockModelBuilder to BlockModelBuilder
2025-02-27 19:42:47 -08:00
PepperCode1
1336fdb081 Model assembly line
- Remove BlockModelBuilder and its subclasses
- Remove BakedModelBuilder.blockState
- Add BakedModelBuilder.pos
- While buffering from BakedModelBuilder, use state and pos to get random seed
- Make model builder method parameters nullable to allow resetting to defaults
- On Forge, change default model data and lookup to try to get model data from block entity from level
- Rename VirtualEmptyBlockGetter -> EmptyVirtualBlockGetter
- Remove EmptyVirtualBlockGetter.INSTANCE and EmptyVirtualBlockGetter.is()
- Convert OriginBlockAndTintGetter to SinglePosVirtualBlockGetter with control over which BlockPos is used
- Have FabricSinglePosVirtualBlockGetter.getBlockEntityRenderData check block entity's render data if no render data was set
2025-02-27 12:38:38 -08:00
Jozufozu
dc4d869089 Absolutely gutted
- Remove dead code in source file parsing
2025-02-26 22:02:25 -08:00
Jozufozu
cbc524ca7a Merge remote-tracking branch 'Engine-Room/1.20.1/oit' into 1.20.1/dev
# Conflicts:
#	common/src/backend/java/dev/engine_room/flywheel/backend/compile/IndirectPrograms.java
#	fabric/src/backend/java/dev/engine_room/flywheel/backend/compile/FlwProgramsReloader.java
2025-02-26 21:58:35 -08:00
Jozufozu
1d20d36e14 Scattered issues
- Fix gl debug spam when reading from the scatter buffer
- Cherry pick optimization from last frame visibility to use the staging
  buffer itself to upload the scatter list
2025-02-24 19:37:43 -08:00
Jozufozu
6af08f5426 Transparency, for instance
- Get wavelet oit working on instancing
- Fix shaders not compiling on glsl 150
- Add missing extensions for indirect
- Fix implicit int -> uint casts
- Explicitly bind new sampler locations on the java side
- Ensure FMA is always available, even if only defined through a hack
- Inline a lot of the instanced draw manager to make it easier to sort
  draws and separate oit draws
- Move oit full screen pass programs to a separate class, shared by
  instancing and indirect
2025-02-23 18:31:23 -08:00
PepperCode1
71a5eba3b3 The choice is ours
- Allow "DEFAULT" to be used in place of a backend ID in commands and configs to dynamically and non-persistently select the best backend
2025-02-23 17:56:48 -08:00
PepperCode1
8aa610648a Registration not necessary
Do not register custom argument type infos to BuiltInRegistries.COMMAND_ARGUMENT_TYPE as it is a synced registry and Flywheel is client-side only. Doing so can cause errors when joining a dedicated server.
2025-02-23 16:30:34 -08:00
Jozufozu
5fc07a7513 Direct or indirect, that is the question
- Add non-dsa paths for the OitFramebuffer, behind a gl capabilities
  check
2025-02-23 16:22:08 -08:00
PepperCode1
d2a8d075a7 Assorted adjustments
- Add EmptyModel
- Move Flywheel.rl to ResourceUtil
- Move RenderContext from api to api.backend
- Improve LineModelBuilder
  - Fix exception when calling build twice in a row
  - Expose ensureCapacity
  - Return existing EmptyModel.INSTANCE when applicable
  - Try to shrink memory before finalizing model
2025-02-23 16:12:50 -08:00
Jozufozu
026eb90566 If you say so
- Only do OIT for materials marked ORDER_INDEPENDENT
- Clean up some of the indirect frame logic, early out if there's
  nothing to do
2025-02-23 15:07:46 -08:00
Jozufozu
c1ae6256e5 Merge branch '1.20.1/dev' into 1.20.1/oit 2025-02-23 14:45:39 -08:00
Jozufozu
9975833650 Intelligent priorities
- Rank indirect very low on intel drivers
2025-02-23 14:44:28 -08:00
Jozufozu
7ec8a870bd The choice is yours
- Add ORDER_INDEPENDENT transparency enum
- Document all transparency modes
- Use ORDER_INDEPENDENT for the default translucent chunk materials
2025-02-23 13:53:22 -08:00
Jozufozu
452d912e7b Fabulously transparent
- Write out depth in the composite pass
- When fabulous is enabled, write to the item entity target
- Flip the total transmittance back to alpha when compositing so it can
  be consumed by the blit shader
2025-02-22 23:02:23 -08:00
Jozufozu
19c97df115 A win for window sizes
- Fix transparent objects disappearing when the window is resized
- Clean up OitFramebuffer some more, add a quick description of each
  render pass
- Move oit noise factor to frame uniforms
2025-02-22 21:15:37 -08:00
Jozufozu
fe55693cbb Cleanups and depth
- Centralized wavelet code and roughly document
- Add a full screen pass to render the depth at which transmittance
  falls to zero
2025-02-22 18:43:30 -08:00
Jozufozu
8407d206ba Texture this
- Add blue noise texture
2025-02-21 22:27:05 -08:00
Jozufozu
91ffde5cf5 Inline tuning
- Inline most defines, I don't plan on changing them
- Fix depth passed to REMOVE_SIGNAL block
- Use (blindly copied) optimized function in compositing
- Make the noise factor a uniform
2025-02-21 20:33:46 -08:00
Jozufozu
3f2086e588 Wave goodbye to order
- Implement wavelet OIT
- Needed to do the same normalization step as in MBOIT but that's not
  described in the blog post I followed
- Use an expensive pseudo blue noise function to slightly correct
  banding artifacts
2025-02-19 23:01:27 -08:00
Jozufozu
4eba43b2d6 8 moments
- Use 8 power moments
- Fix compile errors with trig moments
2025-02-17 20:12:59 -08:00
Jozufozu
cb87961b19 A moment, please
- Implement mboit on indirect
- Has issues when many high alpha fragments are stacked on top of each
  other. The transmittance function explodes to zero, and we end up just
  writing out black in the second pass.
- Other than that, I think the approach is very sound but hopefully a
  solution can be found
- Needs some clean up work with instancing, and in fact I think mboit
  can be implemented on GL3.2, whereas wboit relied on extensions or
  GL4.0
2025-02-16 18:16:10 -08:00
Jozufozu
5d16ebda60 Wbout it
- Implement WBOIT
2025-02-15 22:40:46 -08:00
Jozufozu
c438fb57ca Atomic fusion before Flywheel 1.0
- Add workaround for race condition flipping the "mergeable" bit for
  instance pages
- Sometimes a page would end up full while another thread was racing to
  set the mergeable bit, so when we later tried to merge pages we'd get
  an array index out of bounds
- This change makes it so we only ever set the mergeable bit and handle
  the case of a full page when trying to merge
- Should also help us avoid the alternative case where a page that is
  actually mergeable isn't marked as such
2025-02-15 15:51:30 -08:00
Jozufozu
68ed161269 Doc a point for this one
- Fix error in Engine#createFramePlan documentation
2025-02-15 13:11:34 -08:00
Jozufozu
a2fc111499 More hooks more problems
- Remove Engine#setupRender
- Combine DrawManager#flush and DrawManager#render to simplify engines
- Document the hooks in RenderDispatcher
2025-02-15 13:05:02 -08:00
Jozufozu
39a9c45b25 Just not my type
- Remove VisualType
- Engines now render everything in a single pass, and instancers can be
  shared between entities, block entities, and effects
2025-02-15 12:45:29 -08:00
Jozufozu
22c482283f Saving face
- Remove rotateToFace "optimization" that ended up generating NaNs in
  TransformedInstance
- Switch a rotateTo to a rotationTo to save some fmas
2025-02-08 14:11:33 -08:00
Jozufozu
77cd4fb898 Asking permission
- Check BlockState#canOcclude in light storage
- Should fix issues with framed glass blocks
2025-02-03 20:31:13 -08:00
Jozufozu
92fff518cd matrix rotat e
- Add rotateTo method for non-object vectors and directions
2025-02-02 12:09:45 -08:00
Jozufozu
357c116286 Step right on through
- Fix culling for meshes that occupy a significant portion of the screen
  and have their corners occluded but center visible
- We actually just need to generate one more mip level, crunching the
  entire frame down into a single pixel
2025-02-02 11:14:04 -08:00
Jozufozu
ce111b1f5c Does anyone read this?
- Update readme to point to createmod maven
- Add example loom dependency
2025-01-26 17:55:02 -08:00
Jozufozu
8d53f99956 Gradle is always so extra
- Set secret properties using project.extra
- Improve logging when loading secrets
- Log when adding the maven specified in secrets
2025-01-26 17:20:24 -08:00
Jozufozu
0288b37b22 There's always another secret
- Parse a build_secrets.properties file provided by CI
- Expand archive glob to include api artifacts
2025-01-26 17:09:37 -08:00
Jozufozu
d5963455dc No secrets here
- Remove withCredentials block in Build
2025-01-26 15:30:08 -08:00
Jozufozu
6a32b30245 Moving maven
- Add Jenkinsfile to configure createmod CI
- Move from dev.engine_room to dev.engine-room publication group
2025-01-26 14:48:58 -08:00
Jozufozu
4ca5e202a2 Is this thing on?
- Fix new fabric instances defaulting to flywheel:off
2025-01-25 10:37:46 -06:00
Jozufozu
94d99af4b0 Suddenly: mod compat
- Config fields default to "default" and can be either disabled or force
  enabled via the vanillin config file
- Alternatively, mods can set custom properties to disable specific
  visuals
- Emit a warning when a visual is disabled due to mod intervention
- Emit a warning when a visual is force enabled despite mod intervention
2025-01-24 11:49:59 -06:00
Jozufozu
6d2aab7716 Vanillinization
- Move all text visual related things into vanillin
2025-01-23 12:14:01 -06:00
Jozufozu
6003748f0e Merge remote-tracking branch 'origin/1.20.1/text-visual' into 1.20.1/dev
# Conflicts:
#	common/src/backend/resources/assets/flywheel/flywheel/internal/indirect/cull.glsl
#	common/src/lib/java/dev/engine_room/flywheel/lib/internal/FlwLibLink.java
#	common/src/main/java/dev/engine_room/flywheel/impl/FlwLibLinkImpl.java
#	common/src/main/java/dev/engine_room/flywheel/vanilla/VanillaVisuals.java
#	common/src/vanillin/java/dev/engine_room/vanillin/visuals/SignVisual.java
#	forge/build.gradle.kts
2025-01-23 12:07:07 -06:00
Jozufozu
dbd766a5c4 Fancy config groundwork
- Add missing @Nullable annotations to visualizer registry
- Build out common-side configuration infrastructure
- Add fabric config json for vanillin
- Add equivalent forge config json
- Want to allow for toggling specific visualizers/updating config with a
  command
2025-01-23 11:54:32 -06:00
Jozufozu
5472f1a8f9 Add foojay resolver 2025-01-21 17:23:56 -06:00
Jozufozu
809a0eb616 Get JOML'd
- Add more rotate methods to Affine and Rotate
- Add optimized implementations in TransformedInstance
2025-01-19 11:25:21 -06:00
Jozufozu
10d3923bf5 Tragedy of the commons
- Publish common vanillin artifacts
- Extend JarTaskSet publish to accept an action
2025-01-18 15:00:33 -06:00
Jozufozu
99d976fb59 Uncharted: At wit's end
- Need to publish un-remapped sources for forge/mojmap based projects
2025-01-18 14:36:56 -06:00
Jozufozu
40bd90b640 One and the same
- Add model id debug view
- Want to be able to visually check that instances are pointing to the
  same model
2025-01-16 10:57:11 -08:00