- Defer constructing the engine until we're on the main thread
- Clean up some Storage dataflow and pass VisualizationContext directly
to plan factories
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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