Commit graph

198 commits

Author SHA1 Message Date
Jozufozu
7f2d8d8cb2 Prime update divisors
- Smooths out load when ticking too many instances
2021-07-18 18:21:30 -07:00
Jozufozu
e1aa055983 Parallel and caching
- NEEDS MORE TESTING
 - Tick and update instances in parallel
 - Mixin to cache chunk lookups
2021-07-18 18:00:09 -07:00
Jozufozu
4b68cd34ef Instanced Shulker boxes
- Preliminary concept of RenderStates
 - Vanilla has this too but it's bloated
2021-07-18 15:05:12 -07:00
Jozufozu
3cc4ec7d6a Utilities created during an attempt at signs
- Cuboids can be inverted across Y and Z
 - TransformStack scaling
 - VecBuffer coloring
2021-07-17 17:06:49 -07:00
Jozufozu
faceccb327 Merge branch 'dev' into shader-pipeline 2021-07-15 12:00:40 -07:00
Jozufozu
fdf839cd02 Mojmixins 2021-07-15 11:51:57 -07:00
Jozufozu
2238a00bac Remap to Mojmap, update gradle 2021-07-15 11:36:24 -07:00
Jozufozu
c4c07d8edd Merge branch 'dev' into shader-pipeline 2021-07-14 17:23:47 -07:00
Jozufozu
c6b0996b8a Ready for 0.1.1 (finally)
- Might have bumped the version too early.
 - Fix crash rendering breaking overlay after reloading resource packs.
2021-07-14 16:52:35 -07:00
Jozufozu
ef46e5acbf Fix gl error spam
- CrumblingProgram was trying to upload a uniform before the location was queried.
 - Adjust WorldProgram init to mitigate this in the future.
2021-07-14 15:47:44 -07:00
Jozufozu
d256397cb8 Fix crash on resource reload
- Backend wasn't properly cleaning up its state
 - Sneaky error in WorldAttached
2021-07-14 15:35:52 -07:00
Jozufozu
95dabd900e Better errors still
- Actually can print something that underlines a span
 - Resolve imports and use the resolutions during building
 - Doesn't actually make sense to have #checkErrors
 - Simplify some regexes
 - Parse structs
2021-07-14 15:20:49 -07:00
Jozufozu
279d3a2de7 Merge branch 'dev' into shader-pipeline 2021-07-13 23:31:16 -07:00
Jozufozu
defc4dace5 Hacky program link debug info
- Log which gl ids are assigned to different programs
 - Log name and basic state information
2021-07-13 15:57:14 -07:00
Jozufozu
9b17c96741 Merge branch 'dev' into shader-pipeline
# Conflicts:
#	src/main/java/com/jozufozu/flywheel/core/WorldContext.java
2021-07-12 23:53:35 -07:00
Jozufozu
07a2cfd7db Protect against java versioning
- Cast ByteBuffers to Buffer before calling #rewind or #flip
2021-07-12 16:45:36 -07:00
Jozufozu
5d47cc6136 Clean up
- Material managers should not be inside WorldContext
 - InstancedRenderDispatcher now stores the material managers
 - Delete crumbling material manager on renderer reload
 - CrumblingRenderer gets its own class
 - CrumblingRenderer is less jank overall
 - Defer InstancedRenderRegistry deprecated function removal until 0.3
2021-07-12 16:42:43 -07:00
Jozufozu
f0822a5cd4 Fix bell not stopping at the bottom of its swing 2021-07-12 15:19:20 -07:00
Jozufozu
88b00e2ce2 Fix import ordering 2021-07-12 15:02:08 -07:00
Jozufozu
37a72842cf Atlases, bells, breaking
- Bell instance
 - Fix some inconsistencies with PartBuilder
 - Store information on texture atlasses
 - Crumbling overlay fixes
2021-07-12 14:52:54 -07:00
Jozufozu
1cfffa4448 Correctly render chests
- Give up on quaternions
 - Lids lazily update transform matrices
 - MatrixTransformStack
2021-07-11 15:54:51 -07:00
Jozufozu
3fb60b06d1 Actually backwards compat is important
- Reintroduce InstancedRenderRegistry#register methods
 - Deprecate the methods
2021-07-10 18:42:15 -07:00
Jozufozu
12abeb0cc5 Rename builders
- *Registrater -> *Config
 - build -> register
2021-07-10 11:36:30 -07:00
Jozufozu
30cc011ee9 Lids everywhere
- Ender chests and trapped chests, too
 - Chests orient themselves correctly
 - Lids do not position themselves correctly
 - Some math, will probably replace with JOML
