Skip to content

Commit d2a8d07

Browse files
committed
Assorted adjustments
- Add EmptyModel - Move Flywheel.rl to ResourceUtil - Move RenderContext from api to api.backend - Improve LineModelBuilder - Fix exception when calling build twice in a row - Expose ensureCapacity - Return existing EmptyModel.INSTANCE when applicable - Try to shrink memory before finalizing model
1 parent 9975833 commit d2a8d07

File tree

40 files changed

+176
-128
lines changed

40 files changed

+176
-128
lines changed
Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
package dev.engine_room.flywheel.api;
22

3-
import net.minecraft.resources.ResourceLocation;
4-
53
public final class Flywheel {
4+
/**
5+
* The mod ID and resource namespace of Flywheel.
6+
*/
67
public static final String ID = "flywheel";
78

89
private Flywheel() {
910
}
10-
11-
public static ResourceLocation rl(String path) {
12-
return new ResourceLocation(ID, path);
13-
}
1411
}

common/src/api/java/dev/engine_room/flywheel/api/backend/Engine.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import org.jetbrains.annotations.ApiStatus;
66
import org.jetbrains.annotations.Range;
77

8-
import dev.engine_room.flywheel.api.RenderContext;
98
import dev.engine_room.flywheel.api.instance.Instance;
109
import dev.engine_room.flywheel.api.task.Plan;
1110
import dev.engine_room.flywheel.api.visualization.VisualizationContext;

common/src/api/java/dev/engine_room/flywheel/api/RenderContext.java renamed to common/src/api/java/dev/engine_room/flywheel/api/backend/RenderContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dev.engine_room.flywheel.api;
1+
package dev.engine_room.flywheel.api.backend;
22

33
import org.joml.Matrix4fc;
44

common/src/api/java/dev/engine_room/flywheel/api/visualization/VisualizationManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import org.jetbrains.annotations.ApiStatus;
66
import org.jetbrains.annotations.Nullable;
77

8-
import dev.engine_room.flywheel.api.RenderContext;
8+
import dev.engine_room.flywheel.api.backend.RenderContext;
99
import dev.engine_room.flywheel.api.internal.FlwApiLink;
1010
import dev.engine_room.flywheel.api.visual.Effect;
1111
import it.unimi.dsi.fastutil.longs.Long2ObjectMap;

common/src/backend/java/dev/engine_room/flywheel/backend/Backends.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package dev.engine_room.flywheel.backend;
22

3-
import dev.engine_room.flywheel.api.Flywheel;
43
import dev.engine_room.flywheel.api.backend.Backend;
54
import dev.engine_room.flywheel.backend.compile.IndirectPrograms;
65
import dev.engine_room.flywheel.backend.compile.InstancingPrograms;
@@ -10,6 +9,7 @@
109
import dev.engine_room.flywheel.backend.gl.Driver;
1110
import dev.engine_room.flywheel.backend.gl.GlCompat;
1211
import dev.engine_room.flywheel.lib.backend.SimpleBackend;
12+
import dev.engine_room.flywheel.lib.util.ResourceUtil;
1313
import dev.engine_room.flywheel.lib.util.ShadersModHelper;
1414

