- 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
- 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
- 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
- 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
- Move source set bundling/common source set sharing logic into
transitiveSourceSets and make it more flexible
- Remove commonProject field from platform extension
- 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
- 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_"
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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"
- Add light storage debug view courtesy of effect visuals
- Yellow boxes are filled in sections
- Red/green/blue bars represent the LUT
- Cyan boxes are the "wasted space" in the LUT. Freely representable
sections that are simply not filled in
- Switch to Y X Z ordering
- In theory this will be more coherent since the first lut step on the
GPU will have a more constrained range of values in the worst case
- LightLut now does incremental updates java-side
- Still requires a full upload when changed, though it does not take up
much space
- ShaderLightVisualStorage now actually triggers removal of light
section from the lut
- Don't initialize instancers if they have 0 instances
- Never shrink the index pool
- Actually process recently allocated meshes to avoid growing the list
forever
- Fix hiz test bounds clamping, good ol off by 1 error
- Remove check for useMin since it's never used and the depth reduce
shader is hard-coded already
- Replace monolithic lut building function with a class representing a
layer of the lut
- Actually need 2 classes because int[] and Object[] aren't trivial to
make a type parameter, and we don't really want to be boxing ints here
- No longer need sorted inputs
- Should fix index out of bounds crash caused by reserving space for the
wrong index layer
- This will make it much easier to change the coordinate ordering scheme
* Automated testing
* Testing testing
- Use 2 spaces for indents yaml
- Move setupTestMod to PlatformExtension
- Allow specifying the sourceSet for the testMod artifact
- Rename things to camelCase
- Use rootCompile from transitiveSourceSets for the testMod source sets
- Use a blanket remapTestModJar task in the gh actions build
* Fail slowly
- We want to know the results of both tests regardless
* Add workflow dispatch
* Shoes should be steel toed, dangerous stuff
* Update build.yml
* fix modid
* Update FlywheelTestModClient.java
* add debug logging
* fix syntax issues
* fix issues
* Update build.yml
* Add debug logging
* more logging
* get testmod from correct dir
* switch to env var
* Why wait?
- Immediately audit on client tick
* DidObfuscate
- Fix RenderSystemMixin on fabric
- setShaderFogShape's arguments need to be remapped, but the name of the
function should not be. Fortunately mixin allows matching by function
name alone
* Clever commit title
- Change the Fabric mod ID to match Forge
- Move "Flywheel Test Mod" to static
- Cleanup start/stop messages
- Use the client start event on Fabric
---------
Co-authored-by: Jozufozu <jozsefaug@gmail.com>
- Generic pain relief
- Use new Instance[] rather than capturing the class object of the
instance type
- Make InstancePage static, but manually track the instancer parent so
we can check when stealing
- Simplify array creation helpers and make them static
- Mark InstanceHandleImpl#state as UnknownNullability