Толщина 2D-текстур OpenGL

Как проще всего придать 2D-текстуре в OpenGL (lwjgl) какую-то «Толщину». Конечно, я мог бы каким-то образом получить границу текстуры и добавить квадроциклы, ориентированные по нормали квадроцикла, на котором рисуется текстура, в цвет соседнего пикселя текстуры. Но должен быть более простой способ сделать это. Minecraft также использует lwigl, и есть (новые) 3D-элементы, которые вращаются по земле и не вызывают такой большой проблемы с производительностью, как если бы они были нарисованы из десятков полигонов. Кроме того, когда вы держите предмет в руке, появляется своего рода «растянутая» Текстура по глубине, которая также работает с текстурами высокого разрешения. Кто-нибудь знает, как это делается?


person ITDE    schedule 03.09.2014    source источник
comment
Единственный известный мне способ, которым текстура может иметь кажущуюся толщину, — это рельефное наложение (и даже это только кажущаяся толщина, она разрушается при просмотре под крайними углами). Чтобы создать реальную толщину, должен быть какой-то эффект генерации геометрии.   -  person Durandal    schedule 03.09.2014
comment
Да, геометрический шейдер можно было бы использовать здесь очень хорошо.   -  person Iggy    schedule 03.09.2014


Ответы (1)


2D-текстура всегда бесконечно тонкая. Если вам нужна реальная толщина (когда вы смотрите на нее с кромки), вам нужна геометрия. В Minecraft вещи выглядят блочными, потому что они были смоделированы таким образом.

Если вы посмотрите под некоторым углом и проигнорируете края, вы можете использовать наложение параллакса, чтобы «подделать» некоторую глубину текстуры. Или вы можете использовать карту глубины и использовать комбинацию шейдеров тесселяции и вершинных шейдеров для реализации карты смещения, которая генерирует геометрию из текстуры.

person datenwolf    schedule 04.09.2014