- Plans are now generic about a context object
- Move default composition impls to SimplyComposedPlan
- Remove PlanUtil
- Make Synchronizer implement Runnable
- Add ContextAgnosticPlan to preserve old behavior
- Reduce creation of plan objects
- Make BatchingEngine, BatchingStage directly implement plan
- Introduce BatchContext for BatchingStage plans
- Introduce FrameContext, TickContext for VisualManager plans
- Cache separate "recreation plan" for when origin shifts occur
- Ensure current backend is never null
- Fix StringUtil#countLines
- Use material index instead of file location when adapting material
shader function name
- Merge Includer and Compilation factory into ShaderCompiler and remove
builder
- Remove CompileUtil
- Remove Index
- Remove unnecessary code from ShaderSources
- Move source component classes to backend.compile.component
- Move core compilation classes to backend.compile.core
- Move pipeline classes to backend.compile
- Move GLSLVersion to glsl package
- Move SourceChecks to backend.compile
- Move pipeline code to backend package
- Store compiled programs in FlwPrograms instead of FlwCompiler
- Rename PipelineContext to PipelineProgramKey and remove CullingContext
- Remove PipelineContextSet and CullingContextSet
- Improve quality of dumped sources
- Rename pipeline directory to internal
- Add underscores before more internal GLSL variables
- Remove unnecessary GLSL files
- Don't use FrustumIntersection as intermediary for writing planes in
indirect rendering.
- Move all computation and writing to FlwUtil.
- Remove corresponding methods from JOML class.
- Rename TaskEngine to TaskExecutor
- Make TaskExecutor extend Executor
- Simplify ParallelTaskExecutor
- Move WorkGroup code to separate class
- Fix CPUInstancers being updated too late
- Do not unnecessarily clear memory when preparing DrawBuffer
- Simplify BatchingDrawTracker and DrawBufferSet by storing RenderType
in DrawBuffer
- Move all additional Mojang matrix operations to MatrixUtil and expose
fields using accessors
- Remove Color
- Remove WeakHashSet
- FileResolution was implemented to support a two-pass
preprocessor/compiler.
- The new architecture no longer needs its functionality.
- It doesn't make sense to have implementors individually apply the
"checks" to ensure their components are sound.
- The component checking code
- Remove FileResolution, replace all references with ResourceLocation
- Small refactor to UniformBuffer to put everything into one UBO
- Remove BlockEntityRenderDispatcherAccessor
- Rename component resource location getters for consistency
- Small cleanups here and there
- Consolidate SourceChecks to SourceChecks.java for future use
- Color component methods in vertex lists now use floats instead of
bytes
- VertexList no longer implements PointSet
- Return better defaults for unused attributes in vertex list
implementations
- Slightly optimize vertex list implementations
- Fix ModelUtil#convertBlockBuffer allocating wrong number of bytes for
destination data
- Remove combined color methods in vertex lists
- Remove ReusableVertexList#vertexStride
- Remove default methods in VertexType
- Rename Mesh#close to Mesh#delete
- Attempt at componentizing ShaderCompiler, starting with Includer
- Begin refactoring uniform providers
- Context as an interface
- Separate ContextSet objects for Pipeline shaders and Culling shaders
- Inline ProgramAssembler
- Replace StringUtil#trimEnd with String#stripTrailing
- Add StringUtil#trimPrefix and #trimSuffix
- The ubershaders actually compile, but uniforms/material ids are broken
- Convert vertex/fragment adapter components into generic builder
- Support arbitrary adapted function signatures
- Make an attempt at cleaning up generation code
- *make the errors understandable without actually solving them
- Straighten out shader compilation/error generation
- Interpret errors in generated code
- Compilation returns a result type instead of throwing an exception
- Still need to reimplement source checks?
- Make error messages prettier
- Not *quite* ubershaders yet
- Note: heavily broken
- "Pull" based compilation
- Sources are only ready when they are needed by the compiler
- Compiler is responsible for import resolution
- Compiler prepends file headers
- Reduces need for FileResolution
- May replace with ResourceLocations?
- Not sure about the future of source checks
- TODO: Lots of dead code left in FileResolution
- PipelineShader -> Pipeline interface + Simple impl
- Use Context object for assembler factory
- Note: heavily broken
- Move all compilation logic into a single package
- FlwCompiler is responsible for compilation
- CompilationEnvironment generates combinations and performs analysis
- Create source components for vertex/fragment ubershader codegen
- More hacky glsl generation utils
- Strip explicit uniform buffers from uniform shaders
- Free all DrawBuffers on renderer reload
- Add flw.debugMemorySafety flag to detect leaked untracked MemoryBlocks
- Replace VertexListProviderRegistry with static methods in
VertexListProvider and a VertexFormatMixin
- Make the DrawBuffer constructor accept a VertexFormat instead of a
RenderType
- Merge TStack into TransformStack
- Move all duck interfaces/extensions to extension package
- Make mixin style more consistent
- 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
- 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
- Fix Resources not being closed properly
- Change versioning scheme to match Create
- Add LICENSE to built jar
- Fix mods.toml version sync
- Move JOML code to non-src directory
- Update Gradle
- 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
- 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
- Remove OnlyIn annotations
- Replace JSR305 Nullable and Nonnull with Jetbrains Nullable and
NotNull
- Fix indentation in flywheel.mixins.json
- Organize imports
- 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