Skip to content

Commit

Permalink
Merge pull request #30 from xirreal/master
Browse files Browse the repository at this point in the history
Use Iris uniforms instead of replicating them
  • Loading branch information
MCRcortex authored Oct 10, 2023
2 parents 5466eab + 0601e8d commit 24b0b67
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 95 deletions.
65 changes: 0 additions & 65 deletions src/main/java/me/cortex/vulkanite/client/rendering/Uniforms.java

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,7 @@
import me.cortex.vulkanite.lib.base.VContext;
import me.cortex.vulkanite.lib.cmd.VCmdBuff;
import me.cortex.vulkanite.lib.cmd.VCommandPool;
import me.cortex.vulkanite.lib.descriptors.DescriptorSetLayoutBuilder;
import me.cortex.vulkanite.lib.descriptors.DescriptorUpdateBuilder;
import me.cortex.vulkanite.lib.descriptors.VDescriptorPool;
import me.cortex.vulkanite.lib.descriptors.VDescriptorSetLayout;
import me.cortex.vulkanite.lib.memory.VBuffer;
import me.cortex.vulkanite.lib.memory.VGImage;
import me.cortex.vulkanite.lib.memory.VImage;
Expand All @@ -21,32 +18,26 @@
import me.cortex.vulkanite.lib.pipeline.RaytracePipelineBuilder;
import me.cortex.vulkanite.lib.pipeline.VRaytracePipeline;
import me.cortex.vulkanite.lib.shader.reflection.ShaderReflection;
import me.cortex.vulkanite.mixin.iris.MixinCelestialUniforms;
import me.cortex.vulkanite.mixin.iris.MixinCommonUniforms;
import net.coderbot.iris.gl.buffer.ShaderStorageBuffer;
import net.coderbot.iris.gl.buffer.ShaderStorageBufferHolder;
import net.coderbot.iris.gl.buffer.ShaderStorageInfo;
import net.coderbot.iris.texture.pbr.PBRTextureHolder;
import net.coderbot.iris.texture.pbr.PBRTextureManager;
import net.coderbot.iris.uniforms.CapturedRenderingState;
import net.coderbot.iris.uniforms.CelestialUniforms;
import net.coderbot.iris.uniforms.CommonUniforms;
import net.coderbot.iris.uniforms.SystemTimeUniforms;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.render.Camera;
import net.minecraft.client.render.CameraSubmersionType;
import net.minecraft.client.texture.AbstractTexture;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.RotationAxis;
import org.joml.Matrix4f;
import org.joml.Vector3f;
import org.joml.Vector4f;
import org.lwjgl.system.MemoryUtil;
import org.lwjgl.vulkan.*;

import java.lang.reflect.Array;
import java.nio.ByteBuffer;
import java.nio.FloatBuffer;
import java.util.*;

