Дебелина на OpenGL 2D текстури

Кой е най-лесният начин да придадете на 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