• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Вопрос Помогите с шейдерами 1.21.4

  • Автор темы Автор темы csgonob
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
19 Июл 2019
Сообщения
39
Реакции
4
Я хочу поставить кастомный шейдер на 1.21.4 mcp + optifine.

Как мне это сделать? у меня есть класс с инициализацией его:

Java:
Expand Collapse Copy
import com.mojang.blaze3d.vertex.DefaultVertexFormat;
import net.minecraft.client.renderer.ShaderDefines;
import net.minecraft.client.renderer.ShaderProgram;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.packs.resources.ResourceProvider;

public class CustomShader {
    private static ShaderProgram customShaderProgram;

    public static void init(ResourceProvider resourceProvider) {
        try {
            // Регистрация шейдера
            ResourceLocation shaderLocation = new ResourceLocation("core/custom_shader");
            System.out.println("TEST123 " + shaderLocation.toDebugFileName());
            System.out.println("TEST123 " + shaderLocation.getPath());
            System.out.println("TEST123 " + shaderLocation.getNamespace());
            System.out.println("TEST123 " + shaderLocation.toString());
            System.out.println(resourceProvider.getResource(shaderLocation).toString());
            customShaderProgram = new ShaderProgram(
                    shaderLocation,
                    DefaultVertexFormat.POSITION_COLOR,
                    ShaderDefines.EMPTY
            );
        } catch (Exception e) {
            throw new RuntimeException("Failed to load custom shader", e);
        }
    }

    public static ShaderProgram getCustomShader() {
        return customShaderProgram;
    }
}


Как только я начинаю рендрить его:

Java:
Expand Collapse Copy
    public static void drawRect(GuiGraphics guiGraphics, float x, float y, float width, float height, int color) {
        RenderSystem.enableBlend();
        RenderSystem.defaultBlendFunc();
        RenderSystem.disableCull();

        Matrix4f matrix4f = guiGraphics.pose.last().pose();
        CompiledShaderProgram shader = RenderSystem.setShader(CustomShader.getCustomShader());

        shader.getUniform("Size").set(width, height);
        shader.getUniform("Radius").set(0.f, 0.f, 0.f, 0.f);
        shader.getUniform("Smoothness").set(0.f);

        BufferBuilder builder = tessellator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR);

        builder.addVertex(matrix4f, x, y, 0).setColor(color);
        builder.addVertex(matrix4f, x, y + height, 0).setColor(color);
        builder.addVertex(matrix4f, x + width, y + height, 0).setColor(color);
        builder.addVertex(matrix4f, x + width, y, 0).setColor(color);

        tessellator.draw(builder);

        RenderSystem.enableCull();
        RenderSystem.disableBlend();
    }

то происходит вот это:
Код:
Expand Collapse Copy
Failed to load shader program: minecraft:core/custom_shader (VertexFormat POSITION_COLOR, 16B, [Position, Color]) net.minecraft.client.renderer.ShaderManager$CompilationException: Could not find program with id: minecraft:core/custom_shader

Что делать? как правильно указать путь или это вообще не из за пути зависит?
Я хочу поставить кастомный шейдер на 1.21.4 mcp + optifine.

Как мне это сделать? у меня есть класс с инициализацией его:

Java:
Expand Collapse Copy
import com.mojang.blaze3d.vertex.DefaultVertexFormat;
import net.minecraft.client.renderer.ShaderDefines;
import net.minecraft.client.renderer.ShaderProgram;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.packs.resources.ResourceProvider;

public class CustomShader {
    private static ShaderProgram customShaderProgram;

    public static void init(ResourceProvider resourceProvider) {
        try {
            // Регистрация шейдера
            ResourceLocation shaderLocation = new ResourceLocation("core/custom_shader");
            System.out.println("TEST123 " + shaderLocation.toDebugFileName());
            System.out.println("TEST123 " + shaderLocation.getPath());
            System.out.println("TEST123 " + shaderLocation.getNamespace());
            System.out.println("TEST123 " + shaderLocation.toString());
            System.out.println(resourceProvider.getResource(shaderLocation).toString());
            customShaderProgram = new ShaderProgram(
                    shaderLocation,
                    DefaultVertexFormat.POSITION_COLOR,
                    ShaderDefines.EMPTY
            );
        } catch (Exception e) {
            throw new RuntimeException("Failed to load custom shader", e);
        }
    }

    public static ShaderProgram getCustomShader() {
        return customShaderProgram;
    }
}


Как только я начинаю рендрить его:

Java:
Expand Collapse Copy
    public static void drawRect(GuiGraphics guiGraphics, float x, float y, float width, float height, int color) {
        RenderSystem.enableBlend();
        RenderSystem.defaultBlendFunc();
        RenderSystem.disableCull();

        Matrix4f matrix4f = guiGraphics.pose.last().pose();
        CompiledShaderProgram shader = RenderSystem.setShader(CustomShader.getCustomShader());

        shader.getUniform("Size").set(width, height);
        shader.getUniform("Radius").set(0.f, 0.f, 0.f, 0.f);
        shader.getUniform("Smoothness").set(0.f);

        BufferBuilder builder = tessellator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR);

        builder.addVertex(matrix4f, x, y, 0).setColor(color);
        builder.addVertex(matrix4f, x, y + height, 0).setColor(color);
        builder.addVertex(matrix4f, x + width, y + height, 0).setColor(color);
        builder.addVertex(matrix4f, x + width, y, 0).setColor(color);

        tessellator.draw(builder);

        RenderSystem.enableCull();
        RenderSystem.disableBlend();
    }

