Why does depth and blending works so stange together. Does exist any way to fix it?
https://imgur.com/Y4EoGoO
I render it with EntityRenderer.
My code:
@Override
public void render(SoulEntity soulEntity, float p_114486_, float pTicks, PoseStack poseStack, MultiBufferSource bufferSource, int p_114490_) {
ISoul soul = soulEntity.getSoul();
if (soul == null)
return;
RenderSystem.enableDepthTest();
RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
poseStack.pushPose();
poseStack.scale(0.6f, 0.6f, 0.6f);
poseStack.mulPose(this.entityRenderDispatcher.cameraOrientation());
poseStack.mulPose(Axis.YP.rotationDegrees(180.0F));
Minecraft.getInstance().textureManager.getTexture(getTextureLocation(soulEntity)).setBlurMipmap(true, false);
Color color = soul.getColor();
Matrix4f matrix4f = poseStack.last().pose();
VertexConsumer bufferBuilder = bufferSource.getBuffer(EnsRenderType.SOUL_RENDER_TYPE);
bufferBuilder.vertex(matrix4f, -1.2f, -1.2f, 0.0F).uv(0.0F, 1.0F).color(color.getRed(), color.getBlue(), color.getGreen(), 70).uv2(p_114490_)
.endVertex();
bufferBuilder.vertex(matrix4f, 1.2f, -1.2f, 0.0F).uv(1.0F, 1.0F).color(color.getRed(), color.getBlue(), color.getGreen(), 70).uv2(p_114490_).endVertex();
bufferBuilder.vertex(matrix4f, 1.2f, 1.2f, 0.0F).uv(1.0F, 0.0F).color(color.getRed(), color.getBlue(), color.getGreen(), 70).uv2(p_114490_).endVertex();
bufferBuilder.vertex(matrix4f, -1.2f, 1.2f, 0.0F).uv(0.0F, 0.0F).color(color.getRed(), color.getBlue(), color.getGreen(), 70).uv2(p_114490_).endVertex();
bufferBuilder.vertex(matrix4f, (float) (0f - 0.6), (float) (0.0f - 0.6), 0.0F).uv(0.0F, 1.0F).color(color.getRed(), color.getBlue(), color.getGreen(), 100).uv2(p_114490_).endVertex();
bufferBuilder.vertex(matrix4f, 1f - 0.4f, 0.0f - 0.6f, 0.0f).uv(1.0F, 1.0F).color(color.getRed(), color.getBlue(), color.getGreen(), 100).uv2(p_114490_).endVertex();
bufferBuilder.vertex(matrix4f, 1f - 0.4f, 1.0f - 0.4f, 0.0f).uv(1.0F, 0.0F).color(color.getRed(), color.getBlue(), color.getGreen(), 100).uv2(p_114490_).endVertex();
bufferBuilder.vertex(matrix4f, 0f - 0.6f, 1.0f - 0.4f, 0.0f).uv(0.0F, 0.0F).color(color.getRed(), color.getBlue(), color.getGreen(), 100).uv2(p_114490_).endVertex();
bufferBuilder.vertex(matrix4f, (0f - 0.5f) + 0.13f, (0.0f - 0.5f) + 0.13f, 0.0f).uv(0.0F, 1.0F).color(color.getRed(), color.getBlue(), color.getGreen(), 120).uv2(p_114490_).endVertex();
bufferBuilder.vertex(matrix4f, 1f - 0.5f - 0.13f, (0.0f - 0.5f) + 0.13f, 0.0f).uv(1.0F, 1.0F).color(color.getRed(), color.getBlue(), color.getGreen(), 120).uv2(p_114490_).endVertex();
bufferBuilder.vertex(matrix4f, 1f - 0.5f - 0.13f, 1.0f - 0.5f - 0.13f, 0.0f).uv(1.0F, 0.0F).color(color.getRed(), color.getBlue(), color.getGreen(), 120).uv2(p_114490_).endVertex();
bufferBuilder.vertex(matrix4f, (0f - 0.5f) + 0.13f, 1.0f - 0.5f - 0.13f, 0.0f).uv(0.0F, 0.0F).color(color.getRed(), color.getBlue(), color.getGreen(), 120).uv2(p_114490_).endVertex();
Color color2 = Color.WHITE;
bufferBuilder.vertex(matrix4f, (0f - 0.5f) + 0.26f, (0.0f - 0.5f) + 0.26f, 0.0f).uv(0.0F, 1.0F).color(color2.getRed(), color2.getBlue(), color2.getGreen(), 130).uv2(p_114490_).endVertex();
bufferBuilder.vertex(matrix4f, 1f - 0.5f - 0.26f, (0.0f - 0.5f) + 0.26f, 0.0f).uv(1.0F, 1.0F).color(color2.getRed(), color2.getBlue(), color2.getGreen(), 130).uv2(p_114490_).endVertex();
bufferBuilder.vertex(matrix4f, 1f - 0.5f - 0.26f, 1.0f - 0.5f - 0.26f, 0.0f).uv(1.0F, 0.0F).color(color2.getRed(), color2.getBlue(), color2.getGreen(), 130).uv2(p_114490_).endVertex();
bufferBuilder.vertex(matrix4f, (0f - 0.5f) + 0.26f, 1.0f - 0.5f - 0.26f, 0.0f).uv(0.0F, 0.0F).color(color2.getRed(), color2.getBlue(), color2.getGreen(), 130).uv2(p_114490_).endVertex();
bufferBuilder.vertex(matrix4f, (0f - 0.5f) + 0.4f, (0.0f - 0.5f) + 0.4f, 0.0f).uv(0.0F, 1.0F).color(color2.getRed(), color2.getBlue(), color2.getGreen(), 80).uv2(p_114490_).endVertex();
bufferBuilder.vertex(matrix4f, 1f - 0.5f - 0.4f, (0.0f - 0.5f) + 0.4f, 0.0f).uv(1.0F, 1.0F).color(color2.getRed(), color2.getBlue(), color2.getGreen(), 80).uv2(p_114490_).endVertex();
bufferBuilder.vertex(matrix4f, 1f - 0.5f - 0.4f, 1.0f - 0.5f - 0.4f, 0.0f).uv(1.0F, 0.0F).color(color2.getRed(), color2.getBlue(), color2.getGreen(), 80).uv2(p_114490_).endVertex();
bufferBuilder.vertex(matrix4f, (0f - 0.5f) + 0.4f, 1.0f - 0.5f - 0.4f, 0.0f).uv(0.0F, 0.0F).color(color2.getRed(), color2.getBlue(), color2.getGreen(), 80).uv2(p_114490_).endVertex();
poseStack.popPose();
// RenderUtils.drawStreak(soulEntity, pTicks, poseStack, bufferSource, getStreaks(soulEntity));
super.render(soulEntity, p_114486_, pTicks, poseStack, bufferSource, p_114490_);
}
public static final RenderType SOUL_RENDER_TYPE = RenderType.create("soul_render_type", DefaultVertexFormat.POSITION_TEX_COLOR,
VertexFormat.Mode.QUADS, 256, false, false,
RenderType.CompositeState.builder()
.setTextureState(new RenderStateShard.TextureStateShard(new ResourceLocation(MODID, "textures/particle/wisp.png"), true, true))
.setLightmapState(LIGHTMAP)
.setTransparencyState(LIGHTNING_TRANSPARENCY)
.setWriteMaskState(COLOR_DEPTH_WRITE)
.setCullState(RenderStateShard.CULL)
.setShaderState(new RenderStateShard.ShaderStateShard(ShaderRegistry::getSmoothPosTexColorShader))
.createCompositeState(true));