- 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
- Pass material IDs through the indirect draw buffer
- Turns out buffers can be bound to both storage and draw indirect
- Use indexOf in ComponentRegistry to determine IDs
- Remove World/Crumbling Program and move sampler binding to
ContextShader setup
- Basic idea is to let each mode get one uniform shader
- Uniform shader provides a struct with the mod's id as its name
- All structs get placed into one (1) ubo
- Uniforms are implicitly available in all shaders
- Add GlslUniformBlock for new codegen in UniformComponent
- Condense old uniform providers into one object
- ShaderStructs capture the optional variable name in struct definitions
- Change RecursiveIncluder to interleave root components with included
- GlProgram calls UniformBuffer#sync
- 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
- Do not wrap BeginFrameEvent and RenderStageEvent with GL restore state
- Move GL state restoration into InstancingEngine
- Remove BufferUploaderMixin
- Add binding enum values to GlBufferType
- Remove debugNormals config
- Rename some occurrences of "world" to "level"
- Rename BatchingDrawManager to BatchingTransformManager
- Rename BatchDrawingTracker to BatchingDrawTracker
- Move BatchDrawingTracker from BatchingTransformManager to
BatchingEngine
- Do not prepare DrawBuffer if number of vertices is 0
- Add DrawBuffer#isPrepared
- Add checks to DrawBuffer methods
- Remove commented code from CPUInstancerFactory
- Merge BatchLists, BatchedModel, and some parts of BatchingEngine into
BatchingDrawManager for consistency with instancing code
- Have InstancingEngine accept the max origin distance as a constructor
parameter
- Rename TransformSet to TransformCall
- 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
- RenderLists -> InstancingDrawManager, keeps track of:
- Uninitialized models
- All Instancers
- All DrawCalls via DrawSet
- All MeshPools
- One MeshPool is now locked to a single VertexType
- DrawCall binds instance attributes to avoid making assumptions about mesh attribute count
- Yeet crumbling
- Simplify GPUInstancerFactory
- Iris/Oculus create wrapper RenderTypes whose DrawBuffers are never
used. Creating the DrawBuffer on retrieval solves this inefficiency.
- Add 1.18.2 as a Minecraft version to the issue template
- 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