Кой е най-лесният начин да придадете на 2D текстура в OpenGL (lwjgl) някакъв вид "дебелина". Разбира се, мога да получа границата на текстурата по някакъв начин и да добавя квадратчета, ориентирани от нормалата на квадрата, върху който е начертана текстурата, в цвета на съседния текстурен пиксел. Но трябва да има по-лесен начин да го направите. Minecraft също използва lwigl и има (нови) 3D елементи, които се въртят надолу по земята и не причиняват толкова голям проблем с производителността, както ако бяха начертани от десетки многоъгълници. Също така, когато държите предмет в ръката си, има този вид „разтегната“ текстура в дълбочина, която работи и с текстури с висока разделителна способност. Някой знае ли как се прави това?
Дебелина на OpenGL 2D текстури
comment
Единственият начин, по който една текстура може да има видима дебелина, за който знам, е картографиране на неравности (и дори това е само видима дебелина, тя се разпада, когато се гледа под екстремни ъгли). За да се създаде истинска дебелина, трябва да има ефект на генериране на геометрия.
- person Durandal   schedule 03.09.2014
comment
Да, геометричният шейдър може да се използва доста добре тук.
- person Iggy   schedule 03.09.2014
Отговори (1)
2D текстурата винаги е безкрайно тънка. Ако искате действителна дебелина (когато гледате ръба върху нея), имате нужда от геометрия. В Minecraft нещата изглеждат блокирани, защото са моделирани по този начин.
Ако погледнете под някакъв ъгъл и пренебрегнете краищата, можете да използвате картографиране на паралакса, за да „фалшифицирате“ известна дълбочина в текстурата. Или можете да използвате карта на дълбочината и да използвате комбинация от теселационни шейдъри и вертексни шейдъри, за да приложите карта на изместване, която генерира геометрия от текстурата.
person
datenwolf
schedule
04.09.2014