Дублирование облаков (1.7.10)

4,045
63
645
Так! А вот теперь прошу откликнуться знатоков рендера, эвентов и всего такого )))
Нашёл такую штуку как DrawBlockHighlightEvent!
Если рисовать облака в нём, то полупрозрачные блоки перед облаками становятся видны!!! :D
Однако, сразу за облаками они пропадают )))

Это, конечно, существенно лучше, чем было раньше, однако, хотелось бы решить эту задачку до конца.
Может быть у кого-нибудь появятся идеи?

Судя по описанию, эвент срабатывает, когда блок под мышкой... освещён? О_о
Что бы это ни значило, НО! выходит, что можно нормально отрисовать облака... Вот найти бы только нужный момент.

Никто не знает евент, который срабатывает при отрисовке пассов блока?
 
608
5
15
Наверное это из-за порядка отрисовки. :wassat:
 
4,045
63
645
Так и я о том!
Стёклышко и, видимо, вода рисуются в пассе №1... Соответственно, мне нужно как-то отловить момент между 0 и 1 :sideways:
Или я уже это сделал... Хм... Или... Или сами облака нужно рисовать в этом же пассе...
[merge_posts_bbcode]Добавлено: 25.06.2016 15:13:50[/merge_posts_bbcode]

А вообще, как всё это работает?
Разные пассы рисуются в разных фреймбуферах, а потом складываются?
 
608
5
15
renderPassword*
Это переменная, которая говорит как рендерить блок :D
 
1,137
5
3
Легче было разобраться с шейдерами, где туман - постэффект
 
4,045
63
645
Кстати, DrawBlockHighlightEvent срабатывает при отрисовке выделения блока ))) Ибо оно за облаком тоже не видно.
[merge_posts_bbcode]Добавлено: 25.06.2016 15:27:28[/merge_posts_bbcode]

Легко сказать... Не даются мне шейдеры...
 
