«Многослойная» условная/относительная прозрачность OpenGL в трехмерном пространстве (Java)JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 «Многослойная» условная/относительная прозрачность OpenGL в трехмерном пространстве (Java)

Сообщение Anonymous »

Я пытаюсь изучить OpenGL как хобби и с этой целью пытаюсь создать мод для игры Minecraft (воксельная игра), который добавляет блоки, которые визуализируются уникальным образом.< /p>
В игре есть как непрозрачные, так и полупрозрачные блоки, отрисованные с помощью четырехугольников. Что касается правильной визуализации прозрачности, игра сначала отображает непрозрачные блоки, а затем отображает полупрозрачные блоки, отсортированные по расстоянию. Таким образом, они классифицируются игрой отдельно и визуализируются движком рендеринга отдельно как разные «RenderLayers».
Для целей моего мода я создал отдельный слой рендеринга, который , когда для рендеринга настроены непрозрачные блоки, такие как камень, эти блоки станут полупрозрачными. Более того, и без того полупрозрачные блоки станут более прозрачными мультипликативным способом. Это было сделано с помощью фрагментного шейдера, примененного ко всему слою.
Итак, блоки, которые обычно визуализируются следующим образом:
Изображение

рендеринг, подобный этому, при классификации на новый слой рендеринга.
Изображение

Как показано на На картинке с применением шейдера все блоки позади теперь полупрозрачных блоков стали видимыми. Однако это не то поведение, которого я желаю. Вместо этого я бы хотел, чтобы изначально непрозрачные блоки закрывали другие блоки в том же слое рендеринга, как если бы они изначально не были полупрозрачными, хотя блоки из других «нормальных» слоев рендеринга можно увидеть. Более того, изначально полупрозрачные блоки должны по-прежнему позволять видеть блоки с одинаковыми слоями рендеринга позади.
По сути, я хочу воссоздать эффект, который можно было бы получить, если бы они объединили два изображения, сделанные с помощью разные слои независимо друг от друга (один из которых имеет меньшую непрозрачность).
Например, в описанной выше ситуации это будет выглядеть так (обычные слои):
Изображение

накладывается на это изображение (специальный слой ), с дополнительной прозрачностью.
Изображение

чтобы сделать это:
Изображение

Как видите, хотя камень за витражом сохраняет оттенок, второй каменный блок за самым средним камнем не виден на окончательном изображении. Это было сделано вручную путем объединения фотографий в фотошопе, но именно такого «эффекта» я хочу от своего мода.
Как это возможно с OpenGL?
Пояснение:
В приведенных выше примерах изображений
  • каменный блок отнесен к «специальному слою». "
  • синий витражный блок также относится к "специальному слою"
  • окружающие травяные блоки и желтый бетонный блок являются частью «нормальные» слои


Подробнее здесь: https://stackoverflow.com/questions/659 ... space-java
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»