Fixed block preview shader being glitchy. Now shows block without effects.

This commit is contained in:
Christian Knaapen
2021-10-30 16:32:23 +02:00
parent 5b8fafd9f7
commit 80c475ff54
3 changed files with 21 additions and 15 deletions

View File

@@ -84,25 +84,28 @@ public class BuildRenderTypes extends RenderType {
String stateName = "eb_texturing_" + dissolve + "_" + blockPos + "_" + firstPos + "_" + secondPos + "_" + red; String stateName = "eb_texturing_" + dissolve + "_" + blockPos + "_" + firstPos + "_" + secondPos + "_" + red;
TexturingStateShard MY_TEXTURING = new TexturingStateShard(stateName, () -> { TexturingStateShard MY_TEXTURING = new TexturingStateShard(stateName, () -> {
setShaderParameters(dissolveShaderInstance, dissolve, Vec3.atLowerCornerOf(blockPos), Vec3.atLowerCornerOf(firstPos), Vec3.atLowerCornerOf(secondPos), blockPos == secondPos, red); setShaderParameters(dissolveShaderInstance, dissolve, Vec3.atLowerCornerOf(blockPos), Vec3.atLowerCornerOf(firstPos), Vec3.atLowerCornerOf(secondPos), blockPos == secondPos, red);
RenderSystem.setShaderColor(1f, 1f, 1f, 0.8f); // RenderSystem.setShaderColor(1f, 1f, 1f, 0.8f);
}, () -> {}); }, () -> {});
RenderType.CompositeState renderState = RenderType.CompositeState.builder() RenderType.CompositeState renderState = RenderType.CompositeState.builder()
.setShaderState(RENDERTYPE_DISSOLVE_SHADER) .setShaderState(RENDERTYPE_DISSOLVE_SHADER)
.setTexturingState(MY_TEXTURING) // .setTexturingState(MY_TEXTURING)
.setTextureState(new RenderStateShard.TextureStateShard(shaderMaskTextureLocation, false, false)) // .setTextureState(new RenderStateShard.TextureStateShard(shaderMaskTextureLocation, false, false))
.setTextureState(RenderStateShard.BLOCK_SHEET_MIPPED)
.setTransparencyState(TRANSLUCENT_TRANSPARENCY) .setTransparencyState(TRANSLUCENT_TRANSPARENCY)
.setLightmapState(RenderStateShard.NO_LIGHTMAP)
.setOutputState(RenderStateShard.TRANSLUCENT_TARGET)
//TODO 1.17 //TODO 1.17
// .setDiffuseLightingState(DIFFUSE_LIGHTING_DISABLED) // .setDiffuseLightingState(DIFFUSE_LIGHTING_DISABLED)
// .setAlphaState(DEFAULT_ALPHA) // .setAlphaState(DEFAULT_ALPHA)
.setCullState(new RenderStateShard.CullStateShard(true)) // .setCullState(new RenderStateShard.CullStateShard(true))
.setLightmapState(new RenderStateShard.LightmapStateShard(false)) // .setLightmapState(new RenderStateShard.LightmapStateShard(false))
.setOverlayState(new RenderStateShard.OverlayStateShard(false)) // .setOverlayState(new RenderStateShard.OverlayStateShard(false))
.createCompositeState(true); .createCompositeState(true);
//Unique name for every combination, otherwise it will reuse the previous one //Unique name for every combination, otherwise it will reuse the previous one
String name = "eb_block_previews_" + dissolve + "_" + blockPos + "_" + firstPos + "_" + secondPos + "_" + red; String name = "eb_block_previews_" + dissolve + "_" + blockPos + "_" + firstPos + "_" + secondPos + "_" + red;
return RenderType.create(name, return RenderType.create(name,
DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 256, true, true, renderState); DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 2097152, true, true, renderState);
} }
private static void setShaderParameters(ShaderInstance shader, final float dissolve, final Vec3 blockpos, private static void setShaderParameters(ShaderInstance shader, final float dissolve, final Vec3 blockpos,
@@ -118,13 +121,13 @@ public class BuildRenderTypes extends RenderType {
RenderSystem.setShaderTexture(0, TextureAtlas.LOCATION_BLOCKS); RenderSystem.setShaderTexture(0, TextureAtlas.LOCATION_BLOCKS);
RenderSystem.setShaderTexture(maskTextureIndex, shaderMaskTextureLocation); RenderSystem.setShaderTexture(maskTextureIndex, shaderMaskTextureLocation);
percentileUniform.set(dissolve); // percentileUniform.set(dissolve);
highlightUniform.set(highlight ? 1 : 0); // highlightUniform.set(highlight ? 1 : 0);
redUniform.set(red ? 1 : 0); // redUniform.set(red ? 1 : 0);
//
blockposUniform.set((float) blockpos.x, (float) blockpos.y, (float) blockpos.z); // blockposUniform.set((float) blockpos.x, (float) blockpos.y, (float) blockpos.z);
firstposUniform.set((float) firstpos.x, (float) firstpos.y, (float) firstpos.z); // firstposUniform.set((float) firstpos.x, (float) firstpos.y, (float) firstpos.z);
secondposUniform.set((float) secondpos.x, (float) secondpos.y, (float) secondpos.z); // secondposUniform.set((float) secondpos.x, (float) secondpos.y, (float) secondpos.z);
} }
public static void glActiveTexture(int texture) { public static void glActiveTexture(int texture) {

View File

@@ -27,6 +27,9 @@ in vec4 normal;
out vec4 fragColor; out vec4 fragColor;
void main() { void main() {
vec4 color2 = texture(Sampler0, texCoord0) * vertexColor * ColorModulator;
fragColor = linear_fog(color2, vertexDistance, FogStart, FogEnd, FogColor);
return;
//convert gametime to seconds (roughly) //convert gametime to seconds (roughly)
float time = GameTime * 1200; float time = GameTime * 1200;

View File

@@ -25,7 +25,7 @@ void main() {
vertexPosition = gl_Position.xyz; vertexPosition = gl_Position.xyz;
vertexDistance = length((ModelViewMat * vec4(Position + ChunkOffset, 1.0)).xyz); vertexDistance = length((ModelViewMat * vec4(Position + ChunkOffset, 1.0)).xyz);
vertexColor = Color * minecraft_sample_lightmap(Sampler2, UV2); vertexColor = Color;
texCoord0 = UV0; texCoord0 = UV0;
normal = ProjMat * ModelViewMat * vec4(Normal, 0.0); normal = ProjMat * ModelViewMat * vec4(Normal, 0.0);
} }