Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Функция, подобная TextureLod (GLSL), но в OpenGL (Vulkan)

Функция, подобная TextureLod (GLSL), но в OpenGL (Vulkan)

MikeNewПостоялецwww13 сен. 20186:24#0
Доброго времени суток.

Подскажите, есть в OpenGL (а лучше сразу в Vulkan) функция, которая работает так же как TextureLod (или примерно так же) из GLSL?
Мне это нужно чтобы считать нормали к плоскостям в С++, используя данные полученные из карты высот. Дело в том что в самплере текстуры карты высот у меня есть линейная фильтрация (чтобы ландшафт был гладкий), по это причине в коде на C++ я не могу просто прочитать данные из карты высот напрямую, поскольку высоты получаются неправильные (NEAREST, а не LINEAR, без линейной интерполяции).
Потому мне и нужен эффект учета интерполяции который дает TextureLod из GLSL, но в коде на C++.
Есть в OpenGl или Vulkan такие функции или придется писать кучу кода, который будет интерполяцию вручную считать?

Правка: 13 сен. 2018 6:24

SuslikМодераторwww13 сен. 20186:54#1
MikeNew
> Есть в OpenGl или Vulkan такие функции или придется писать кучу кода, который
> будет интерполяцию вручную считать?
в gapi реализуются те функции, которые позволяют общаться процессору с видеокартой. то, что ты хочешь, выполняется на одном только процессоре и ни opengl, ни vulkan для этого не нужны, нужно почитать википедию, как реализуется трилинейная фильтрация. ты пытаешься приделать педаль газа к велосипеду.

Правка: 13 сен. 2018 6:58

MikeNewПостоялецwww13 сен. 20187:21#2
Suslik
> в gapi реализуются те функции, которые позволяют общаться процессору с
> видеокартой. то, что ты хочешь, выполняется на одном только процессоре и ни
> opengl, ни vulkan для этого не нужны, нужно почитать википедию, как реализуется
> трилинейная фильтрация. ты пытаешься приделать педаль газа к велосипеду.
Спасибо, похоже то что нужно.
В моем случае, полагаю, билинейной хватит, пойду гуглить реализацию.
Я не просто приделываю педали газа к велосипедам, я велосипеды тут регулярно изобретаю. :)
SuslikМодераторwww13 сен. 20187:24#3
MikeNew
так, к слову, у ландшафта нормали лучше посчитать конечно-разностно, используя пятиточечный шаблон, а потом между ними интерполировать, а не считать нормали по интерполированной карте высот. тогда изломов не будет.
MikeNewПостоялецwww13 сен. 20188:33#4
Suslik
> так, к слову, у ландшафта нормали лучше посчитать конечно-разностно, используя
> пятиточечный шаблон, а потом между ними интерполировать, а не считать нормали
> по интерполированной карте высот. тогда изломов не будет.
Случайно не дашь ссылку про это почитать?
SuslikМодераторwww13 сен. 20188:38#5
MikeNew
не знаю, где про это пишут, это просто из опыта и логики. про пятиточечный шаблон расчёта градиента (переходит в трёхточечный в 2д) можно почитать на википедии: https://en.wikipedia.org/wiki/Finite_difference (формула central difference)

Правка: 13 сен. 2018 8:39

MikeNewПостоялецwww13 сен. 20188:58#6
Suslik
> так, к слову, у ландшафта нормали лучше посчитать конечно-разностно, используя
> пятиточечный шаблон, а потом между ними интерполировать, а не считать нормали
> по интерполированной карте высот. тогда изломов не будет
У меня, кстати, изломов и так нет, поскольку для освещения нормали берутся из карты нормалей, а считаю я отдельные нормали плоскостей чтобы столкновения с ландшафтом определять. Опять велосипед изобретаю, хз правильно ли вообще.

http://i100.fastpic.ru/big/2018/0913/20/_7706ad5c3dda3df338d6a9db74dbc620.png

Правка: 13 сен. 2018 8:58

/ Форум / Программирование игр / Графика

2001—2018 © GameDev.ru — Разработка игр