- Pipeline shaders now implement all currently used material properties.
- Rename flw_initVertex/flw_initFragment to flw_begin*.
- Rename flw_contextVertex/flw_contextFragment to flw_end*.
- Bind the diffuse texture by hand instead of calling bindActive.
- Add cutout property to materials that need it.
- Remove storage qualifiers and compile guards from api sources.
- Replace api sources with empty stubs by poisoning the ShaderSources
cache.
- Pipelines redefine the shader api and are inserted at the top of a
compilation.
- Declare shader api methods in api sources.
- Fix crash in ErrorBuilder#pointAtLine
- Merge object and batch ID buffer.
- ShaderCompiler accepts a Compilation callback.
- Use callback to enable the conservative depth extension only in
fragment shaders.
- Query subgroup size if available and use callback to set a compile
definition in compute shaders.
- Rename ReloadRenderersEvent to ReloadLevelRendererEvent
- Rename Engine#renderCrumblingInstances to #renderCrumbling
- Make all mixin classes package-private and abstract
- Make all event classes final and document which event bus they are
posted on
- Add EndClientResourceReloadEvent
- Replace some usages of ReloadLevelRendererEvent with
EndClientResourceReloadEvent, including ModelHolder and ModelCache
- Always add all existing entities from world to
VisualizationManagerImpl on construction if level is instanceof Level
- Delete all VisualizationManagerImpls on resource reload
- Improve MemoryBlock utility
- Add MemoryBlock#copyTo(MemoryBlock)
- Remove MemoryBlock#reallocTracked and make #realloc create a tracked
block if and only if the existing block is tracked
- Fix reallocating a debug memory block creating a regular memory
block
- Change BakedModelBufferer to only invoke the result consumer if the
data is not empty
- Improve BackendArgument
- Fix classloading BackendArgument early causing it to return
incomplete suggestions
- Always allow specifying namespace, allow matching only by path, and
always display suggested IDs with namespace
- Move crumbling tbn calculation back to the fragment shader.
- Pass the center of the crumbling block position as a uniform.
- Calculate how to flip the crumbling texture such that it tiles well at
corners in model space.
- Move ugly crumbling code to utility class and improve bucketing.
- Cache uniform locations in GlProgram.
- renderCrumblingInstances accepts a list.
- Implement crumbling for InstancingEngine.
- It's ugly.
- Track what draw calls belong with what instancers.
- DrawCalls lazily create a second VAO for one-off rendering.
- Bind instance vbo with offset to scratch VAO to emulate a draw with
baseInstance.
- Ignore discard predicate in crumbling context.
- SimpleContext takes a Consumer to set sampler bindings.
- Fix debugCrumbling command.
- Compile shaders against all contexts.
Side note: not sure if Context is the right place for crumbling. It
feels like it should be a material, but I don't know how that would
work.
- Rename Engine#delete -> #invalidate per pepper's TODO.
- Plans
- Remove thenMap and andMap from Plan API.
- Add builder for MapContextPlan for better composition.
- Add IfElsePlan and Builder to "fork" on a condition.
- VisualizationManagerImpl no longer rolls a special Plan class and
instead uses a plan composition chain.
- Crumbling
- Not implemented yet!! But the skeleton is taking shape.
- Remove LevelRendererAccessor, and instead directly pass the map of
destructionProgress to the VisualizationManagerImpl when it's time
to render crumbling instances.
- Give Instances a Handle getter.
- Add way to get a block entity visual at a given position.
- Add Engine#renderCrumblingInstance stub.
- Use JOML better where we can.
- Inline MatrixUtil#store and #toJoml
- FlwShaderUniforms keeps a scratch matrix around for mutating the
viewProjection.
- Directly store a Quaternion4f in OrientedInstance to avoid creating
new objects in the batching transformers.
- Move FrameContext creation to a functor.
- We do need to check the renderDebug flag still :ioa:
- Make VisualUpdatePlan's internal plan not null.
- Remove ClientMainMixin :sad:
- Forge's new earlywindow stuff means there's no opportunity for
Flywheel the mod to inject renderdoc before the window is
initialized.
- The workaround for now is to breakpoint in FML's
DisplayWindow#initialize and evaluate
`System.loadLibrary("renderdoc")` manually.
- Make a quick pass resolving conflicts
- Mostly joml related, or to do with the world -> level rename
- Basically left model builders and virtual levels alone
- There are also some forge events that seem to no longer exist
- Start with a cherry pick from 1.20/dev
- Copy over newer gradle wrapper related things from the forge 1.20 mdk
- Follow example from 1.20 mdk to update build.gradle and
settings.gradle
- Update parchment version
- Add VisualizationManager and VisualManager API
- Simplify and fix memory leaks in model utilities
- Pass partialTick directly to visuals and remove AnimationTickHolder
- Fix LevelAttached and FlwTaskExecutor not being thread-safe
- Reorganize and rename many things
- Remove unnecessary things
- Switch #use to #include
- Stop ignoring errors from within shader compilers
- Track load errors in CompilerStats
- Move LoadError to separate sealed interface, LoadResult.Failure wraps
a LoadError
- Move SourceFile member parsing methods to respective classes
- Add tests for SourceFile loading
- Start work on tests for error messages
- 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
- Add FixNormalScalingMixin from Create
- Fix VisualizedRenderDispatcher#tryAddBlockEntity
- Fix flywheel.sodium.mixins.json using wrong plugin class name
- 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
- 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
- Backport general changes from 1.19
- Fix Javadoc of PartialModel
- Remove default Model#getType implementation
- Increment version to 0.6.8
- Update Parchment
- 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"