Commit graph

923 commits

Author SHA1 Message Date
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
Jozufozu
045b065166 I do declare
- Move source set bundling/common source set sharing logic into
  transitiveSourceSets and make it more flexible
- Remove commonProject field from platform extension
2025-01-12 19:03:32 -08:00
Jozufozu
811b0f2532 Hrm
- Remove sources and javadoc after glob copying them
2025-01-12 16:23:34 -08:00
Jozufozu
0dc8f97b73 String theory
- Assume group/version are behind properties in subproject.init
- Force each subproject to manually specify their base archive name
- Don't generate mod/api artifact ids, just write them out by hand
- Remove DependentProject
2025-01-12 16:08:38 -08:00
Jozufozu
02ea671d31 Oh my glob
- Glob over all jars from libs when running the test mod
- Add vanillin jars to artifacts
2025-01-12 15:48:10 -08:00
Jozufozu
b6124be28a Scratch that
- Loom gets angry when a mod* dependency doesn't immediately exist so
  use a regular runtime dependency with the devlibs jar
- Strangely, the include dependency is just fine with the remap jar
- Move outgoing remapJar/jar configuration generation to JarTaskSet
- Don't actually need evaluationDependsOn
- Fix test mod id
2025-01-12 15:34:33 -08:00
Jozufozu
b541c19785 See yourself out
- Replace outgoing jars by directly consuming classes/resources from
  common
- Add vanillin logo
- Move subproject plugin logic to an extension so it can be configured
- Rename "mod_" properties to "flywheel_"
2025-01-12 14:04:21 -08:00
Jozufozu
6bea04ffee No need to get spicy
- Move common vanillin stuffs to a "vanillin" sourceset
- Add vanillinForge and vanillinFabric subprojects
- Mostly do gradling from scratch
- Export remap jars from platform projects to `include` in vanillin
  projects
2025-01-12 13:02:50 -08:00
Jozufozu
b379be57ae Make explicit the implicit
- Add @apiNotes explaining that flywheel/ is prepended to each shader
  ResourceLocation's path
- Document all InstanceType fields
2025-01-06 22:03:43 -08:00
Jozufozu
a89756a709 Nobody Else Shall Wonder
- Allow materials to specify the cardinal lighting mode
- Hard-code the cardinal lighting mode to be one of 3
  - Off
  - Chunk
  - Entity (default)
- This gives artists some control over how they want their models to
  appear in-game. Kryppers in particular noticed lighting discrepancies
  between a flywheel model and a block model
- Remove "useLightDirections" config, command, and uniform
- Remove "diffuse" flag from Material
2025-01-05 11:19:06 -08:00
Jozufozu
e57702f742 Chronically inline
- Replace ModelUtil.VANILLA_RENDERER with the actual vanilla renderer
- Inline it and remove the static field
- Remove the BlockRenderDispatcher parameter from all BakedModelBufferer
  functions
- Remove FlwLibLink#createVanillaBlockRenderDispatcher
2024-12-24 20:37:42 -08:00
Jozufozu
843b7e9a0b 60x memory optimization
- Downscale logo included in jar to 256x and run it through a png
  optimizer
2024-12-24 20:15:09 -08:00
Jozufozu
38c5b439d9 Lookin good
- Update logo
- Update README
2024-12-24 17:22:32 -08:00
Jozufozu
ddcc96e52a Cover me!
- Switch ResourceReloadCache to RendererReloadCache
2024-12-24 16:44:29 -08:00
Jozufozu
0c195fef9f Manual light updates
- Update the BakedModelBufferers to default to zero sky light
2024-12-02 17:45:19 -08:00
Jozufozu
e1ddd7c2fc You merely adopted it
- Default light to 0 in DefaultVertexList
- Take the max of mesh and instance light in the instance shader
2024-12-02 17:19:00 -08:00
Jozufozu
9e60045d43 Dimensional storage
- Fix exception thrown in light storage when vising nether and end
  dimensions
- Try to make section collection more tolerant, but more work on a
  fallback path is likely needed
2024-11-18 16:13:25 -08:00
Jozufozu
7148ff3f31 Breaking bright
- Fix crumbling having an incorrect draw buffer bound, causing it to
  appear too bright on indirect
2024-11-17 12:24:14 -08:00
Jozufozu
3b7f9c7770 Lights, camera...
- Hopefully fix gh actions by bumping setup-gradle version
2024-11-16 15:10:31 -08:00
Jozufozu
00bd05af88 Who's counting?
- Atomically count instances in indirect instancer
- Fixes indirect draws/instancers never being deleted
- Fix baseDraw being set incorrectly on intel
- Handle setting baseDraw in GlCompat#safeMultiDrawElementsIndirect
2024-11-16 14:54:23 -08:00
Jozufozu
3811da166c Wait a minute
- Add debug flag to disable frame/tick plan execution
- Should help debugging cases where a visual constructor produces a
  visual in an invalid state like the weeping shulker bug
2024-11-15 18:18:44 -08:00
Jozufozu
f3845a15fb Not a lut left
- Prune empty layers from the lut to avoid it just getting larger as the
  player explores the world
2024-11-14 22:33:14 -08:00
Jozufozu
6431a84f67 Sky's edge
- Fix darkness when collecting light sections from high in the air
- Add dummy data layer impl to return a constant
- Empty sky section returns 15
- Empty block section returns 0
- Copy vanilla's logic for determining which data layer to use for a
  given position's sky light value
- While I'm at it, retrieve light section storage via an accessor to
  avoid allocating SectionPos objects
- Improve lut debug view
2024-11-14 22:33:14 -08:00
PepperCode1
ac544245b3 Deferred default
- BackendManager.defaultBackend now dynamically computes the result every time it is invoked
- Forge backend config value now uses a supplier to provide the default backend
- Fix Fabric backend config being saved to "flw_backends" but loaded from "flw_backend"
2024-11-12 22:52:38 -08:00