Commit graph

58 commits

Author SHA1 Message Date
Jozufozu
984cde4d43 Move diffuse declaration to vertex compiler 2022-02-15 18:02:25 -08:00
Jozufozu
74a147db30 Remove "states" field from program jsons 2022-01-17 16:42:24 -08:00
Jozufozu
88d8d24663 Separate vertex and fragment shaders and templates 2022-01-17 16:42:24 -08:00
Jozufozu
9f64ae4e9a Almost sane shaders
- No more ShaderContext. Programs are directly retrieved through ProgramCompilers.
 - Templates don't need generics
 - Remove ExtensibleGlProgram
2022-01-17 16:42:24 -08:00
Jozufozu
2856594cc8 Pass RenderLayer into contraption structure context 2022-01-17 16:42:23 -08:00
Jozufozu
0b25335f8e Compile everything on the fly 2022-01-17 16:42:23 -08:00
Jozufozu
2b6348855a Shader sanity
- Keeping up with Flywheel changes
2022-01-17 16:42:23 -08:00
Jozufozu
d98a07736c No more diffuse divide
- Move PlacementSimulationWorld to Flywheel as VirtualRenderWorld
 - Simplify ModelTransformer
 - Model doesn't need #configure
 - Bump Flywheel build
2021-12-25 15:56:15 -08:00
Jozufozu
97490e51ca Finally safe vertex formats
- true to false for Pepper
 - IBufferedModel -> BufferedModel
 - VertexFormat -> BufferLayout
 - Use ImmutableList in BufferLayout
 - LayoutItem naming consistency
 - Try to reduce usage of raw BufferLayouts
 - Move vertex interfaces to api package
 - #createWriter and #createReader in VertexType
 - Some documentation
2021-12-22 02:45:46 -08:00
Jozufozu
3e01d3f441 Batching Engine
- Implement alternate backend using SBBs
2021-12-15 17:13:09 -08:00
Jozufozu
67bcbc874b Fix #extension crash on intel 2021-12-15 13:27:50 -08:00
Jozufozu
dfdb8abf49 Use GL_ARB_conservative_depth when possible
- Allows the depth test to discard fragments before the fragment shader is run
2021-12-11 22:03:53 -08:00
Jozufozu
47f8d3f1b5 Cylindrical fog
- having the world position is very nice
 - mojang manages to do multiple matrix multiplications
2021-12-11 17:31:10 -08:00
Jozufozu
6eca281134 Hack for contraption cutout 2021-11-24 11:12:59 -08:00
PepperBell
795ef07b38 Fix Flywheel contraption lighting
- Fix some events being registered to the wrong event bus
- Organize some event registration
- Fully fix FluidRenderer
2021-11-10 22:15:26 -08:00
Jozufozu
5284fe742f Chipping away at light 2021-11-09 14:59:31 -08:00
PepperBell
e0b496f807 Chipped away 2021-11-06 20:59:58 -07:00
Jozufozu
208c6eff89 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:23 -07:00
Jozufozu
cb47ca8452 Reload
- Redo shader loading
 - Now loads an immutable SourceFile containing some metadata
 - Replace legacy compilation pipeline with improved new one using new api
 - Builtins are defined in one file, now "header"
 - New ErrorReporter/ErrorBuilder methods
 - Fancier shader loading errors
2021-08-08 22:35:27 -07:00
Jozufozu
e1248e598a Model changes
- Buffered models directly consume IModels
 - Document IModel more
 - Move contraption world render spoofing to flywheel
 - Miscellaneous new RenderMaths
 - Added WorldModel, renders many blocks given a world instance
 - Fix broken transparency on contraptions when using Flywheel
2021-07-29 01:37:48 -07:00
Jozufozu
f1da8b8f1e Cull code to fix crash on mac
- A bunch of dead code removal
2021-07-10 15:20:34 -07:00
JozsefA
d47f898c76 Move away from a static backend class, add a registration event 2021-06-06 15:46:16 -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
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
fd6e06b487 whoops everything was spinning backwards 2021-05-18 14:46:45 -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
8efe8ed01e Port the fixed lightmap shift to WorldContext 2021-05-14 18:32:27 -07:00
JozsefA
3856283353 Merge remote-tracking branch 'origin/chromatic-projector' into mc1.16/chromatic-projector
# Conflicts:
#	src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionModel.java
2021-05-14 18:07:13 -07:00
JozsefA
a9cdb1ab6b Begin buffer rework 2021-05-14 18:04:25 -07:00
PepperBell
6c1c7a10d9 Fix darker contraptions
Also
- Partially fix incorrect vertex lighting (make sure to not sure Forge's lighting calculator)
- Reorder some lighting to make it more efficient
- Cleanup some things
2021-05-14 16:34:35 -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
4111680755 FLWFinalizeWorld takes care of assigning gl_Position 2021-05-07 23:22:40 -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
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
dc3517eb3a Inversion 2021-04-30 14:28:18 -07:00
JozsefA
54f5783489 More versatile ui/settings
- The channel mask still needs work
 - Add contrast filter
2021-04-28 00:01:26 -07:00
JozsefA
e8ab21c184 More polish
- UI icons
 - Color masking
 - Better scroll ux
 - FilterSphere now has its own file
2021-04-23 14:38:31 -07:00
JozsefA
3879d55517 Better projector gui 2021-04-22 23:42:49 -07:00
JozsefA
f75422f895 Instruction parallel ray sphere intersection 2021-04-20 14:05:50 -07:00
JozsefA
e50590f6b7 Start working on the blocks
- Also better control and visuals
2021-04-18 22:23:41 -07:00
JozsefA
a6248daf7e Better spheres and framebuffer compat layer 2021-04-17 18:55:29 -07:00
JozsefA
83dc241cd2 Basic spherical effect 2021-04-17 13:04:42 -07:00
JozsefA
fafd7c84be Everything works as intended 2021-04-15 15:39:34 -07:00