Skip to content

Commit

Permalink
fix mixed reality mirror
Browse files Browse the repository at this point in the history
  • Loading branch information
fayer3 committed Oct 3, 2023
1 parent 2ec3827 commit ca044bf
Show file tree
Hide file tree
Showing 20 changed files with 184 additions and 151 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -136,10 +136,16 @@ protected void actionPerformed(AbstractWidget widget) {
} else {
this.dataholder.vrRenderer.reinitFrameBuffers("Render Setting Changed");
}
this.reinit = true;
}
if (guivroption.getId() == VRSettings.VrOptions.RELOAD_EXTERNAL_CAMERA.ordinal()) {
VRHotkeys.loadExternalCameraConfig();
}
if (guivroption.getId() == VRSettings.VrOptions.MIXED_REALITY_ALPHA_MASK.ordinal()
|| guivroption.getId() == VRSettings.VrOptions.MIXED_REALITY_UNITY_LIKE.ordinal()
|| guivroption.getId() == VRSettings.VrOptions.MIXED_REALITY_UNDISTORTED.ordinal()) {
this.reinit = true;
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import net.minecraft.client.renderer.entity.layers.RenderLayer;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.player.Player;
import org.vivecraft.client.VRPlayersClient;

public class HMDLayer extends RenderLayer<AbstractClientPlayer, PlayerModel<AbstractClientPlayer>> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import net.minecraft.client.model.geom.builders.MeshDefinition;
import net.minecraft.client.model.geom.builders.PartDefinition;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import org.vivecraft.client.VRPlayersClient;

public class VRPlayerModel<T extends LivingEntity> extends PlayerModel<T> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import net.minecraft.util.Mth;
import net.minecraft.world.entity.HumanoidArm;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.phys.Vec3;
import org.vivecraft.client.VRPlayersClient;
import org.vivecraft.client.Xplat;
Expand Down
1 change: 0 additions & 1 deletion common/src/main/java/org/vivecraft/client/utils/Utils.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@
import javax.annotation.Nullable;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.network.chat.contents.TranslatableContents;
import net.minecraft.network.protocol.game.ServerboundCustomPayloadPacket;
import net.minecraft.server.level.ServerPlayer;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.ChatScreen;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.WinScreen;
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
import net.minecraft.network.chat.Component;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.mojang.blaze3d.pipeline.RenderTarget;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.platform.GlUtil;
import com.mojang.blaze3d.shaders.ProgramManager;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.*;
import net.minecraft.client.GraphicsStatus;
Expand Down Expand Up @@ -177,7 +178,7 @@ public void doStencil(boolean inverse) {

RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
RenderSystem.enableCull();
GlStateManager._glUseProgram(s);
ProgramManager.glUseProgram(s);
RenderSystem.stencilFunc(GL11.GL_NOTEQUAL, 255, 1);
RenderSystem.stencilOp(GL11.GL_KEEP, GL11.GL_KEEP, GL11.GL_KEEP);
RenderSystem.stencilMask(0); // Dont Write to stencil buffer
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,11 @@ public class VRShaders {
public static AbstractUniform _Lanczos_projectionUniform;
public static AbstractUniform _Lanczos_modelViewUniform;
public static ShaderInstance depthMaskShader;
public static AbstractUniform _DepthMask_resolutionUniform;
public static AbstractUniform _DepthMask_positionUniform;
public static AbstractUniform _DepthMask_scaleUniform;
public static AbstractUniform _DepthMask_hmdViewPosition;
public static AbstractUniform _DepthMask_hmdPlaneNormal;
public static AbstractUniform _DepthMask_projectionMatrix;
public static AbstractUniform _DepthMask_viewMatrix;
public static AbstractUniform _DepthMask_passUniform;
public static AbstractUniform _DepthMask_firstPersonPassUniform;
public static AbstractUniform _DepthMask_keyColorUniform;
public static AbstractUniform _DepthMask_alphaModeUniform;
public static int _FOVReduction_Enabled;
Expand Down Expand Up @@ -55,14 +52,11 @@ private VRShaders() {
public static void setupDepthMask() throws Exception {
depthMaskShader = new ShaderInstance(Minecraft.getInstance().getResourceManager(), "mixedreality", DefaultVertexFormat.POSITION_TEX);


_DepthMask_resolutionUniform = depthMaskShader.safeGetUniform("resolution");
_DepthMask_positionUniform = depthMaskShader.safeGetUniform("position");
_DepthMask_hmdViewPosition = depthMaskShader.safeGetUniform("hmdViewPosition");
_DepthMask_hmdPlaneNormal = depthMaskShader.safeGetUniform("hmdPlaneNormal");
_DepthMask_projectionMatrix = depthMaskShader.safeGetUniform("projectionMatrix");
_DepthMask_viewMatrix = depthMaskShader.safeGetUniform("viewMatrix");
_DepthMask_passUniform = depthMaskShader.safeGetUniform("pass");
_DepthMask_firstPersonPassUniform = depthMaskShader.safeGetUniform("firstPersonPass");
_DepthMask_keyColorUniform = depthMaskShader.safeGetUniform("keyColor");
_DepthMask_alphaModeUniform = depthMaskShader.safeGetUniform("alphaMode");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -820,8 +820,9 @@ private static boolean shouldRenderCrosshair() {
return false;
} else if (dataHolder.climbTracker.isGrabbingLadder(0)) {
return false;
} else
} else {
return !(dataHolder.vrPlayer.worldScale > 15.0F);
}
}

public static void renderCrosshairAtDepth(boolean depthAlways, PoseStack poseStack) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,23 @@

import com.mojang.blaze3d.pipeline.RenderTarget;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.shaders.ProgramManager;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.Util;
import net.minecraft.client.Minecraft;
import net.minecraft.util.Mth;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.Blocks;
import org.lwjgl.opengl.GL13C;
import org.vivecraft.client.Xplat;
import org.vivecraft.client.extensions.RenderTargetExtension;
import org.vivecraft.client_vr.ClientDataHolderVR;
import org.vivecraft.client_vr.extensions.GameRendererExtension;
import org.vivecraft.client_vr.render.RenderPass;
import org.vivecraft.client_vr.render.VRShaders;
import org.vivecraft.client_vr.settings.VRSettings;
import org.vivecraft.mod_compat_vr.iris.IrisHelper;
import org.vivecraft.mod_compat_vr.optifine.OptifineHelper;

public class VRPassHelper {

Expand Down Expand Up @@ -182,7 +186,7 @@ public static void renderSingleView(RenderPass eye, float partialTicks, long nan

VRShaders._Overlay_eye.set(dataHolder.currentPass == RenderPass.LEFT ? 1 : -1);
((RenderTargetExtension) rendertarget).vivecraft$blitFovReduction(VRShaders.fovReductionShader, dataHolder.vrRenderer.framebufferEye0.viewWidth, dataHolder.vrRenderer.framebufferEye0.viewHeight);
GlStateManager._glUseProgram(0);
ProgramManager.glUseProgram(0);
checkGLError("post overlay" + eye);
mc.getProfiler().pop();
}
Expand All @@ -197,11 +201,28 @@ public static void renderSingleView(RenderPass eye, float partialTicks, long nan
dataHolder.vrRenderer.cameraFramebuffer.viewHeight, 0, true, 0.0F, 0.0F, false);
mc.getProfiler().pop();
}

if (dataHolder.currentPass == RenderPass.THIRD
&& dataHolder.vrSettings.displayMirrorMode == VRSettings.MirrorMode.MIXED_REALITY
&& OptifineHelper.isOptifineLoaded()
&& renderWorld && mc.level != null
&& OptifineHelper.isShaderActive()
&& OptifineHelper.bindShaderFramebuffer()) {
// copy optifine depth buffer, since we need it for the mixed reality split
RenderSystem.activeTexture(GL13C.GL_TEXTURE0);
RenderSystem.bindTexture(dataHolder.vrRenderer.framebufferMR.getDepthTextureId());
checkGLError("pre copy depth");
GlStateManager._glCopyTexSubImage2D(GL13C.GL_TEXTURE_2D, 0, 0, 0, 0, 0, dataHolder.vrRenderer.framebufferMR.width, dataHolder.vrRenderer.framebufferMR.height);
checkGLError("post copy depth");
// rebind the original buffer
dataHolder.vrRenderer.framebufferMR.bindWrite(false);
}
}

private static void checkGLError(String string) {
if (GlStateManager._getError() != 0) {
System.err.println(string);
int i = GlStateManager._getError();
if (i != 0) {
System.err.println(string + ": " + i);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.RandomSource;
import net.minecraft.world.inventory.InventoryMenu;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.Vec3;
import org.vivecraft.client.utils.Utils;
import org.vivecraft.client_vr.ClientDataHolderVR;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1167,16 +1167,6 @@ void onOptionChange() {
ClientDataHolderVR.getInstance().vrRenderer.reinitFrameBuffers("Mirror Setting Changed");
}
}

@Override
Object setOptionValue(Object value) {
// TODO: remove this method after fixing mixed reality... again
MirrorMode mode = ((MirrorMode) value).getNext();
if (mode == MirrorMode.MIXED_REALITY) {
mode = mode.getNext();
}
return mode;
}
},
MIRROR_EYE(false, true, "vivecraft.options.left", "vivecraft.options.right"), // Mirror Eye
MIXED_REALITY_KEY_COLOR(false, false) { // Key Color
Expand Down Expand Up @@ -1222,23 +1212,19 @@ Object setOptionValue(Object value) {

@Override
void onOptionChange() {
ClientDataHolderVR.getInstance().vrRenderer.resizeFrameBuffers("MR Setting Changed");
// reinit, because of maybe new first person pass
ClientDataHolderVR.getInstance().vrRenderer.reinitFrameBuffers("MR Setting Changed");
}
},
MIXED_REALITY_UNDISTORTED(false, true) { // Undistorted Pass

@Override
void onOptionChange() {
ClientDataHolderVR.getInstance().vrRenderer.resizeFrameBuffers("MR Setting Changed");
}
},
MIXED_REALITY_ALPHA_MASK(false, true) { // Alpha Mask

@Override
void onOptionChange() {
ClientDataHolderVR.getInstance().vrRenderer.resizeFrameBuffers("MR Setting Changed");
// reinit, because of maybe new first person pass
ClientDataHolderVR.getInstance().vrRenderer.reinitFrameBuffers("MR Setting Changed");
}
},
MIXED_REALITY_ALPHA_MASK(false, true), // Alpha Mask,
MIXED_REALITY_FOV(true, false, 0, 179, 1, 0) { // Third Person FOV

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import java.nio.file.FileSystems;
import java.util.HashMap;
import java.util.Map;
import java.util.zip.ZipException;

public class LoaderUtils {
public static URL ZipFileUrl;
Expand Down
Loading

0 comments on commit ca044bf

Please sign in to comment.