블렌드 맵이나 텍스처 스플래 팅에 대해서는 신경 쓰지 않습니다 (UV 매핑과 무관합니다). 매핑으로 인한 왜곡을 최소화하도록 특별히 요청했기 때문에이 GPU Gems 기사의 섹션 1.5를 참조하십시오.
https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch01.html
이것은 절차 적으로 생성 된 지형에서도 작동 할 수 있습니다. 이 개념은 "triplanar texturing"이라고도 합니다.
나중에 편집 : 매핑에 사전 계산 된 UV를 사용하지 않고 자체 지형 렌더러에서이 기술을 테스트했습니다. 3 개의 다른 투영 평면 (XY, YZ 및 ZX)에 대해 3 세트의 UV를 계산하기 만하면됩니다. 간단한 버텍스 및 프래그먼트 셰이더 스 니펫을 사용하면됩니다.
VShader :
float tileSize = 2.0;
vec4 worldPos = ( gl_Vertex);//So we obtain the world position
TexCoordX = (worldPos.zy/tileSize);//here are our texture coordinates...
TexCoordY = (worldPos.xz/tileSize);
TexCoordZ = (worldPos.xy/tileSize);
normal = gl_Normal;
wNormal = normal;
FShader :
vec3 n = wNormal;
n*=n;
vec2 tcX = fract(TexCoordX);
vec2 tcY = fract(TexCoordY);
vec2 tcZ = fract(TexCoordZ);
vec4 grassCol = texture2D(grassTexture,tcX)*n.x+
texture2D(grassTexture,tcY)*n.y+
texture2D(grassTexture,tcZ)*n.z;