2021-07-10 11:33:01 -07:00
Jozufozu
cda3a2e11a Merge branch 'dev' into vanilla-opt
# Conflicts:
#	src/main/java/com/jozufozu/flywheel/FlywheelClient.java
2021-07-09 13:45:52 -07:00
Jozufozu
4d91c06e86 PartialModel gets called from the right place 2021-07-09 13:39:56 -07:00
Jozufozu
0c611dbcb3 4d chest
- Refactor InstancedRenderRegistry to allow for 3rd party TEs to have instances
 - Add ChestInstance, incomplete but there
 - Add basic api for building vanilla formatted models
 - Better instance factory registration
2021-07-09 13:24:26 -07:00
Jozufozu
1ce6e6a70b Sporadic work done in an airport
- Initial ErrorBuilder class
 - Random documentation
2021-07-07 22:08:33 -07:00
Jozufozu
fff46ec348 Common type and character positions
- Shader source abstractions now inherit from AbstractShaderElement
 - Spans keep track of line and column positions
2021-07-06 12:38:32 -07:00
Jozufozu
b10e4024c3 Load a single file
- Use the new immutable sources system to load a single file
 - It doesn't compile it yet
 - Slightly less verbose name
2021-07-05 12:09:13 -07:00
Jozsef
fa5d586f0a Merge branch 'dev' into shader-pipeline 2021-07-02 13:23:02 -07:00
Jozsef
608204ee0a Crash fix and refactor
- Check that sectionY is within the bounds of the chunk's section array, fixes #2
 - Refactor usages of Tile and Entity InstanceManagers to refer to the base class InstanceManager<>
2021-07-02 13:12:33 -07:00
Jozsef
15d5396bc9 More loading tweaks
- Immutable function map
 - Parse #use directives on load
 - Recursive include gathering
 - More sane spec loading in WorldContext
 - StateSensitiveMultiProgram builder
 - Rename confusing game state things
2021-07-02 12:34:12 -07:00
Jozsef
1e2c6f49eb Merge branch 'dev' into shader-pipeline 2021-06-30 13:10:50 -07:00
Jozsef
3f03d1f071 Fix else formatting 2021-06-30 13:03:02 -07:00
Jozsef
33cdfb2ae9 Merge branch 'dev' into shader-pipeline
# Conflicts:
#	src/main/java/com/jozufozu/flywheel/backend/ShaderSources.java
2021-06-30 12:58:21 -07:00
Jozsef
f615825846 Pre-port tasks I
- Rename Client to FlywheelClient
 - Remove Shadow plugin
 - Remove generated source set
 - Remove unused properties in gradle.properties
 - Organize all imports
 - Thanks for the list pepper!
2021-06-30 12:43:54 -07:00
Jozsef
70b58c2838 More fun parsing stuff
- Start loading things via ShaderSources
 - More Span functionality
 - Parse function arguments
2021-06-30 11:42:33 -07:00
JozsefA
5b63d36ab0 Merge branch 'dev' into shader-pipeline 2021-06-27 18:50:38 -07:00
JozsefA
f89673a79e Reset StitchedSprites when the atlas is stitched
- Might fix simi's slime issue
2021-06-26 16:05:15 -07:00
JozsefA
68712430eb Merge branch 'dev' into shader-pipeline 2021-06-26 13:07:27 -07:00
JozsefA
9e983562b8 Always dispatch render layer events 2021-06-26 13:05:21 -07:00
JozsefA
2325db4cdf Start work on shader pipeline system
- Unbulit, untested so far
 - Will ultimately supersede shader contexts/templating
 - Laying framework for better compile errors via Span.java
2021-06-25 18:01:50 -07:00
JozsefA
195a7348f3 Instanced entities are compatible with optifine
- Fix mixin related crash on startup
 - Change defaultRequire to 0
2021-06-24 19:37:31 -07:00
JozsefA
c58674d678 Comment out debug line 2021-06-24 14:21:19 -07:00
JozsefA
de8e324d32 Change behavior of tagged struct parsing in shaders
- Explicit call to Shader#parseStructs is required before they can be read.
 - Fixes a startup crash on some drivers (apparently nvidia is cool with #[...], but other drivers fail)
2021-06-24 14:20:24 -07:00
JozsefA
f8e05d7f8a Fix complaint about an unknown custom packet identifier 2021-06-24 10:42:25 -07:00
JozsefA
5c1f186264 Fix crash on resource reload
- Properly delete MaterialManagers and ShaderContexts
 - Reload renderers on resource reload
 - More utility methods in WorldAttached
2021-06-24 01:20:03 -07:00
JozsefA
2bde33af00 Cleanup flywheel event listeners, fix crash on server startup 2021-06-23 13:19:03 -07:00
JozsefA
78611b0038 Print final shader source on compilation error 2021-06-23 09:08:34 -07:00
JozsefA
6b67e3d55d Add fabulous depth fix 2021-06-22 20:06:00 -07:00
JozsefA
9565a679be Little tweaks and add the logo to mods.toml 2021-06-19 16:52:23 -07:00
JozsefA
96670f3276 Commands, config, and a logo
- Added /flywheel backend command to replace /create experimentalRendering
 - Added /flywheel normalOverlay command
 - Need to think more about a good way to do this in a client only way
 - Added basic config
 - Logo in README.md (thanks, dani!)
2021-06-18 22:52:33 -07:00
JozsefA
3a82535e2d Nuke mod class 2021-06-16 13:03:40 -07:00
JozsefA
7b427e3c92 Yeet 2021-06-16 11:19:33 -07:00
JozsefA
d612cfdd34 Merge remote-tracking branch 'origin/mc1.16/dev' into chromatic-projector 2021-06-11 10:31:18 -07:00
JozsefA
c1dadf3860 Instance managers are abstract 2021-06-10 14:34:16 -07:00
JozsefA
b4a1fbf2c7 Instanced entities are lit 2021-06-09 00:26:54 -07:00
JozsefA
9cc03a81d7 Instanced entities stage 1 2021-06-07 18:12:46 -07:00
JozsefA
285b8f98cf Instanced entities stage 0 2021-06-07 02:43:36 -07:00
JozsefA
d47f898c76 Move away from a static backend class, add a registration event 2021-06-06 15:46:16 -07:00
JozsefA
457fff78f3 Mostly untangle the loading functions, enforce triangles 2021-06-04 17:55:05 -07:00
JozsefA
9bac709dfd Event system, sort of untangle backend 2021-06-04 15:56:46 -07:00
JozsefA
bef6d77a59 Start working on instanced enti- oh wait I've got to do all this other stuff first
- Separate model-level instance management from object-level instance management
 - Separate material management from rendering
 - A few things here and there related to entity instancing
 - Add a rudimentary command to spawn superglue
2021-06-03 21:23:06 -07:00
JozsefA
d7ed765dde Debug text 2021-06-01 13:47:38 -07:00
JozsefA
c4b828ba56 Allocate no more than 3 quad->triangle EBOs ever. 2021-05-31 14:58:49 -07:00
JozsefA
a526156440 Move a package 2021-05-31 12:51:11 -07:00
JozsefA
8fab6c4643 Instance triangles 2021-05-30 22:16:03 -07:00
JozsefA
3500b4ec87 Contraption triangles 2021-05-30 20:53:08 -07:00
JozsefA
2300ef2088 Organization, renaming, and fixing a dumb crash 2021-05-30 17:05:41 -07:00
JozsefA
de451553dd Use VAOs for contraption structures 2021-05-25 12:46:34 -07:00
JozsefA
c8814f123b More sane models
- BufferedModel is no longer abstract.
 - InstancedModel no longer inherits from BufferedModel, it accepts one as input.
 - Replace usage of IndexedModel with BufferedModel
2021-05-24 17:50:13 -07:00
JozsefA
db53b7a3cf Fix gl error spam 2021-05-23 19:36:44 -07:00
JozsefA
9352ef9ede Json program specs, new extension/gamestate system.
- Program specs are now loaded from json instead of being defined in code and registered manually.
 - Within the json spec, a program can define a list of states.
 - A state consists of:
   - A "when" clause.
   - A list of strings to be #defined.
   - A list of extensions to apply at program link time.
 - Each frame, the first state whose "when" clause returns true will be used.
 - A when clause consists of:
  - A state provider defined by a resource location.
  - A value to match.
 - When the value returned by the provider matches the value defined in the when clause, the when clause is considered to be 'true'.
 - There is syntactic sugar for when a provider returns a boolean value.
 - This system is in its infancy, and there is plenty of room for improvement.
2021-05-22 17:45:01 -07:00
JozsefA
d58897d59a Nothing in particular 2021-05-20 17:59:26 -07:00
JozsefA
9a178ef9d8 Abstract fog
- WorldPrograms no longer accept an explicit fog mode.
 - They now inherit from a class that takes a list of arbitrary shader extensions
2021-05-19 19:11:06 -07:00
JozsefA
4d755dc506 More simplification
- Move more stuff to the flywheel namespace
 - Give up on ShaderConstants, there's a better way to do it
 - A semblance of better crash reports
2021-05-19 16:35:37 -07:00
JozsefA
55703d8838 Move to the template system and overhaul instance attributes
- All material shaders now use the template system.
 - Because of the template system, we can know what attributes a material has, along with how they're formatted.
 - All of the *Attribute enums are effectively inlined, as the context they used to provide is no longer needed.
2021-05-18 14:05:52 -07:00
JozsefA
695fe98d28 MaterialSpecs choose their model formats 2021-05-16 20:37:26 -07:00
JozsefA
6227e81066 TemplateBuffer is no more
- Instead, BufferBuilderReader can decode parts of a BufferBuilder.
 - BufferedModel and its subclasses are now created directly with a ByteBuffer.
 - ContraptionModel renamed to IndexedModel.
 - InstancedModel and IndexedModel both now take model formats as arguments.
 - All of this allows for better abstraction, composition, and control of models rendered with Flywheel.
2021-05-16 15:39:52 -07:00
JozsefA
9ff193946c Refactor InstancedModel to not rely on inheritance
- Instead, MaterialSpecs store the information
 - RenderMaterials are now generic on InstanceData instead of InstancedModel
 - RenderMaterials are directly constructed with and store a MaterialSpec
2021-05-15 16:41:56 -07:00
JozsefA
79977aee14 Choose between 2 different implementations of a mapped buffer
- MappedBufferRange (GL30) and MappedFullBuffer (GL15) so far
 - Persistent mapping (optionally?) would be nice
2021-05-14 22:51:14 -07:00
JozsefA
a9cdb1ab6b Begin buffer rework 2021-05-14 18:04:25 -07:00
JozsefA
56b2046957 It can actually load and link something
- Lots of refactoring in the shader loading code.
 - Abstract all the different shader source transformations into ProcessingStage.
 - An ordered list of ProcessingStages is called a ShaderTransformer.
 - When you acquire sources, a Shader now keeps track of the source location, shader type, and source code all together.
2021-05-12 15:14:33 -07:00
JozsefA
c1b7a1c19d Extremely fancy shader templating
- Nothing is properly hooked up yet.
 - A single shader file will be able to be compiled with different opengl targets.
 - I plan on using this to implement meshlet rendering as an alternate backend-backend that will be used when available.
 - It could also be used to enable compatibility with opengl 3.0 or potentially even 2.0.
2021-05-11 18:24:12 -07:00
JozsefA
f6937ffb0c Only a few moves left
- flywheel stuff only barely depends on create
 - start drafting what multiple backends could look like
2021-05-11 11:02:43 -07:00
JozsefA
70401e4ac4 More tweaking
- FLWFinalizeColor takes care of assigning gl_FragColor
 - Multiply crumbling alpha with diffuse alpha
2021-05-08 23:29:02 -07:00
JozsefA
05b56b9b5e Error when missing #flwbuiltins in WorldContext 2021-05-07 22:15:07 -07:00
JozsefA
aa1a45f164 Block breaking overlay is animated now 2021-05-07 21:24:07 -07:00
JozsefA
3171a0b7e5 Block breaking animations for arbitrary flywheel tiles.
- Kinda jank so far, but it's great progress.
 - This is also a really good showcase for how flexible the ShaderContext system is.
2021-05-06 18:38:05 -07:00
JozsefA
9736ba19b5 Things here and there
- Move CreateClient.kineticRenderer to Backend
 - InstancedTileRenderers keep track of their own queuedUpdates
 - Sort of a listener system for some render events
2021-05-04 23:56:50 -07:00
JozsefA
55e3f50f64 MaterialSpecs act alone
- No more awkward MaterialType/MaterialSpec business
 - MaterialTypes are registered directly
 - FastRenderDispatcher merged with backend
2021-05-04 21:00:55 -07:00
JozsefA
b6f13aa7ff More granularity for shader context loading 2021-05-04 16:22:27 -07:00
JozsefA
bc5630e593 ShaderContexts
- A huge step towards more arbitrary shader usage
 - Need to work on registration of the different parts
 - Things are unorganized
2021-05-03 21:46:33 -07:00
JozsefA
fcbab5b820 #flwbuiltins and oh so much less overhead
- Put a lot of the reusable code in a sort of standard library
 - Need to evaluate just how much should be lumped in there
 - Still need to allow for users to create alternate contexts for the builtins
 - Normal world and contraptions are still hardcoded contexts
2021-05-03 13:42:23 -07:00
JozsefA
35768b5ade Step towards arbitrary shader contexts 2021-05-02 14:16:02 -07:00
JozsefA
2112061db0 Vertex shader abstractions 2021-05-01 23:39:36 -07:00
JozsefA
67e75d747a Move backend 2021-05-01 16:32:09 -07:00