Commit graph

2326 commits

Author SHA1 Message Date
PepperCode1
0c74be53f6 Add partial support for non-shaded quads
- 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
2022-02-18 20:39:19 -08:00
Jozufozu
52f66dec9d Move diffuse declaration to vertex compiler 2022-02-14 20:45:13 -08:00
Jozufozu
20a75321e2 Fix occasional crash when flywheel objects are loaded in 2022-02-14 20:36:35 -08:00
Jozufozu
c07c6363f9 Resolve redirect conflict and add more optifine hacks
- Fix entitiesForRendering redirect to be compatible with carpet.
 - Use more reflection for dealing with optifine
 - Fixes issue where flywheel would still be on immediately after enabling optifine shaders
2022-02-10 21:26:56 -08:00
PepperCode1
7515cc74f7 Remove force diffuse
- The batching engine may run in parallel, meaning the force diffuse
state will not be read correctly
- ModelTransformers only process vertices that will be rendered in the
world
- Add 0.6.1 to the issue template
2022-02-08 21:37:09 -08:00
PepperCode1
f24c1fafba Add, refactor, remove
- Add DiffuseLightCalculator
- Add ModelUtil.VANILLA_RENDERER for consistent virtual rendering
- Refactor OptifineHandler
- Remove MatrixTransformStack
2022-02-08 19:26:36 -08:00
Jozufozu
ae5853442b Small utility functions 2022-02-06 00:55:49 -08:00
PepperCode1
1d0e0eb6bc Compress config command code
- Remove BooleanConfig, BooleanConfigCommand, and BooleanDirective
- Make Flywheel.VERSION private so it cannot be changed
- Move createUpdateLimiter from FlwConfig to InstanceManager
2022-02-01 20:44:53 -08:00
Jozufozu
9219fef20a Toggleable update limiting
- Extract update limiting behavior to interface
 - Move original impl to BandedPrimeLimiter
 - Add dummy NonLimiter impl
 - Add command/config to toggle update limiting
 - Refactor InstanceManager to be more consistent between frame updates and tick updates
 - Bump version - 0.6.1
2022-02-01 13:56:08 -08:00
Jozufozu
b403ca3d2b Pepper's catches
- GlCompat now a singleton, doesn't need to be re-created
 - Fix crash with F3 open and backend off
 - Clear program spec map before loading
 - Merge FlywheelClient and Flywheel classes
2022-02-01 12:46:47 -08:00
Jozufozu
a1791399b6 Un-remove getBackendDescriptor
- No point in incorrectly inlining it
 - One useage was replaced by InstancedRenderDispatcher#getDebugString
2022-01-31 13:26:55 -08:00
Jozufozu
24423c56a8 Add more debug info
- Flywheel version
 - Vertex/Instance count
 - Origin coordinate for Instancing Engine
2022-01-31 13:14:30 -08:00
Jozufozu
84432fb837
Add 0.6.0 to bug report template 2022-01-25 18:01:36 -08:00
Jozufozu
421e11ebc1
Create FUNDING.yml 2022-01-25 10:13:24 -08:00
Jozufozu
5a2de8095c Update changelog and document Translate#nudge 2022-01-25 10:12:08 -08:00
Jozufozu
c490d15876 Initial move to client commands.
- Nothing fancy, just inlining packets.
2022-01-24 10:46:17 -08:00
Jozufozu
2638e79aa2 Add accessor to BlockEntityRenderer map. 2022-01-18 13:44:28 -08:00
Jozufozu
26ea6bd315 Bump version - 0.6.0 2022-01-17 18:26:28 -08:00
Jozufozu
1ad64c595c Merge branch '1.18/shader-sanity' into 1.18/dev 2022-01-17 16:56:39 -08:00
Jozufozu
bc55726da3 A fix and a refactor
- ModelPools no longer undbind their buffer during construction, as state should be maintained externally
 - Call BufferUploader#reset at the end of renderChunkLayer to partially fix crash rendering contraptions
 - Remove Engine#getName, it was replaced by FlwEngine
2022-01-17 16:19:18 -08:00
Jozufozu
b351baa824 Handle arbitrary numbers of GameStateProviders
- Use bitset instead of long.
 - We only ever iterate over the GameStateProviders, so use a list instead of a map.
 - GameStateProviders don't need IDs.
2022-01-13 15:58:51 -08:00
Jozufozu
298ca3e9f1 Reorganize and simplify
- StructTypes no longer need to be registered
 - Move backend.source to core.source
 - Move GameStateRegistry to core
 - Backend is static again
 - Loader maintains state internally
2022-01-12 21:25:03 -08:00
Jozufozu
a62bc66060 Better memoized shader compilation and global game state
- Properly separate compilation of vertex and fragment shaders
 - Game state is no longer per-program
 - Needs organization
