Commit graph

47 commits

Author SHA1 Message Date
Jozufozu
aaaccc47ee Add instances when chunks are built for rendering
- RIP ChunkIter, may you rule over the depths of hell in peace
 - Fix memory leak when instance worlds get reset
 - Server worlds are not flywheel worlds
 - Nothing to do on world load anymore
2021-12-08 12:16:01 -08:00
Jozufozu
97949ab1da Cull legacy compat boilerplate
- Minecraft is on GL32 now!
2021-12-07 22:47:05 -08:00
Jozufozu
4677893690 Yeet json extensions that idea doesn't make sense
- Was only ever used for fog
 - Was the same for every material
 - Made things unnecessarily complex
 - Fix fog
 - Convert ProgramState to record
2021-12-02 17:40:23 -08:00
Jozufozu
881ce3639d Merge remote-tracking branch 'origin/1.16/dev' into 1.17/dev
# Conflicts:
#	changelog.txt
#	gradle.properties
#	src/main/java/com/jozufozu/flywheel/backend/instancing/InstancedRenderDispatcher.java
#	src/main/java/com/jozufozu/flywheel/config/BooleanConfig.java
#	src/main/java/com/jozufozu/flywheel/config/SConfigureBooleanPacket.java
#	src/main/java/com/jozufozu/flywheel/event/ForgeEvents.java
#	src/main/java/com/jozufozu/flywheel/mixin/RenderHooksMixin.java
#	src/main/java/com/jozufozu/flywheel/util/WorldAttached.java
#	src/main/resources/flywheel.mixins.json
2021-11-23 16:49:39 -08:00
PepperBell
f14aca4517 Server crash fix and formatting
- Fix matrix mixins being applied on dedicated server
- Expand PartialModel functionality: add location getter and model
setter
- Remove Loader.getResourceType since selective reloading is deprecated
- Organize imports and mixin order
- Other formatting
- Update Gradle and Forge
2021-11-18 14:59:39 -08:00
Jozufozu
46ebdfd43b Remove chunk provider mixin and refactor config packets 2021-10-31 17:24:57 -07:00
Jozufozu
762e526a27 Revert "Rename/refactor many interfaces"
This reverts commit 66aa987dbd.

Can re-think the names later.
2021-09-30 13:43:09 -07:00
Jozufozu
66aa987dbd Rename/refactor many interfaces
- Drop I prefix
 - Inline IMultiProgram
 - Remove unused method in InstanceRendered
2021-09-28 17:54:47 -07:00
Jozufozu
40034daa64 Minecraft already stores the projection matrix
mixins--
2021-09-15 14:27:51 -07:00
2ae580259c Remap, update forge, minecraft and java 2021-09-15 09:14:30 +02:00
Jozufozu
fbcc1f0a10 Initial data/struct format refactor
- Inspired by jellysquid3's vertex sinks
 - More robust/extensible solution for data writes
2021-09-12 14:49:00 -07:00
Jozufozu
075719e75c Optimize imports 2021-09-12 09:41:45 -07:00
Jozufozu
4817ce3fe1 Final loader and temporary ShaderSources 2021-08-10 17:39:11 -07:00
Jozufozu
947c611bbc Some decoupling
- New Loader class in charge of loading and compiling everything
 - ShaderSources now only loads sources
 - ShaderSources is immutable now
 - Resolver singleton in charge of managing name resolutions
 - ProgramSpecs go through Resolver
 - WorldShaderPipeline no longer needs reference to ShaderSources
2021-08-10 15:20:51 -07:00
Jozufozu
b0c1ebc76f A heck of a lot
- Reorganize everything
 - Isolate SourceFile related things
 - Should consider decoupling ShaderLoader from resource loading
 - Document a lot of newer things
 - Index functions
 - Awkward WorldContext builder
 - Template responsible for providing shader inputs
 - Template is now an abstract class
 - Template provides GLSL version
 - ProgramSpecs now only accept one file
2021-08-10 02:06:22 -07:00
Jozufozu
b530ea1be5 Fix chunk caching race condition add toggle
- /flywheel chunkCaching on|off
 - synchronized ftw
2021-08-02 00:06:26 -07:00
Jozufozu
9e066f8d41 Documentation and organization
- Add a package-info.java to many packages.
 - Annotate the world parameter in Backend#canUseInstancing as nullable.
 - New utility constructor for BlockModel
 - Note that IDynamicInstance#beginFrame and ITickableInstance#tick are run in parallel.
 - Refactor internals of InstancedRenderDispatcher to group things by InstanceWorlds.
 - InstanceWorlds take over most responsibility for dispatching calls.
 - Simplify massive private call chains in InstanceMaterial.
 - Reorganize methods and add some documentation in MaterialManager, MaterialGroup, InstanceMaterial, and Instancer.
 - Remove unused field from MaterialSpec.
 - Remove unused fields from Instancer and InstanceMaterial
 - Document RenderLayer
 - Add RenderLayer field to RenderLayerEvent
2021-07-27 17:31:58 -07:00
Jozufozu
3b906e39a1 MaterialGroups and massive refactors
- Move material stuff to its own package
 - The various render functions in the material tree now bind to specific render layers
 - Instancers can choose which layer to use
 - The layers are SOLID, CUTOUT, and TRANSPARENT
 - More layers are likely unnecessary, but we'll see
 - Deprecate functions in MaterialManager in favor of more builderesque ones using MaterialGroups
2021-07-21 20:28:20 -07:00
Jozufozu
2238a00bac Remap to Mojmap, update gradle 2021-07-15 11:36:24 -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
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
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
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
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
7b427e3c92 Yeet 2021-06-16 11:19:33 -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
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
2300ef2088 Organization, renaming, and fixing a dumb crash 2021-05-30 17:05:41 -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
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
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
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
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
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
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
67e75d747a Move backend 2021-05-01 16:32:09 -07:00
Renamed from src/main/java/com/simibubi/create/foundation/render/backend/Backend.java (Browse further)