mirror of
https://github.com/Jozufozu/Flywheel.git
synced 2024-12-30 17:06:32 +01:00
UNTESTED - Replace ATs
- Matrices use #store - Accessor for pausedPartialTick
This commit is contained in:
parent
532e7450e9
commit
7c5e02d2e8
10 changed files with 56 additions and 54 deletions
|
@ -33,7 +33,7 @@ java.toolchain.languageVersion = JavaLanguageVersion.of(16)
|
||||||
println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch'))
|
println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch'))
|
||||||
minecraft {
|
minecraft {
|
||||||
mappings channel: 'official', version: "${minecraft_version}"
|
mappings channel: 'official', version: "${minecraft_version}"
|
||||||
accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
|
//accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
|
||||||
|
|
||||||
runs {
|
runs {
|
||||||
client {
|
client {
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package com.jozufozu.flywheel.backend.gl.buffer;
|
package com.jozufozu.flywheel.backend.gl.buffer;
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
import java.nio.FloatBuffer;
|
||||||
|
|
||||||
import org.lwjgl.opengl.GL15;
|
import org.lwjgl.opengl.GL15;
|
||||||
import org.lwjgl.system.MemoryUtil;
|
import org.lwjgl.system.MemoryUtil;
|
||||||
|
@ -48,6 +49,12 @@ public abstract class MappedBuffer extends VecBuffer implements AutoCloseable {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MappedBuffer put(FloatBuffer floats) {
|
||||||
|
checkAndMap();
|
||||||
|
super.put(floats);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public int position() {
|
public int position() {
|
||||||
checkAndMap();
|
checkAndMap();
|
||||||
return super.position();
|
return super.position();
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.jozufozu.flywheel.backend.gl.buffer;
|
||||||
import java.nio.Buffer;
|
import java.nio.Buffer;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.nio.ByteOrder;
|
import java.nio.ByteOrder;
|
||||||
|
import java.nio.FloatBuffer;
|
||||||
|
|
||||||
public class VecBuffer {
|
public class VecBuffer {
|
||||||
|
|
||||||
|
@ -48,6 +49,15 @@ public class VecBuffer {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public VecBuffer put(FloatBuffer floats) {
|
||||||
|
|
||||||
|
int remainingBytes = floats.remaining() * 4;
|
||||||
|
internal.asFloatBuffer().put(floats);
|
||||||
|
internal.position(internal.position() + remainingBytes);
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public int position() {
|
public int position() {
|
||||||
return internal.position();
|
return internal.position();
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,11 @@ import static org.lwjgl.opengl.GL20.glUniform1i;
|
||||||
import static org.lwjgl.opengl.GL20.glUniformMatrix4fv;
|
import static org.lwjgl.opengl.GL20.glUniformMatrix4fv;
|
||||||
import static org.lwjgl.opengl.GL20.glUseProgram;
|
import static org.lwjgl.opengl.GL20.glUseProgram;
|
||||||
|
|
||||||
|
import java.nio.FloatBuffer;
|
||||||
|
|
||||||
|
import org.lwjgl.system.MemoryStack;
|
||||||
|
import org.lwjgl.system.MemoryUtil;
|
||||||
|
|
||||||
import com.jozufozu.flywheel.backend.Backend;
|
import com.jozufozu.flywheel.backend.Backend;
|
||||||
import com.jozufozu.flywheel.backend.gl.GlObject;
|
import com.jozufozu.flywheel.backend.gl.GlObject;
|
||||||
import com.jozufozu.flywheel.util.RenderUtil;
|
import com.jozufozu.flywheel.util.RenderUtil;
|
||||||
|
@ -65,7 +70,10 @@ public abstract class GlProgram extends GlObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static void uploadMatrixUniform(int uniform, Matrix4f mat) {
|
protected static void uploadMatrixUniform(int uniform, Matrix4f mat) {
|
||||||
glUniformMatrix4fv(uniform, false, RenderUtil.writeMatrix(mat));
|
FloatBuffer floatBuffer = MemoryStack.stackGet()
|
||||||
|
.mallocFloat(16);
|
||||||
|
mat.store(floatBuffer);
|
||||||
|
glUniformMatrix4fv(uniform, false, floatBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package com.jozufozu.flywheel.core.materials.model;
|
package com.jozufozu.flywheel.core.materials.model;
|
||||||
|
|
||||||
|
import java.nio.FloatBuffer;
|
||||||
|
|
||||||
import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer;
|
import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer;
|
||||||
import com.jozufozu.flywheel.core.materials.BasicData;
|
import com.jozufozu.flywheel.core.materials.BasicData;
|
||||||
import com.jozufozu.flywheel.util.RenderUtil;
|
import com.jozufozu.flywheel.util.RenderUtil;
|
||||||
|
@ -8,10 +10,14 @@ import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
public class ModelData extends BasicData {
|
public class ModelData extends BasicData {
|
||||||
private static final float[] empty = new float[25];
|
private static final float[] empty = new float[25];
|
||||||
|
|
||||||
public float[] matrices = empty;
|
public final float[] matrices = empty.clone();
|
||||||
|
private final FloatBuffer buf = FloatBuffer.wrap(matrices);
|
||||||
|
|
||||||
public ModelData setTransform(PoseStack stack) {
|
public ModelData setTransform(PoseStack stack) {
|
||||||
matrices = RenderUtil.writeMatrixStack(stack);
|
this.buf.reset();
|
||||||
|
|
||||||
|
stack.last().pose().store(this.buf);
|
||||||
|
stack.last().normal().store(this.buf);
|
||||||
markDirty();
|
markDirty();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -24,7 +30,8 @@ public class ModelData extends BasicData {
|
||||||
* </p>
|
* </p>
|
||||||
*/
|
*/
|
||||||
public ModelData setEmptyTransform() {
|
public ModelData setEmptyTransform() {
|
||||||
matrices = empty;
|
this.buf.reset();
|
||||||
|
this.buf.put(empty);
|
||||||
markDirty();
|
markDirty();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -32,6 +39,6 @@ public class ModelData extends BasicData {
|
||||||
@Override
|
@Override
|
||||||
public void write(VecBuffer buf) {
|
public void write(VecBuffer buf) {
|
||||||
super.write(buf);
|
super.write(buf);
|
||||||
buf.putFloatArray(matrices);
|
buf.put(this.buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
package com.jozufozu.flywheel.mixin;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||||
|
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
|
||||||
|
@Mixin(Minecraft.class)
|
||||||
|
public interface PausedPartialTickAccessor {
|
||||||
|
|
||||||
|
@Accessor("pausePartialTick")
|
||||||
|
float getPausePartialTick();
|
||||||
|
}
|
|
@ -1,5 +1,7 @@
|
||||||
package com.jozufozu.flywheel.util;
|
package com.jozufozu.flywheel.util;
|
||||||
|
|
||||||
|
import com.jozufozu.flywheel.mixin.PausedPartialTickAccessor;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
|
||||||
public class AnimationTickHolder {
|
public class AnimationTickHolder {
|
||||||
|
@ -35,6 +37,6 @@ public class AnimationTickHolder {
|
||||||
|
|
||||||
public static float getPartialTicks() {
|
public static float getPartialTicks() {
|
||||||
Minecraft mc = Minecraft.getInstance();
|
Minecraft mc = Minecraft.getInstance();
|
||||||
return (mc.isPaused() ? mc.pausePartialTick : mc.getFrameTime());
|
return (mc.isPaused() ? ((PausedPartialTickAccessor) mc).getPausePartialTick() : mc.getFrameTime());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,21 +42,6 @@ public class RenderUtil {
|
||||||
return Math.sqrt(lengthSqr(x, y, z));
|
return Math.sqrt(lengthSqr(x, y, z));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static float[] writeMatrixStack(PoseStack stack) {
|
|
||||||
return writeMatrixStack(stack.last()
|
|
||||||
.pose(), stack.last()
|
|
||||||
.normal());
|
|
||||||
}
|
|
||||||
|
|
||||||
// GPUs want matrices in column major order.
|
|
||||||
public static float[] writeMatrixStack(Matrix4f model, Matrix3f normal) {
|
|
||||||
return new float[]{model.m00, model.m10, model.m20, model.m30, model.m01, model.m11, model.m21, model.m31, model.m02, model.m12, model.m22, model.m32, model.m03, model.m13, model.m23, model.m33, normal.m00, normal.m10, normal.m20, normal.m01, normal.m11, normal.m21, normal.m02, normal.m12, normal.m22,};
|
|
||||||
}
|
|
||||||
|
|
||||||
public static float[] writeMatrix(Matrix4f model) {
|
|
||||||
return new float[]{model.m00, model.m10, model.m20, model.m30, model.m01, model.m11, model.m21, model.m31, model.m02, model.m12, model.m22, model.m32, model.m03, model.m13, model.m23, model.m33,};
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Supplier<PoseStack> rotateToFace(Direction facing) {
|
public static Supplier<PoseStack> rotateToFace(Direction facing) {
|
||||||
return () -> {
|
return () -> {
|
||||||
PoseStack stack = new PoseStack();
|
PoseStack stack = new PoseStack();
|
||||||
|
|
|
@ -1,31 +0,0 @@
|
||||||
|
|
||||||
# Don't jitter when game is paused
|
|
||||||
public net.minecraft.client.Minecraft f_91013_ #renderPartialTicksPaused
|
|
||||||
|
|
||||||
# For uploading matrices as vertex attributes.
|
|
||||||
public com.mojang.math.Matrix3f f_8134_ #a00
|
|
||||||
public com.mojang.math.Matrix3f f_8135_ #a01
|
|
||||||
public com.mojang.math.Matrix3f f_8136_ #a02
|
|
||||||
public com.mojang.math.Matrix3f f_8137_ #a10
|
|
||||||
public com.mojang.math.Matrix3f f_8138_ #a11
|
|
||||||
public com.mojang.math.Matrix3f f_8139_ #a12
|
|
||||||
public com.mojang.math.Matrix3f f_8140_ #a20
|
|
||||||
public com.mojang.math.Matrix3f f_8141_ #a21
|
|
||||||
public com.mojang.math.Matrix3f f_8142_ #a22
|
|
||||||
|
|
||||||
public com.mojang.math.Matrix4f f_27603_ #a00
|
|
||||||
public com.mojang.math.Matrix4f f_27604_ #a01
|
|
||||||
public com.mojang.math.Matrix4f f_27605_ #a02
|
|
||||||
public com.mojang.math.Matrix4f f_27606_ #a03
|
|
||||||
public com.mojang.math.Matrix4f f_27607_ #a10
|
|
||||||
public com.mojang.math.Matrix4f f_27608_ #a11
|
|
||||||
public com.mojang.math.Matrix4f f_27609_ #a12
|
|
||||||
public com.mojang.math.Matrix4f f_27610_ #a13
|
|
||||||
public com.mojang.math.Matrix4f f_27611_ #a20
|
|
||||||
public com.mojang.math.Matrix4f f_27612_ #a21
|
|
||||||
public com.mojang.math.Matrix4f f_27613_ #a22
|
|
||||||
public com.mojang.math.Matrix4f f_27614_ #a23
|
|
||||||
public com.mojang.math.Matrix4f f_27615_ #a30
|
|
||||||
public com.mojang.math.Matrix4f f_27616_ #a31
|
|
||||||
public com.mojang.math.Matrix4f f_27617_ #a32
|
|
||||||
public com.mojang.math.Matrix4f f_27618_ #a33
|
|
|
@ -17,7 +17,8 @@
|
||||||
"LevelRendererAccessor",
|
"LevelRendererAccessor",
|
||||||
"InstanceAddMixin",
|
"InstanceAddMixin",
|
||||||
"InstanceRemoveMixin",
|
"InstanceRemoveMixin",
|
||||||
"LeakChunkStorageArrayMixin"
|
"LeakChunkStorageArrayMixin",
|
||||||
|
"PausedPartialTickAccessor"
|
||||||
],
|
],
|
||||||
"injectors": {
|
"injectors": {
|
||||||
"defaultRequire": 1
|
"defaultRequire": 1
|
||||||
|
|
Loading…
Reference in a new issue