Skip to content

Commit

Permalink
Added render time uniform
Browse files Browse the repository at this point in the history
  • Loading branch information
Ocelot5836 committed Jan 8, 2025
1 parent 13f698a commit 84ae9ae
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 236 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package foundry.veil.api.client.render.post.stage;

import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.VertexFormat;
import com.mojang.serialization.Codec;
import com.mojang.serialization.MapCodec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
Expand All @@ -10,6 +12,7 @@
import foundry.veil.api.client.render.framebuffer.VeilFramebuffers;
import foundry.veil.api.client.render.post.PostPipeline;
import foundry.veil.api.client.render.shader.program.ShaderProgram;
import net.minecraft.client.Minecraft;
import net.minecraft.resources.ResourceLocation;
import org.jetbrains.annotations.Nullable;
import org.joml.*;
Expand Down Expand Up @@ -66,10 +69,9 @@ public void apply(Context context) {
}

shader.bind();
shader.applyRenderSystem();
shader.addRenderSystemTextures();
context.applySamplers(shader);
this.setupFramebuffer(context, shader);
shader.toShaderInstance().setDefaultUniforms(VertexFormat.Mode.TRIANGLE_STRIP, RenderSystem.getModelViewMatrix(), RenderSystem.getProjectionMatrix(), Minecraft.getInstance().getWindow());
shader.applyShaderSamplers(context, 0);
VeilRenderSystem.drawScreenQuad();
context.clearSamplers(shader);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
package foundry.veil.api.client.render.shader.program;

import com.mojang.blaze3d.platform.Window;
import com.mojang.blaze3d.systems.RenderSystem;
import foundry.veil.api.client.render.VeilRenderSystem;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.core.Direction;
import org.joml.*;

Expand All @@ -19,34 +14,6 @@ public interface MutableUniformAccess extends UniformAccess {

Direction[] DIRECTIONS = Direction.values();

/**
* Sets default uniforms based on what {@link RenderSystem} provides.
*/
default void applyRenderSystem() {
this.setMatrix("ModelViewMat", RenderSystem.getModelViewMatrix());
this.setMatrix("ProjMat", RenderSystem.getProjectionMatrix());
this.setVector("ColorModulator", RenderSystem.getShaderColor());
this.setFloat("GlintAlpha", RenderSystem.getShaderGlintAlpha());
this.setFloat("FogStart", RenderSystem.getShaderFogStart());
this.setFloat("FogEnd", RenderSystem.getShaderFogEnd());
this.setVector("FogColor", RenderSystem.getShaderFogColor());
this.setInt("FogShape", RenderSystem.getShaderFogShape().getIndex());
this.setMatrix("TextureMatrix", RenderSystem.getTextureMatrix());
this.setFloat("GameTime", RenderSystem.getShaderGameTime());
Window window = Minecraft.getInstance().getWindow();
this.setVector("ScreenSize", window.getWidth(), window.getHeight());
this.setVector("Light0_Direction", VeilRenderSystem.getLight0Direction());
this.setVector("Light1_Direction", VeilRenderSystem.getLight1Direction());

// TODO move to uniform block
ClientLevel level = Minecraft.getInstance().level;
if (level != null) {
for (int i = 0; i < DIRECTIONS.length; i++) {
this.setFloat("VeilBlockFaceBrightness[" + i + "]", level.getShade(DIRECTIONS[i], true));
}
}
}

/**
* Sets the binding to use for the specified uniform block.
*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package foundry.veil.api.client.render.shader.program;

import com.mojang.blaze3d.systems.RenderSystem;
import foundry.veil.api.client.render.framebuffer.AdvancedFbo;
import foundry.veil.api.client.render.framebuffer.AdvancedFboTextureAttachment;
import foundry.veil.api.client.render.shader.texture.ShaderTextureSource;
Expand All @@ -14,15 +13,6 @@
*/
public interface TextureUniformAccess {

/**
* Applies the {@link RenderSystem} textures to <code>Sampler0</code>-<code>Sampler11</code>.
*/
default void addRenderSystemTextures() {
for (int i = 0; i < 12; ++i) {
this.addSampler("Sampler" + i, RenderSystem.getShaderTexture(i));
}
}

/**
* Sets <code>DiffuseSampler0</code>-<code>DiffuseSamplerMax</code>
* to the color buffers in the specified framebuffer.
Expand Down Expand Up @@ -97,7 +87,7 @@ default void applyShaderSamplers(int samplerStart) {
/**
* Loads the samplers set by {@link #addSampler(CharSequence, int)} into the shader.
*
* @param context The context for setting built-in shader samplers or <code>null</code> to ignore normal samplers
* @param context The context for setting built-in shader samplers or <code>null</code> to ignore normal samplers
* @param samplerStart The sampler to start binding to
*/
void applyShaderSamplers(@Nullable ShaderTextureSource.Context context, int samplerStart);
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@ public abstract class PipelineShaderInstanceMixin {

@Inject(method = "setDefaultUniforms", at = @At("TAIL"))
public void setDefaultUniforms(VertexFormat.Mode mode, Matrix4f projectionMatrix, Matrix4f frustrumMatrix, Window window, CallbackInfo ci) {
Uniform renderTime = this.getUniform("VeilRenderTime");
if (renderTime != null) {
renderTime.set((System.currentTimeMillis() % 3_600_000) / 1000.0F);
}

Uniform iModelViewMat = this.getUniform("NormalMat");
if (iModelViewMat != null) {
iModelViewMat.set(projectionMatrix.normal(new Matrix3f()));
Expand Down

0 comments on commit 84ae9ae

Please sign in to comment.