Можно как-то в определенном OpenGL блоке запретить рендер шейдеров

Версия Minecraft
1.12.2
476
9
39
Нарисовал 2D текстуру в 3D, накинул шейдеры результат - тени отображаются поверх текстуры или выкручивают прозрачность в 0.
Возможно ли это исправить?
Например задать свой шейдер или метод/алгоритм помогающий на опр. участке блокировать обработку шейдеров.
Java:
GlStateManager.pushMatrix();
GuiHelper.drawModalRectWithCustomSizedTexture(size, y / 2f, 0, 0, 256 * 2, 4, 256, 100);
GlStateManager.popMatrix();
Под блоком OpenGL имею ввиду конструкцию из push/popMatrix.
 
7,099
324
1,510
Покажи визуально и опиши, как должно быть(а лучше тоже покажи)
 
476
9
39
Знаешь мод Neat? Хпбар над бошками животных, так вот он с шейдерами при просмотре на небо теряет полоску(она становится прозрачной).
Более того отключение blend/alpha, выставление alpha в 1.0F не помогает.
По сути там прозрачность по умолчанию стоит 70%, а с шейдерами опускается до 10-30%, а если посмотреть так чтобы хпбар животного отображался поверх неба, то прозрачность полностью пропадает.
У меня та же проблема захотел в 3д запилить индикатор... И столкнулся с тем из-за чего отказался от этого мода(несовместим с шейдерами)
 
7,099
324
1,510
Шейдеры и хпбар не твой? Тогда стоит написать автору мода Neat.
Если сам хочешь делать - по идее, когда рисует хпбар, нужно выключить шейдер, если какой-то включен и включить выключенный после отрисовки хпбара(не уверен, что можно получить идентификатор текущего шейдера)
Если часто переключать шейдер - будет хреново сказываться на производительности, но лучше решения не знаю
 
476
9
39
Ну автор мода забил на Optifine. Да и я столкнулся с этой проблемой неожиданной, думал у меня другой механизм рендера, и поэтому всё ок должно быть, но увы
 
476
9
39
Все зависит от шейдер пака. Глянь, что происходит с ником игрока. Полоска нормально рендерится?
Под определённым углом да. Т.е сверху вниз если смотреть на моба, то всё ок всё видно.
Если смотреть снизу вверх то кроме шрифта ничего не видно.
У меня была идея попробовать шейдер накинуть уже свой, который тупо возвращает те цвета и прозрачность, что были изначально. Но как это сделать не понимаю :\
 
Последнее редактирование:
2,505
81
397
Ну очевидно, что проблема в шейдере. Но скорее всего это не просто так, и если ты исправишь этот момент, то сломается что-нибудь другое. Дай ссылку на шейдер пак.
Можешь попробовать накинуть свой шейдер, но это очень такое себе. Скорее всего, ты захочешь переключать шейдер только ради своей полоски. Это плохо. Еще тебе нужно не просто установить нужный цвет в gl_fragColor, а заполнить gbuffer так же, как в шейдер паке. Скорее всего, нужно смотреть шейдер gbuffer_entity.frag. Но мне почему-то кажется, что там нормально возвращается прозрачность. И нужно смотреть какой-то из composit'ов или final. В общем, нужна ссылка на шейдер пак.
 
476
9
39
Последнее редактирование:
Сверху