Я создаю 2D-шум перлина, и я делаю это рельеф. Но у меня проблема с этим. Это слишком постепенное.Как я могу сделать плавность моей карты роста? (Perlin noise, openGL)
Я попытался x
, z
координаты разделены или умножаются, но не работает. Как я могу решить эту проблему без tessellation shader?
EDIT:
фрагмент кода шейдера:
#version 430
in vec3 pos;
in vec2 text;
in vec3 norm;
layout(binding=3) uniform sampler2D texture_1;
layout(binding=4) uniform sampler2D texture_2;
layout(binding=5) uniform sampler2D texture_3;
vec3 lightPosition = vec3(-200, 700, 50);
vec3 lightAmbient = vec3(0,0,0);
vec3 lightDiffuse = vec3(1,1,1);
vec3 lightSpecular = vec3(1,1,1);
out vec4 fragColor;
vec4 theColor;
void main()
{
vec3 lightVector = normalize(lightPosition) - normalize(pos);
float cosTheta = clamp(dot(normalize(lightVector), normalize(norm)), 0.5, 1.0);
if(pos.y <= 120){
fragColor = texture2D(texture_2, text*0.05) * cosTheta;
}
if(pos.y > 120 && pos.y < 150){
fragColor = (texture2D(texture_2, text*0.05) * (1 - (pos.y-120)/30) + texture2D(texture_3, text*0.05) * ((pos.y-120)/30))*cosTheta;
}
if(pos.y >= 150)
{
fragColor = texture2D(texture_3, text*0.05) * cosTheta;
}
}
вершина код шейдера:
#version 430
in layout(location=0) vec3 position;
in layout(location=1) vec2 textCoord;
in layout(location=2) vec3 normal;
out vec3 pos;
out vec2 text;
out vec3 norm;
uniform mat4 transformation;
void main()
{
gl_Position = transformation * vec4(position, 1.0);
norm = normal;
pos = position;
text = position.xz;
}
Без кода, чтобы продолжить, сделать какие-либо содержательные предложения нелегко. Посмотрите на отдельные части, которые составляют ваш последний цвет. Не зная, как выглядят ваши шейдеры ... нет, вот и все. Я не могу опубликовать ничего более конкретного. Посмотрите на отдельные элементы, составляющие ваш последний цвет, и выясните, какие из них не работают совершенно правильно. – Aumnayan
Вы можете сделать проход, чтобы изменить точки так, чтобы они были средними по точкам вокруг него (возможно, с некоторой изменчивостью) – vu1p3n0x
Aumnayan - отредактировать сообщение с fragman и vertex shader –