▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Шейдеры/Image Shader
Image Shader

Image Shader

Необычный шейдер для Майнкрафт, который выводит любое изображение прямо на экран. Идеально для стримов, логотипов или кастомных интерфейсов. Требует подготовки картинки 160×160 и немного терпения при компиляции.

Оцените первым
5.4K
3

Image Shader - это не типичный шейдер, который меняет освещение или тени. Его задача проста: показывать картинку на экране. В Майнкрафте такое можно использовать, например, чтобы вывести логотип сервера, гифку (через анимацию) или просто забавную картинку во время игры. Для стримеров это вообще находка - можно сделать информационную панель прямо в игре.

Но есть нюанс: шейдер не умеет сам брать картинку из папки. Нужно подготовить изображение вручную. Процесс несложный, но требует пары шагов.

Как подготовить свою картинку

Сначала уменьшите изображение до 160×160 пикселей. Это строгое требование, иначе шейдер не сработает. Проще всего сделать это через ffmpeg:

ffmpeg -i Input.png -vf scale=160:160 image.png

Если ffmpeg нет, подойдёт любой графический редактор - главное, чтобы размер был точно 160×160.

Генерация .glsl-файлов

Дальше понадобится Python-скрипт. Он разбивает картинку на чанки 40×40 и создаёт 16 файлов с шейдерным кодом. Скрипт выглядит так:

from PIL import Image
import os

def generate_glsl_chunks(image_path, output_dir="image_chunks"):
    try:
        img = Image.open(image_path).convert('RGBA')
    except FileNotFoundError:
        print(f"Error: Image file not found at {image_path}")
        return

    width, height = img.size
    if width != 160 or height != 160:
        print(f"Error: Image must be 160x160 pixels, but it is {width}x{height}.")
        print(f"You can use:")
        print(f"ffmpeg -i image.png -vf scale=160:160 output.png")
        print(f"to adjust the image resolution.")
        return
        
    os.makedirs(output_dir, exist_ok=True)
    chunk_size = 40
    num_chunks_x = width // chunk_size
    num_chunks_y = height // chunk_size

    for chunk_y in range(num_chunks_y):
        for chunk_x in range(num_chunks_x):
            left = chunk_x * chunk_size
            upper = chunk_y * chunk_size
            right = left + chunk_size
            lower = upper + chunk_size
            sub_img = img.crop((left, upper, right, lower))
            pixel_data = list(sub_img.getdata())

            array_name = f"image_data_{chunk_y}_{chunk_x}"
            output_file_path = os.path.join(output_dir, f"{array_name}.glsl")

            glsl_array = f"vec4 {array_name}[{chunk_size * chunk_size}] = vec4{chunk_size * chunk_size}:\n"
            for i, pixel in enumerate(pixel_data):
                r, g, b, a = pixel
                glsl_array += f"    vec4({r/255.0}, {g/255.0}, {b/255.0}, {a/255.0})"
                if i < len(pixel_data) - 1:
                    glsl_array += ","
                if (i + 1) % 4 == 0:
                    glsl_array += "\n"
            
            glsl_array += ");\n"

            with open(output_file_path, 'w') as f:
                f.write(glsl_array)
            
            print(f"Generated file: {output_file_path}")

# --- Config ---
image_file = "image.png"
output_directory = "image_chunks"

generate_glsl_chunks(image_file, output_directory)

Запустите скрипт, и в папке image_chunks появятся 16 файлов с расширением .glsl. Их нужно скопировать в shaders/data/image_chunks внутри распакованного шейдерпака.

Установка и использование

  1. Скачайте Image Shader (это обычный шейдерпак для Minecraft, совместим с Iris, OptiFine и аналогами).
  2. Распакуйте его в папку shaderpacks.
  3. Внутри найдите папку shaders/data/ - если её нет, создайте.
  4. Скопируйте туда папку image_chunks с .glsl-файлами.
  5. Зайдите в игру, выберите этот шейдер в настройках.
  6. В настройках шейдера включите опцию Custom Image (или что-то похожее).

Готово! После компиляции (а она может занять минуту-другую) на экране появится ваша картинка.

Что важно знать

  • Компиляция шейдера действительно долгая - не пугайтесь, это нормально.
  • Картинка должна быть строго 160×160. Если больше или меньше - шейдер выдаст ошибку или ничего не покажет.
  • Шейдер не влияет на производительность в остальном, так как просто накладывает текстуру поверх экрана.

По сути, Image Shader - это скорее утилита, чем графическое улучшение. Но если вам нужно вывести какое-то изображение на экран в Майнкрафте без модов - это самый простой способ. Скачайте шейдер Image Shader и попробуйте сами. Главное - не забудьте подготовить картинку, иначе ничего не выйдет.

Часто задаваемые вопросы

Совместимость

Minecraft: Java Edition

1.21.x1.20.x1.19.x1.18.x1.17.x1.16.x

Платформы

Поддерживаемые окружения

Клиент

Ссылки

Создатели

Детали

Лицензия:
Опубликован:10 месяцев назад
Обновлён:10 месяцев назад
Главная