Я пытался реализовать карту высот в своем шейдере ландшафта, но ландшафт остается плоским. Текстура правильно загружена в вершинный шейдер, и я пытаюсь использовать значения оттенков серого текстуры на основе uvs сетки для регулировки высоты вершины:
//DIFFUSE VERTEX SHADER
#version 330
uniform mat4 projectionMatrix;
uniform mat4 viewMatrix;
uniform mat4 modelMatrix;
in vec3 vertex;
in vec3 normal;
in vec2 uv;
uniform sampler2D heightmap;
out vec2 texCoord;
void main( void ){
vec3 _vertex = vertex;
_vertex.y = texture(heightmap, uv).r * 2.f;
gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(_vertex, 1.f);
texCoord = uv;
}
Фрагмент: (splatmap работает, не обращайте на это внимания)
uniform sampler2D splatmap;
uniform sampler2D diffuse1;
uniform sampler2D diffuse2;
uniform sampler2D diffuse3;
uniform sampler2D diffuse4;
in vec2 texCoord;
out vec4 fragment_color;
void main( void ) {
///Loading the splatmap and the diffuse textures
vec4 splatTexture = texture2D(splatmap, texCoord);
vec4 diffuseTexture1 = texture2D(diffuse1, texCoord);
vec4 diffuseTexture2 = texture2D(diffuse2, texCoord);
vec4 diffuseTexture3 = texture2D(diffuse3, texCoord);
vec4 diffuseTexture4 = texture2D(diffuse4, texCoord);
//Interpolate between the different textures using the splatmap's rgb values (works)
diffuseTexture1 *= splatTexture.r;
diffuseTexture2 = mix (diffuseTexture1, diffuseTexture2, splatTexture.g);
diffuseTexture3 = mix (diffuseTexture2,diffuseTexture3, splatTexture.b);
vec4 outcolor = mix (diffuseTexture3, diffuseTexture4, splatTexture.a);
fragment_color = outcolor;
}
Дополнительная информация: все текстуры загружаются в мой материал ландшафта и передаются шейдеру (работает правильно):
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, heightMap->getId());
glUniform1i (_shader->getUniformLocation("heightMap"),0);
...
Плоскостная сетка uvs отображается следующим образом:
(0,1) (1,1)
(0,0) (1,0)
Думаю, я делаю что-то ужасно неправильно, но не могу понять, что именно. Любая помощь приветствуется!
_vertex
? Вы устанавливаете_vertex.y
, но после этого никогда не используете его снова. - person Mukesh Ingham   schedule 23.01.2017gl_Position
. - person Mukesh Ingham   schedule 23.01.2017