Рендер прозрачной партикли

Версия Minecraft
1.12.2
87
1
2
У моей кастомной партикли есть невидимые места, но получается так, что вода и другие партикли которые находятся за ней не рендерятся. Пытался вырубать glDepth, но тогда оно реднерится даже за стенами. В общем было может у кого, есть способы чинитЬ?
1550435630752.png
 
Решение
Если по-простому, то никак.

Поясню.
Майн сначала рендерит всю непрозрачную геометрию, затем частицы, затем дождь/снег, а затем полупрозрачную геометрию. Получается, что вода рендерится поверх всего. Майн 1.7.10 отключал запись в буфер глубины...
87
1
2
@Agravaine а можно как то поподробнее узнать как, что или где? Может есть уже на форуме что то подобное. Я просто не совсем пока шарю
 
2,992
191
577
@Hesperus_rus А при чем тут вообще 1.13 и тем более фордж?
В версии у него вроде бы 1.12.
 
590
25
107
Java:
GL11.glPushMatrix();
GL11.glEnable(GL_DEPTH_TEST);


//для прозрачности наде ещё включить BLEND
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);


GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glPopMatrix();
[50% OpenGl] GL_DEPTH_TEST просвечивает воду
 
87
1
2
@ZZZubec в таком случае все другие полупрозрачные блоки и партикли в игре становятся видимыми сквозь партиклю. Пытался поиграть с Depth_Test, но возвращаюсь тогда все равно к начальной проблеме 1550506969426.png
 
590
25
107
очень напоминает огонь при поджигании игрока, вы смотрели ванильный эффект поджигания?
И хотелось бы ещё выяснить в каком именно месте вы использовали код (это в хуке, это в OnRenderOverlay, ещё где...)
 
2,491
77
372
Если по-простому, то никак.

Поясню.
Майн сначала рендерит всю непрозрачную геометрию, затем частицы, затем дождь/снег, а затем полупрозрачную геометрию. Получается, что вода рендерится поверх всего. Майн 1.7.10 отключал запись в буфер глубины для частиц и погоды. Из-за этого вода рендерилась поверх.
В 1.12.2 майн не отключает запись в буфер глубины для частиц, хотя включен альфа блендинг. Поэтому вода не рендерится поверх партиклов. Но как только начинаешь использовать полупрозрачную текстуру, то получается эффект, который как раз на твоем первом скрине. Но майн не использует полупрозрачные текстуры для частиц и не спавнит большое количество частиц почти на одном уровне глубины, поэтому это живет нормально. Но вода все еще рендерится поверх дождя/снега.

Решения.
Всунуть рендер партиклов после воды без записи в буфер глубины. Но тут сразу возникает проблема, что партиклы не будут видны сквозь воду. Видимо поэтому от этого отказались. Хотя на самом деле могли бы добавить еще один слой после воды.
Или реализовать какой-нибудь order-independent transparency алгоритм. Но тут ты сломаешь и оптифайн и, возможно, другие моды. Ну и вообще это high level.
 
Решение
87
1
2
@Dahaka я вот задавался вопросом не чинит ли эту проблему оптифайн, но пока поставить не смог еще. Есть ли возможно какое нибудь решение для своих кастомных партиклей? Что бы забить на воду и как минимум между кастомными не было конфликтов, или это уже конечная?
 
2,491
77
372
Я ведь написал решения.
Как реализовать их в рамках мода - без понятия. Может хуками как-нибудь прикрутить. Я не шарю в майне.
Попробуй поглядеть в других модах с полупрозрачными частицами. Если найдешь что-нибудь, то скинь сюда. Интересно посмотреть решения.
 
590
25
107
По поводу прозрачности я знаю один момент. Даже если картинка не имеет прозрачность, можно указать glColor(r,g,b,A);
glColor(1.0f, 1.0f , 1.0f, 1.0f); - это белый цвет, без изменения оригинальной текстуры
A - это альфа, картинка даже если не прозрачная разбивается на так называемую палитру, и если уменьшать альфу у совершенно не прозрачной текстуры, он будет убирать один слой за другим. Попробуй попробовать разные варианты типо 0.9f, или 0.45f. И ты заметишь о чём я говорю. Не включай BLEND, когда будешь тестировать.
 
87
1
2
Ну в общем с водой видимо никак не получится починить. Конфликт между своими кастомными все же удалось устранить. в методе getFXLayer() оказывается можно указывать слой, на котором рендерится партикля... и поставив значение выше, текстура перестала ломать все текстуры, которые за ней.
1550582332162.png
Ну а с водой наверное остается только в glAlphaFunc только отрезать ненужное дабы не резало сильно воду. Всем спасибо за ответы, тему закрываю
 
149
2
6
Попробуй обратиться к разрабам которые специализируются на этом, может они тебе расскажут что и как?
 
Сверху