■ 이슈
다이내믹하게 지형을 생성하면 아래와 같은 문제가 발생할 수 있다.
옆면이 찌그러진 상태로 늘어나는 현상인데 하나의 uv를 갖고 모든 면이 사용하고 있기 때문이다. 각각의 앞면, 뒷면, 옆면, 윗면 uv를 갖고 있으면 위와 같이 지형이 생성된다해도 찌그러지는 현상은 없어질 것이다.
왜 xz냐면 위에서 봤을 때 아래와 같이 U(가로)V(세로)에 대응되는 것이 xz이기 때문이다.
[World Position을 uv로 활용했을때 GIF]
월드포지션 xz에 대응되는 텍스처의 uv좌표를 가져다 사용하기 때문에 월드포지션에 따라 텍스처의 모습이 바뀌는 것
이를 윗면 뿐만이 아니라 앞면, 옆면에 모두 사용해야한다.
위 Front와 Side면을 본다면 각각 uv에다가 월드좌표의 xy, zy를 대입해야함을 알 수 있다.
이제 윗면, 앞면, 옆면을 한번에 활용해봤다.
[코드]
여기서 작은 문제가 발생한다. Cylinder같은 경우 옆면 앞면 경계가 모호하다. 이를 조절하기 위해 각 UV의 타일링과 오프셋을 설정할 수 있도록 따로 뒀고 텍스처의 프로퍼티 앞에 [NoScaleOffset] 키워드를 붙여 텍스처의 UV를 컨트롤하는 인터페이스를 제거했다.
[코드 및 구현]
728x90
'Computer Graphics > ShaderLab, HLSL' 카테고리의 다른 글
[ShaderLab] Water (0) | 2024.03.11 |
---|---|
[ShaderLab] Refraction (0) | 2024.03.10 |
[ShaderLab] Matcap (0) | 2024.03.10 |
[ShaderLab] Dissolve (0) | 2024.03.06 |
[ShaderLab] 2Pass AlphaBlending (1) | 2024.03.06 |