mirror of
https://github.com/Jozufozu/Flywheel.git
synced 2025-02-21 17:35:33 +01:00
Fix uniform bindings
This commit is contained in:
parent
7bb04daa82
commit
aae98c06f4
3 changed files with 18 additions and 8 deletions
|
@ -11,6 +11,7 @@ import com.jozufozu.flywheel.api.instance.InstanceType;
|
||||||
import com.jozufozu.flywheel.backend.compile.component.IndirectComponent;
|
import com.jozufozu.flywheel.backend.compile.component.IndirectComponent;
|
||||||
import com.jozufozu.flywheel.backend.compile.core.CompilationHarness;
|
import com.jozufozu.flywheel.backend.compile.core.CompilationHarness;
|
||||||
import com.jozufozu.flywheel.backend.compile.core.Compile;
|
import com.jozufozu.flywheel.backend.compile.core.Compile;
|
||||||
|
import com.jozufozu.flywheel.backend.engine.uniform.Uniforms;
|
||||||
import com.jozufozu.flywheel.backend.gl.GlCompat;
|
import com.jozufozu.flywheel.backend.gl.GlCompat;
|
||||||
import com.jozufozu.flywheel.backend.gl.shader.GlProgram;
|
import com.jozufozu.flywheel.backend.gl.shader.GlProgram;
|
||||||
import com.jozufozu.flywheel.backend.gl.shader.ShaderType;
|
import com.jozufozu.flywheel.backend.gl.shader.ShaderType;
|
||||||
|
@ -81,7 +82,7 @@ public class IndirectPrograms extends AtomicReferenceCounted {
|
||||||
.withComponent(IndirectComponent::create)
|
.withComponent(IndirectComponent::create)
|
||||||
.withResource(InstanceType::cullShader)
|
.withResource(InstanceType::cullShader)
|
||||||
.withResource(CULL_SHADER_MAIN))
|
.withResource(CULL_SHADER_MAIN))
|
||||||
.postLink((key, program) -> program.setUniformBlockBinding("_FlwFrameUniforms", 0))
|
.postLink((key, program) -> program.setUniformBlockBinding("_FlwFrameUniforms", Uniforms.FRAME_INDEX))
|
||||||
.harness("culling", sources);
|
.harness("culling", sources);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ import com.jozufozu.flywheel.backend.InternalVertex;
|
||||||
import com.jozufozu.flywheel.backend.Samplers;
|
import com.jozufozu.flywheel.backend.Samplers;
|
||||||
import com.jozufozu.flywheel.backend.compile.core.CompilationHarness;
|
import com.jozufozu.flywheel.backend.compile.core.CompilationHarness;
|
||||||
import com.jozufozu.flywheel.backend.compile.core.Compile;
|
import com.jozufozu.flywheel.backend.compile.core.Compile;
|
||||||
|
import com.jozufozu.flywheel.backend.engine.uniform.Uniforms;
|
||||||
import com.jozufozu.flywheel.backend.gl.shader.GlProgram;
|
import com.jozufozu.flywheel.backend.gl.shader.GlProgram;
|
||||||
import com.jozufozu.flywheel.backend.gl.shader.ShaderType;
|
import com.jozufozu.flywheel.backend.gl.shader.ShaderType;
|
||||||
import com.jozufozu.flywheel.backend.glsl.ShaderSources;
|
import com.jozufozu.flywheel.backend.glsl.ShaderSources;
|
||||||
|
@ -60,8 +61,11 @@ public class PipelineCompiler {
|
||||||
program.bindAttribLocation("_flw_a_normal", 5);
|
program.bindAttribLocation("_flw_a_normal", 5);
|
||||||
})
|
})
|
||||||
.postLink((key, program) -> {
|
.postLink((key, program) -> {
|
||||||
program.setUniformBlockBinding("_FlwFrameUniforms", 0);
|
program.setUniformBlockBinding("_FlwFrameUniforms", Uniforms.FRAME_INDEX);
|
||||||
program.setUniformBlockBinding("_FlwFogUniforms", 1);
|
program.setUniformBlockBinding("_FlwFogUniforms", Uniforms.FOG_INDEX);
|
||||||
|
program.setUniformBlockBinding("_FlwOptionsUniforms", Uniforms.OPTIONS_INDEX);
|
||||||
|
program.setUniformBlockBinding("_FlwPlayerUniforms", Uniforms.PLAYER_INDEX);
|
||||||
|
program.setUniformBlockBinding("_FlwLevelUniforms", Uniforms.LEVEL_INDEX);
|
||||||
|
|
||||||
program.bind();
|
program.bind();
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,11 @@ import net.minecraft.world.level.material.FluidState;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
|
|
||||||
public class Uniforms {
|
public class Uniforms {
|
||||||
|
public static final int FRAME_INDEX = 0;
|
||||||
|
public static final int FOG_INDEX = 1;
|
||||||
|
public static final int OPTIONS_INDEX = 2;
|
||||||
|
public static final int PLAYER_INDEX = 3;
|
||||||
|
public static final int LEVEL_INDEX = 4;
|
||||||
public static boolean frustumPaused = false;
|
public static boolean frustumPaused = false;
|
||||||
public static boolean frustumCapture = false;
|
public static boolean frustumCapture = false;
|
||||||
private static @Nullable UniformBuffer<FrameUniforms> frame;
|
private static @Nullable UniformBuffer<FrameUniforms> frame;
|
||||||
|
@ -27,35 +32,35 @@ public class Uniforms {
|
||||||
|
|
||||||
public static UniformBuffer<FrameUniforms> frame() {
|
public static UniformBuffer<FrameUniforms> frame() {
|
||||||
if (frame == null) {
|
if (frame == null) {
|
||||||
frame = new UniformBuffer<>(0, new FrameUniforms());
|
frame = new UniformBuffer<>(FRAME_INDEX, new FrameUniforms());
|
||||||
}
|
}
|
||||||
return frame;
|
return frame;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static UniformBuffer<FogUniforms> fog() {
|
public static UniformBuffer<FogUniforms> fog() {
|
||||||
if (fog == null) {
|
if (fog == null) {
|
||||||
fog = new UniformBuffer<>(1, new FogUniforms());
|
fog = new UniformBuffer<>(FOG_INDEX, new FogUniforms());
|
||||||
}
|
}
|
||||||
return fog;
|
return fog;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static UniformBuffer<OptionsUniforms> options() {
|
public static UniformBuffer<OptionsUniforms> options() {
|
||||||
if (options == null) {
|
if (options == null) {
|
||||||
options = new UniformBuffer<>(2, new OptionsUniforms());
|
options = new UniformBuffer<>(OPTIONS_INDEX, new OptionsUniforms());
|
||||||
}
|
}
|
||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static UniformBuffer<PlayerUniforms> player() {
|
public static UniformBuffer<PlayerUniforms> player() {
|
||||||
if (player == null) {
|
if (player == null) {
|
||||||
player = new UniformBuffer<>(3, new PlayerUniforms());
|
player = new UniformBuffer<>(PLAYER_INDEX, new PlayerUniforms());
|
||||||
}
|
}
|
||||||
return player;
|
return player;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static UniformBuffer<LevelUniforms> level() {
|
public static UniformBuffer<LevelUniforms> level() {
|
||||||
if (level == null) {
|
if (level == null) {
|
||||||
level = new UniformBuffer<>(4, new LevelUniforms());
|
level = new UniformBuffer<>(LEVEL_INDEX, new LevelUniforms());
|
||||||
}
|
}
|
||||||
return level;
|
return level;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue