Я делаю некоторые вещи OpenGL в Java (lwjgl) для проекта, часть которого включает в себя импорт 3d моделей в формате OBJ. Все выглядит ok, пока я не попытаюсь вытеснить вершины, тогда модели разбиваются, вы можете видеть их сквозь них. Вот Сюзанна из блендера, УФ нанесена на карту с полностью черной текстурой (для видимости). В осколочной шейдера я добавляю немного белого цвета с фрагментом в зависимости от угла фрагментов между его нормальным и вектором вверх в мире:Ячейка смещения вершины смещения
До сих пор так хорошо. Но когда я применяю небольшое смещение Y-компонента к тем же вершинам, я ожидаю увидеть растяжение лиц. Вместо этого происходит:
Vertex шейдеров:
#version 150
in vec3 position;
in vec2 texCoords;
in vec3 normal;
void main()
{
vertPosModel = position;
cosTheta = dot(vec3(0.0, 1.0, 0.0), normal);
if(cosTheta > 0.0 && cosTheta < 1.0)
vertPosModel += vec3(0.0, 0.15, 0.0);
gl_Position = transform * vec4(vertPosModel, 1.0);
}
Фрагмент шейдеры:
#version 150
uniform sampler2D objTexture;
in vec2 texcoordOut;
in float cosTheta;
out vec4 fragColor;
void main()
{
fragColor = vec4(texture(objTexture, texcoordOut.st).rgb, 1.0) + vec4(cosTheta);
}
Пожалуйста, прежде чем просто пропустить вниз, расскажите, как я могу улучшить свой вопрос. Не будь трусом. – peanutops