Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Вопрос Шейдеры на 1.21.10 fabric

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
2 Мар 2023
Сообщения
7
Реакции
0
Только начал вникать в тему читы на майн, хотел бы узнать как работает загрузка шейдеров на версии 1.21.10, сколько смотрел инет, вообще ничего нету, ну либо просто я не нахожу то, что мне нужно. Желательно по подробнее описать или дать линк на статью.
 
Я почитал про рендер 0x3c50, говорят это самое ужасное, что могли придумать
Это пояснение от него просто по новой системе шейдеров, сама либка и вправду хуйня, чтобы понять как шейдеры рендерить можешь глянуть метод рендера дебаг курсора (3д курсора в ф3)
 
Смотри, чтобы зарендерить шейдер, тебе нужно просто создать RenderPipeline и отрисовать его с помощью RenderPass. Самый простой пример доступен в документации Fabric:
Пожалуйста, авторизуйтесь для просмотра ссылки.

(1.21.10, Mojang Mappings)

Там показан пример с рендером бокса в мире с помощью собственного RenderPipeline (обычный POSITION_COLOR), но с выключенной проверкой глубины.


Ты без проблем можешь создать свой RenderPipeline со своим шейдером, используя
RenderPipeline.builder(). Там есть методы withFragmentShader и withVertexShader, где ты просто указываешь путь (ResourceLocation) до своего шейдера.


Если тебе нужно что-то отрендерить в GUI, то лучше всего использовать
PictureInPictureRenderState (или SpecialGuiElementRenderer, если используешь Yarn).
Там аналогично создаёшь RenderPass, прикрепляешь к нему пайплайн, текстуры и униформы (если нужны), и затем рисуешь.


И да, Renderer, про который говорили выше, действительно не очень и использует, на мой взгляд, странные костыли. Пробуй, экспериментируй и у тебя точно что-нибудь зарендерится:da:

UPD: На счет шейдеров:
Они используют std140 и прописываются в "блоках".
Можешь посмотреть как работает майнкрафтовский DynamicUniformStorage к примеру.
Но мне не нравится использовать то, что предоставляет сам Майн. Я предпочитаю прямо перед рендером создавать буфер с униформами и обновлять его напрямую, записывая туда байты.
Вот простенький пример:
Uniform Buffer:
Expand Collapse Copy
    RenderSystem.getDevice().createBuffer(
        { "$name UBO" },
        GpuBuffer.USAGE_UNIFORM,
        data
    )
}
data это ByteBuffer.
 
Последнее редактирование:

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

(1.21.10, Mojang Mappings)

Там показан пример с рендером бокса в мире с помощью собственного RenderPipeline (обычный POSITION_COLOR), но с выключенной проверкой глубины.


Ты без проблем можешь создать свой RenderPipeline со своим шейдером, используя
RenderPipeline.builder(). Там есть методы withFragmentShader и withVertexShader, где ты просто указываешь путь (ResourceLocation) до своего шейдера.


Если тебе нужно что-то отрендерить в GUI, то лучше всего использовать
PictureInPictureRenderState (или SpecialGuiElementRenderer, если используешь Yarn).
Там аналогично создаёшь RenderPass, прикрепляешь к нему пайплайн, текстуры и униформы (если нужны), и затем рисуешь.


И да, Renderer, про который говорили выше, действительно не очень и использует, на мой взгляд, странные костыли. Пробуй, экспериментируй и у тебя точно что-нибудь зарендерится:da:

UPD: На счет шейдеров:
Они используют std140 и прописываются в "блоках".
Можешь посмотреть как работает майнкрафтовский DynamicUniformStorage к примеру.
Но мне не нравится использовать то, что предоставляет сам Майн. Я предпочитаю прямо перед рендером создавать буфер с униформами и обновлять его напрямую, записывая туда байты.
Вот простенький пример:
Uniform Buffer:
Expand Collapse Copy
    RenderSystem.getDevice().createBuffer(
        { "$name UBO" },
        GpuBuffer.USAGE_UNIFORM,
        data
    )
}
data это ByteBuffer.
Очень полезный ответ, спасибо большое, буду пробовать
 
Только начал вникать в тему читы на майн, хотел бы узнать как работает загрузка шейдеров на версии 1.21.10, сколько смотрел инет, вообще ничего нету, ну либо просто я не нахожу то, что мне нужно. Желательно по подробнее описать или дать линк на статью.
ты не шариш про этот как его
вообщем есть такой конвертатор в vs code fork туда пишешь make me shader for java minecraft cheat client 1.21.10 expension 3.3 вооот
дальше там справа снизу выбираеш из списка auto типа что бы автоматически канвертация была и нажимаешь энтер и все шейдеры гатовы
 
Смотри, чтобы зарендерить шейдер, тебе нужно просто создать RenderPipeline и отрисовать его с помощью RenderPass. Самый простой пример доступен в документации Fabric:
Пожалуйста, авторизуйтесь для просмотра ссылки.

(1.21.10, Mojang Mappings)

Там показан пример с рендером бокса в мире с помощью собственного RenderPipeline (обычный POSITION_COLOR), но с выключенной проверкой глубины.


Ты без проблем можешь создать свой RenderPipeline со своим шейдером, используя
RenderPipeline.builder(). Там есть методы withFragmentShader и withVertexShader, где ты просто указываешь путь (ResourceLocation) до своего шейдера.


Если тебе нужно что-то отрендерить в GUI, то лучше всего использовать
PictureInPictureRenderState (или SpecialGuiElementRenderer, если используешь Yarn).
Там аналогично создаёшь RenderPass, прикрепляешь к нему пайплайн, текстуры и униформы (если нужны), и затем рисуешь.


И да, Renderer, про который говорили выше, действительно не очень и использует, на мой взгляд, странные костыли. Пробуй, экспериментируй и у тебя точно что-нибудь зарендерится:da:

UPD: На счет шейдеров:
Они используют std140 и прописываются в "блоках".
Можешь посмотреть как работает майнкрафтовский DynamicUniformStorage к примеру.
Но мне не нравится использовать то, что предоставляет сам Майн. Я предпочитаю прямо перед рендером создавать буфер с униформами и обновлять его напрямую, записывая туда байты.
Вот простенький пример:
Uniform Buffer:
Expand Collapse Copy
    RenderSystem.getDevice().createBuffer(
        { "$name UBO" },
        GpuBuffer.USAGE_UNIFORM,
        data
    )
}
data это ByteBuffer.
По факту, ебейше объяснил, Рыспект
 
Назад
Сверху Снизу