164
1
4
Liahim написал(а):
Итак! Описываю наблюдения.
Во-первых, с исчезновением блоков, видимо, пока придётся смириться (((
Если никто не подскажет какой-нибудь костыль...
Во-вторых, удалось выяснить принцип... или поведение рендера облаков (читай правильно: костыль разработчиков), а именно:
Оказалось, что всё зависит от высоты :D Кто бы мог подумать?
В общем, чтобы блоки стекла снизу смотрелись нормально, разрабы установили границу в 128 блоков (то есть высота облаков). Ниже этой границы облака рендерятся без полупрозрачности! Каким-то макаром их цвет смешивается с цветом неба, но блоков над ними в этот момент не видно.
А вот если подняться выше этой границы, тут-то и появляются все косячки... Через облака же нужно смотреть на землю... и они становятся полупрозрачными... И в этот момент даже ванильные облака перекрывают собой блоки...
Где изменить этот уровень - не знаю... Может, кто подскажет?
Хотя, это мне не поможет, ибо альфа мне нужна по любому.


Как-то так...
В общем, печаль, печаль, слеза...
Этот уровень (вроде) в EntityRenderer в renderWorld:
Код:
            if (entitylivingbase.posY < 128.0D)
            {
                this.renderCloudsCheck(renderglobal, p_78471_1_);
            }
            ...
            if (entitylivingbase.posY >= 128.0D)
            {
                this.mc.mcProfiler.endStartSection("aboveClouds");
                this.renderCloudsCheck(renderglobal, p_78471_1_);
            }
 
4,045
63
645
wilah, в качестве затравки, ты вот мне можешь показать рабочий код в шейдере, с помощью которого можно было бы определить высоту точки в мире?Я как не пытался, у меня не выходит... По крайней мере на основе атрибута Position.
Даже тупо глубину картинки выяснить не могу.
[merge_posts_bbcode]Добавлено: 25.06.2016 15:39:12[/merge_posts_bbcode]

О! Спасибо nikita488 )
 
1,239
2
24
Равен сделал либу с божественным кодом и простой реализацией,где уже даны на блюдичке VBO , FBO и куча всего
 
1,137
5
3
Нашёл алгоритм. Как вылечусь, попробую сделать туман
 
471
5
При виде слова "облака" в названии темы, в голову сразу стукнула мысль об облачных хранилищах, а не облаках в майнкрафте :/
 
667
7
2
AlexSocol написал(а):
Drovosek написал(а):
При виде слова "облака" в названии темы, в голову сразу стукнула мысль об облачных хранилищах, а не облаках в майнкрафте :/
И к чему это?
Возможно он про "бэкапы" на облако. Например Dropbox, google drive или из десятки OneDrive.
[merge_posts_bbcode]Добавлено: 26.06.2016 04:20:10[/merge_posts_bbcode]

Хотя есть какой то мод для локальных "бэкапов" локального мира.
 
1,976
68
220
virysD написал(а):
AlexSocol написал(а):
Drovosek написал(а):
При виде слова "облака" в названии темы, в голову сразу стукнула мысль об облачных хранилищах, а не облаках в майнкрафте :/
И к чему это?
Возможно он про "бэкапы" на облако. Например Dropbox, google drive или из десятки OneDrive.
[merge_posts_bbcode]Добавлено: 26.06.2016 04:20:10[/merge_posts_bbcode]

Хотя есть какой то мод для локальных "бэкапов" локального мира.
Нет, просто это вообще оффтоп. Тут вопросы задают и дают ответы, а это к теме никак не относится. На счёт мода - это WorldState Checkpoint
 
4,045
63
645
nikita488 написал(а):
Liahim написал(а):
Итак! Описываю наблюдения.
Во-первых, с исчезновением блоков, видимо, пока придётся смириться (((
Если никто не подскажет какой-нибудь костыль...
Во-вторых, удалось выяснить принцип... или поведение рендера облаков (читай правильно: костыль разработчиков), а именно:
Оказалось, что всё зависит от высоты :D Кто бы мог подумать?
В общем, чтобы блоки стекла снизу смотрелись нормально, разрабы установили границу в 128 блоков (то есть высота облаков). Ниже этой границы облака рендерятся без полупрозрачности! Каким-то макаром их цвет смешивается с цветом неба, но блоков над ними в этот момент не видно.
А вот если подняться выше этой границы, тут-то и появляются все косячки... Через облака же нужно смотреть на землю... и они становятся полупрозрачными... И в этот момент даже ванильные облака перекрывают собой блоки...
Где изменить этот уровень - не знаю... Может, кто подскажет?
Хотя, это мне не поможет, ибо альфа мне нужна по любому.


Как-то так...
В общем, печаль, печаль, слеза...
Этот уровень (вроде) в EntityRenderer в renderWorld:
Код:
            if (entitylivingbase.posY < 128.0D)
            {
                this.renderCloudsCheck(renderglobal, p_78471_1_);
            }
            ...
            if (entitylivingbase.posY >= 128.0D)
            {
                this.mc.mcProfiler.endStartSection("aboveClouds");
                this.renderCloudsCheck(renderglobal, p_78471_1_);
            }
Ещё немного по поводу облаков.
Как я описывал выше, есть определённая граница на высоте 128 блоков, относительно которой меняется прорисовка облаков. Ниже неё облака рисуются НЕпрозрачными, а выше - приобретают альфу.
Это условие, как подсказал nikita488, прописано в EntityRenderer.
В моём измерении облака находятся значительно выше и с прозрачными объектами возникает проблема, которую я в этой теме и пытаюсь решить.
Вопрос: как можно изменить данную высоту?

В голову приходят три варианта (прошу дать совет, какой из них выбрать):
1 - Заменить EntityRenderer на свой и в нём уже прописать нужные параметры (в этом случае даже не знаю, как всё это может отразиться на игре и какие вылезут глюки).
2 - Отрисовать облака самому. Не через renderClouds, а просто в каком-либо эвенте (в этом случае все глюки будут касаться только моих облаков и ничего больше).
3 - Каким-либо иным способом поменять это условие на нужное (прошу подсказать, как это можно сделать).

Спасибо за совет )
 
4,045
63
645
Народ, как нужно настроить ГЛ11, чтобы отрисовать не полупрозрачные, а прозрачные объекты... То есть, чтобы прозрачных пикселей вообще не было видно (даже в буфере глубины), а непрозрачные были видны.
 
Сверху