1515
public final class Backends {
@@ -20,7 +20,7 @@ public final class Backends {
2020
.engineFactory(level -> new EngineImpl(level, new InstancedDrawManager(InstancingPrograms.get()), 256))
2121
.priority(500)
2222
.supported(() -> GlCompat.SUPPORTS_INSTANCING && InstancingPrograms.allLoaded() && !ShadersModHelper.isShaderPackInUse())
23-
.register(Flywheel.rl("instancing"));
23+
.register(ResourceUtil.rl("instancing"));
2424

2525
/**
2626
* Use Compute shaders to cull instances.
@@ -38,7 +38,7 @@ public final class Backends {
3838
}
3939
})
4040
.supported(() -> GlCompat.SUPPORTS_INDIRECT && IndirectPrograms.allLoaded() && !ShadersModHelper.isShaderPackInUse())
41-
.register(Flywheel.rl("indirect"));
41+
.register(ResourceUtil.rl("indirect"));
4242

4343
private Backends() {
4444
}

common/src/backend/java/dev/engine_room/flywheel/backend/InternalVertex.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
import java.util.List;
44

5-
import dev.engine_room.flywheel.api.Flywheel;
65
import dev.engine_room.flywheel.api.layout.FloatRepr;
76
import dev.engine_room.flywheel.api.layout.Layout;
87
import dev.engine_room.flywheel.api.layout.LayoutBuilder;
98
import dev.engine_room.flywheel.backend.gl.array.VertexAttribute;
9+
import dev.engine_room.flywheel.lib.util.ResourceUtil;
1010
import dev.engine_room.flywheel.lib.vertex.FullVertexView;
1111
import dev.engine_room.flywheel.lib.vertex.VertexView;
1212
import net.minecraft.resources.ResourceLocation;
@@ -24,7 +24,7 @@ public final class InternalVertex {
2424
public static final List<VertexAttribute> ATTRIBUTES = LayoutAttributes.attributes(LAYOUT);
2525
public static final int STRIDE = LAYOUT.byteSize();
2626

27-
public static final ResourceLocation LAYOUT_SHADER = Flywheel.rl("internal/vertex_input.vert");
27+
public static final ResourceLocation LAYOUT_SHADER = ResourceUtil.rl("internal/vertex_input.vert");
2828

2929
private InternalVertex() {
3030
}

common/src/backend/java/dev/engine_room/flywheel/backend/compile/FlwPrograms.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@
88
import dev.engine_room.flywheel.api.Flywheel;
99
import dev.engine_room.flywheel.backend.glsl.ShaderSources;
1010
import dev.engine_room.flywheel.backend.glsl.SourceComponent;
11+
import dev.engine_room.flywheel.lib.util.ResourceUtil;
1112
import net.minecraft.resources.ResourceLocation;
1213
import net.minecraft.server.packs.resources.ResourceManager;
1314

1415
public final class FlwPrograms {
1516
public static final Logger LOGGER = LoggerFactory.getLogger(Flywheel.ID + "/backend/shaders");
1617

17-
private static final ResourceLocation COMPONENTS_HEADER_FRAG = Flywheel.rl("internal/components_header.frag");
18+
private static final ResourceLocation COMPONENTS_HEADER_FRAG = ResourceUtil.rl("internal/components_header.frag");
1819

1920
public static ShaderSources SOURCES;
2021

common/src/backend/java/dev/engine_room/flywheel/backend/compile/IndirectPrograms.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
import com.google.common.collect.ImmutableList;
88

9-
import dev.engine_room.flywheel.api.Flywheel;
109
import dev.engine_room.flywheel.api.instance.InstanceType;
1110
import dev.engine_room.flywheel.api.material.Material;
1211
import dev.engine_room.flywheel.backend.compile.component.InstanceStructComponent;
@@ -25,12 +24,12 @@
2524
import net.minecraft.resources.ResourceLocation;
2625

2726
public class IndirectPrograms extends AtomicReferenceCounted {
28-
private static final ResourceLocation CULL_SHADER_API_IMPL = Flywheel.rl("internal/indirect/cull_api_impl.glsl");
29-
private static final ResourceLocation CULL_SHADER_MAIN = Flywheel.rl("internal/indirect/cull.glsl");
30-
private static final ResourceLocation APPLY_SHADER_MAIN = Flywheel.rl("internal/indirect/apply.glsl");
31-
private static final ResourceLocation SCATTER_SHADER_MAIN = Flywheel.rl("internal/indirect/scatter.glsl");
32-
private static final ResourceLocation DOWNSAMPLE_FIRST = Flywheel.rl("internal/indirect/downsample_first.glsl");
33-
private static final ResourceLocation DOWNSAMPLE_SECOND = Flywheel.rl("internal/indirect/downsample_second.glsl");
27+
private static final ResourceLocation CULL_SHADER_API_IMPL = ResourceUtil.rl("internal/indirect/cull_api_impl.glsl");
28+
private static final ResourceLocation CULL_SHADER_MAIN = ResourceUtil.rl("internal/indirect/cull.glsl");
29+
private static final ResourceLocation APPLY_SHADER_MAIN = ResourceUtil.rl("internal/indirect/apply.glsl");
30+
private static final ResourceLocation SCATTER_SHADER_MAIN = ResourceUtil.rl("internal/indirect/scatter.glsl");
31+
private static final ResourceLocation DOWNSAMPLE_FIRST = ResourceUtil.rl("internal/indirect/downsample_first.glsl");
32+
private static final ResourceLocation DOWNSAMPLE_SECOND = ResourceUtil.rl("internal/indirect/downsample_second.glsl");
3433
public static final List<ResourceLocation> UTIL_SHADERS = List.of(APPLY_SHADER_MAIN, SCATTER_SHADER_MAIN, DOWNSAMPLE_FIRST, DOWNSAMPLE_SECOND);
3534

3635
private static final Compile<InstanceType<?>> CULL = new Compile<>();

common/src/backend/java/dev/engine_room/flywheel/backend/compile/PipelineCompiler.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import java.util.Set;
77
import java.util.WeakHashMap;
88

9-
import dev.engine_room.flywheel.api.Flywheel;
109
import dev.engine_room.flywheel.api.instance.InstanceType;
1110
import dev.engine_room.flywheel.api.material.LightShader;
1211
import dev.engine_room.flywheel.api.material.Material;
@@ -40,8 +39,8 @@ public final class PipelineCompiler {
4039
private static UberShaderComponent FOG;
4140
private static UberShaderComponent CUTOUT;
4241

43-
private static final ResourceLocation API_IMPL_VERT = Flywheel.rl("internal/api_impl.vert");
44-
private static final ResourceLocation API_IMPL_FRAG = Flywheel.rl("internal/api_impl.frag");
42+
private static final ResourceLocation API_IMPL_VERT = ResourceUtil.rl("internal/api_impl.vert");
43+
private static final ResourceLocation API_IMPL_FRAG = ResourceUtil.rl("internal/api_impl.frag");
4544

4645
private final CompilationHarness<PipelineProgramKey> harness;
4746

@@ -184,7 +183,7 @@ static PipelineCompiler create(ShaderSources sources, Pipeline pipeline, List<So
184183
}
185184

186185
public static void createFogComponent() {
187-
FOG = UberShaderComponent.builder(Flywheel.rl("fog"))
186+
FOG = UberShaderComponent.builder(ResourceUtil.rl("fog"))
188187
.materialSources(MaterialShaderIndices.fogSources()
189188
.all())
190189
.adapt(FnSignature.create()
@@ -197,7 +196,7 @@ public static void createFogComponent() {
197196
}
198197

199198
private static void createCutoutComponent() {
200-
CUTOUT = UberShaderComponent.builder(Flywheel.rl("cutout"))
199+
CUTOUT = UberShaderComponent.builder(ResourceUtil.rl("cutout"))
201200
.materialSources(MaterialShaderIndices.cutoutSources()
202201
.all())
203202
.adapt(FnSignature.create()

common/src/backend/java/dev/engine_room/flywheel/backend/compile/Pipelines.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package dev.engine_room.flywheel.backend.compile;
22

3-
import dev.engine_room.flywheel.api.Flywheel;
43
import dev.engine_room.flywheel.backend.Samplers;
54
import dev.engine_room.flywheel.backend.compile.component.BufferTextureInstanceComponent;
65
import dev.engine_room.flywheel.backend.compile.component.SsboInstanceComponent;
6+
import dev.engine_room.flywheel.lib.util.ResourceUtil;
77

88
public final class Pipelines {
99
public static final Pipeline INSTANCING = Pipeline.builder()
1010
.compilerMarker("instancing")
11-
.vertexMain(Flywheel.rl("internal/instancing/main.vert"))
12-
.fragmentMain(Flywheel.rl("internal/instancing/main.frag"))
11+
.vertexMain(ResourceUtil.rl("internal/instancing/main.vert"))
12+
.fragmentMain(ResourceUtil.rl("internal/instancing/main.frag"))
1313
.assembler(BufferTextureInstanceComponent::new)
1414
.onLink(program -> {
1515
program.setSamplerBinding("_flw_instances", Samplers.INSTANCE_BUFFER);
@@ -20,8 +20,8 @@ public final class Pipelines {
2020

2121
public static final Pipeline INDIRECT = Pipeline.builder()
2222
.compilerMarker("indirect")
23-
.vertexMain(Flywheel.rl("internal/indirect/main.vert"))
24-
.fragmentMain(Flywheel.rl("internal/indirect/main.frag"))
23+
.vertexMain(ResourceUtil.rl("internal/indirect/main.vert"))
24+
.fragmentMain(ResourceUtil.rl("internal/indirect/main.frag"))
2525
.assembler(SsboInstanceComponent::new)
2626
.onLink($ -> {
2727
})

0 commit comments

Comments
 (0)