то происходит вот это:
Код:
Expand Collapse Copy
Failed to load shader program: minecraft:core/custom_shader (VertexFormat POSITION_COLOR, 16B, [Position, Color]) net.minecraft.client.renderer.ShaderManager$CompilationException: Could not find program with id: minecraft:core/custom_shader

Что делать? как правильно указать путь или это вообще не из за пути зависит?

я решил закинуть в некоторые места шейдер custom_shader и вот пути:
src/main/resources/assets/minecraft/shaders/core
src/main/java/assets/minecraft/shaders/core
все ровно не получается
 
Последнее редактирование:
Я хочу поставить кастомный шейдер на 1.21.4 mcp + optifine.

Как мне это сделать? у меня есть класс с инициализацией его:

Java:
Expand Collapse Copy
import com.mojang.blaze3d.vertex.DefaultVertexFormat;
import net.minecraft.client.renderer.ShaderDefines;
import net.minecraft.client.renderer.ShaderProgram;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.packs.resources.ResourceProvider;

public class CustomShader {
    private static ShaderProgram customShaderProgram;

    public static void init(ResourceProvider resourceProvider) {
        try {
            // Регистрация шейдера
            ResourceLocation shaderLocation = new ResourceLocation("core/custom_shader");
            System.out.println("TEST123 " + shaderLocation.toDebugFileName());
            System.out.println("TEST123 " + shaderLocation.getPath());
            System.out.println("TEST123 " + shaderLocation.getNamespace());
            System.out.println("TEST123 " + shaderLocation.toString());
            System.out.println(resourceProvider.getResource(shaderLocation).toString());
            customShaderProgram = new ShaderProgram(
                    shaderLocation,
                    DefaultVertexFormat.POSITION_COLOR,
                    ShaderDefines.EMPTY
            );
        } catch (Exception e) {
            throw new RuntimeException("Failed to load custom shader", e);
        }
    }

    public static ShaderProgram getCustomShader() {
        return customShaderProgram;
    }
}


Как только я начинаю рендрить его:

Java:
Expand Collapse Copy
    public static void drawRect(GuiGraphics guiGraphics, float x, float y, float width, float height, int color) {
        RenderSystem.enableBlend();
        RenderSystem.defaultBlendFunc();
        RenderSystem.disableCull();

        Matrix4f matrix4f = guiGraphics.pose.last().pose();
        CompiledShaderProgram shader = RenderSystem.setShader(CustomShader.getCustomShader());

        shader.getUniform("Size").set(width, height);
        shader.getUniform("Radius").set(0.f, 0.f, 0.f, 0.f);
        shader.getUniform("Smoothness").set(0.f);

        BufferBuilder builder = tessellator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR);

        builder.addVertex(matrix4f, x, y, 0).setColor(color);
        builder.addVertex(matrix4f, x, y + height, 0).setColor(color);
        builder.addVertex(matrix4f, x + width, y + height, 0).setColor(color);
        builder.addVertex(matrix4f, x + width, y, 0).setColor(color);

        tessellator.draw(builder);

        RenderSystem.enableCull();
        RenderSystem.disableBlend();
    }

то происходит вот это:
Код:
Expand Collapse Copy
Failed to load shader program: minecraft:core/custom_shader (VertexFormat POSITION_COLOR, 16B, [Position, Color]) net.minecraft.client.renderer.ShaderManager$CompilationException: Could not find program with id: minecraft:core/custom_shader

Что делать? как правильно указать путь или это вообще не из за пути зависит?


я решил закинуть в некоторые места шейдер custom_shader и вот пути:
src/main/resources/assets/minecraft/shaders/core
src/main/java/assets/minecraft/shaders/core
все ровно не получается
minecraft:core/custom_shader
minecraft:core/custom_shader
1748028935246.png

а еще может быть проблема в конфигурации шейдера (custom_shader.json - если его нет то ты вообще лох), особенно если ты его спастил из фабрик мода
 
Последнее редактирование:
minecraft:core/custom_shader

Посмотреть вложение 307039
а еще может быть проблема в конфигурации шейдера (custom_shader.json - если его нет то ты вообще лох), особенно если ты его спастил из фабрик мода
1748029244660.png

custom_shader.json

Код:
Expand Collapse Copy
{
    "vertex": "minecraft:core/custom_shader",
    "fragment": "minecraft:core/custom_shader",
    "attributes": [
        "Position",
        "Color"
    ],
    "samplers": [],
    "uniforms": [
        { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
        { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
        { "name": "Size", "type": "float", "count": 2, "values": [ 0.0, 0.0 ] },
        { "name": "Radius", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] },
        { "name": "Smoothness", "type": "float", "count": 1, "values": [ 1.0 ] }
    ]
}
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Посмотреть вложение 307040

custom_shader.json

Код:
Expand Collapse Copy
{
    "vertex": "minecraft:core/custom_shader",
    "fragment": "minecraft:core/custom_shader",
    "attributes": [
        "Position",
        "Color"
    ],
    "samplers": [],
    "uniforms": [
        { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
        { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
        { "name": "Size", "type": "float", "count": 2, "values": [ 0.0, 0.0 ] },
        { "name": "Radius", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] },
        { "name": "Smoothness", "type": "float", "count": 1, "values": [ 1.0 ] }
    ]
}
У тебя путь не тот
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
minecraft:custom_shader
 
Назад
Сверху Снизу