2
각 조각의 높이를 기준으로 텍스처 사이의 부드러운 전환을 포함하는 여러 텍스처가 포함 된 지형을 렌더링하고 있습니다. 가 여기 내 조각 쉐이더입니다 :mix()와 함께 사용하면 Opengl 텍스처가 깜빡입니다.
#version 430
uniform sampler2D tex[3];
uniform float renderHeight;
in vec3 fsVertex;
in vec2 fsTexCoords;
out vec4 color;
void main()
{
float height = fsVertex.y/renderHeight;
const float range1 = 0.2;
const float range2 = 0.35;
const float range3 = 0.7;
const float range4 = 0.85;
if(height < range1)
color = texture(tex[0], fsTexCoords);
else if(height < range2) //smooth transition
color = mix(texture(tex[0], fsTexCoords), texture(tex[1], fsTexCoords), (height - range1)/(range2 - range1));
else if(height < range3)
color = texture(tex[1], fsTexCoords);
else if(height < range4) //smooth transition
color = mix(texture(tex[1], fsTexCoords), texture(tex[2], fsTexCoords), (height - range3)/(range4 - range3));
else
color = texture(tex[2], fsTexCoords);
}
'높이'항상 범위 [0,1]에있을 것입니다.
다음은 이상한 깜박임입니다. 내가 볼 수있는 것에서는 mix()
을 사용할 때 '높이'가 rangeN 변수 중 하나와 같을 때 발생합니다.
어떤이의 원인이 될 수있다? 나는 또한 일부 계산에서 '편향 (bias)'변수를 더하거나 뺀 것으로 놀았지만 아무런 운이 없었습니다.
나는 두 가지 유물이 균일 한 높이에서 일어난다는 것을 확신합니다. – Pilpel
그래, 네 말이 맞아. 나는 제대로 보려고 이미지 에디터에서 그 점들을 직접 연결해야만했다. 육안으로 볼 때 광학 환상이었다. 높이를 더 선명하게 만드는 이미지를 추가했습니다. –
고맙습니다. 이 원인이 무엇인지 상상할 수 있습니까? 나는 아직도 그것을 이해할 수 없다 ... – Pilpel