2022-01-12 00:19:37 -08:00
Jozufozu
7d4055f263 More organized shader compilation 2022-01-11 13:17:55 -08:00
Jozufozu
e228427e72 Sodium compatibility 2022-01-10 15:08:02 -08:00
Jozufozu
2d63d8c7db Separate vertex and fragment shaders and templates 2022-01-10 14:38:26 -08:00
Jozufozu
12cab85f69 Merge branch '1.18/dev' into 1.18/shader-sanity
# Conflicts:
#	src/main/java/com/jozufozu/flywheel/backend/instancing/instancing/InstancingEngine.java
2022-01-09 22:35:42 -08:00
Jozufozu
f8ed5df41d Update changelog 2022-01-08 17:42:32 -08:00
Jozufozu
b2c03a4069 Conditional state restore and BufferUploader sanity check
- Only restore state that has changed
 - Sanity check to fix error condition on reset
2022-01-08 16:48:42 -08:00
Jozufozu
3391e3e168 GlStateTracker for better state restore
- Replaces both ShaderInstanceAccessor and BufferUploaderAccessor
2022-01-08 14:51:55 -08:00
Jozufozu
bfe123d167 Almost sane shaders
- No more ShaderContext. Programs are directly retrieved through ProgramCompilers.
 - Templates don't need generics
 - Remove ExtensibleGlProgram
2022-01-07 22:46:29 -08:00
Jozufozu
b6a00b54dd Fix crash rendering biome-tinted blocks on contraptions
- Biome colors now line up with the world
2022-01-07 14:18:59 -08:00
Jozufozu
06e1d5a901 Flatten core.shader and fix residual merge conflicts 2022-01-07 12:01:03 -08:00
Jozufozu
2254a693c9 Merge branch '1.18/dev' into 1.18/shader-sanity
# Conflicts:
#	src/main/java/com/jozufozu/flywheel/backend/source/FileResolution.java
#	src/main/java/com/jozufozu/flywheel/core/shader/GameStateProgram.java
#	src/main/java/com/jozufozu/flywheel/core/shader/gamestate/NormalDebugStateProvider.java
#	src/main/java/com/jozufozu/flywheel/core/shader/spec/BooleanGameStateCondition.java
#	src/main/java/com/jozufozu/flywheel/core/shader/spec/GameStateCondition.java
#	src/main/java/com/jozufozu/flywheel/core/shader/spec/ProgramState.java
#	src/main/java/com/jozufozu/flywheel/core/shader/spec/SpecificValueCondition.java
2022-01-07 11:52:42 -08:00
Jozufozu
01fb788fa3 Reduce merge conflicts with shader-sanity 2022-01-07 11:50:01 -08:00
Jozufozu
e4182a7f1e RenderLayers directly store DrawBuffers
- Inspired by pepper's BlockEntityTypeExtensions
 - Document the batching engine internals.
2022-01-06 15:25:00 -08:00
Jozufozu
5c4ff9ca2a Fix visual artifacts with contraptions while using opfine.
I think the buffers from the shadow pass were bleeding into the color pass.
2022-01-06 13:04:16 -08:00
Jozufozu
e0342c4b78 Better state restore in InstancingEngine
- Attempt to fix optifine issues
 - Replace <code> with {@code}
2022-01-06 13:04:16 -08:00
PepperCode1
8224e47619 Add 0.5.0a and 0.5.1 to issue template 2022-01-04 21:50:10 -08:00
Jozufozu
379fe60ce6 Document, annotate, and rename
- Add documentation for new InstancedRenderRegistry
 - Annotate TypeExtensions with Nullable
 - Add method for creating bulk instances
2022-01-04 14:14:30 -08:00
PepperCode1
eb8dc6bc07 Switch to instancing controllers
- 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
2022-01-03 21:41:08 -08:00
Jozufozu
c196ed5d78 Consider RenderLayer when compiling shaders
- Disabled cutout logic in other layers
2022-01-01 15:19:49 -08:00
Jozufozu
1f5f2a5476 Compile everything on the fly
- 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
2021-12-31 12:08:07 -08:00
Jozufozu
67b91a95f6 Merge branch '1.18/dev' into 1.18/shader-sanity
# Conflicts:
#	src/main/java/com/jozufozu/flywheel/backend/Backend.java
#	src/main/java/com/jozufozu/flywheel/backend/gl/shader/GlShader.java
#	src/main/java/com/jozufozu/flywheel/backend/pipeline/ProgramAssembler.java
#	src/main/java/com/jozufozu/flywheel/core/WorldContext.java
2021-12-31 00:25:24 -08:00
Jozufozu
4c0df23702 Write active backend to crash reports 2021-12-30 20:01:45 -08:00
Jozufozu
d38e2421c9 Fix crash on resource reload with flywheel disabled
- Closes #83
 - Move engine selection to function
 - Rename Backend.log to Backend.LOGGER
2021-12-30 15:15:25 -08:00
Jozufozu
a8842d4c64 Shader sanity
- 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
2021-12-29 13:10:38 -08:00
Jozufozu
1d8a5dc84e Bump version - 0.5.0a 2021-12-29 10:59:34 -08:00
Jozufozu
123a548474 Fix crash on load when backend is off
- Closes #81
 - Disabled crashing on error poll
2021-12-28 20:39:32 -08:00
Jozufozu
92ad07c779 Batching is not actually compatible with shaders 2021-12-28 15:26:56 -08:00