From 66a2061813b145d5f81fd84cc702f8d5208e655c Mon Sep 17 00:00:00 2001 From: mcrcortex <18544518+MCRcortex@users.noreply.github.com> Date: Sun, 7 Dec 2025 08:47:53 +1000 Subject: [PATCH] wip tinting --- .../backend/mdic/MDICSectionRenderer.java | 10 ++- .../assets/voxy/shaders/lod/quad_util.glsl | 66 +++++++++++-------- 2 files changed, 46 insertions(+), 30 deletions(-) diff --git a/src/main/java/me/cortex/voxy/client/core/rendering/section/backend/mdic/MDICSectionRenderer.java b/src/main/java/me/cortex/voxy/client/core/rendering/section/backend/mdic/MDICSectionRenderer.java index ad1fbc0e..3cdf834c 100644 --- a/src/main/java/me/cortex/voxy/client/core/rendering/section/backend/mdic/MDICSectionRenderer.java +++ b/src/main/java/me/cortex/voxy/client/core/rendering/section/backend/mdic/MDICSectionRenderer.java @@ -20,6 +20,7 @@ import me.cortex.voxy.client.core.rendering.util.UploadStream; import me.cortex.voxy.common.Logger; import me.cortex.voxy.common.world.WorldEngine; import net.minecraft.client.Minecraft; +import net.minecraft.core.Direction; import org.joml.Matrix4f; import org.lwjgl.system.MemoryUtil; @@ -110,10 +111,15 @@ public class MDICSectionRenderer extends AbstractSectionRenderer>1) == 1) {//NORTH, SOUTH - tinting.xyz *= 0.8f; - } else if ((face>>1) == 2) {//EAST, WEST - tinting.xyz *= 0.6f; - } else {//UP DOWN - tinting.xyz *= 0.9f; - } - } else { - tinting.xyz *= 0.9f; - } - #else - if (isShaded) { - //TODO: make branchless, infact apply ahead of time to the texture itself in ModelManager since that is - // per face - if ((face>>1) == 1) {//NORTH, SOUTH - tinting.xyz *= 0.8f; - } else if ((face>>1) == 2) {//EAST, WEST - tinting.xyz *= 0.6f; - } else if (face == 0) {//DOWN - tinting.xyz *= 0.5f; - } - } - #endif + tinting.rgb *= computeDirectionalFaceTint(isShaded, face); + attributes.x = packVec4(tinting); attributes.y = conditionalTinting; attributes.z = addin|(face<<8); @@ -193,3 +167,39 @@ vec2 getCornerUV(const in QuadData quad, uint cornerId) { return quad.uvCorner + quad.quadSizeAddin*vec2((cornerId>>1)&1u, cornerId&1u); } #endif + +#ifndef PATCHED_SHADER +float computeDirectionalFaceTint(bool isShaded, uint face) { + //Apply face tint + #ifdef DARKENED_TINTING + if (isShaded) { + //just index on a const array with the face as an index, will be much faster + // or use a vector and select/sum + // but per face might be easier? + //TODO: make branchless, infact apply ahead of time to the texture itself in ModelManager since that is + // per face + if ((face>>1) == 1) {//NORTH, SOUTH + return 0.8f; + } else if ((face>>1) == 2) {//EAST, WEST + return 0.6f; + } else {//UP DOWN + return 0.9f; + } + } else { + return 0.9f; + } + #else + if (isShaded) { + //TODO: make branchless, infact apply ahead of time to the texture itself in ModelManager since that is + // per face + if ((face>>1) == 1) {//NORTH, SOUTH + return 0.8f; + } else if ((face>>1) == 2) {//EAST, WEST + return 0.6f; + } else if (face == 0) {//DOWN + return 0.5f; + } + } + #endif + return 1.0f; +} \ No newline at end of file