Создание шейдера для ПНВ

Версия Minecraft
1.12.2
API
Forge
51
8
5
Мне нужно сделать прибор ночного видения, я знаю, что это можно сделать с помощью шейдеров, но у меня совсем не получается это сделать, то экран разделяется на две части, то изображение с тем, что видит игрок летает в виде отдельного окна. Объясните, пожалуйста, как работают шейдеры, ну или хороший гайд скиньте
 
Решение
Ты должен отрисовать квад на экран (а лучше треугольник, описанный вокруг экрана), затем рендерить на этот квад свое изображение рендера мира (в эвенте рендера мира это делается), а затем на это изображение с помощью загрузчика накладывать шейдеры, которые будут изменять цвет пикселей на экране нужным способом. Я делал такое на 1.20.1 - только у меня это был тепловизор.
https://github.com/MaxLegend/Drone/blob/master/src/main/java/ru/tesmio/drone/shader/ShaderRenderer.javaРежим ПНВ у меня там тоже есть, это greenchrome и monochrome. Там хитрые шейдеры которые не просто инвертируют цвета, а вытягивают среднюю темноту. Ну можешь поглядеть тоже.

Вот как выглядит тепловизор. Ну тут еще маска есть ко всему прочему. В простом виде где...
Ты должен отрисовать квад на экран (а лучше треугольник, описанный вокруг экрана), затем рендерить на этот квад свое изображение рендера мира (в эвенте рендера мира это делается), а затем на это изображение с помощью загрузчика накладывать шейдеры, которые будут изменять цвет пикселей на экране нужным способом. Я делал такое на 1.20.1 - только у меня это был тепловизор.
https://github.com/MaxLegend/Drone/blob/master/src/main/java/ru/tesmio/drone/shader/ShaderRenderer.javaРежим ПНВ у меня там тоже есть, это greenchrome и monochrome. Там хитрые шейдеры которые не просто инвертируют цвета, а вытягивают среднюю темноту. Ну можешь поглядеть тоже.

Вот как выглядит тепловизор. Ну тут еще маска есть ко всему прочему. В простом виде где обрабатывается чисто изображение квада оно в трех остальных режимах

image.png
 
@Maxik, прикольно сделал, молодец. Единственное по коду момент, ты постоянно переключаешь шейдер, что не есть хорошо. Посмотри вариант с RenderChain или как-то так он называется. Через него ты можешь контролировать фреймбуффер игры и добавлять в нужные стейджы шейдеры. Примерно так работают шейдеры для крипера, паука и т.п.(если я не ошибаюсь). +Можешь добавить рябь, как у старых телевизоров, но не слишком частую

Посмотрел код шейдеров, ещё как доработку, ты можешь переиспользовать vertex шейдер, потому что он у тебя одинаковый для всех режимов, что тоже будет немного плюсом к оптимизации рендера, либо возьми майновский
 
Ты должен отрисовать квад на экран (а лучше треугольник, описанный вокруг экрана), затем рендерить на этот квад свое изображение рендера мира (в эвенте рендера мира это делается), а затем на это изображение с помощью загрузчика накладывать шейдеры, которые будут изменять цвет пикселей на экране нужным способом. Я делал такое на 1.20.1 - только у меня это был тепловизор.
https://github.com/MaxLegend/Drone/blob/master/src/main/java/ru/tesmio/drone/shader/ShaderRenderer.javaРежим ПНВ у меня там тоже есть, это greenchrome и monochrome. Там хитрые шейдеры которые не просто инвертируют цвета, а вытягивают среднюю темноту. Ну можешь поглядеть тоже.

Вот как выглядит тепловизор. Ну тут еще маска есть ко всему прочему. В простом виде где обрабатывается чисто изображение квада оно в трех остальных режимах

Ух ты, у вас неплохо получилось сделать тепловизор, только я бы добавил шум перлина для помех. Возможно подобное в 1.12.2 реализовать?
 
Ты должен отрисовать квад на экран (а лучше треугольник, описанный вокруг экрана), затем рендерить на этот квад свое изображение рендера мира (в эвенте рендера мира это делается), а затем на это изображение с помощью загрузчика накладывать шейдеры, которые будут изменять цвет пикселей на экране нужным способом. Я делал такое на 1.20.1 - только у меня это был тепловизор.
https://github.com/MaxLegend/Drone/blob/master/src/main/java/ru/tesmio/drone/shader/ShaderRenderer.javaРежим ПНВ у меня там тоже есть, это greenchrome и monochrome. Там хитрые шейдеры которые не просто инвертируют цвета, а вытягивают среднюю темноту. Ну можешь поглядеть тоже.

Вот как выглядит тепловизор. Ну тут еще маска есть ко всему прочему. В простом виде где обрабатывается чисто изображение квада оно в трех остальных режимах

Спасибо за помощь, вот что по итогу получилось
 

Вложения

  • IMG_20250716_101938_058.png
    IMG_20250716_101938_058.png
    1.3 MB · Просмотры: 31
  • IMG_20250716_101929_895.png
    IMG_20250716_101929_895.png
    1 MB · Просмотры: 28
  • IMG_20250716_101928_094.png
    IMG_20250716_101928_094.png
    789.7 KB · Просмотры: 29
  • IMG_20250716_101412_347.png
    IMG_20250716_101412_347.png
    1.6 MB · Просмотры: 29
  • IMG_20250716_101407_139.png
    IMG_20250716_101407_139.png
    1.6 MB · Просмотры: 31
такое еще и в vics modern warfare реализовали точно так же
Я буквально взял шейдер из этого мода, оптимизировал его (убрал ветвление), структурировал красиво и использовал в своём моде
 
Назад
Сверху