- Store *Programs inside engines to disallow replacement and use
reference counting to delete programs at the appropriate time
- Move CompilationHarness, Compile, and SourceLoader to compile.core
- Fix packed material comments
- Fix pack.mcmeta pack format
- Remove Embeddium version range
- Log a warning and don't allocate any resources when an instancer is
created with an empty model.
- Log stacktrace starting from the call to InstancerProvider#instancer.
- Revert switch to embeddium dep and comment why the rubidium dep is
there.
- Publish jarjar artifact as default.
- Publish slim artifact without any fancy stuff.
- Update mods.toml
- Switch rubidium to embeddium.
- Set displayURL to modrinth.
- Change version related stuff to $ variables
- Add processResources step to build.gradle to populate mods.toml.
- Add flw_vertexDiffuse and flw_fragDiffuse to glsl api.
- Compute/apply diffuse in the fragment shader.
- Move common glsl between instancing/indirect to common.vert/.frag.
- Add a pittance more documentation to api spec.
- Sneak in a block to build.gradle to always download sources/javadoc.
- Convert InstanceWriters into lambdas passed directly to the builder.
- It's very nice to have everything in one place like that, will make
tweaking the layout much easier.
- Also micro-optimize the cull shader for TransformedInstance.
- Do not store a list of initialized instancers.
- Remove AbstractInstancer#delete. Only InstancedInstancer was using it
so move instancer deletion to InstancedDrawManager.
- Improve CompilationHarness builder pattern and reusability.
- Pass compilation keys directly to compileAndReportErrors.
- Build the harness at the end of the builder chain rather than at the
beginning.
- Use same CompilationHarness for apply shader and scatter shader.
- Remove _ prefix from packed struct fields.
- Make element type's byte size 4-aligned.
- Remove byteSize method from Element.
- Remove BufferLayout and associated classes.
- Replace InternalVertex with new Layout.
- Calculate InternalVertex stuff as static final fields.
- Elements track their own byte size.
- The byte size of an element type is unchanged.
- The byte size of an element is 4-aligned.
- Layout byte size now accounts for alignment.
- Generated packed fields are now always prefixed with an underscore.
- Elements are 4 byte aligned and store their offset.
- Make all ElementTypeImpls records.
- Implement unpacking for all types/reprs.
- Add many utilities to GlslExpr to facilitate unpacking.
- InstancedArraysComponent now fully uses Layouts.
- Trivial to get the glsl type name of a given Element.
- Also quite easy to get the attribute count without actually
creating the attribute list.
- IndirectComponent is WIP because unpacking is hard.
- Reorganize so all the unpacking stuff is in one loop.
- Instead of returning a list, collect crumbling instances via consumer.
- This is much friendlier to inheritance and generally better represents
the behavior we want from Visuals.
- Add Self parameter to TransformStack.
- Replace duck interface impl of TransformStack for PoseStack with
lazily constructed wrapper object.
- Document Models.
- Replace PARTIAL_DIR with TRANSFORMED_PARTIAl and allow for arbitrary
transformations with arbitrary keys.
- Will be useful for transforming by different enums, or using
alternative transforms by Direction.
- Add default impl of #delete to Instance.
- Store VisualizationContext in AbstractVisual.
- Reduce usage of @SuppressWarnings in Rotate and Transform.
- Fix AtomicBitset#nextClearBit
- Add test for AtomicBitset
- Remove unnecessary gl state stuff from IndirectEngine#renderCrumbling.
- Fix instance removal on IndirectEngine.
- Deleting an instance not at the end of the instancers list would
cause an exception to be thrown during upload caused by
out-of-bounds indexing.
- Fixed by unsetting changed for the tail of the instancers list.
- Add crumbling renderer for indirect backend.
- As usual, it's ugly.
- Submit one indirect draw per crumbling instance. Could do multidraw
here, but we'd have to perform the material sort which seems
unnecessary.
- Move gl-coupled BufferLayout and co. to lib.
- Add new Layout record to API.
- List of Elements, a sealed interface of type safe records
representing most possible vertex attributes.
- Deprecate InstanceType#getLayout.
- Add LayoutBuilder in lib for convenience.
- TODO: use new Layouts in backends.
- A scatter command is 2 uints:
- The first contains the size and source offset in the upper byte and
lower 3 bytes respectively.
- The destination offset.
- All offsets and sizes are in uints, not bytes.
- Use ScatterList write scatter commands.
- Use TransferList to collect transfers.
- Rather than consolidating transfers in a separate pass, do so as they
are collected.
- Reorganize StagingBuffer.
- Call setChanged in various visuals' #init.
- Not everything needs it because some just call their frame update
methods right away.
- Improve lazy update logic for bells.
- Visuals must manually call setChanged on Instances.
- Decreases the extent of resource contention and makes what's going on
more explicit.
- Remove self type parameter from FlatLit, I don't think it was ever
needed.
- Separate instance vertex shaders and instance cull shaders into
different files with separate getters in InstanceType
- Remove all occurrences of Names and Files inner classes
- Remove VertexType
- Rename ReusableVertexList to VertexView and all associated classes,
methods, fields, and variables
- Add VertexView#stride
- Make vertex compiler automatically include layout shader
- Fix instancing and indirect not setting correct vertex count before
writing mesh
- Abstract indirect buffers to deduplicate code.
- Write buffer handles when updating sizes.
- StagingBuffer internally handles deferring to a memCopy, accepting a
long consumer
- Add Model.boundingSphere()
- Fix MaterialRenderState not setting up polygon offset correctly
- Fix GlslSwitch using incorrect indentation for first and last line
- Tweak how instanced crumbling works
- Add CutoutShaders.ONE_TENTH
- Rename Contexts.WORLD to DEFAULT
- Rename Material.baseTexture() to texture
- Rename Transparency.LIGHTING to LIGHTNING
- Rename WriteMask.BOTH to COLOR_DEPTH
- Rename SimpleModel to SingleMeshModel and add new SimpleModel that
stores an arbitrary amount of meshes
- Remove flywheel:flywheel/api/* files and assume appropriate symbols
are automatically defined
- Rename many GLSL variables, functions, and constants
- Reorganize GLSL files
- Add NonExtendable annotation to some API classes
- Rename some Java classes, methods, fields, and variables
- Add staging buffer for indirect using unholy amounts of unsafe.
- Make GlFence RAII.
- Make all IndirectBuffers GPU only and use a shared staging buffer for
transfers.
- Add overlay to internal vertex format.
- Move interval vertex format related constants to helper class.
- Switch strides to long so java stops complaining about implicit casts
in multiplication.
- Remove VertexTypes#init as it's not needed anymore.
- Indirect now supports multiple meshes per model.
- Cull entire models at once and then apply the accumulated instance
count to each draw command in a separate compute pass.
- Add utility to calculate the bounding sphere for multiple meshes.
- Inline IndirectDrawSet into IndirectCullingGroup.
- Use MemoryBlocks for draw command and model descriptor storage.
- Fix leaked draw commands.
- Add IndirectModel to track bounding sphere and instancer stuffs.
- IndirectDrawCommand now references IndirectModel instead of Instancer.
- Remove BufferLayout from VertexType.
- Remove VertexType from mesh, and only allow writes to a VertexList.
- MeshPools directly refer to BufferLayout instead of going through
VertexType.
- Instancing and indirect backends use the block format internally.
- Remove layout shaders.
- Do not compile against VertexType.
- Do not sort draw calls by VertexType.
- Remove VertexType#REGISTRY.