타일셋 이미지에서 타일을 그려 타일 맵을 그리는 2D 게임 엔진이 있습니다. OpenGL은 기본적으로 전체 텍스처 ( GL_REPEAT
) 만 래핑 할 수 있고 그 일부만 래핑 할 수 없으므로 각 타일은 별도의 텍스처로 분리됩니다. 그런 다음 동일한 타일의 영역이 서로 인접하게 렌더링됩니다. 의도 한대로 작동 할 때의 모습은 다음과 같습니다.
그러나 분수 스케일링을 도입하자마자 이음새가 나타납니다.
왜 이런 일이 발생합니까? 쿼드의 경계를 블렌딩하는 선형 필터링 때문이라고 생각했지만 여전히 포인트 필터링으로 발생합니다. 내가 지금까지 찾은 유일한 해결책은 모든 위치를 확인하는 것입니다 만 스케일링 정수 값에서 발생, 및 사용 포인트 필터링. 이로 인해 게임의 시각적 품질이 저하 될 수 있습니다 (특히 서브 픽셀 위치 지정이 더 이상 작동하지 않아 모션이 매끄럽지 않음).
내가 시도 / 고려한 것들 :
- 앤티 앨리어싱은 이음새를 줄이지 만 완전히 제거하지는 않습니다.
- 밉 매핑을 끄면 효과가 없습니다.
- 각 타일을 개별적으로 렌더링하고 가장자리를 1px만큼 돌출시킵니다.하지만 더 이상 타일 영역을 한 번에 렌더링 할 수 없으며 투명 영역의 가장자리를 따라 다른 인공물을 생성하기 때문에 최적화 해제입니다
- 소스 이미지 주위에 1px 테두리를 추가하고 마지막 픽셀을 반복하지만 더 이상 2의 제곱이 아니므로 NPOT를 지원하지 않는 시스템과의 호환성 문제가 발생합니다
- 바둑판 식 이미지를 처리하기 위해 커스텀 셰이더를 작성하지만 어떻게 다르게 할 것입니까?
GL_REPEAT
경계에서 이미지의 반대쪽에서 픽셀을 잡고 투명도를 선택하지 않아야합니다. - 형상이 정확히 인접 해 있고 부동 소수점 반올림 오류가 없습니다.
- 프래그먼트 셰이더가 동일한 색상을 반환하도록 하드 코딩 된 경우 이음새가 사라집니다 .
- 텍스처로 설정하는 경우
GL_CLAMP
대신에GL_REPEAT
, 이음매가 없어 (렌더링 잘못 있지만). - 텍스처로 설정하는 경우
GL_MIRRORED_REPEAT
, 솔기가 사라 (렌더링 다시 잘못된 있지만). - 배경을 빨간색으로 만들면 이음새가 여전히 흰색입니다. 이것은 투명도가 아닌 어딘가에서 불투명 한 흰색을 샘플링하고 있음을 나타냅니다.
따라서 이음새 GL_REPEAT
가 설정된 경우에만 나타납니다 . 어떤 이유로이 모드에서만 지오메트리의 가장자리에 약간의 블리드 / 누설 / 투명성이 있습니다. 어떻게 그렇게 될수 있니? 전체 텍스처가 불투명합니다.
GL_NEAREST
샘플링 된 3D 텍스처 는이 시나리오에서 대부분의 것의 R
배열 텍스처와 마찬가지로 작동 합니다. 밉 매핑은 작동하지 않지만 응용 프로그램으로 판단하면 밉맵이 필요하지 않을 수 있습니다.