- BatchingEngine no longer resets the light matrices
- Fix flw_constantAmbientLight always being 0
- Move code from FlwMemoryTracker#*Block methods into MemoryBlockImpl
and TrackedMemoryBlockImpl
- Convert LightVolume to use MemoryBlock
- Add FlwMemoryTracker#callocBuffer
- Add javadoc to deprecated FlwMemoryTracker#*Buffer methods
- Update Mesh javadoc
- Organize imports
- Create MemoryBlock utility for easier management of memory allocation
- Replace most usage of direct ByteBuffer with MemoryBlock
- Remove all usage of Mojang's MemoryTracker
- Simplifier StructWriter
- Rename some classes and packages
- Adapt compilers to work with arbitrary instance types
- Use single compiler for all draw shaders
- Temp solution for instanced array attributes
- Introduce pipeline shaders
- Use memCopy for instanced mesh buffering
- Remove VertexWriter
- Add VertexListProvider
- Add VertexListProviderRegistry to allow vanilla VertexFormats to
create VertexLists
- Add ReusableVertexList that allows setting the pointer and vertex
count
- Batch IDs are stored in a separate buffer
- Bounding spheres in draw command buffer, subject to change
- Guard shader api files
- Generate complete header for compute culler compiler
- Move Frustum UBO to uniform shader/provider
- Specialize MeshPool for the indirect engine
- Temporarily force the engine to be indirect
- Fix compilation issues with test shaders
- VertexAttribute supports DSA
- Fix Miniball issues in dev-env
- VertexList implements PointSet for use with Miniball
- Meshes store their bounding spheres
- Add hook/system property to load renderdoc on client launch
- StructTypes provide separate StorageBufferWriter for indirect
- Cull updates based on the view frustum.
- Instances check themselves against a FrustumIntersection object
- Make GlProgram not abstract
- Leave in small debug rendering experiment
- Replace ModelTransformer with modular pipeline that closely resembles
the instancing pipeline
- StructTypes and Materials now provide a VertexTransformer that
mutates a MutableVertexList
- Rewrite all model building to make it cleaner, more flexible, and
easier to use
- Add SimpleMaterial.GlStateShard for easier control over GL state
- Rename and move some classes
- Materials are given the opportunity to setup/clear render state
- Materials bind textures
- Compile all combinations of shader components at load
- Drastically simplify compilation context objects
- Material shaders control cutout and fog
- Remove all GameState related classes
- Remove CoreShaderInfoMap
- Sneaky optimization to instance storage
- Simplify RenderLists
- Give material fragment shaders a use
- Add new variables to api/fragment.glsl
- Add flw_initFragment to context shaders
- Add flw_vertexOverlay
- Normalize flw_vertexLight
- Values are now [0, 1] where 0 is no light and 1 is max light
- All light values sent to layout shaders and instance shaders are now
[0, 15] and not normalized
- Remove util/light.glsl
- Rename program samplers
- Add FileResolution.isWeak()
- Add BackendType.getShortName()
- Tweak default material
- Move ShaderField to parse package
- Organize imports
- Initial work on uniform buffer registry
- Setup skeleton for ComponentRegistry
- InstancingEngine is no longer generic about the program
- ProgramCompiler considers ContextShaders as input
- Support weak file resolutions
- Temporary GLSL version bump to ease UniformProvider growing pains
- Centralize component shaders to Components
- Add RenderStage enum for better control over when a Material should be
rendered
- Add getRenderStage method to Material
- Replace RenderLayerEvent with RenderStageEvent
- Pass more information to RenderContext including camera and projection
matrix
- Pass RenderContext instead of Camera to all beginFrame-related methods
- Remove RenderContext.CURRENT
- Remove FrustumMixin and CameraMixin
- Remove default BasicModelSupplier constructor
- Convert Material to interface and create SimpleMaterial implementation
- Move API instancer classes to instancer package
- Organize imports
- Re-implement batching under new api topology
- Lots of duplicated code between instancing and batching, room for abstraction
- StructTypes now require their type argument to extend InstancedPart
- Fix crash when re-allocating drawbuffers
- Disable crumbling pending refactor
- Separate RenderDispatcher#beginFrame from RenderDispatcher#maintainOriginCoordinate
- Inline OriginShiftListener
- Refactor InstancedRenderDispatcher hooks
- InstancingEngine takes over tracking individual draw calls
- Many draw calls are associated with a single ShaderState
- Each ShaderState will bind one shader program
- Make Material a record
- Inline Renderable and move InstancedModel.Layer to DrawCall
- Rename InstanceData -> InstancedPart, and subclasses
- Burger Fences
- Fix GlStateTracker nuking vao element buffer bindings
- GlVertexArray tracks element buffer bindings
- Use vertexAttribPointer offset instead of ..BaseVertex
- Setup code for better crumbling rendering
- Move some logic into CoreShaderInfoMap
- Simplify VertexWriter/VertexList
- Prefer IEventBus#addListener to @SubscribeEvent
- Stop using persistent buffers... for now
- Fix and improve crumbling rendering
- Rename Batched to BatchedStructType and Instanced to
InstancedStructType
- Normalize flw_vertexNormal in context/common.vert
- Add TODO and FIXME comments
- Rename MaterialManager -> InstancerManager and Material ->
InstancerFactory
- Create Material class consisting of RenderType and shader files
- Make ModelSuppliers use Materials as keys instead of RenderTypes
- Move diffuse calculation from context shaders to material/shaded.vert
- Merge used templates directly into compilers and remove template
classes
- Overhaul shader pipeline
- Remove VertexType#getShaderHeader in favor of vertex-only "layout
shaders"
- Remove program specs in favor of vertex-only "instance shaders"
- Add API GLSL headers for vertex and fragment shaders that store
common values
- Separate context shaders into vertex and fragment shader files
- Improve import handling
- Ensure imports are not added more than once
- Change regex for import directives to be more in line with C-style
directives
- Move some classes and GLSL files
- Remove OnlyIn annotations
- Replace JSR305 Nullable and Nonnull with Jetbrains Nullable and
NotNull
- Fix indentation in flywheel.mixins.json
- Organize imports
- Instancer VAO logic moved to InstancedModel
- Refactor GlVertexArray for easier debugging
- Sort of clean up BufferLayout
- Padding items are broken, needs fix
- Slight simplification to model allocation
- RenderLayers are no more
- Add basically empty RenderTypeRegistry, to be filled out as I go
- Move content of RenderLayerEvent into RenderContext
- BlockModels have PartialModel names now
- Futz around with InstancingEngine's render logic
- Fix invisibility bug caused by not unbinding vaos
- Inline all the things
- Now MaterialManager -> Material -> Instancer
- ModelSuppliers store RenderType
- Currently broken, it only renders chunk layers so vanilla instances are invisible
- User no longer needs to supply a key object to get an instancer
- Move memoization logic outside of MaterialManager
- Provide utility class for memoizing models
- Vanilla instances use static objects for their models
- PartialModels don't actually need reference states, use air instead
- Move RenderLayer to api package
- Kill lazy killable
- Add ShadeSeparatedBufferBuilder and other code to allow separating all
non-shaded vertices to the end of the buffer
- Add ShadedVertexList to allow defining if a certain vertex is shaded
or not
- Add new methods to ModelUtil with arguments for more flexibility
- Refactor VirtualEmptyBlockGetter to allow defining arbitrary light
values
- Add shaded argument to DiffuseLightCalculator
- Combine InstanceFactories and FlywheelRendered into
InstancingControllers
- Store these controllers directly in the BlockEntity/Entity type
instead of a map for efficiency
- Redo InstancedRenderRegistry to fit these changes
- Rename all tile to block entity
- Remove all interface I prefixes
- Organize imports
- Bump version to 0.5.1
- Simplify game state system
- Need some way to re-add errors on load.
- Streamline shader compilation, reduce map lookups
- Move pipeline package from backend to core
- Simplify interfaces and remove unnecessary classes
- Drastically lower shader boilerplate for instance materials
- Somewhat lower boilerplate for contexts
- VertexTypes are responsible for shader headers
- Better shader compiler errors (at least on nvidia)
- Simplify template classes
- Begin work on lazy shader compilation
- true to false for Pepper
- IBufferedModel -> BufferedModel
- VertexFormat -> BufferLayout
- Use ImmutableList in BufferLayout
- LayoutItem naming consistency
- Try to reduce usage of raw BufferLayouts
- Move vertex interfaces to api package
- #createWriter and #createReader in VertexType
- Some documentation
- Transform interface for grouping traits and combined behavior
- Move transforms to params, impl Transform
- Pass Params object to BatchingTransformers instead of SBB