OpenGL의 texelFetch와 텍스처는 어떻게 다릅니 까?


18

나는의 주요 차이점 이해 texelFetchtexture세부 사항에 대한 몇 가지 질문 만 가지고 :

  • texelFetch성능 저하가 포함 됩니까 ? 캐시를 사용하지 않는 등?
  • 인가 texelFetchtexture사용시 교환 GL_NEAREST?

1
당신은 테스트 케이스를 작성하고 볼 수 있습니다 ...
ThorinII

1
답변을 수락 된 것으로 표시하는 것을 잊었습니까, 아니면 여전히 공개적인 문제입니까?
Anko

답변:


23

texelFetch와는 상당히 다릅니다 texture.

texture필터링 및 정규화 된 ( [0,1]) 텍스처 좌표 를 처리하는 일반적인 텍스처 액세스 기능입니다 . texelFetch정규화되지 않은 좌표를 사용하여 텍스처의 텍셀에 직접 액세스합니다 (필터링 없음) (예 : 정규화 된 좌표 (64,64)와 비교하여 128x128 텍스처의 가운데 텍셀 (.5,.5)).


4
+1 텍스처를 이미지로 표시하려는 것이 아니라 이미지로 사용하려고 할 때 텍셀에 액세스하는 텍스처와 달리 다른 유형의 데이터 인 경우 texelFetch는 데이터 액세스를위한 것입니다. 그것이 필터링 등을 사용하는 이유입니다. –
concept3d

성능에 차이가 있습니까?
Lenar Hoyt

1
@mcb : 어쩌면 매우 크지는 않을 것으로 예상되며 하드웨어 공급 업체에 따라 다를 수 있습니다. 성능은 이러한 함수 중 어떤 함수를 호출할지 결정할 때 사용하는 절대적으로 잘못된 메트릭입니다. 상황에 맞는 기능을 사용하십시오 (하드웨어 필터링 texture이 필요하므로 필터링을 수행하지 않아야하거나 하드웨어가 필터링을 수행해야하므로 사용해야 함) texelFetch).
Sean Middleditch 2016 년

3
@SeanMiddleditch이 경우 성능이 어떻게 잘못 측정됩니까? 경우 texelFetch더 빨리, 그리고 접미사를 필터링 가까운 이웃이, 당신이 어떤 이유에 대한 필터링 NN에 컨텍스트를 변경할 수 없습니다, 그것을 통해 선호하는 것이 합리적 일 것입니다 texture.
Lenar Hoyt 2016

@mcb : texelFetchtexture기본적인 방법으로 다르게 작동합니다. 입력 : 텍스처 좌표와 정규화 된 좌표도 참조하십시오. 그들은 다른 목적으로 사용됩니다. 하나는 다른 것의 최적화가 아닙니다.
Sean Middleditch 2016 년

6

수락 된 답변이 없으므로 정보를 추가하기 때문에 Sean이 대답하지 않은 것을 추가하고 싶었습니다.

TexelFetch 는 텍스처를 이미지로 취급하므로 픽셀의 내용에 정확하게 액세스 할 수 있습니다. 당신은 일반적으로 그 내용이 정확히 필요할 때 그렇게합니다.

  • 특정 포스트 프로세싱 필터 (Guassian blur는 텍스처 샘플 보간을 이용하므로 TexelFetch를 사용할 수 없음)
  • 꼭짓점이 텍스처에서 데이터를 읽어야 할 때 2 좌표에 의존하는 작업 인 경우

Tex2D 는 텍스처를 텍스처로 취급합니다. 픽셀의 정확한 내용은 원하지 않지만 가장 사실적인 결과를 원합니다. 표준 텍스처 읽기는 매우 복잡한 작업이며 하나 이상의 밉맵 레벨에서 보간 된 데이터를 읽은 다음 다시 보간합니다. 비싼 작업은 모두 시각적 인 인공물을 피해야합니다.

GL_NEAREST는 가장 작은 다각형에서 더 작은 밉맵 레벨로 데이터를 읽고 있기 때문에 텍셀 페치에서 읽을 정확한 데이터와 동일하지 않기 때문에 동일하게 작동하지 않습니다.

Tex2D (거의)가 TexelFetch와 동일하게 작동하는 경우가 하나 있습니다.

  1. 필터는 GL_NEAREST입니다
  2. 1 레벨의 불완전한 밉맵 피라미드를 사용하고 있습니다
  3. UV는 버텍스 컴포넌트를 정규화하지 않습니다 (그러나 쉐이더에서이를 정규화해야합니다)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.