- *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
- Diagonal-port restore state changes from 1.18/next
- Back-port buffer uploader changes and RenderLayerEvent dispatch point
change from 1.19/dev
- Make CrumblingRenderer return earlier if there is nothing to render
- Bump version
- 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
- 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