Commit Graph

166 Commits

Author SHA1 Message Date
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
c48b94f0fb Merge remote-tracking branch 'origin/chromatic-projector' into mc1.16/chromatic-projector
# Conflicts:
#	src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java
2021-05-18 14:07:34 -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
PepperBell
fd6c930a65 Merge remote-tracking branch 'upstream/chromatic-projector' into
contraption-lighting

# Conflicts:
#	src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/RenderedContraption.java
#	src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java
2021-05-16 19:12:14 -07:00
PepperBell
61b101f0c6 Refactor contraption matrices
- Create ContraptionMatrices class for better management of matrices during the contraption rendering process
- Fix diffuse lighting when rendering contraptions without Flywheel
- Clean up TileEntityRenderHelper
- Add disableDiffuseTransform to SuperByteBuffer and fix light calculation logic
2021-05-16 18:42:56 -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
PepperBell
f33b08d996 Minor fixes
- Fix holder refresh
- Fix SuperByteBuffer light calculation
- Remove unused import
2021-05-15 12:15:06 -07:00
PepperBell
67052fd00c Add lighting to non-Flywheel contraptions
- Pass contraption world to movement behavior rendering
- Add hybrid lighting option to SuperByteBuffer (takes max of world light and vertex light)
- Create ContraptionWorldHolder for caching contraption worlds for contraptions that are not rendered with Flywheel
- Refactor some parts of contraption rendering
2021-05-15 00:21:20 -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
7abc860809 Fix fluid rendering in tanks and pipes on fabulous graphics 2021-05-13 11:37:04 -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
aa1a45f164 Block breaking overlay is animated now 2021-05-07 21:24:07 -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
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
JozsefA
dc3517eb3a Inversion 2021-04-30 14:28:18 -07:00
JozsefA
37e8e87553 Merge branch 'mc1.16/dev' into mc1.16/chromatic-projector
# Conflicts:
#	src/main/java/com/simibubi/create/foundation/render/backend/Backend.java
#	src/main/java/com/simibubi/create/foundation/render/backend/ShaderLoader.java
#	src/main/java/com/simibubi/create/foundation/render/backend/core/BasicProgram.java
#	src/main/java/com/simibubi/create/foundation/render/backend/gl/GlBuffer.java
#	src/main/java/com/simibubi/create/foundation/render/backend/gl/GlVertexArray.java
#	src/main/java/com/simibubi/create/foundation/render/backend/gl/shader/FogSensitiveProgram.java
#	src/main/java/com/simibubi/create/foundation/render/backend/gl/shader/GlProgram.java
#	src/main/java/com/simibubi/create/foundation/render/backend/gl/shader/ProgramSpec.java
#	src/main/java/com/simibubi/create/foundation/render/backend/gl/versioned/GlCompat.java
#	src/main/java/com/simibubi/create/foundation/render/backend/gl/versioned/instancing/DrawInstanced.java
#	src/main/java/com/simibubi/create/foundation/render/backend/gl/versioned/instancing/InstancedArrays.java
#	src/main/java/com/simibubi/create/foundation/render/backend/gl/versioned/instancing/VertexArrayObject.java
#	src/main/java/com/simibubi/create/foundation/render/backend/instancing/InstancedModel.java
#	src/main/java/com/simibubi/create/foundation/render/backend/instancing/RenderMaterial.java
2021-04-30 12:15:32 -07:00
JozsefA
c9718b0a1b No more compartments in Flywheel.
It never really needed them in the first place.
2021-04-30 00:31:52 -07:00
JozsefA
322496f3b4 Reformat backend 2021-04-29 17:19:08 -07:00
JozsefA
063e98983f Oh god the line endings
- Isolate AllBlockPartials to PartialModel
 - Further cleanup to PartialBufferer
2021-04-29 14:03:52 -07:00
JozsefA
446b24f1cf Random stuff
- Multiply by 31 in some hash functions
 - Remove unused render utility classes
2021-04-29 11:44:45 -07:00
JozsefA
e33ab160ac Start to cleanup the AllBlockPartials methods 2021-04-28 22:47:51 -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
70188889be Persistence is key
- Projectors now remember their setting and sync between clients
2021-04-23 17:20:16 -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
fc919c4ac4 Basic projector gui 2021-04-22 16:02:16 -07:00
JozsefA
7b7c6ef3c5 Merge remote-tracking branch 'origin/mc1.16/dev' into mc1.16/chromatic-projector
# Conflicts:
#	src/main/java/com/simibubi/create/AllBlocks.java
2021-04-20 14:07:54 -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
128a2c2e06 Remove compat layer wrapper functions 2021-04-17 18:54:57 -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
JozsefA
45b1412837 Code sanity 2021-04-15 13:28:23 -07:00
JozsefA
f12d9452b4 Shader debugging: scaling the world
In the linearizeDepth function in area_effect.frag, I was multiplying by 2, but the scaling of the world was off. The number I found that works best is e - 0.99, and I have no idea why.
2021-04-15 12:46:54 -07:00
JozsefA
7988fb69a7 Color matrices and many effect spheres 2021-04-13 23:52:52 -07:00
JozsefA
db7913d91b It all works, needs some cleanup 2021-04-12 16:00:13 -07:00
simibubi
d249318b80 Pose stack says no
- TileEntities not appreciative of wrapped worlds are now much less likely to cause a hard crash
2021-04-11 02:56:11 +02:00
JozsefA
08b2c498e6 Add basic blocks and TEs for the chromatic projector 2021-04-09 16:16:25 -07:00
JozsefA
f2c6afdcb3 Fix projection matrix bug
- Copy the projection matrix when vanilla would be uploading it to GL.
 - This should account for just about everything.

Unrelated to the fix:
 - Shader programs now have more flexibility in specialization.
 - Accomplished with IMultiProgram.
 - Remove unnecessary SHADER_DEBUG_OUTPUT boolean.
2021-04-09 14:48:44 -07:00
simibubi
edb1b59f41 Housekeeping
- Added an .editorconfig
- Auto-Reformatted most .java files
- Auto-Organized Imports
2021-04-08 19:22:11 +02:00
simibubi
525001e410 Merge branch 'mc1.15/dev' into mc1.16/dev 2021-04-07 12:36:39 +02:00