import static net.coderbot.iris.uniforms.CelestialUniforms.getSunAngle;
import static net.coderbot.iris.uniforms.CelestialUniforms.isDay;
import static org.lwjgl.opengl.EXTSemaphore.GL_LAYOUT_GENERAL_EXT;
import static org.lwjgl.opengl.GL11C.glFinish;
import static org.lwjgl.opengl.GL11C.glFlush;
Expand Down Expand Up @@ -233,9 +224,7 @@ public VulkanPipeline(VContext ctx, AccelerationManager accelerationManager, Ray

private VSemaphore previousSemaphore;

private int frameId;

public void renderPostShadows(List<VGImage> outImgs, Camera camera, ShaderStorageBuffer[] ssbos) {
public void renderPostShadows(List<VGImage> outImgs, Camera camera, ShaderStorageBuffer[] ssbos, MixinCelestialUniforms celestialUniforms) {
this.singleUsePool.doReleases();
PBRTextureManager.notifyPBRTexturesChanged();

Expand Down Expand Up @@ -281,12 +270,12 @@ public void renderPostShadows(List<VGImage> outImgs, Camera camera, ShaderStorag
invProjMatrix.transformProject(+1, +1, 0, 1, tmpv3).get(12*Float.BYTES, bb);
invViewMatrix.get(Float.BYTES * 16, bb);

Uniforms.getSunPosition().get(Float.BYTES * 32, bb);
Uniforms.getMoonPosition().get(Float.BYTES * 36, bb);
celestialUniforms.invokeGetSunPosition().get(Float.BYTES * 32, bb);
celestialUniforms.invokeGetMoonPosition().get(Float.BYTES * 36, bb);

bb.putInt(Float.BYTES * 40, frameId++);
bb.putInt(Float.BYTES * 40, SystemTimeUniforms.COUNTER.getAsInt());

int flags = Uniforms.isEyeInWater()&3;
int flags = MixinCommonUniforms.invokeIsEyeInWater() & 3;
bb.putInt(Float.BYTES * 41, flags);
bb.rewind();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package me.cortex.vulkanite.mixin.iris;

import net.coderbot.iris.uniforms.CelestialUniforms;
import org.joml.Vector4f;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Invoker;

@Mixin(value = CelestialUniforms.class, remap = false)
public interface MixinCelestialUniforms {
@Invoker("getSunPosition")
public Vector4f invokeGetSunPosition();

@Invoker("getMoonPosition")
public Vector4f invokeGetMoonPosition();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package me.cortex.vulkanite.mixin.iris;

import net.coderbot.iris.uniforms.CommonUniforms;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Invoker;

@Mixin(value = CommonUniforms.class, remap = false)
public interface MixinCommonUniforms {
@Invoker("isEyeInWater")
public static int invokeIsEyeInWater() { return 0; } // Must have a body, but this is just a dummy body and doesn't actually get executed.
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,21 @@
import it.unimi.dsi.fastutil.objects.Object2ObjectMap.Entry;
import me.cortex.vulkanite.client.Vulkanite;
import me.cortex.vulkanite.client.rendering.VulkanPipeline;
import me.cortex.vulkanite.compat.IGetRaytracingSource;
import me.cortex.vulkanite.compat.IRenderTargetVkGetter;
import me.cortex.vulkanite.compat.IVGImage;
import me.cortex.vulkanite.compat.RaytracingShaderSet;
import me.cortex.vulkanite.compat.*;
import me.cortex.vulkanite.lib.base.VContext;
import me.cortex.vulkanite.lib.memory.VGImage;
import net.coderbot.iris.gl.buffer.ShaderStorageBuffer;
import net.coderbot.iris.gl.texture.TextureAccess;
import net.coderbot.iris.gl.buffer.ShaderStorageBufferHolder;
import net.coderbot.iris.gl.uniform.DynamicUniformHolder;
import net.coderbot.iris.mixin.LevelRendererAccessor;
import net.coderbot.iris.pipeline.CustomTextureManager;
import net.coderbot.iris.pipeline.newshader.NewWorldRenderingPipeline;
import net.coderbot.iris.rendertarget.RenderTargets;
import net.coderbot.iris.shaderpack.ProgramSet;
import net.coderbot.iris.shaderpack.texture.TextureStage;
import net.coderbot.iris.uniforms.CelestialUniforms;
import net.coderbot.iris.uniforms.custom.CustomUniforms;
import net.minecraft.client.render.Camera;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Final;
Expand All @@ -39,7 +39,8 @@ public class MixinNewWorldRenderingPipeline {
@Shadow @Final private RenderTargets renderTargets;
@Shadow @Final private CustomTextureManager customTextureManager;
@Shadow private ShaderStorageBufferHolder shaderStorageBufferHolder;


@Shadow @Final private float sunPathRotation;
@Unique private RaytracingShaderSet[] rtShaderPasses = null;
@Unique private VContext ctx;
@Unique private VulkanPipeline pipeline;
Expand All @@ -55,11 +56,9 @@ private VGImage[] getCustomTextures() {

entryList.sort(Comparator.comparing(Entry::getKey));

VGImage[] sortedTextures = entryList.stream()
return entryList.stream()
.map(entry -> ((IVGImage) entry.getValue()).getVGImage())
.toArray(VGImage[]::new);

return sortedTextures;
}

@Inject(method = "<init>", at = @At("TAIL"))
Expand Down Expand Up @@ -88,7 +87,10 @@ private void renderShadows(LevelRendererAccessor par1, Camera par2, CallbackInfo
for (int i = 0; i < renderTargets.getRenderTargetCount(); i++) {
outImgs.add(((IRenderTargetVkGetter)renderTargets.getOrCreate(i)).getMain());
}
pipeline.renderPostShadows(outImgs, par2, buffers);

MixinCelestialUniforms celestialUniforms = (MixinCelestialUniforms)(Object) new CelestialUniforms(this.sunPathRotation);

pipeline.renderPostShadows(outImgs, par2, buffers, celestialUniforms);
}

@Inject(method = "destroyShaders", at = @At("TAIL"))
Expand Down
4 changes: 3 additions & 1 deletion src/main/resources/vulkanite.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@
"package": "me.cortex.vulkanite.mixin",
"compatibilityLevel": "JAVA_17",
"client": [
"iris.MixinNativeImageBackedTexture",
"iris.MixinCelestialUniforms",
"iris.MixinCommonUniforms",
"iris.MixinGlResource",
"iris.MixinGlTexture",
"iris.MixinNativeImageBackedTexture",
"iris.MixinNewWorldRenderingPipeline",
"iris.MixinPackRenderTargetDirectives",
"iris.MixinPBRAtlasTexture",
Expand Down

0 comments on commit 24b0b67

Please sign in to comment.