Я хочу поставить кастомный шейдер на 1.21.4 mcp + optifine.
Как мне это сделать? у меня есть класс с инициализацией его:
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Как только я начинаю рендрить его:
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
то происходит вот это:
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Что делать? как правильно указать путь или это вообще не из за пути зависит?
я решил закинуть в некоторые места шейдер custom_shader и вот пути:
src/main/resources/assets/minecraft/shaders/core
src/main/java/assets/minecraft/shaders/core
все ровно не получается
				
			Как мне это сделать? у меня есть класс с инициализацией его:
			
				Java:
			
		
		
		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:
			
		
		
		    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();
    }
	то происходит вот это:
			
				Код:
			
		
		
		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: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: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(); }
то происходит вот это:
Код: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
все ровно не получается
			
				Последнее редактирование: